无法读取Zsh历史记录的时间戳

时间:2009-04-29 20:27:57

标签: timestamp zsh

问题:了解以下时间戳

1241036430
〜/ .history

: 1241036336:0;vim ~/.zshrc
: 1241036379:0;vim ~/bin/HideTopBar
: 1241036421:0;ls
: 1241036430:0;cat ~/.history

当我有

setopt EXTENDED_HISTORY
HISTFILE=~/.history
<。>在.zshrc。

如何阅读时间戳?

6 个答案:

答案 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