上矢印を設定して、以前のすべてのコマンドではなく、同じ先頭文字を持つコマンドを参照します


15

上のbashコマンドライン、私の前のコマンドを提供します。numpyまたはのコマンドラインでmatlab、いくつかの文字を入力すると、それらの文字で始まる以前に入力されたコマンドが表示されます。でこの動作を正確に有効にするにはどうすればよいbashですか?

コマンドライン履歴を検索するより高度な方法を知っていますが、簡単な方法の方が便利な場合があります。

回答:


18

探しているreadlineコマンドは次のhistory-search-*コマンドです。

history-search-forward
現在の行の先頭から現在のカーソル位置(ポイント)までの文字列の履歴を前方に検索します。これは非インクリメンタル検索です。
history-search-backward
現在の行の先頭とポイントの間の文字列の履歴を逆方向に検索します。これは非インクリメンタル検索です。

これらをあなたの.inputrcにバインドします:

"\e[A": history-search-backward            # arrow up
"\e[B": history-search-forward             # arrow down

コマンドの最初の文字を入力し、キーUpDownキーを使用して、.bash_historyその文字列で始まるコマンドのみを移動できます。

たとえば、viandを入力すると、などでUp始まる最初の前のコマンドに移動します。入力すると、次の前のインスタンスに移動します。vivim somefileUp

すべてのreadlineバインディングの詳細については、http//linux.about.com/library/cmd/blcmdl3_readline.htmをご覧 ください。


10

〜/の.inputrcに以下を追加して、提案したことを実行します。

"\e[B": history-search-forward
"\e[A": history-search-backward

おそらく、次を.bash_profileに追加することもできます。

export INPUTRC=~/.inputrc

この「エクスポート」を行う理由について詳しく説明していただけますか?
テクスニック

2

「!」を追加します 探しているコマンドに。上矢印と下矢印の機能を置き換えたい場合は、inputrcファイルを変更する(他の回答が示唆するように)方法があります。

「command」が検索するコマンドである場合、これを入力します。

!comm

出力として「コマンド」を取得する必要があります。

同様に、コマンドの一部を含む(ただし開始しない場合もある)コマンドを検索する場合は、ctrl + rを押してからコマンドの一部を入力します。

「タブ」に入力して、入力したテキストを自動補完することもできます(これにはファイルも含まれます)。これは、履歴にないコマンドを探している場合(または履歴ファイルがない場合)に便利です。

履歴ファイルの「マスタリング」について詳しくは、http//www.thegeekstuff.com/2008/08/15-examples-to-master-linux-command-line-history/をご覧ください。

これは/programming/1030182/how-do-i-change-bash-history-completion-to-complete-whats-already-on-the-lineの可能な複製です


他の答えは私の質問にもっと正確に答えますが、SOへのポインターに感謝します(meta.stackexchange.com/q/4708/172266も参照してください)。
-gerrit
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.