我知道可以将时间戳添加到 bash_history。
到目前为止我看到的例子总是使用当前系统时间。这对我来说是个问题:一方面,我喜欢以 UTC 格式保存日志,因为这样可以更轻松地关联内容。另一方面,我在非 UTC 时区工作,因此我的系统时间未设置为 UTC。
有没有办法让您的系统设置为例如 UTC+1,但仍然使用 UTC 时间记录 bash_history?
好的,根据@meuh 的回答,我找到了一种方法来实现我正在寻找的东西:
- 根据需要设置 HISTTIMEFORMAT。它只控制格式(duh!)。我选择了:
HISTTIMEFORMAT='%F %T %z '
- 要在另一个时区的系统上以 UTC显示历史记录,请仅为该命令将 TZ 变量设置为 UTC:
$TZ='UTC' history
....
1040 2023-05-27 12:30:02 +0000 cat ~/.bashrc
1041 2023-05-27 12:30:11 +0000 grep -i hist ~/.bashrc
1042 2023-05-27 12:36:21 +0000 TZ='UTC' history
在不设置 TZ 的情况下运行历史记录,您将获得当前 TZ 中显示的时间(将输出中的数字时区与前一个时区进行比较):
$ history
...
1040 2023-05-27 14:30:02 +0200 cat ~/.bashrc
1041 2023-05-27 14:30:11 +0200 grep -i hist ~/.bashrc
1042 2023-05-27 14:36:21 +0200 TZ='UTC' history
您根本不需要做任何事情,因为历史文件中的时间戳始终以自 Unix 纪元以来的秒数保存。只有当您打印它们时,它们才会转换为您所在的任何时区。您应该能够通过将 的输出与
date +%s
历史文件中的数字进行比较(使用 保存到文件中history -w
)来看到这一点。或用于HISTTIMEFORMAT='%s: '
查看此数字而不是您当前看到的任何转换后的日期格式。如果您更改时区,该数字不会改变,例如: