题
问题: 了解以下时间戳
1241036430
在~/.历史
: 1241036336:0;vim ~/.zshrc
: 1241036379:0;vim ~/bin/HideTopBar
: 1241036421:0;ls
: 1241036430:0;cat ~/.history
当我有
setopt EXTENDED_HISTORY
HISTFILE=~/.history
中。zshrc.
怎么你可以阅读的时间戳?
解决方案
这个简单的 工具, ,称为 localtime
是金用于读取文件的时间戳:
#!/usr/bin/perl
# http://perl.plover.com/classes/mybin/samples/source/localtime
if ($ARGV[0] eq '-f') {
*show_localtime = \&show_localtime_list;
shift;
}
if (@ARGV) {
for (@ARGV) {
print show_localtime($_), "\n";
}
} else {
while (<>) {
s/^(\d+)/show_localtime($1)/e;
print;
}
}
sub show_localtime {
my $t = shift;
scalar localtime $t;
}
sub show_localtime_list {
my $t = shift;
my @a = localtime $t;
"@a\n"
}
- (还有一点 演示 :))
它处理大量的案件,并似乎要了解这两个时间戳在几秒钟内小秒,等等。
$ localtime < ~/.histfile
<snip>
: Sat Sep 17 05:55:17 2016:0;cat localtime
其他提示
尝试history -d
。或者只需键入history -
并按control-D即可获得所有各种选项:
% history -
-D -- print elapsed times
-E -- dd.mm.yyyy format time-stamps
-d -- print time-stamps
-f -- mm/dd/yyyy format time-stamps
-i -- yyyy-mm-dd format time-stamps
-m -- treat first argument as a pattern
-n -- suppress line numbers
-r -- reverse order of the commands
您可以使用答案中的单行内容,以人类可读的时间戳显示整个历史记录zsh邮件列表:
perl -lne 'm#: (\d+):\d+;(.+)# && printf "%s :: %s\n",scalar localtime $1,$2' $HISTFILE
我建议将输出汇总到寻呼机(例如less
)以使其更具可读性。
Adendum:您可以使用history
命令本身来翻译已保存历史记录文件中的时间戳:
Nicholas Riley解释的history -d < historyfile
命令选项同样适用于已保存的历史文件,因此zsh
(或任何其他选项)可以很好地转换时间戳。
如果您使用的不仅仅是一个历史文件,这会派上用场 - 我已经设置<=>每个pty保留一个历史文件,以避免混合同一系统上并行运行的shell的历史记录(因为通常每个窗口/屏幕/ ...特定于某个任务,因此从正常使用中出现的历史最终会出现一些主题。
: 1241036430:0;cat ~/.history
‘: <beginning time>:<elapsed seconds>;<command>’.
extendedhistory - 以秒为单位节省时间。开始时间是从纪元开始的。
来源: http://zsh.sourceforge.net/Doc/释放/ Options.html#索引EXTENDEDHISTORY
不隶属于 StackOverflow