以前に使用したコマンドをタイムスタンプで印刷するように端末(macOS)を取得しようとしています。
を使用するとhistory man
過去1000個程度のリストが提供され、 を使用するとhistory -E
約20個程度に過ぎないがタイムスタンプを含むコマンドが提供されることがわかります。
すべてのタイムスタンプを取得できるように接続する方法はありますか?
答え1
zsh
シェルからみんなdd.mm.yyyy hh:mm
現在のシェルセッションの履歴とタイムスタンプ(「ヨーロッパ形式」)を使用して
history -E 1
最後にあるのは、1
最初(最後)の項目から記録を見たいという意味です。
シェルが履歴ファイル()にタイムスタンプを保存するには、シェルオプションを$HISTFILE
有効にする必要があります。EXTENDED_HISTORY
setopt EXTENDED_HISTORY
...~/.zshrc
ファイルにあります(このオプションは、次の新しいシェルセッションで適用されます)。このオプションを設定せずに保存された履歴項目は、いいえタイムスタンプで保存されます。
質問に使用するコマンドは、エントリ数に関係なく、history man
文字列を含む最新の行以降のすべての履歴エントリを表示します。とを組み合わせて、最新の項目が含まれてからタイムスタンプされた履歴項目を取得できますman
。history -E
history man
history -E man
man
デフォルトでは、history
最後の16個のコマンドライン履歴エントリが出力されます。
答え2
zsh ではなく Bash 端末を使用して実行するためのものです。
HISTTIMEFORMATを設定できます。
If the HISTTIMEFORMAT variable is set and not null, its value is used
as a format string for strftime(3) to print the time stamp associated
with each displayed history entry. No time stamps are printed otherwise.
例えば
export HISTTIMEFORMAT="%F %T "
history
私の例では、端末でこれを行いましたが、結果は次のようになります。
2118 02/21/2023 01:00:54 PM history
2119 02/21/2023 01:01:47 PM export HISTTIMEFORMAT="%F %T "
2120 02/21/2023 01:01:48 PM history