我试图让我的终端(macOS)打印我之前使用过的命令,以及它们的时间戳。
我知道如果我使用history man
,它会给我一个过去 1000 个左右的列表,如果我使用history -E
,它会给出带有时间戳的命令,尽管只有大约 20 个左右。
有什么方法可以连接它们,以便我获得所有时间戳?
答案1
在zsh
shell 中,得到全部当前 shell 会话的历史记录和时间戳(“欧洲格式dd.mm.yyyy hh:mm
”),使用
history -E 1
末尾的1
表示您希望查看从第一个(到最后一个)条目的历史记录。
请注意,要让 shell 将时间戳存储在历史文件 ( $HISTFILE
) 中,您需要启用EXTENDED_HISTORY
shell 选项
setopt EXTENDED_HISTORY
...在您的~/.zshrc
文件中(该选项在下一个新的 shell 会话中生效)。不设置此选项而保存的历史条目将不是与它们的时间戳一起保存。
您在问题中使用的命令history man
将显示自包含字符串的最新行以来的所有历史记录条目man
,无论这可能有多少条目。您可以组合history -E
和history man
ashistory -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