".bash_history"に加えて、bash履歴ファイルの内容を表示するために使用される "history"コマンドは何ですか?

".bash_history"に加えて、bash履歴ファイルの内容を表示するために使用される "history"コマンドは何ですか?

一部のインストールを実行するときに使用されたコマンドを記録するために、「HISTFILE」変数を別のファイルに変更しました。これで、基本的にファイルを使用するコマンドをhistory使用するのと同じように、このコマンドを使用して表示したいと思います。history.bash_history

historyコマンドにどのオプションを渡す必要がありますか?試行するとhistory ~/.history.d/alternate_historyエラーメッセージが表示されます。

-bash: history: /home/vfclists/.history.d/alternate_history: numeric argument required.

ヘルプには、man私が望んでいない他の履歴ファイルをいくつか変更するように見えるいくつかのオプションがリストされています。

答え1

これhistoryこのコマンドはファイルでは機能せず、インメモリ履歴リストでのみ機能します。ファイルからリストを読み取り(r)書き込み(-w)追加( )してから、-aメモリ内のリストにアクセスまたは操作することができます。ファイルを読み取ると、現在のシェルセッションの履歴が置換または拡張されます。

ただし、別のシェルを作成してその履歴を操作して、現在のシェルの履歴に影響を与えずに目的のコマンドを実行できます。

bash -c 'history -cr file ; history'

または

( history -cr file ; history )

historyどちらの場合も、2番目のコマンドに希望の履歴オプションを追加できます。これを頻繁に実行する場合は、ファイルを引数として受け入れ、サブシェルバ​​ージョンを実行する関数を定義できます。

histfile() {
    ( history -cr "$1" ; history )
}

保存したタイムスタンプを表示するには、以下も設定する必要があります。HISTTIMEFORMAT。サブシェルを使用してホストシェルからタイムスタンプを取得する場合は、タイムスタンプは自動的に存在する必要がありますが、bash -cビルドまたはスクリプトの場合はこれを設定する必要があります。

bash -c 'history -cr file ; HISTTIMEFORMAT="%Y%m%d%H%I%S " history'

export親シェルの変数を使用することもできます。

答え2

現在のシェルに関する現在の情報はhistoryメモリに保存され、シェルを終了した後にのみHISTFILEに書き込まれます。

シャットダウンシェルを使用する前にこれが発生する可能性がありますhistory -a。ファイルの内容を現在の履歴などに読み込むパラメータもあります。本質的にRTFMです:-)

したがって、現在の履歴を作成してhistory -a temp_history_fileから新しい履歴を読み取るために使用できますhistory -r new_history_file。これにより、コマンド履歴にnew_history_fileのコマンドが含まれます。なぜならこれが最新のアイテムだからです。

関連情報