web-dev-qa-db-ja.com

以前のすべてのコマンドではなく、最初の文字が同じコマンドを参照するように上矢印を構成する

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

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

15
gerrit

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

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

これらを次のように.inputrcにバインドします。

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

コマンドの最初の文字を入力してから、 Up そして Down その文字列で始まる.bash_history内のコマンドのみを移動するためのキー。

たとえば、viと入力すると、 Upvim somefileのように、viで始まる前の最初のコマンドに移動します。入り Up 次の前のインスタンスに移動します。

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

18
jasonwryan

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

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

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

export INPUTRC=~/.inputrc
10
johankj

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

「command」が検索するコマンドである場合は、次のように入力します。

!comm

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

同様に、コマンドの一部が含まれている(先頭にない場合がある)コマンドを検索するには、Ctrl + Rキーを押してから、コマンドの一部を入力します。

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

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

これは の可能性のある複製ですhttps://stackoverflow.com/questions/1030182/how-do-i-change-bash-history-completion-to-complete-whats-already-on -the-line

2
Vreality