web-dev-qa-db-ja.com

reverse-i-search(Ctrl + R)で、履歴内の同様のコマンドを切り替える方法

例は私の質問を理解するのに良いと思います。

...
scp file1 [email protected]:/home/user1/linuxfiles/samplecode/important
...
...
scp file1 [email protected]:/home/user1/linuxfiles/samplecode/important/tested
...
...

これが履歴内のコマンドの順序であると仮定します。私がやっていたら Ctrl+R scpと入力すると、最後に実行されたscpコマンド(つまり、 'tested'で終わる行)が表示されます。

しかし、「important」で終わるscpコマンドを見つけたいです。したがって、このreverse-i-searchにscpで始まるすべてのコマンドを表示し、適切なコマンドを選択する方法はありますか?

47
Arun

押し続ける Ctrl-R そして、あなたの歴史をたどります。

98
jgr

検索用語がもう少し複雑/連続していない場合、別のオプションはhistoryの結果をgrepすることです。例えば:

history 300 | grep scp | grep important$

これにより、次のような履歴内の一致するコマンドのリストが返されます。

3323  scp file1 [email protected]:/home/user1/linuxfiles/samplecode/important
3325  scp file1 [email protected]:/home/user1/winfiles/samplecode/important

そして、!3325を使用して関連コマンドを実行できます。

同様のコマンドをたくさん実行するときにこれが便利だと思うことがあります。 Ctrl+R 何度も正確なコマンドに戻ります。

16
Bonlenfum

に代わる素晴らしい選択肢があります Ctrl+R

インストール https://github.com/dvorka/hstr

hhで実行します

最後に実行されたすべてのコマンド(./bash_historyの内容)のリストが表示されます。

入力を開始すると、入力内容に基づいてリストがフィルタリングされます

使用できます Up/Down 矢印を使用して目的のコマンドを選択し、 Enter

2
GiorgosK