Zunächst einige Hintergrundinformationen:Perl Einzeiler Epoche zu Menschen lesbaren umwandeln dann Epoche entfernen
Wir Code in unserem Bash_profile verwenden, die einen Zeitstempel in die Geschichte Befehl anhängt.
export HISTTIMEFORMAT="%d/%m/%Y %T "
Dann haben wir auch Code, der in/root/Geschichte unserer Befehlsverlauf zu einer bestimmten Stelle anfügt/
export HISTFILE=/root/history/.bash_hist-$(who -m | awk '{print $1}')
Der „Export HISTTIMEFORMAT“ Befehl wird die Unix-Zeitstempel in die Datei in anhängen/Wurzel/Geschichte /.
Jetzt passiert die Magie, wenn wir einen Perl-Einzeiler verwenden, um die Epoche zum Menschen lesbar umzuwandeln. (This, btw, ist auch in .bash_profile)
format_history() {
perl -i -e '$/=undef;my $string=<>;$string=~s/#([0-9] {10}.*\n.*$)/"# ".localtime($1)."#\n#$1"/ge;print $string;' /root/history/.bash_hist-$(who -m | awk '{print $1}')
}
shopt -s histappend
PROMPT_COMMAND="history -a;format_history;$PROMPT_COMMAND"
Das Endergebnis ist eine Datei, die für jede Befehlszeilen wie folgt enthält:
# Wed Apr 27 10:11:26 2016
#1461769886
vi /root/.bash_profile
ich nach einem Weg suchen Perl entfernen haben der Epochen-Zeitstempel ist einmal fertig konvertiert, aber bisher nicht erfolgreich. Ich habe versucht, sed am Ende der Zeile und einen anderen Perl-Befehl. Wie folgt aus:
Erster Versuch:
perl -i -e '$/=undef;my $string=<>;$string=~s/#([0-9]{10}.*\n.*$)/"# ".localtime($1)."#\n#$1"/ge;print $string;' /root/history/.bash_hist-$(who -m | awk '{print $1}' | sed '/^#1/ d'
Zweiter Versuch:
perl -i -e '$/=undef;my $string=<>;$string=~s/#([0-9]{10}.*\n.*$)/"# ".localtime($1)."#\n#$1"/ge;print $string;' /root/history/.bash_hist-$(who -m | awk '{print $1}' | perl -i -nle 'print if !/^#1\b' /root/history/.bash_hist-$(who -m | awk '{print $1}'
Aber wie gesagt ich diese nicht funktionieren. Kann mir jemand helfen, eine Lösung zu finden?