ssh 历史命令输出不正确,如何正确读取时间戳信息

ssh 历史命令输出不正确,如何正确读取时间戳信息

我设置了HISTTIMEFORMAT变量来存储时间戳信息.bash_history文件。如果我使用交互式 shell,我能够正确显示历史记录。

但是,当我运行 history 命令显示历史记录时,文件的时间戳信息.bash_history显示为命令,并且所有命令的时间戳信息都设置为当前时间。

示例文件内容bash_history::

#45556656
pwd
#45677756
ls
#45665765
who

命令:

$ ssh Host 'HISTFILE=~/bash_history;HISTTIMEFORMAT=" %F %T ";set -o history; history'

输出:

235 2015-08-24 13:12 #45556656
236 2015-08-24 13:12 pwd
237 2015-08-24 13:12 #45677756
238 2015-08-24 13:12 ls

问题: 1. 所有命令的时间戳相同。它设置为当前时间戳。

历史文件中的时间信息被读取为命令。因此丢失了命令的实际时间戳信息。当我尝试通过ssh或获取信息时,如何获取正确的信息cronjob

笔记:我见过类似的问题,但没有一个能解决我的问题,也没有提出问题的人详细说明这种情况。

答案1

您还需要启用histexpand,这允许正确解释时间戳,因为它们以历史注释字符为前缀:

$ ssh HOST 'HISTFILE=/tmp/bash_history;HISTTIMEFORMAT=" %F %T ";set -o histexpand -o history; history'
1   1971-06-12 01:37:36 pwd
2   1971-06-13 11:15:56 ls
3   1971-06-13 07:56:05 who

有关更多详细信息,请参阅手册页中的HISTTIMEFORMAT和的描述。set -Hbash(1)


注意,顺序似乎很重要。以下是historybefore发生的情况histexpand

$ ssh pocampo 'HISTFILE=/tmp/bash_history; HISTTIMEFORMAT=" %F %T ";set -o history -o histexpand; history'
1  ??#45556656
2  ??pwd
3  ??#45677756
4  ??ls
5  ??#45665765
6  ??who

相关内容