記事:
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 + l | 画面をクリア。カレント行を表示 |
Ctrl + d | ログアウト |
Ctrl + a | 行頭へ移動 |
Ctrl + e | 行末へ移動 |
Ctrl + u | カーソルの左を削除 |
Ctrl + k | カーソルの右を削除 |
Ctrl + w | カーソルの右を削除 |
Ctrl + y | 削除した部分をペースト |
TAB | ファイルやコマンドの自動補完 |
Ctrl + r | コマンドヒストリ |
!! | 直前のコマンドを再実行 |
Ctrl + z | 現在のジョブを一時停止 fg:元に戻す bg:裏に回す |
Ctrl + c | 現在のジョブの強制終了 |
結論: ~/.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