Wie werden Zeitstempel in der Bash-Geschichte angezeigt?

259

Kann ich irgendwie sehen, wann die Befehle aus dem Bash-Verlauf ausgeführt wurden? Wir können die Bestellung sehen, aber gibt es eine Möglichkeit, die Zeit auch zu bekommen?

Fazit: Ausführungszeit in der Bash-Historie

rɑːdʒɑ
quelle
7
Ich bin erstaunt, wie schlecht dokumentiert dies sowohl unter Linux als auch unter BSD in den Manpages ist.
Sridhar Sarnobat
Schauen Sie sich diesen Blog an - sanctum.geek.nz/arabesque/better-bash-history .
abhicantdraw
4
Wenn Sie zsh verwenden:history -E
Vahid
4
Nicht sicher, warum zwei Antworten unten das Bedürfnis haben, Ihnen zu sagen, wie man ein Terminal
öffnet
2
Laut dem von @ dog0 referenzierten Blog werden Zeitstempel anscheinend nur gespeichert, wenn die HISTTIMEFORMATVariable bei der Ausgabe von Befehlen festgelegt wurde. Mit anderen Worten, wenn Sie es nicht festgelegt haben, können Sie mit der Einstellung "Jetzt" keine Zeitstempel von zuvor ausgegebenen Befehlen abrufen.
Tomislav Nakic-Alfirevic

Antworten:

316

Drücken Sie Ctrl+ Alt+ T, um das Terminal zu öffnen, und führen Sie den folgenden Befehl aus:

HISTTIMEFORMAT="%d/%m/%y %T "

Oder, um die Änderung für den aktuellen Benutzer dauerhaft zu machen:

echo 'HISTTIMEFORMAT="%d/%m/%y %T "' >> ~/.bashrc
source ~/.bashrc

Dann

history

Weitere Informationen finden Sie unter man bash oder An AZ Index der Bash-Befehlszeile für Linux .

Für Befehle, die zuvor ausgeführt HISTTIMEFORMAT wurden, wird die aktuelle Zeit als Zeitstempel gespeichert. Bei Befehlen, die ausgeführt werden, nachdem sie HISTTIMEFORMATfestgelegt wurden, wird der richtige Zeitstempel gespeichert.

Mitch
quelle
7
Warum mit exportin deklarieren .bash_profile? Es ist eine Variable, die nur von bash, nicht von Befehlen gelesen wird , die von ihr gestartet werden. Sie sollte daher nicht exportiert werden.
Alvaro Gutierrez Perez
71
Beachten Sie, dass dies nur Zeitstempel für neue Verlaufselemente aufzeichnet , nachdem dies HISTTIMEFORMATfür Sitzungen festgelegt wurde, dh Sie können dies nicht rückwirkend verwenden. Einige Antworten hier vermitteln den Eindruck, dass der Befehl history sofort Einträge mit Zeitstempel anzeigt
Louis Maddox,
9
@ Louis - Eigentlich hat das für mich rückwirkend geklappt?!?!
stephenmm
19
@Jamil: für Leute, die ISO-Standards folgen, ist es "% y-% m-% d" für den Datumsteil;)
Gauthier
13
@Gauthier - benutze einfach% F für das ISO-Datum ;-) man7.org/linux/man-pages/man3/strftime.3.html
brianmearns
73

Öffnen Sie das Terminal Ctrl+ Alt+ Tund laufen,

HISTTIMEFORMAT="%d/%m/%y %T "

dann,

history

Führen Sie die folgenden Schritte aus, um die Änderungen dauerhaft zu speichern:

gedit ~/.bashrc

Sie müssen die folgende Zeile zur .bashrc-Datei hinzufügen und dann speichern,

export HISTTIMEFORMAT="%d/%m/%y %T "

Führen Sie den folgenden Befehl aus, um die .bashrc-Quelldatei zu erhalten.

source ~/.bashrc

Nach diesem historyBefehl ausführen .

Bildbeschreibung hier eingeben

Quelle : http://www.cyberciti.biz/faq/unix-linux-bash-history-display-date-time/

Avinash Raj
quelle
Vielen Dank für Ihre Antwort. Wird es eine permanente Veränderung sein?
Donnerstag,
1
Hey, ich mache das in OS X und Windows (über MINGW) und füge es in .bash_profile ein. Was ist der Unterschied zwischen profile und rc?
LasagneAndroid
18

Ja, Sie können: Wenn Sie festlegen $HISTTIMEFORMAT, .bash-historywird der Zeitstempel korrekt angezeigt. Das hilft bei vorhandenen .bash-historyInhalten nicht, wird aber in Zukunft helfen.

Dennis Kaarsemaker
quelle
1
können Sie es für mehr Klarheit erweitern?
Donnerstag,
5
Korrektur zum vorherigen Beitrag: Das Setzen von HISTTIMEFORMAT ermöglicht die Anzeige der Zeitstempel ... auch vorhandener. Mein Favorit ist: HISTTIMEFORMAT = '% F% T', da es nicht darauf ankommt, aus welchem ​​Land Sie kommen ... jeder weiß sofort, wie spät es ist. :)
4
Ich habe $ HISTTIMEFORMAT gesetzt und die Zeiten für heute noch vor den Befehlen dieses Satzes ermittelt.
Yasin Okumuş
@ user491029 "... auch vorhanden". Das ist wahr, aber irreführend. Zumindest unter Ubuntu 14.04 wurden Zeitstempel für alle Verlaufseinträge angezeigt, nachdem ich HISTTIMEFORMAT festgelegt hatte. Es sieht jedoch so aus, als ob die Zeitstempel für alle Befehle, die vor der aktuellen Sitzung ausgeführt wurden, die Anmeldezeitstempel der aktuellen Sitzung waren.
Jbobbins
1

Änderungen werden beim nächsten Login angezeigt.

echo 'HISTTIMEFORMAT="%d/%m/%y %T "' >> ~/.bashrc
DimiDak
quelle
0

Um Verlaufszeitstempel für alle Benutzer zu aktivieren, erstellen Sie ein Skript in /etc/profile.d:

echo 'HISTTIMEFORMAT="%Y%m%d %T "' >> /etc/profile.d/timestamp.sh
iii
quelle
1
Dies funktioniert wahrscheinlich nicht für Benutzer, die sich über die GUI anmelden, da das Standardterminal keine Login-Shells ausführt. /etc/bash.bashrcwäre ein besserer Ort.
muru
0

Ich weiß, ich beantworte es sehr spät, aber um dies für alle Benutzer zu tun, können Sie eine beliebige .shDatei erstellen /etc/profile.dund die folgende Zeile hinzufügen:

echo 'HISTTIMEFORMAT="%Y-%m-%d %T "' >> /etc/profile.d/existing-foo-file.sh

Wenn Sie nicht als rootoder Superuser angemeldet sind , müssen Sie den folgenden teeBefehl verwenden:

echo 'HISTTIMEFORMAT="%Y-%m-%d %T "' | sudo tee /etc/profile.d/mytimestamp.sh

Wenn Sie an eine vorhandene Datei anhängen möchten, übergeben Sie das -aFlag an den teeBefehl:

echo 'HISTTIMEFORMAT="%Y-%m-%d %T "' | sudo tee -a /etc/profile.d/mytimestamp.sh

Bildbeschreibung hier eingeben

Shashank Agrawal
quelle
Hallo Shashank, Danke, dass du die Antwort hinzugefügt hast, aber wie unterscheidet sich diese Antwort von anderen? Wenn Ihre Antwort völlig anders ist, sind wir froh, sie zu haben, aber wenn nicht, können Sie vorhandene Antworten verbessern.
Donnerstag,
Hallo, danke für den Kommentar. Dies unterscheidet sich in folgender Hinsicht von anderen: 1. Einige von ihnen haben das Erstellen für alle Benutzer erwähnt, aber niemand hat das Erstellen / Erläutern eines Dateinamens in erwähnt /etc/profile.d. timestamp.shsieht sehr technisch aus (schafft also Verwirrung), also habe ich den Namen verwendet existing-foo-file.sh(Foo-Bar-Konzept). 2. Niemand hat erwähnt, dass es für Benutzer ohne Rootberechtigung verwendet wird. Also habe ich ein Anwendungsbeispiel gegeben sudo. 3. Das dritte Beispiel verbessert das zweite Beispiel für das Anhängen an eine vorhandene Datei. Da Linux / Unix-Anfänger dieses Problem lösen können, habe ich es ausgearbeitet.
Shashank Agrawal