コマンド履歴からのコマンドライン補完


85

だから、私は歴史とCtrl+を見てきましたが、私がR知っていたとは思っていませんでした。コマンドの先頭に入力し、bashショートカットを使用して履歴内の一致を循環する方法はありますか?

# mysq(some shortcut key)

私に与えます:

# mysqldump  --add-drop-table -e -q -n -C -u 
(some shortcut key)
#  mysql -u ben.dauphinee -p

サイドノート:デスクトップのないttyには「<kbd> Alt + Tab </ kbd>」があります。
neverMind9

回答:


91

Ctrl+ Rを押すと、逆履歴検索が開きます。コマンドの入力を開始すると、最初の一致が得られます。もう一度(そしてもう一度)Ctrl+を押すRと、履歴を循環できます。

mysq(Ctrl+R)

与えるだろう:

mysqldump  --add-drop-table -e -q -n -C -u 

Ctrl+ Rもう一度:

mysql -u ben.dauphinee -p

5
ありがとう。また、Escは選択したコマンドを実行せずにコマンドラインに配置し、Enterは選択したコマンドを実行します。
ベン

3
EscよりもCTRL + Eの方が良いと思います。エスケープが届きにくいので、すでにCTRL + Rを押しているので、Eがそこにあります。また、カーソルを行の末尾に配置します。これは、一般的なケースであることがわかっている何か(ファイル名など)を変更したい場合に便利です。
ソルピガル

悲しいことに、Cygwinでは動作しません
ATorras

2
少なくともMacでは、mysq(CTRL+R)(CTRL+R)「mysq」で始まるコマンドを循環させないようです。あなたがする必要がある(CTRL+R)mysq(CTRL+R)代わりに
BlueRaja -ダニーPflughoeft

62

ジルが言ったことを拡張するために.inputrc、上/下矢印キーをhistory-search-backwardand にバインドするために以下を持っていますhistory-search-forward

# Key bindings, up/down arrow searches through history
"\e[A": history-search-backward
"\e[B": history-search-forward
"\eOA": history-search-backward
"\eOB": history-search-forward

何かを入力するだけで(オプション)、上/下矢印キーを押して、入力した文字で始まるコマンドの履歴を検索します。

.bashrcなくこれを行うには.inputrc、次を使用できます。

bind '"\e[A": history-search-backward'

3
これらのバインディングは〜/ .inputrcに属します...怠laをサポートしてくれてありがとう。
マーティンツァイトラー

少なくともbashのデビュー者にとっては、「\ e」が重要であることは注目に値します。Ctrl-Vを押してコマンドのキーストロークを取得するだけでは、全体がわかりません。たとえば、Ctrl-V Meta-P(ie)Alt-P)と入力すると^ [p-が返されます。希望する動作を得るには、 "^ ["を '\ e'に置き換えます。
MrMas

@syslogicに同意します-行を.inputrcに入れ、バインドと一重引用符を削除します。
MrMas

これをosxの.inputrcにコピーアンドペーストすると、次のようになります:source〜/ .inputrc -bash:\ e [A :: command not found -bash:\ e [B :: command not found -bash:\ eOA :: command見つかりません-bash:\ eOB ::コマンドが見つかりません
セイウチ猫

1
superuser.com/questions/241187/how-do-i-reload-inputrcを参照してください。ファイルを入手することはできません。
raychi

7

PAGEUPボタンを押してコマンドを自動補完することもできます。基本的にbash_historyファイルを検索します。


あなたは、2つの行のコメントを解除する必要がある/etc/inputrcか、あなたに次の2行を追加し$HOME/.inputrcます。ファイル "\e[5~": history-search-backward "\e[6~": history-search-forward
garlix

5

readlineコマンドhistory-search-backwardを使用して、history-search-forwardすでに入力したプレフィックスで始まるコマンド行間を移動できます。これらのコマンドはいずれも、デフォルト構成ではキーにバインドされていません。

Zsh(zle)にも同様のコマンドがhistory-beginning-search-backwardありhistory-beginning-search-forward、デフォルトではキーにバインドされていません。そこにもあるhistory-search-backwardhistory-search-forwardにかかわらず、カーソル位置の検索する接頭辞として現在のコマンドの最初の単語を使用しています、。


4

非常によく似たコマンドの概要を知りたい場合は、次のリストを取得できます。

history|grep KEYSTRING

次に、マウスの中ボタンでコピーして貼り付けます。

Rgds-ジョー

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