Meine Bash-Eingabeaufforderung setzt derzeit die xterm-Titelleiste in der folgenden Reihenfolge:
PS1='\033]0;\u@\h>\w\007'
Gibt es eine einfache Möglichkeit, den aktuellen Befehl in der Titelleiste anzuzeigen? Wenn ich beispielsweise eine Datei mithilfe von "Tailing" tail -f foo.log
anpasse, soll dies in der Titelleiste angezeigt werden tail -f foo.log
.
bash
prompt
xterm
window-title
Dogbane
quelle
quelle
.bashrc
nach jedem Befehl in meiner Shell zu meinem hinzufüge, erhalte ich diese Ausgabe0;%s@%s:%s" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}
. Ich gehe davon aus, dass ich diese Ausgabe durch Zuweisen des Trap-Befehls unterdrücken kannPS1
. Funktioniert jedochPS1=trap 'echo -ne "\033]0;$BASH_COMMAND\007"' DEBUG
nicht. Es führt zu dem Fehlerbash: echo -ne "\033]0;$BASH_COMMAND\007": command not found
.trap
Befehl als separaten Befehl auszuführen und nicht PS1 zuzuweisen.(Inspiriert von dieser SU-Antwort )
Sie können ein paar Bash-Tricks kombinieren:
$BASH_COMMAND
enthält den aktuell ausgeführten BefehlFangen Sie also DEBUG ein und lassen Sie den Handler den Titel setzen auf
$BASH_COMMAND
:Dadurch wird der Titel so lange geändert, bis etwas anderes ihn ändert. Solange Sie jedoch
$PS1
unverändert bleiben, ist dies kein Problem. Wenn Sie einen Befehl starten, ändert der DEBUG-Handler die Titelleiste, und wenn der Befehl abgeschlossen ist, zeichnet er einen neuen Eingabeaufforderung und setzt die Titelleiste erneut zurück.Ein nützlicher Tipp, der hier zu finden ist (auch woher diese SU-Antwort stammt), lautet:
Dadurch wird die DEBUG-Falle von der Bash an alle von Ihnen gestarteten Subshells weitergegeben. Andernfalls wird die Titelleiste in ihnen nicht geändert
quelle
ssh
/dev/tty
stderr umzuleiten ?Ich habe meine eigene Lösung aus verschiedenen Beiträgen heraus erarbeitet. Dadurch wird ein Titel erstellt, der Benutzer, Hostname, pwd, tty und den aktuell ausgeführten Befehl (für bash) enthält.
Das sieht so aus (es wird kein Befehl ausgeführt):
Und so (Befehl ausführen):
Irgendwo in der .bashrc habe ich PS1 erweitert:
Fügt den aktuellen Befehl mit Verlauf 1 und Trap hinzu :
Fühlen Sie sich frei, sich Ihren Bedürfnissen anzupassen.
quelle