Coole Frage. Soweit ich weiß, kann man das nicht allein mit Bash machen, wie David Postill sagte. Aber wie er vorschlug, könnten Sie die Eingabeaufforderung (ab) für diesen Zweck verwenden. Hier ein Beispiel mit ANSI-Escape-Sequenzen, um den Effekt einer Statusleiste zu erzielen :-)
PS1='\[\e[s\e[1;1H\e[41;1m\e[K\e[33;1m\][ *** \t *** ]\[\e[0m\e[u\]\w> '
Dieser zeigt nur die aktuelle Uhrzeit in der Statusleiste an und zeigt auch eine normale Aufforderung an. Ein paar Anmerkungen:
\e[
führt die meisten Sonderbefehle ein\e[s
speichert die aktuelle Cursorposition\e[1;1H
positioniert den Cursor in Zeile 1, Spalte 1\e[...m
Farben ändern (Vorder- und Hintergrundfarbe)\e[K
löscht bis zum Zeilenende\e[u
stellt die Cursorposition wieder her\[
und\]
begrenzen Sie nicht druckbare Zeichen in der Aufforderung. Sie lassen Bash die genaue Länge der Eingabeaufforderung berechnen. Sie könnten prinzipiell ohne diese auskommen, aber dann würde die Aufforderung in einem mehrzeiligen Befehl nicht korrekt aktualisiert werden (sehen Sie jedoch die Nachteile unten).
Ich schlage nicht vor, dass Sie diese Lösung ernst nehmen. Es hat gravierende Nachteile:
- Es ist schwer zu lesen und brüchig
- Die Statusleiste wird nur aktualisiert, wenn die Eingabeaufforderung aktualisiert wird. dh wenn die Kontrolle an die Shell zurückkehrt (wenn ich Ihre Frage lese, ein sehr großer Nachteil)
- Mehrzeilige Befehle werden nicht richtig angezeigt (Cursor wird in der ersten Zeile neu gestartet)
Aber ich hoffe, es gefällt euch! :)