问题:了解以下时间戳
1241036430
>〜/ .history
: 1241036336:0;vim ~/.zshrc
: 1241036379:0;vim ~/bin/HideTopBar
: 1241036421:0;ls
: 1241036430:0;cat ~/.history
当我有
时setopt EXTENDED_HISTORY
HISTFILE=~/.history
<。>在.zshrc。
如何阅读时间戳?
答案 0 :(得分:19)
试试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
答案 1 :(得分:12)
您可以使用从an answer on the zsh mailing list获取的单行显示人类可读时间戳的整个历史记录:
perl -lne 'm#: (\d+):\d+;(.+)# && printf "%s :: %s\n",scalar localtime $1,$2' $HISTFILE
我建议将输出汇总到寻呼机(例如less
)以使其更具可读性。
答案 2 :(得分:2)
Adendum:您可以使用history
命令自行翻译已保存历史记录文件中的时间戳:
Nicholas Riley解释的history
命令的选项同样适用于保存的历史文件,因此history -d < historyfile
(或任何其他选项)可以很好地转换时间戳。
如果您使用的不仅仅是一个历史记录文件,这会派上用场 - 我设置zsh
每个pty保留一个历史记录文件,以避免混合并行运行的shell的历史记录相同的系统(因为通常每个窗口/屏幕/ ...特定于某个任务,所以从正常使用中出现的历史最终会有一些主题)。
答案 3 :(得分:2)
: 1241036430:0;cat ~/.history
‘: <beginning time>:<elapsed seconds>;<command>’.
extendedhistory - 以秒为单位节省时间。开始时间是从纪元开始的。
来源:http://zsh.sourceforge.net/Doc/Release/Options.html#index-EXTENDEDHISTORY
答案 4 :(得分:1)
这个名为localtime
的简单util是用于读取带时间戳的文件的黄金:
#!/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
答案 5 :(得分:0)
您真的只需要别名。
将此行添加到您的startActivity()
或别名的其他位置。
.zsh_aliases
或alias history='fc -il 1'
命令中的其他选项。检查fc
编辑:
更好的方法是使用相同的命令,因此不要在最后添加另一个键/选项的情况下混淆。在这种情况下,我建议:
man zshbuiltins