web-dev-qa-db-ja.com

コマンド履歴からコマンドをオートコンプリートするにはどうすればよいですか?

Bashが履歴からのコマンドを自動的に競合するためのキーの組み合わせはありますか?たとえば、ipythonとmatlabでは、これは、いくつかの文字を入力した後に上矢印を押すことによって実現されます。

21
Sparkler

まずは打つ tab bashでは、履歴にあるかどうかに関係なく、PATH内のすべての実行可能ファイルがオートコンプリートされるため、さらに優れています。とはいえ、履歴からコマンドを取得するにはさまざまな方法があります。

  1. その番号を使用します。必要なコマンドが3コマンド前であることがわかっている場合は、単に実行できます

    !-3
    

    これにより、3つ前に実行したコマンドが再実行されます。

  2. それを検索します。タイプ Ctrlr テキストを入力し始めます。テキストに一致する履歴からの最初のコマンドが表示され、 enter それを実行します。

  3. ヒット  (上矢印)。これで最後のコマンドが表示され、もう一度押すとコマンド履歴が表示されます。欲しいものが見つかったら、 enter

  4. これらの行を~/.inputrcに追加します(ファイルが存在しない場合は作成します)。

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

    次に、以前に実行してヒットしたコマンドのいずれかの最初の数文字を入力します。 。これらの文字で始まる履歴の最初のコマンドが表示されます。ヒット  もう一度残りを見てヒットします enter あなたが欲しいものを見つけたとき。

  5. historyコマンドを使用します。 @Isaacで説明したように、履歴ファイルに保存されているすべてのコマンドが一覧表示されます。

30
terdon

コマンドhistoryを使用して、履歴シーケンスのコマンド位置を確認できます。次に、!<number_in_the_sequence>。お役に立てば幸いです。

8
Isaac

historyを使用して、特定のコマンドの出力をパイプすることもできます。

たとえば、ファイルシステムを1日中cd- ingしていて、作業されたディレクトリのリマインダーが必要な場合

history | grep cd

次に、コマンドをコピーして貼り付けるか、!n(nは履歴ファイルの行番号)で再実行します。

2
Brian