コマンド履歴からコマンドを自動補完するにはどうすればよいですか?

コマンド履歴からコマンドを自動補完するにはどうすればよいですか?

bash で履歴からコマンドを自動補完するキーの組み合わせはありますか? たとえば、ipython や matlab では、数文字入力した後に上矢印を押すことでこれを実現します。

答え1

まず、tabbash でコマンドを入力すると、履歴にあるかどうかに関係なく、PATH 内のすべての実行ファイルが自動補完されるので、さらに便利です。とはいえ、履歴からコマンドを取得する方法はいくつかあります。

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

     !-3
    

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

  1. 検索します。Ctrlr任意のテキストを入力して開始します。 履歴からテキストに一致する最初のコマンドが表示され、enterそれを押すと実行されます。

  2. (上矢印)を押します。これで最後のコマンドが表示されます。もう一度押すと、コマンド履歴が上に移動します。目的のコマンドが見つかったら、 を押しますenter

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

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

ファイルをすぐにロードするには、bind -f ~/.inputrcソース) 。次に、以前実行したコマンドの最初の数文字を入力して を押します。履歴からそれらの文字で始まる最初のコマンドが表示されます。 をもう一度押して残りのコマンドを表示し、目的のコマンドが見つかったら を押します。enter

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

答え2

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

答え3

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

たとえば、cd一日中ファイルシステムを操作していて、どのディレクトリで作業したかを思い出す必要がある場合などです。

history | grep cd

その後、コマンドをコピー/貼り付けするか、!n(n は履歴ファイル内の行番号) 再実行することができます。

関連情報