Domanda

Problema: per comprendere il seguente timestamp

1241036430

a ~ / .history

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

quando l'ho

setopt EXTENDED_HISTORY
HISTFILE=~/.history

in .zshrc.

Come puoi leggere il timestamp?

È stato utile?

Soluzione

Questo semplice util , chiamato localtime è oro per la lettura file con timestamp:

#!/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"
}

Gestisce molti casi e sembra comprendere entrambi i timestamp in secondi e mini-secondi, ecc.

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

Altri suggerimenti

Prova history -d. Oppure digita history - e premi control-D per ottenere tutte le varie opzioni:

% 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

Puoi visualizzare l'intera cronologia con timestamp leggibili dall'uomo usando questo one-liner tratto da una risposta su la mailing list zsh :

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

Vorrei raccomandare il piping dell'output a un cercapersone (less per esempio) per renderlo più leggibile.

Adendum: è possibile utilizzare il comando history stesso per tradurre i timestamp trovati anche nei file della cronologia salvati:

Le opzioni del comando history -d < historyfile come spiegato da Nicholas Riley si applicano anche ai file di cronologia salvati, quindi zsh (o una qualsiasi delle altre opzioni) traduce bene i timestamp.

Questo è utile se stai usando più di un solo file di cronologia: ho impostato <=> per mantenere un file di cronologia per pty per evitare di confondere cronologie di shell che funzionano in parallelo sullo stesso sistema (poiché di solito ogni finestra / schermo / ... è particolare per un determinato compito, quindi le storie che emergono dall'uso normale finiscono in una sorta di tema).

: 1241036430:0;cat ~/.history

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

storia estesa: consente di risparmiare tempo in secondi. L'inizio è dall'epoca.

fonte: http://zsh.sourceforge.net/Doc/ uscita / Options.html # index-EXTENDEDHISTORY

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top