Ich möchte den letzten Bash-Befehl mit seinem Zeitstempel drucken. history 1
zeigt den Verlaufsbefehl selbst. Ich muss es auf vielen Computern verwenden, daher sollte es nicht von einer benutzerdefinierten Konfiguration abhängen. Es muss sicherlich einen einfachen Befehl geben, den ich vermisse, um dies zu tun, wie lastcmd
oder so :)
Beachten Sie, dass fc -l -1
der letzte Befehl ohne Zeitstempel angezeigt wird und zu kompliziert ist, um ihn ohnehin häufig einzugeben.
Zur Verdeutlichung suche ich nach einer standardmäßigen und einfachen Möglichkeit, dies zu tun, da ich sie auf vielen Servern verwenden muss und es nicht möglich ist, sie alle anzupassen oder benutzerdefinierte Funktionen zu erstellen. Außerdem muss ich diesen Befehl manuell eingeben, damit er wirklich einfach ist.
Es scheint, dass HISTCONTROL = ignoreboth eine Standardeinstellung auf Servern ist, auf die ich zugreifen muss, damit ich Folgendes verwenden kann:
history 1
(Befehl history mit vorangestelltem Leerzeichen), der nicht in den Verlauf eingefügt wird, sodass der letzte Befehl korrekt angezeigt wird.
HISTTIMEFORMAT
ist jedoch nicht standardmäßig festgelegt, daher handelt es sich nicht um eine vollständige Lösung. Gibt es einen einfacheren Weg?
Antworten:
Wie Sie hervorheben, wird
history 1
derhistory
Befehl selbst gedruckt, da dies der letzte Befehl ist, den Sie ausgeführt haben. Um die vorherige zu erhalten, benötigen Siehistory 2
:Um den vorherigen Befehl zu erhalten, ohne sich
history
selbst zu zählen , führen Sie ihn durchhead -n1
:Fügen Sie dann den Zeitstempel in einem beliebigen Format hinzu (siehe
man 3 strftime
verfügbare Formate):quelle
history 2 | head -n1
. Sie können dieHISTTIMEFORMAT
Variable jederzeit in.profile
oder festlegen.bashrc
, um sie nicht im Befehl festzulegen. Noch einfacher, machen Sie das Ganze einfach zu einem Alias.~/.bash_history
~/.bash_history
wenn dieHISTTIMEFORMAT
Variable gesetzt ist. Versuchen Sie esexport HISTTIMEFORMAT="%F %H:%m:%S"; history -a; tail .bash_history
zum Beispiel. EineHISTTIMEFORMAT
globale Einstellung (z. B. in~/.profile
) sollte also ausreichen, damit dies automatisch erfolgt.Eine nicht-historische Option, die helfen kann, besteht auch darin, Ihre Shell so anzupassen, dass sie angezeigt wird. Ich habe es zeigen und andere Infos (sogar Git Branch!) Mit:
Es hilft meiner Geschichte an sich nicht, aber wenn ich in meinem Terminal zurück scrolle, kann ich zumindest sehen:
quelle
Es scheint, dass Bash keine einfache Möglichkeit bietet, einen Zeitstempel zu erhalten, wenn der letzte Befehl ausgeführt wurde.
Falls es für Sie praktisch ist, die Bash-Konfigurationen Ihres Servers anzupassen, können Sie eine benutzerdefinierte Bash-Funktion basierend auf der Antwort von @terdon erstellen.
quelle
Ausführen
und Ihre Verlaufsdatei zeichnet Zeiten auf (nur für neue Befehle):
UND
Verwenden Sie ein Leerzeichen vor dem Befehl, um zu vermeiden, dass es im Verlauf aufgezeichnet wird:
Erstellen Sie zur Vereinfachung einen Alias:
Verwenden Sie es dann mit einem Leerzeichen, nachdem das
HISTTIMEFORMAT
festgelegt wurde, um Folgendes zu erhalten:quelle