Невозможно прочитать временную метку истории Zsh
: чтобы понять следующую метку времени
1241036430
at ~/.история
: 1241036336:0;vim ~/.zshrc
: 1241036379:0;vim ~/bin/HideTopBar
: 1241036421:0;ls
: 1241036430:0;cat ~/.history
когда я
setopt EXTENDED_HISTORY
HISTFILE=~/.history
in .zshrc.
как вы можете прочитать метку?
5 ответов
Это просто 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()/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 ,' $HISTFILE
Я бы рекомендовал передать вывод на пейджер (less
например), чтобы сделать его более читабельным.
Adendum: вы можете использовать history
команда сама перевести метки времени, найденные в сохраненных файлах истории, а также:
параметры history
команда, как объяснил Николас Райли, применяется так же хорошо к сохраненным файлам истории, поэтому history -d < historyfile
(или любой другой вариант) переводит метки времени просто отлично.
это пригодится, если вы используете более одного файла истории - я настроил zsh
чтобы сохранить один файл истории на pty, чтобы избежать смешивания историй из оболочек, работающих параллельно в одной системе (так как обычно каждое окно/экран/... специфична для определенной задачи,и поэтому истории, возникающие из нормального использования, заканчиваются своего рода тематикой).
: 1241036430:0;cat ~/.history
‘: <beginning time>:<elapsed seconds>;<command>’.
extendedhistory - экономит время в секундах. Время начала - с эпохи.
источник:http://zsh.sourceforge.net/Doc/Release/Options.html#index-EXTENDEDHISTORY