如何让终端打印命令历史记录以及所有命令的时间戳

如何让终端打印命令历史记录以及所有命令的时间戳

我试图让我的终端(macOS)打印我之前使用过的命令,以及它们的时间戳。

我知道如果我使用history man,它会给我一个过去 1000 个左右的列表,如果我使用history -E,它会给出带有时间戳的命令,尽管只有大约 20 个左右。

有什么方法可以连接它们,以便我获得所有时间戳?

答案1

zshshell 中,得到全部当前 shell 会话的历史记录和时间戳(“欧洲格式dd.mm.yyyy hh:mm”),使用

history -E 1

末尾的1表示您希望查看从第一个(到最后一个)条目的历史记录。

请注意,要让 shell 将时间戳存储在历史文件 ( $HISTFILE) 中,您需要启用EXTENDED_HISTORYshell 选项

setopt EXTENDED_HISTORY

...在您的~/.zshrc文件中(该选项在下一个新的 shell 会话中生效)。不设置此选项而保存的历史条目将不是与它们的时间戳一起保存。


您在问题中使用的命令history man将显示自包含字符串的最新行以来的所有历史记录条目man,无论这可能有多少条目。您可以组合history -Ehistory manashistory -E man来获取自包含 的最新条目以来带时间戳的历史条目man

默认情况下,history输出最近 16 个命令行历史记录条目。

答案2

这是为了使用 Bash 终端运行,而不是 zsh

您可以设置 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

相关内容