記事:
Unless otherwise noted, each builtin command documented as accepting options preceded by ‘-’ accepts ‘--’ to signify the end of the options. The :, true, false, and test/[ builtins do not accept options and do not treat ‘--’ specially.
touch -test.log touch: invalid date format # -- を付けると成功 touch -- -test.log # 削除も失敗する rm -test.log rm: invalid option -- 't' # -- を付けると成功 rm -- -test.log
if [[ -f /etc/bash_completion ]]; then # RHEL/CentOS 6, Ubuntu 12.04 LTS . /etc/bash_completion elif [[ -f /etc/profile.d/bash_completion.sh ]]; then # RHEL/CentOS 7 [ -n "$BASH_COMPLETION" ] || BASH_COMPLETION=/etc/bash_completion [ -n "$BASH_COMPLETION_DIR" ] || BASH_COMPLETION_DIR=/etc/bash_completion.d [ -n "$BASH_COMPLETION_COMPAT_DIR" ] || BASH_COMPLETION_COMPAT_DIR=/etc/bash_completion.d elif [[ -f /usr/local/etc/bash_completion ]]; then # macOS: brew . /usr/local/etc/bash_completion [ -n "$BASH_COMPLETION" ] || BASH_COMPLETION=/usr/local/etc/bash_completion [ -n "$BASH_COMPLETION_DIR" ] || BASH_COMPLETION_DIR=/usr/local/etc/bash_completion.d [ -n "$BASH_COMPLETION_COMPAT_DIR" ] || BASH_COMPLETION_COMPAT_DIR=/usr/local/etc/bash_completion.d fi
command_path=$(which command 2>/dev/null) if [ -e "$command_path" ]; then complete -C $command_path command fi
HISTSIZE,HISTFILESIZEを大きい値(例:10万件, ~/.bash_historyが380KB程度)にするとbashの動作が遅くなったので注意。
vim /etc/profile.d/history.sh -- # # history initialization # # path: /etc/profile.d/history.sh HISTTIMEFORMAT='%FT%T%z ' HISTSIZE=5000 HISTFILESIZE=5000 HISTIGNORE='history:pwd:ls:ls *:ll:w:top:df *' HISTCONTROL=ignoreboth PROMPT_COMMAND='history -a; history -r' --
# 個人のみ bash -c "cat <<EOF>> ~/.bashrc export HISTTIMEFORMAT='%FT%T%z ' EOF" # ユーザ全員 sudo bash -c "cat <<EOF>> /etc/profile.d/history.sh export HISTTIMEFORMAT='%FT%T%z ' EOF"
長くなりがちな ~/.bashrc を ~/.bash.d/*.sh に分割する。
ansible等で管理しやすくなる
mkdir ~/.bash.d vim ~/.bashrc -- if [ -d "${HOME}/.bash.d" ] ; then for f in "${HOME}"/.bash.d/*.sh ; do [ -x "$f" ] && . "$f" done unset f fi -- # 例: colordiff vim ~/.bash.d/colordiff.sh -- if $(type colordiff > /dev/null 2>&1);then alias diff='colordiff -u' else alias diff='diff -u' fi -- chmod +x ~/.bash.d/*.sh source ~/.bashrc
function say_hello() { echo "Hello, world: $1"; } export -f say_hello ls | xargs -i bash -c "say_hello {}"
よく使う
カーソル移動
| キー | 機能 |
| Ctrl-a | 行頭に移動 |
| Ctrl-e | 行末に移動 |
| Alt-f | 次の単語に移動(前方) |
| Alt-b | 前の単語に移動(後方) |
| Ctrl-f | 1文字前進 |
| Ctrl-b | 1文字後退 |
削除系
| キー | 機能 |
| Ctrl-w | カーソル前の単語を削除 |
| Alt-d | カーソル後の単語を削除 |
| Ctrl-u | カーソルから行頭まで削除 |
| Ctrl-k | カーソルから行末まで削除 |
| Ctrl-d | カーソル位置の文字を削除 |
| Ctrl-h | カーソル前の文字を削除(Backspace) |
履歴操作
| キー | 機能 |
| Ctrl-p | 前のコマンド(↑と同じ) |
| Ctrl-n | 次のコマンド(↓と同じ) |
| Ctrl-r | 履歴を逆方向検索 |
| Ctrl-s | 履歴を順方向検索 |
| Alt-. | 前のコマンドの最後の引数を挿入 |
編集・その他
| キー | 機能 |
| Ctrl-l | 画面をクリア |
| Ctrl-y | 最後に削除したテキストを貼り付け(yank) |
| Ctrl-t | カーソル前の2文字を入れ替え |
| Alt-t | カーソル前の2単語を入れ替え |
| Ctrl-_ | アンドゥ(直前の操作を取り消し) |
| Ctrl-c | 現在の入力をキャンセル |
| Ctrl-d | EOFを送信(空行でログアウト) |
| Ctrl-z | プロセスを一時停止(バックグラウンドに) |
結論: ~/.bashrc だけ使う。 ~/.bash_profile はデフォルトのままで良い。
/.bash_profile
# Get the aliases and functions if [ -f ~/.bashrc ]; then . ~/.bashrc fi
/.bashrc
# Source global definitions if [ -f /etc/bashrc ]; then . /etc/bashrc fi
/.bash_profile
/.bashrc
| /etc/profile, /etc/profile.d/ | 全ユーザ共通。ログインした時。 |
| ~/.bash_profile | /etc/profileの次 |
| ~/.bash_login | ログイン後、~/.bash_profile が無い場合 |
| ~/.profile | ログイン後、~/.bash_login が無い場合 |
| ~/.bashrc | 新しいbashシェルが起動した時 |
| ~/.bash_logout | ログインしたシェルを終了する時 |
stty stop undef