Ich habe mich gefragt, ob es möglich ist, Zeitstempel zu Terminal-Eingabeaufforderungen hinzuzufügen, und wenn ja, wie kann ich dies erreichen?
Ich habe mich gefragt, ob es möglich ist, Zeitstempel zu Terminal-Eingabeaufforderungen hinzuzufügen, und wenn ja, wie kann ich dies erreichen?
Antworten:
Fügen Sie diese Zeile zur ~/.bashrc
Datei hinzu:
export PROMPT_COMMAND="echo -n \[\$(date +%H:%M:%S)\]\ "
Die Ausgabe wird also ungefähr so aussehen:
[07:00:31] user@name:~$
date
Befehl können Sie ersetzen +%H:%M:%S
mit +%T
.
Meine Lösung bestand darin, mit http://bashrcgenerator.com/ diese PS1-Zeile zu generieren, um sie in .bashrc einzufügen:
export PS1="\t [\u@\h \W]\\$ \[$(tput sgr0)\]"
Welches wird aussehen
13:05:54 [chad@work-laptop:~/Downloads]$ ls -al
Durch die Verwendung von PROMPT_COMMAND wird der Verlauf für mich durcheinander gebracht. Wenn beim Durchlaufen des Verlaufs eine längere Zeile angezeigt wird, wird das Ende der Eingabeaufforderung um die gleiche Anzahl von Zeichen gekürzt wie der Zeitstempel, der an der Vorderseite hinzugefügt wurde. z.B
13:14:38 [chad@work-laptop:~/Doexport PROMPT_COMMAND="echo -n \[\$(date +%H:%M:%S)\\] "
Und diese Zeile kann nicht bearbeitet werden, da die Zeichen nicht an der richtigen Stelle angezeigt werden, da Sie nicht dort tippen, wo Sie anscheinend tippen.
Ich vermute, es könnte mit PROMPT_COMMAND gemacht werden, vielleicht mit diesem [$ (tput sgr0)] - Teil, aber PS1 funktioniert.
Anstatt das Datum der Eingabeaufforderung selbst hinzuzufügen, können Sie das Datum auch direkt vor Ihrer Eingabeaufforderung einfügen, indem Sie die folgende Zeile oben in Ihre Zeile einfügen .bashrc
. Für die Arbeit müssen Sie auch installieren cowsay
. Auf spielerische Weise können Sie das Datum anzeigen, während Sie eine kurze Eingabeaufforderung einhalten:
cowsay "Welcome $USER! It's now $(date '+%A %B %d %Y %r')"
In seiner aktuellen Form wird es auf jedem System ohne Änderung funktionieren, während es die $USER
und die date
Variable aus der aktuellen Umgebung liest .
Da ich nicht genug Reputationspunkte habe, um der Antwort einen Kommentar hinzuzufügen, um sie zu verbessern. Die einzige Möglichkeit, Informationen hinzuzufügen, besteht darin, eine zweite Antwort zu erstellen. Also werde ich wiederholen, was als Antwort gesagt wurde, und darauf aufbauen.
Bearbeiten Sie die .bashrc-Datei für den Benutzer, für den Sie den Datumsstempel ändern möchten.
Wenn Sie "user @ host: ~ $" sehen, befinden Sie sich im Home-Verzeichnis Ihres aktuellen Benutzers. Die .bashrc-Datei ist eine versteckte Datei, da ihr der Punkt "." Vorangestellt wird. Um es in einer Liste anzuzeigen, müssen Sie eine lange Liste verwenden.
Sie können "ls -a" verwenden und sollten dann die ".bashrc" -Datei sehen.
Bearbeiten Sie die Datei mit einem Texteditor. Zum Beispiel "nano .bashrc", "vim .bashrc", "vi .bashrc", "pico .bashrc" oder welcher Editor auch immer Sie verwenden möchten.
Wenn Sie dieses Skript erstellen und es für viele Benutzer zu vielen Shells hinzufügen möchten, kann es hilfreich sein, den Befehl "echo" in Verbindung mit dem Operator ">>" anhängen zu verwenden. Zum Beispiel,
echo "export PROMPT_COMMAND="echo -n \[\$(date +%H:%M:%S)\]\\"" >> .bashrc
Wenn Sie diese Methode verwenden, vergewissern Sie sich, dass Sie sich im aktuellen Arbeitsverzeichnis des Benutzers befinden, für den Sie sie ändern möchten. Um dies zu überprüfen, können Sie den Befehl "pwd" oder "print working directory" verwenden.
Wenn Ihnen der zusätzliche Abstand zwischen der Endklammer "]" und dem Benutzernamen nicht gefällt, verwenden Sie einfach diesen leicht geänderten regulären Ausdruck:
export PROMPT_COMMAND="echo -n \[\$(date +%H:%M:%S)\]\\"
Verwenden Sie diese Option, wenn Sie die Datei direkt bearbeiten.
Öffnen Sie Ihre .bashrc
Via
vim ~/.bashrc
und fügen Sie dann Folgendes hinzu .bashrc
:
#PS1="[\A \u@\h \W\a]$"
Wo \A
ist für die Zeit ( \W
nur für das Ende des Pfads, entfernen Sie, wenn Sie den gesamten aktuellen Arbeitsverzeichnispfad möchten). Dann tippe
source ~/.bashrc
Sie werden so etwas sehen:
[16:04 trwood@cobalt04 ~/MCEq_dev]$
\W
wird überhaupt kein Pfad angezeigt. \w
wird den vollen Weg geben.
Nur um die Antwort von @ devav2 zu ergänzen:
Ein einfacher zu lesender Echobefehl für Neulinge wäre:
export PROMPT_COMMAND='echo -n "$(date +%H:%M:%S) "'
Anstatt von
export PROMPT_COMMAND="echo -n \[\$(date +%H:%M:%S)\]\ "
Da der Echo-Befehl zum Zeitpunkt des Exports nicht ausgewertet werden soll, ist es sinnvoller, einfache Anführungszeichen für wörtliche Anführungszeichen anstelle von doppelten Anführungszeichen zu verwenden. Mit einfachen Anführungszeichen den gesamten Befehl zitieren , dann können Sie doppelte Anführungszeichen verwenden , um das Argument zu dem Echo - Befehl zu zitieren, entfällt die Notwendigkeit , wie Sonderzeichen zu entkommen ,
[
und$
Ich denke, der richtige Weg, um fortzufahren, ist, in $HOME/.bashrc
den Codes zu suchen PS1
, die sie setzen , zu kommentieren und die persönlichen hinzuzufügen. Dies ist mein Block zum Beispiel:
PS1_DATE="\D{%Y-%m-%d %H:%M:%S}"
if [ "$color_prompt" = yes ]; then
PS1="[$PS1_DATE \[\e]0; \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\[\033[00m\]\[\033[01;34m\]\w \[\033[00m\]\$] "
#PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
else
PS1='[$PS1_DATE ${debian_chroot:+($debian_chroot)}\w \$] '
#PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi
Ausgabe:
[2019-06-18 15:54:29 ~/Desktop $] echo "It's late!"
Die einfachste Syntax zum Anzeigen eines Zeitstempels in einer Eingabeaufforderung ist wahrscheinlich:
PS1='\D{%F} \t $...'
wo
\D{format}
ist man bash
datumsformatiert (siehe Abschnitt PROMPTING) als
%F
vollständiges Datum; man date
Entspricht % Y-% m-% d (siehe Abschnitt FORMATIEREN) und
\t
ist die aktuelle Uhrzeit im 24-Stunden-Format HH: MM: SS (siehe man bash
Abschnitt PROMPTING)
nano ~/.bashrc
Nehmen Sie wie oben gezeigt Änderungen an PS1-Variablen vor
source ~/.bashrc
Meine Zeit ist ähnlich wie die cowsay
Antwort oben. Sie müssen now
Ihre ~/.bashrc
eingeben, können sie aber auch vom Terminal aus durch Eingabe aufrufen now
.
Hier ist ein Screenshot:
Der Bash-Code ist in dieser sehr detaillierten Antwort veröffentlicht:
export PROMPT_COMMAND="echo -n \[\$(date +%F-%T)\]\ "
export HISTTIMEFORMAT="%F-%T "
sieht zumindest praktisch für mich aus.