コマンド履歴からコマンドを実行する
以前に実行したコマンドを再度実行したい場合に、コマンド履歴を確認する事で楽に再実行する事が出来ます。
historyコマンド
または インクリメンタルサーチ
を実行する事でコマンドの再実行を楽に行えます。
historyコマンド
historyコマンド
については、historyコマンド
の結果をgrepコマンド
で絞って確認するのが定番だと思います。historyコマンド
単体で叩いても、出力される結果が多いので目的のコマンドを探すのが大変です。
ある程度スペルが分かっている前提ですが、historyコマンド | grep 対象文字列
で履歴を絞る事が可能です。
以下、実行例です。
[root@localhost ~]# history | grep 'll'
12 lsll
13 ll
18 history | grep 'll'
目的のコマンドが見つかった場合に、弄りたい場合はコピペして編集するとよいでしょう。
そのまま実行したい場合は、コマンドと一緒に表示されている番号と!
を組み合わせて実行する事が出来ます。
以下、実行例です。
[root@localhost ~]# history | grep 'cat'
22 cat memo.txt
26 cat -n .bash_history
27 history | grep 'cat'
# 26 cat -n .bash_historyを実行
[root@localhost ~]# !26
cat -n .bash_history
1 cat -n .bash_history
etc...
インクリメンタルサーチ
インクリメンタルサーチでもほぼ同じような事が出来ます。私は普段、こちらを使用しています。
プロンプトでCtrl + r
を入力すると、インクリメンタルサーチを使用する事が出来ます。
以下のように、プロンプトが変更されます。
(reverse-i-search)`':
この状態でキーボードを入力すると検索が行われます。
cと入力すると、以前に実行したコマンドが表示されます。cat -n .bash_historyを先程実行しているので、以下のように出力されました。さらにdを入力すると、cd /tmpと出力されました。
インクリメンタルサーチは、入力毎に履歴を検索する特徴があります。
#cと入力
(reverse-i-search)`c': cat -n .bash_history
#次にdを入力
(reverse-i-search)`cd': cd /tmp
文字入力後に、再度Ctrl + r
を実行すると1つ前の実行結果に移動します。
Ctrl + r を実行する
or 文字を入力する
で目的のコマンド探す事が可能です。
目的のコマンドが見つかったら、Enterキー
を入力するとコマンドが実行されます。
コマンドを編集したい場合はEscキー
で検索結果をそのままで、元のプロンプトに戻れます。
また、インクリメンタルサーチから抜けたい場合はCtrl + g
でプロンプトに戻る事が可能です。
終わり
historyコマンド
とインクリメンタルサーチ
を記載しましたが、好みで使い分けすればよいと思います。