Невозможно прочитать временную метку истории Zsh. - PullRequest
15 голосов
/ 30 апреля 2009

Проблема: , чтобы понять следующую метку времени

1241036430

в ~ / .истории

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

когда у меня

setopt EXTENDED_HISTORY
HISTFILE=~/.history

в .zshrc.

Как прочитать метку времени?

Ответы [ 5 ]

19 голосов
/ 30 апреля 2009

Попробуйте 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
12 голосов
/ 31 июля 2013

Вы можете отобразить всю историю с удобочитаемыми временными метками, используя эту однострочную строку, взятую из ответа в списке рассылки zsh :

perl -lne 'm#: (\d+):\d+;(.+)# && printf "%s :: %s\n",scalar localtime $1,$2' $HISTFILE

Я бы порекомендовал передать вывод на пейджер (например, less), чтобы сделать его более читабельным.

2 голосов
/ 23 октября 2015
: 1241036430:0;cat ~/.history

‘: <beginning time>:<elapsed seconds>;<command>’.

extendedhistory - экономит время в секундах. Время начала с эпохи.

источник: http://zsh.sourceforge.net/Doc/Release/Options.html#index-EXTENDEDHISTORY

2 голосов
/ 01 ноября 2014

Дополнение: Вы можете использовать саму команду history для перевода отметок времени, найденных также в сохраненных файлах истории:

Параметры команды history, описанные Николасом Райли, применимы также и к сохраненным файлам истории, поэтому history -d < historyfile (или любой другой параметр) отлично переводит метки времени.

Это удобно, если вы используете более одного файла истории - я настроил zsh, чтобы сохранить один файл истории на pty, чтобы не перепутать истории из оболочек, работающих параллельно в одной системе (так как обычно каждое окно / экран / ... относится к определенной задаче, и поэтому истории, возникающие при обычном использовании, в конечном итоге становятся своего рода тематическими). ​​

1 голос
/ 17 сентября 2016

Этот простой util , называемый 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
...