Impossible de lire l'horodatage de l'historique Zsh
Question
Problème: pour comprendre l'horodatage suivant
1241036430
à ~ / .history
: 1241036336:0;vim ~/.zshrc
: 1241036379:0;vim ~/bin/HideTopBar
: 1241036421:0;ls
: 1241036430:0;cat ~/.history
quand j'ai
setopt EXTENDED_HISTORY
HISTFILE=~/.history
dans .zshrc.
Comment pouvez-vous lire l'horodatage?
La solution
Ce simple util , appelé localtime
est un atout pour la lecture. fichiers avec horodatage:
#!/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"
}
- (Il existe également une présentation :))
Il gère de nombreux cas et semble comprendre les deux horodatages en secondes et mini-secondes, etc.
$ localtime < ~/.histfile
<snip>
: Sat Sep 17 05:55:17 2016:0;cat localtime
Autres conseils
Essayez history -d
. Ou tapez simplement history -
et appuyez sur Ctrl-D pour obtenir toutes les options:
% 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
Vous pouvez afficher l'historique complet avec des horodatages lisibles par l'homme à l'aide de cette ligne unique extraite de une réponse sur la liste de diffusion zsh :
perl -lne 'm#: (\d+):\d+;(.+)# && printf "%s :: %s\n",scalar localtime $1,$2' $HISTFILE
Je recommanderais de rediriger la sortie vers un pager (less
par exemple) pour la rendre plus lisible.
Adendum: vous pouvez également utiliser la commande history
pour traduire les horodatages trouvés dans les fichiers d’historique enregistrés:
Les options de la commande history -d < historyfile
décrites par Nicholas Riley s’appliquent tout aussi bien aux fichiers d’historique enregistrés. Par conséquent, zsh
(ou l’une des autres options) traduit parfaitement les horodatages.
Cela est pratique si vous utilisez plusieurs fichiers d'historique. J'ai configuré <=> pour conserver un fichier d'historique par pty afin d'éviter de mélanger les historiques de shells s'exécutant en parallèle sur le même système (car d'habitude chaque fenêtre / écran / ... est spécifique à une tâche donnée, ainsi les histoires issues de l'utilisation normale sont classées par thème).
: 1241036430:0;cat ~/.history
‘: <beginning time>:<elapsed seconds>;<command>’.
extendedhistory - enregistre le temps en secondes. Le temps de début est depuis l’époque.
source: http://zsh.sourceforge.net/Doc/ Version / Options.html # index-EXTENDEDHISTORY