タイムスタンプ情報.bash_history
ファイルを格納するためにHISTTIMEFORMAT
変数を設定しました。インタラクティブシェルを使用すると、履歴を正しく表示できます。
しかし、履歴コマンドを実行して履歴を表示すると、.bash_history
ファイルのタイムスタンプ情報がコマンドとして表示され、すべてのコマンドのタイムスタンプ情報が現在の時刻に設定されます。
ファイルの内容の例:bash_history
:
#45556656
pwd
#45677756
ls
#45665765
who
コマンド:
$ ssh Host 'HISTFILE=~/bash_history;HISTTIMEFORMAT=" %F %T ";set -o history; history'
出力:
235 2015-08-24 13:12 #45556656
236 2015-08-24 13:12 pwd
237 2015-08-24 13:12 #45677756
238 2015-08-24 13:12 ls
問題:1。タイムスタンプはすべてのコマンドで同じです。現在のタイムスタンプに設定されます。
履歴ファイルの時刻情報をコマンドとして読み込みます。そのため、コマンドの実際のタイムスタンプ情報が失われました。 ssh
またはcronjob
から情報を取得しようとしたときに正しい情報を取得する方法。
注:私は同様の質問を見ましたが、私の問題を解決するものはなく、質問をした人もシナリオを詳しく説明していません。
また、histexpand
を有効にする必要があります。これにより、タイムスタンプの前に履歴コメント文字が付いているため、タイムスタンプを適切に解釈できます。
_$ ssh Host 'HISTFILE=/tmp/bash_history;HISTTIMEFORMAT=" %F %T ";set -o histexpand -o history; history'
1 1971-06-12 01:37:36 pwd
2 1971-06-13 11:15:56 ls
3 1971-06-13 07:56:05 who
_
詳細については、bash(1)
マンページのHISTTIMEFORMAT
および_set -H
_の説明を参照してください。
注:順序は重要であるように見えます。 history
の前のhistexpand
で何が起こるかを次に示します。
_$ ssh pocampo 'HISTFILE=/tmp/bash_history; HISTTIMEFORMAT=" %F %T ";set -o history -o histexpand; history'
1 ??#45556656
2 ??pwd
3 ??#45677756
4 ??ls
5 ??#45665765
6 ??who
_