bash historyを効果的に利用する方法

  • セッション終了を待たずに複数ターミナルでhistoryを共有できるようにする。
$ vim ~/.bashrc
export PROMPT_COMMAND="history -a; history -c; history -r; $PROMPT_COMMAND"

 

  • 不要なものはhistoryに保存しない。
$ vim ~/.bashrc
export HISTIGNORE="pwd:ls:ls -ltr:"

 

  • historyからよく使うコマンドの一覧を出力
$ awk '{print $0}' ~/.bash_history | sort | uniq -c | sort -n

 

  • Word Designators
$ file /usr/share/doc/manpages /etc/sysctl.d

1番目の引数

$ cd !!:1
cd /usr/share/doc/manpages

その他

$ cd !^ # 最初の引数(省略形)
$ cd !$ # 最後の引数(省略形)
$ ls !* # 引数全体(省略形)
$ ls !!:2* # 2番目以降の引数
$ ls !!:1-$ # 1番目から最後の引数

 

  • Modifiersでコマンドを加工

先頭から/まで取得する"h" modifier。hはheadの意。

$ cat /usr/share/doc/manpages/copyright
$ cd !!:$:h
cd /usr/share/doc/manpages

末尾から/まで取得する"t" modifier。tはtailの意。

$ less !cat:$:t
less copyright

拡張子を削除する"r" modifier。

$ tar xzvf openvpn-2.3.11.tar.gz
$ cd !$:r:r
cd openvpn-2.3.11

printする"p" modifier。

$ ls -l ../!tar:$:p
ls -l ../openvpn-2.3.11.tar.gz

文字列を置換する。

$ touch file1 file2 file3
$ mkdir !!:*:gs/file/dir/
mkdir dir1 dir2 dir3