Ich bevorzuge Terminal und verbringe die meiste Zeit damit. Ich suche nach einer Möglichkeit, die Zeit im Terminal zu sehen, während ich sie parallel verwende. Die Zeit würde sich automatisch ändern, wenn sie vergeht. Es wäre fantastisch, wenn es links von meiner Eingabeaufforderung angezeigt würde.
Wenn dies meine Eingabeaufforderung im Terminal ist:
saurav@saurav-P4I45Gx-PE:~$
Dann möchte ich Uhr (Zeit) sehen als:
saurav@saurav-P4I45Gx-PE[06:27:01]:~$
oder
saurav@(06:27:01):~$
oder irgendein anderes Format. wo 06:27:01
ist die zeit Ich möchte nur die Zeit anzeigen, die sich ändert, wenn Sekunden vergehen.
Gibt es also eine Möglichkeit, dies zu erreichen?
command-line
gnome-terminal
Saurav Kumar
quelle
quelle
$PS1
Variable (Eingabeaufforderung) so einstellen , dass sie die Uhrzeit anzeigt, aber ich bin mir nicht sicher, ob Änderungen vorgenommen wurden.\@
, aber die Uhrzeit wird nur jedes Mal neu berechnet, wenn die Eingabeaufforderung angezeigt wird, und nicht die aktuelle Uhrzeit.Antworten:
Ich bin mir nicht sicher, ob es so einfach ist, dies mit der Standard-Bash-Shell zu erreichen (aber ich sage nicht, dass es unmöglich ist). Möglicherweise benötigen Sie einen Befehl / eine Funktion, mit der die Eingabeaufforderung jede Sekunde aktualisiert werden kann, ohne dass Sie Eingaben in die Eingabeaufforderung stören.
Die Z-Shell (zsh) verfügt über einen integrierten Befehl namens
zle
, der bei Verwendung mit demreset-prompt
Argument die erneute Erweiterung der Eingabeaufforderung erzwingt und dann den Bearbeitungspuffer erneut anzeigt.Wenn Sie es versuchen möchten, gehen Sie folgendermaßen vor:
Installieren Sie die Z-Shell mit diesem Befehl:
Wenn Sie
zsh
zum ersten Mal ausgeführt werden, wählen0
Sie , wann Sie gefragt werden.Bearbeiten Sie die
~/.zshrc
Datei und fügen Sie die folgenden Zeilen hinzu:Speichern Sie die Datei und schließen Sie sie.
Führen Sie in Ihrem Terminal, wenn Sie noch zsh verwenden
source ~/.zshrc
, oder setzen Sie einfachzsh
Ihre Eingabeaufforderung zurück. Jetzt sollte Ihre Eingabeaufforderung so aussehen:mit einigen farben.
Wenn es Ihnen gefällt, führen Sie aus
chsh -s /bin/zsh
, um Ihre aktuelle Shell in zu ändern/bin/zsh
(eine erneute Anmeldung ist erforderlich, damit diese Änderung wirksam wird).Führen
exit
Sie diese Option aus, wenn Sie die zsh-Shell beenden möchten.Hier ist ein 15-Sekunden-Screencast von meinem Terminal:
quelle
chsh
Sie diesen Befehl aus , um Ihre Standard-Shell von/bin/bash
auf zu ändern/bin/zsh
. Sie müssen sich abmelden und erneut anmelden.zsh
Befehl ausführen , um in diesenWenn Sie die Laufzeit in Ihrem Terminal anzeigen möchten, können Sie diesen Befehl verwenden. Die Uhrzeit wird oben rechts in Ihrem Terminal angezeigt.
Beachten Sie jedoch, dass die Anzeige der Uhrzeit mit diesem Befehl manchmal den im Terminal vorhandenen Text überlappen kann. Verwenden Sie diesen Befehl daher mit wenig Vorsicht.
Eine andere Möglichkeit ist die Verwendung von Steuerzeichen in der PS1
Bei dieser Methode wird Ihre Zeit jedoch erst aktualisiert, nachdem Sie die Eingabetaste gedrückt haben.
Wenn Sie die obige Methode dauerhaft verwenden möchten, fügen Sie den obigen Befehl (den gewünschten oder beide) in Ihre
~.bashrc
Datei ein.quelle
Wenn Sie nur eine Uhr anzeigen möchten, verwenden Sie einfach
date
:Das wird jede Sekunde die Zeit anzeigen, bis Sie damit aufhören CtrlC. Wenn Sie möchten, dass es sich in derselben Zeile befindet (die obige Zeile gibt jede Sekunde eine neue Zeile aus), gehen Sie stattdessen folgendermaßen vor:
quelle
Diese Frage beschäftigt mich seit einigen Tagen und hier ist mein bearbeiteter Beitrag mit all dem Material, das ich gelernt habe. Insbesondere war es mein Ziel, das Anzeigen der Uhrzeit neben der Eingabeaufforderung in BASH zu erreichen. Genau wie bei Radu Radeanu, der in seiner Antwort erwähnt wurde, müssen Sie eine Funktion oder Variable finden, mit der Sie die Eingabeaufforderung ständig aktualisieren oder den Bildschirm neu zeichnen können, ohne Ihren Bildschirm oder Ihre Eingabe zu beeinträchtigen. Während dies mit einer while-Schleife möglich ist, wie durch G_P gezeigt, verschlechtert das ständige Neuzeichnen des Bildschirms mit der tput-Funktion den Text, der sich zum Zeitpunkt der Aktualisierung auf meinem Bildschirm befindet. Ich bin dem, was das OP verlangte, ziemlich nahe gekommen, indem ich den Code, den G_P gepostet hat, etwas modifiziert habe, aber ich glaube immer noch, dass Radus Antwort dem am nächsten kommt, was das OP will. Ohne weiteres, hier sind einige der Dinge, die ich
# 1, Meine bevorzugte Lösung: Terminal Multiplexer
Terminal-Multiplexer ist eine Software, mit der der Terminal-Bildschirm in zwei oder mehr Bildschirme aufgeteilt werden kann. Insbesondere möchte ich auf das Byobu-Terminal aufmerksam machen. Mit diesem ncurses-basierten Terminalemulator können Sie Zeit, CPU-Prozentsatz, Arbeitsspeicher und eine ganze Reihe anderer Indikatoren anzeigen. Auf dem Screenshot meines Byobu-Terminals sehen Sie die CPU-Temperatur, den Akku-Prozentsatz, die Qualität der Internetverbindung, die CPU-Frequenz, den Arbeitsspeicher, das Datum und natürlich die Uhrzeit. Wenn Sie sich hauptsächlich mit der ständigen Überwachung dieser Dinge beschäftigen, während Sie im Terminal sind, ist Byobu der richtige Weg. Tatsächlich hat es mir so gut gefallen, dass ich es so eingestellt habe, dass es automatisch geladen wird, wenn ich mich bei tty anmelde. Der einzige Nachteil ist, dass Sie die einzelnen Fenster nicht zusammenführen können. Wechseln Sie nur mit den Tasten F3 und F4 zwischen den Registerkarten.
Eine alternative Lösung für das Multiplexen von Fenstern ist die Verwendung von
splitvt
, die den Bildschirm in zwei Teile aufteilt. Sie können eine Terminaluhr ausführen, z. B. dentty-clock
Befehl watch with date, oder Sie können selbst eine mit einem Skript codieren. Dazu später mehr. Im Screenshot sehen Sie einen Teil der Aufteilung mit der normalen Bash-Eingabeaufforderung oben und im unteren Teil sehen Sie ein Skript, das die Ausgabe vondate
Befehlen mit Befehlen ständig aktualisiertclear
.# 2, While Do Loop und tput Dies ist wahrscheinlich der Schlussel zu dem, was die Person, die die Frage gestellt hat, mit bash implementiert haben wollte.
G_P hat eine großartige Lösung für die Befehle
while do
und veröffentlichttput
. In G_Ps Code gab es jedoch zwei Dinge, die mir nicht gefielen. Erstens war die Uhr rechts von der Eingabeaufforderung und zweitens - da der Ruhezustand 1 Sekunde beträgt (siehe Originalcode, in dem Sleep angegeben ist), wird der Bildschirm jede Sekunde neu gezeichnet, was meine Ausgabe durcheinander bringt. Was ich getan habe, ist, meine Bash-Eingabeaufforderung so zu bearbeiten, dass sie mit dem Operator \ n eine Zeile tiefer liegt, und den Code von G_P so zu ändern, dass der Operator tput die Uhr direkt über der Eingabeaufforderung positioniert und alle 60 Sekunden aktualisiert. Auf diese Weise kann ich Stunden und Minuten sehen (und Minuten sind mir eigentlich egal), während die Schleife der Uhr meinen Bildschirm nicht durcheinander bringt. Hier ist meine Eingabeaufforderung:Und hier ist der geänderte Code von G_P:
enter code here
Kleine Änderung : Mir ist aufgefallen, dass der obige Code die Uhr manchmal nicht sofort aufruft. Hier ist eine bessere Version:
while true; do tput sc;tput cup 0 0;date +%R;tput rc; sleep 60; done &
Hier wird die Uhr zuerst auf dem Bildschirm angezeigt und dann der 60-Sekunden-Schlafzyklus angezeigtBeachten Sie, dass der Wert tput cup 0 0 die Uhr in der oberen rechten Ecke des Bildschirms direkt über meiner Eingabeaufforderung platziert und sleep 60 den Schlafzyklus auf 60 Sekunden ändert, da ich auf diese Weise nur Stunden und Minuten statt jeder Sekunde überwachen kann. Auf diese Weise wird der Text, den ich auf dem Bildschirm habe, größtenteils nicht beeinflusst (nur wenn ich zufällig einen Befehl ausführe, wird die Uhrzeit aktualisiert).
Die PS1-Zeile befindet sich bereits in Ihrem .bashrc-Profil, daher müssen Sie sie nur ein wenig anpassen. Die while-do-Schleife sollte an einer beliebigen Stelle in derselben Datei eingefügt werden, vorzugsweise am Ende mit dem Kommentar #, dass dies das ist, was Sie anfangs hinzugefügt haben. Und vergessen Sie nicht, immer eine solche Datei zu sichern, nur für den Fall, dass Sie bubu machen und zu dem Zustand zurückkehren müssen, wie er war.
# 3, Scripting und andere
Dieser Teil ist nur für diejenigen, die Zeit sehen wollen. Für diejenigen, die es ständig überwachen möchten, sind # 1 und # 2 bevorzugte Optionen.
Wie wir bereits gesehen haben, ist die while-do-Schleife ziemlich nützlich. Mit den Befehlen while do loop, date und sleep können Sie eine Uhr erstellen.
Wenn Sie die Eingabetaste drücken, wird die Ausgabe des Datums-Befehls im Sekundentakt auf dem gelöschten Bildschirm angezeigt. Wenn Sie das nicht jedes Mal eingeben möchten, wandeln Sie all diese Dinge in ein Skript um:
Jetzt können Sie dieses Skript mit splitvt in einer Instanz von bash ausführen, während Sie in der anderen arbeiten.
Eine andere Lösung ist der
watch -n1 date
Befehl, der kontinuierlich einen Datumsbefehl mit einer Dauer von 1 Sekunde ausführt.Fazit: Ich habe einige Dinge gelernt, als ich versucht habe, eine Antwort auf diese Frage zu finden, und ich hoffe, meine Erkenntnisse haben Ihnen in gewisser Weise geholfen, und ich hoffe, ich konnte zu dieser Frage einen Beitrag leisten. Das Byobu-Terminal IMHO ist die beste Lösung, aber entscheiden Sie selbst, recherchieren Sie und wählen Sie den für Sie am besten geeigneten Weg.
Einige der Dinge, die ich bei meinen Recherchen gefunden habe:
Mein ursprünglicher Beitrag, die minimalistische Lösung: Bearbeiten Sie Ihre ~ / .bashrc-Datei. Ich bearbeite es also lieber mit Nano
Hier ist der Teil meiner eigenen bearbeiteten Datei:
Nach else wird die erste Zeile mit # auskommentiert (das ist meine alte Eingabeaufforderung), jetzt ist die zweite Zeile die gewünschte und speziell der
\t
Operator. Das zeigt die Laufzeit im 24-Stunden-Format. Für weitere Informationen überprüfen diese . Auch eine kleine Anmerkung, ich benutze das Zeug nach dem anderen, weil ich keine farbige Eingabeaufforderung benutze.PS: Bitte lassen Sie mich wissen, ob ich etwas zu meiner Antwort hinzufügen oder auf irgendeine Weise bearbeiten sollte, aber ich glaube, dass dies größtenteils die schlüssigste Antwort ist, die ich finden konnte, und zumindest werde ich persönlich nichts hinzufügen neu dabei.
quelle
da ich im Allgemeinen in jeder Session als anpassen auf dem Terminal - i so wenig Hintergrundinformationen wie möglich Anzeige bevorzugen
#
,$
usw. (wenn Sie es ändern permanent wollen, minerz029 Lösung ist perfekt)Um es so zu modifizieren, dass es aktuell ist, könnte ich gehen
für die Zeit im 12-Stunden-Format. Sie können die Bash-Dokumentation für andere Optionen anzeigen.
quelle
Diese Zeit ändert sich nur, wenn eine neue Eingabeaufforderung ausgeführt wird
Sie können Folgendes hinzufügen
.bashrc
:Welches wird produzieren:
Weitere Informationen finden Sie hier: http://www.thegeekstuff.com/2008/09/bash-shell-ps1-10-examples-to-make-your-linux-prompt-like-angelina-jolie/#8
Suchen Sie auf der obigen Seite nach "8. Erstellen Sie Ihre eigene Eingabeaufforderung mit den verfügbaren Codes für die PS1-Variable".
quelle
$PROMPT_COMMAND
würde es funktionieren, wenn Sie einen Befehl finden, der die Tick-Zeit anzeigt.Ich mag die Funktion ncmpcpp clock, die mit 0-key ausgelöst wird (siehe Screenshot). Weitere Informationen zum Installationsvorgang finden Sie in diesem Beitrag .
quelle
watch -t -n1 "date +%T|figlet"
wäre ein einfacher weg.Beeinflusst von g_p und Serg habe ich versucht, in bash eine Funktion zu erstellen. Es funktioniert, aber ich bin nicht sicher, ob es eine gute Idee ist, den Befehl ps jede Sekunde zu überprüfen, um festzustellen, ob bash ein fg-Prozess ist oder nicht
quelle
Wenn Sie diese Option nie benötigen, können
debian_chroot
Sie die Uhrzeit, zu der die Eingabeaufforderung angezeigt wurde, folgendermaßen eingeben:Geben Sie dies in Ihr Terminal ein und beobachten Sie, wie sich Ihre Eingabeaufforderung mit der Zeit ändert:
Nachdem die Zeit einmal eingestellt wurde, um eine laufende Uhr zu erhalten, die jede Sekunde aktualisiert, verwenden Sie:
Dies
.gif
zeigt die Befehle in Aktion:quelle