2009-04-29 7 views
15

Problema: para entender la siguiente marca de tiempoNo se puede leer la marca de tiempo de la historia Zsh

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?

+0

Tengo curiosidad sobre lo que es el segundo entero (siempre es 0). ¿Qué representa este número? –

Respuesta

1

Este sencillo util, llamado localtime es oro para la lectura de 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" 
} 

Maneja muchos casos y parece entender ambas marcas de tiempo en segundos y mini- segundos, etc.

$ localtime < ~/.histfile 
<snip> 
: Sat Sep 17 05:55:17 2016:0;cat localtime 
+0

¿Puedes usar la función para otros archivos de historial, no solo de Zsh? –

+0

Sí, por lo general solo funciona. Simplemente busca la primera cadena de dígitos y la convierte a una fecha legible por humanos. – olejorgenb

18

Probar history -d. O simplemente escriba history - y pulse Control + D para conseguir todas las distintas 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 
+0

¡Gracias por las explicaciones! –

+0

Aprendí algo nuevo que ctrl-D dará todas las opciones. ¡¡Gracias!! – Buchi

+2

No funciona para mí, ¿cómo hago esto en OS X? – juanpastas

12

Se puede visualizar toda la historia con marcas de tiempo legibles utilizando esta sola línea tomada de an answer on the zsh mailing list:

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 hacerlo más legible.

+0

+1 para acreditar la fuente ... :) –

2

Adendum: Usted puede usar el comando history sí para traducir marcas de tiempo se encuentran en la historia de los archivos guardados, así:

Las opciones del comando history como se explica por Nicholas Riley aplicar del mismo modo que a los archivos del historial guardado, por lo history -d < historyfile (o cualquiera de las otras opciones) traduce las marcas de tiempo muy bien.

Esto es útil si está usando más de un archivo de historial. Configuré zsh para mantener un archivo de historial por unidad para evitar mezclar historiales de shells que se ejecutan en paralelo en el mismo sistema (ya que cada uno window/screen/... es particular para una tarea determinada, y por lo tanto las historias que emergen del uso normal terminan en una especie de tema).

+1

'history -d olejorgenb

Cuestiones relacionadas