No se puede leer la marca de tiempo del historial de Zsh
Pregunta
Problema: para entender la siguiente marca de tiempo
1241036430
en ~/.history
: 1241036336:0;vim ~/.zshrc
: 1241036379:0;vim ~/bin/HideTopBar
: 1241036421:0;ls
: 1241036430:0;cat ~/.history
cuando tengo
setopt EXTENDED_HISTORY
HISTFILE=~/.history
en .zshrc.
¿Cómo se puede leer la marca de tiempo?
Solución
Este simple util , llamado localtime
es oro para leer archivos con marcas de tiempo:
#!/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"
}
- (También hay una pequeña presentación :))
Maneja muchos casos y parece comprender ambas marcas de tiempo en segundos y mini segundos, etc.
$ localtime < ~/.histfile
<snip>
: Sat Sep 17 05:55:17 2016:0;cat localtime
Otros consejos
Intentar history -d
.O simplemente escribe history -
y presione control-D para obtener todas las opciones:
% 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
Puede mostrar todo el historial con marcas de tiempo legibles por humanos usando esta frase extraída de una respuesta en la lista de correo de zsh :
perl -lne 'm#: (\d+):\d+;(.+)# && printf "%s :: %s\n",scalar localtime $1,$2' $HISTFILE
Recomendaría canalizar la salida a un localizador (less
por ejemplo) para que sea más legible.
Adendum: también puede usar el comando history
para traducir las marcas de tiempo que se encuentran en los archivos de historial guardados:
Las opciones del comando history -d < historyfile
según lo explica Nicholas Riley se aplican igualmente a los archivos de historial guardados, por lo que zsh
(o cualquiera de las otras opciones) traduce las marcas de tiempo muy bien.
Esto es útil si está usando más de un solo archivo de historial: he configurado <=> para mantener un archivo de historial por pty para evitar mezclar los historiales de los shells que se ejecutan en paralelo en el mismo sistema (ya que generalmente cada ventana / pantalla / ... es particular para una determinada tarea, por lo que las historias que emergen del uso normal terminan siendo temáticas).
: 1241036430:0;cat ~/.history
‘: <beginning time>:<elapsed seconds>;<command>’.
Extendedhistory: ahorra el tiempo en segundos. El tiempo de inicio es desde la época.
fuente: http://zsh.sourceforge.net/Doc/ Release / Options.html # index-EXTENDEDHISTORY