シェル(bash)のヒストリー(履歴)機能
2022/06/11, last updated 2023/08/23 - ~2 Minutes
シェル履歴を検索、編集できることを知らないのか、 操作を見ていて、毎回打ったり、カーソルの上下で探したり、teraterm でコピー&ペーストしたり、大変そうだな、、、と思うことがある。
コマンドの入力を楽にするための方法を紹介したい。(ここでは bash とする。)
補完
コマンドや、ディレクトリ・ファイル名などは、全部入力する必要はない。tab を押せば残りを入力してくれる。
複数候補がある場合は、もう一度 tab を押すと候補が表示される。
ヒストリー関連
打ったコマンドの履歴
history
コマンドを実行する。
必要に応じて、grep でフィルタするとよい。
history | grep docker
など
打ったコマンドの検索 (reverse incremental search)
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 したもの)をペースト
他にも編集機能はあると思うが、私が常時使っているのはこの程度だ。