端末印刷コマンドの履歴とすべてのコマンドのタイムスタンプを作成する方法

端末印刷コマンドの履歴とすべてのコマンドのタイムスタンプを作成する方法

以前に使用したコマンドをタイムスタンプで印刷するように端末(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文字列を含む最新の行以降のすべての履歴エントリを表示します。とを組み合わせて、最新の項目が含まれてからタイムスタンプされた履歴項目を取得できますmanhistory -Ehistory manhistory -E manman

デフォルトでは、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

関連情報