シェル(bash)のヒストリー(履歴)機能

 2022/06/11, last updated 2023/08/23 -  ~2 Minutes

シェル履歴を検索、編集できることを知らないのか、 操作を見ていて、毎回打ったり、カーソルの上下で探したり、teraterm でコピー&ペーストしたり、大変そうだな、、、と思うことがある。

コマンドの入力を楽にするための方法を紹介したい。(ここでは bash とする。)

補完

コマンドや、ディレクトリ・ファイル名などは、全部入力する必要はない。tab を押せば残りを入力してくれる。

複数候補がある場合は、もう一度 tab を押すと候補が表示される。

ヒストリー関連

打ったコマンドの履歴

history

コマンドを実行する。

必要に応じて、grep でフィルタするとよい。

history | grep docker

など

ctrl r を押す(ctrl を押しながら r を押す)と

(reverse-i-search)

のプロンプトになる。入力した文字列で検索する。 一文字ずつ入力が増えた分だけマッチング結果が変わるので、インクリメンタル、という名前が付いているのだと思う。

ここで、例えば、vim を入力すると直前に実行した vim〜 が表示されるが、この状態で、ctrl r を押すと、もう一つ前に実行した vim〜 が表示される。

コマンドの編集

  • reverse incremental search でコマンド履歴を検索した後、修正して実行したい
  • コマンドを打ち間違ったので、修正して実行したい

といった場合があるのではないだろうか。

この場合は、カーソル、デリート、バックスペース、などで編集することができる。

カーソルの他にも、私は次のような編集機能をよく使う。

  • ctrl a (?)で行頭
  • ctrl e (end)で行末
  • ctrl f (forward)で右
  • ctrl b (back)で左
  • ctrl d (delete)でカーソル位置の文字を削除
  • ctrl k (kill)でカーソル以降を削除
  • ctrl y (yank)で削除したもの(主には ctrl k したもの)をペースト

他にも編集機能はあると思うが、私が常時使っているのはこの程度だ。