一部のインストールを実行するときに使用されたコマンドを記録するために、「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のコマンドが含まれます。なぜならこれが最新のアイテムだからです。