Kann den Zeitstempel von Zsh Geschichte lesen
Frage
Problem: die folgenden Zeitstempel verstehen
1241036430
bei ~ / .history
: 1241036336:0;vim ~/.zshrc
: 1241036379:0;vim ~/bin/HideTopBar
: 1241036421:0;ls
: 1241036430:0;cat ~/.history
, wenn ich
setopt EXTENDED_HISTORY
HISTFILE=~/.history
in .zshrc.
Wie kann man lesen Sie die Zeitstempel?
Lösung
Diese einfache util , genannt localtime
ist Gold für Dateien mit dem Lesen Zeitstempel:
#!/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"
}
- (Es gibt auch eine kleine Präsentation :))
Es behandelt viele Fälle, und scheint beiden Zeitstempel in Sekunden und Mini-Sekunden zu verstehen, etc.
$ localtime < ~/.histfile
<snip>
: Sat Sep 17 05:55:17 2016:0;cat localtime
Andere Tipps
Versuchen history -d
. Oder einfach nur history -
und drücken Steuer-D geben, all die verschiedenen Optionen zu erhalten:
% 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
Sie können mit den Menschen lesbaren Zeitstempel mit diesen Einzeiler von eine Antwort auf die zsh Mailingliste :
perl -lne 'm#: (\d+):\d+;(.+)# && printf "%s :: %s\n",scalar localtime $1,$2' $HISTFILE
Ich würde empfehlen, die Ausgabe auf einen Pager (less
zum Beispiel) Rohrleitungen, um es besser lesbar.
Adendum: Sie können den history
Befehl selbst Zeitstempel in gespeichert History-Dateien als auch gefunden zu übersetzen:
Die Optionen zum history
Befehl wie von Nicholas Riley erklärt gelten genauso gut gespeichert History-Dateien, so history -d < historyfile
(oder eine der anderen Optionen) übersetzt die Zeitstempel in Ordnung.
Das ist praktisch, wenn Sie mehr als nur eine History-Datei mit - ich Setup zsh
habe eine History-Datei pro pty zu halten Historien von Schalen parallel Vermischung zu vermeiden, auf demselben System ausgeführt wird (da in der Regel jeden Fenster / screen / ... ist insbesondere auf eine bestimmte Aufgabe, und so aus dem normalen Gebrauch der Geschichten Art von Themen am Ende Schwelle).
: 1241036430:0;cat ~/.history
‘: <beginning time>:<elapsed seconds>;<command>’.
extendedhistory - spart die Zeit in Sekunden. Die Anfangszeit ist seit der Epoche.
Quelle: http://zsh.sourceforge.net/Doc/ Release / options.html # index EXTENDEDHISTORY