bash 履歴から特定の範囲のエントリのみを表示する

bash 履歴から特定の範囲のエントリのみを表示する

「history」コマンドの固定数を設定して、最初からすべてを表示するのではなく、100 などの特定の数の履歴項目のみを表示することは可能ですか?

答え1

history n履歴の行のみを出力しますn。例:

$ history 4
 2000  type history
 2001  help
 2002  help history
 2003  history 4
$

そのため、次のエイリアスを作成できます.bashrc:

alias h="history 100"

からhelp history

history: history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg [arg...]
    Display or manipulate the history list.

    Display the history list with line numbers, prefixing each modified
    entry with a `*'.  An argument of N lists only the last N entries.

これは、大規模な履歴セット、おそらく無制限の1。 とHISTCONTROL=ignoreboth:erasedupsそして逆インクリメンタル検索実際にコマンドを実行するのは特別な機会ですhistory

答え2

設定HISTFILESIZEによりHISTSIZE 履歴コマンドのサイズを制限できます。

たとえばHISTFILESIZE=100、 およびHISTSIZE=100。これにより、履歴ファイルに保存される行数が 100 行に制限され、HISTFILE現在のセッション コマンドがメモリに 100 行保存されます。

シェルが起動すると、履歴は変数で指定されたファイルHISTFILE(デフォルトは ~/.bash_history) から初期化されます。 の値で指定されたファイルはHISTFILE、必要に応じて、変数の値で指定された行数以下になるように切り捨てられますHISTFILESIZE

ファイルにHISTFILESIZE=100 と を追加できます。 100 を必要な数字に変更します。HISTSIZE=100~/.bashrc

説明

HISTFILESIZE=10そしてHISTSIZE=10

  1. セッションを開始します。
    1. HISTFILE (bash コマンド履歴を保存するファイル) は、HISTFILESIZE=10 行を含むように切り捨てられます。
  2. 50行書きます。
  3. 50 個のコマンドの最後には、41 から 50 までのコマンドのみが履歴リストに残ります。履歴リストのサイズは HISTSIZE=10 によって決まります。
  4. セッションを終了します。
    1. が有効になっていないと仮定するとhistappend、コマンド 41 から 50 が HISTFILE に保存され、これには最初に保持されていた 10 個のコマンドと新たに書き込まれた 10 個のコマンドが含まれます。
    2. HISTFILE は、HISTFILESIZE=10 行を含むように切り捨てられます。
  5. 履歴には、終了したセッションで最後に入力した 10 個のコマンドが保存されています。
  6. 新しいセッションを開始すると、HISTFILE が HISTFILESIZE=10 の状態で 1 からやり直します。

HISTFILESIZE=10そしてHISTSIZE=5

  1. セッションを開始します。
    1. HISTFILE (bash コマンド履歴を保存するファイル) は、最大で HISTFILESIZE=10 行になるように切り捨てられます。
  2. 50行書きます。
  3. 50 個のコマンドの最後には、46 から 50 までのコマンドのみが履歴リストに残ります。履歴リストのサイズは HISTSIZE=5 によって決まります。
  4. セッションを終了します。
    1. が有効になっていないと仮定するとhistappend、コマンド 46 から 50 が HISTFILE に保存され、これには最初に保持されていた 10 個のコマンドと、新たに書き込まれた 5 個のコマンドが含まれます。
    2. HISTFILE は、HISTFILESIZE=10 行を含むように切り捨てられます。
  5. 履歴には 10 個のコマンドがあります。5 個は以前のセッションからのもので、最後の 5 個は終了したセッションで入力したものです。
  6. 新しいセッションを開始すると、HISTFILE が HISTFILESIZE=10 の状態で 1 からやり直します。

HISTFILESIZE=5そしてHISTSIZE=10

  1. セッションを開始します。
    1. HISTFILE (bash コマンド履歴を保存するファイル) は、最大で HISTFILESIZE=5 行になるように切り捨てられます。
  2. 50行書きます。
  3. 50 個のコマンドの最後には、41 から 50 までのコマンドのみが履歴リストに残ります。履歴リストのサイズは HISTSIZE=10 によって決まります。
  4. セッションを終了します。
    1. が有効になっていないと仮定するとhistappend、コマンド 41 から 50 が HISTFILE に保存され、これには最初に保持されていた 5 つのコマンドと、新たに書き込まれた 10 個のコマンドが含まれます。
    2. HISTFILE は、HISTFILESIZE=5 行を含むように切り捨てられます。
  5. 履歴には、終了したセッションで最後に入力した 5 つのコマンドが保存されています。
  6. 新しいセッションを開始すると、HISTFILE が HISTFILESIZE=5 の状態で手順 1 からやり直します。

この素晴らしい説明はstackoverflow.comから

関連情報