コマンド履歴から特定のコマンドを実行せずに呼び出す方法


13

たとえば、bashでは、で!xyz始まる最後に入力したコマンドを実行するように入力できxyzます。

最初に入力した最後のコマンドをxyz実行せずに起動するにはどうすればよいですか?
たとえば、実行前にパラメーターを変更できます。

回答:


20

次のようにすることができます:コマンドプロンプトでCtrl+ rを押してから、呼び出したいコマンドを入力しますxyz。これにより、完全なコマンドが実行されずに表示されます。


1
!記法よりも便利です。Ctrl-rを複数回押すと、一致する履歴にさらに移動できます。適切な場所に到着したら、EnterではなくCtrl-oを使用して実行すると、大きな利益が得られます。
クバンチク

12

試してみてください!xyz:p。コマンドを実行せずに履歴の先頭にリコールします。たとえば、上矢印キーを押すとすぐにコマンドにアクセスしてインタラクティブな編集ができます。

余談ですが、!r最近のrsync ...コマンドをリコールするために急いで、スタックにプッシュされたものrm *を引き戻して実行するため、有害なものを掘り起こす可能性のある正規表現でコマンドをリコールするときにこれを行う練習をしますrsyncよりも最近です。


ありがとう、それは良い習慣です。私は同じrm -rf ./*期間、これほど感謝していません。参考までに!xyz:p、ありがとうございますが、ctrl-rソリューションよりもいくつかの余分なキーストロークが必要でした。
Mtl Dev

@MtlDevはい; ^ RソリューションはEMACSeyの人々に最適であり、!- vipathは私のようなオレーターに最適です。
MadHatter

1
  1. 次のコマンドを実行します。最後に実行されたコマンドをエコーし​​ます。コマンドをコピーして編集できます。このコマンドはdebianでテストされました。

    履歴| tail -2 | grep -v履歴| カット-d '' -f4-

  2. または、ctrl + Rを押したままにして、最後のコマンドの開始文字を入力します。入力に基づいて以前に実行したコマンドがリストされます。目的のコマンドが表示されたら、右矢印を押してそのコマンドを選択します。


1
最初のコマンドはとてもスムーズです!! この^ __ ^
Grajdeanu Alexの

1

逆履歴検索が失敗した場合、次のいずれかを実行します。

$ history | grep WHAT_YOU_LOOK_FOR

または:

$ grep WHAT_YOU_LOOK_FOR ~/.bash_history
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.