不連続キーワードを使用して履歴内のコマンドを検索する


12

コマンドの最初の数文字を知らずに、履歴内のコマンドを検索する方法を疑問に思っていましたか?

bashでCtrl- を使用して検索する場合R、コマンドの最初の数文字を指定する必要があります。真ん中のいくつかのキャラクター、または最初のキャラクターと中央のキャラクターのみを知っている場合はどうなりますか?

たとえば、を検索するcat myfileにはat、その中、またはc最初とmy途中のどこかにあることしかわかりません。キーワードは継続的に配置する必要があります。例えば、でcat myfile、私は両方を検索したいcmyが、Ctrl+R両方を同時に指定することはできません。


2
常にCtrl-Rを使用し、中央のテキストを自動的に検索します。派手なものは何もありませんが、あなたの例では入力myするだけで十分でしょう。RHEL4およびCygwinが確認されました。
アーロンD.マラスコ

@ティム:あなたは実際にそれを試していませんでしたね?それがためないコマンドの途中で文字を検索します。
アレックス

@alex:連続して配置されていないキーワードを実際に言いたかった。例えば、でcat myfile、私は両方を検索したいcmy、しかし、Ctrlキー+ Rは、両方を同時に指定することはできません。
ティム

回答:


12

(メモリをジョギングするために)行を探しているだけなら、覚えているコマンドの一部をgrepするだけです:

history | grep "substring"

2
* nixシステムを5年以上使用していて、history今までコマンドについて知らなかったのはどうしてですか?ありがとう!
GMA

7

私が見る限り、Bashには単純な文字列検索しかありません。

履歴ワイルドカード検索があるzshに切り替えることを検討してください。history-incremental-pattern-search-backwardそして、history-incremental-pattern-search-forward、デフォルトではキーにバインドされていませんが、あなたはそれらをバインドすることができます。

bindkey '^X^R' history-incremental-pattern-search-backward
bindkey '^X^S' history-incremental-pattern-search-forward

次に入力しCtrl+X Ctrl+R ^c*myます。


0

Apropos(1)は、その人がその単語を含む場合、サブジェクトの人も返します。Whatis(1)は絶対一致のみを返します。

参考:Apropos == man -k Whatis == man -f

これら2つは、ワイルドカード*および?とともに、大きな助けになるはずです。


1
質問は、端末のコマンド履歴を検索することです...(manページを検索するのではなく)...しかし、完全に別のメモで、私はあなたの答えが役に立つと
思った

....ああ、素敵な、その仲間の私の悪い。
baweaver
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.