So setzen Sie den Terminaltitel automatisch auf den Verzeichnisnamen ohne Pfad

11

Derzeit wird mein Bash-Terminal- / Tab-Titel basierend auf dem Verzeichnis festgelegt, in dem ich mich befinde. Beispiel:

bob@bobscomputer:~/i/had/some/great/pie/yesterday

Dies ist nicht sehr nützlich, wenn mehrere Registerkarten nebeneinander geöffnet sind. Wenn ich zum Beispiel 4 Registerkarten des obigen Verzeichnisses nebeneinander geöffnet habe, sehe ich nur

bob@bobscomputer:~/i/had...

4 Mal.

Ich möchte, dass alle meine Terminaltitel automatisch auf den letzten Teil des Pfads gesetzt werden. Im obigen Beispiel möchte ich den Titel haben

yesterday

Natürlich sollte sich der Titel ändern, wenn ich Verzeichnisse wechsle. Ich möchte dies tun, ohne meine Eingabeaufforderung zu ändern, daher sollten die Eingabeaufforderung und der Terminaltitel unterschiedlich sein.

Gibt es eine Möglichkeit, dies zu tun?

Starrender Frosch
quelle
Für ZSH, schau mal hier: superuser.com/a/1328085/122021
LaFK sagt wieder einzusetzen Monica

Antworten:

11

Warum möchten Sie dies tun, ohne Ihre PS1-Variable zu ändern? Das ist der richtige Weg.

Wenn Sie Folgendes ausführen, erhalten Sie, was Sie wollen:

export PS1="\[\e]0;\W\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ "

Dies ist nur die Standardaufforderung:

export PS1="\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ "

... und ersetzen \u@\h: \wdurch \W.

Sie können dasselbe mit jedem Befehl tun, der den richtigen Escape-Code wiedergibt:

echo -en "\e]0;${PWD##*/}\a"

... aber dann würdest du ständig gegen Bash kämpfen, um zu verhindern, dass es mit PS1 gemacht wird (der beste Weg).

Steven K.
quelle
2
Danke - ich hatte nicht bemerkt, dass PS1 den Titel setzt und unabhängig auffordert. In meiner .bashrc setze ich unter "$ TERM" in xterm * | rxvt *) PS1 = "[\ e] 0; $ {debian_chroot: + ($ debian_chroot)} \ W \ a] $ PS1" und es macht genau das, was ich wollte.
Staring Frog
Diese Frage macht einen guten Job, um zu erklären, was all das PS1-Gobbledy- Buch
congusbongus
3

Ja. Voranstellen: \[\e]0;\W\a\]auf deine PS1. Dadurch wird das Erscheinungsbild Ihrer Eingabeaufforderungen nicht geändert, der Titel Ihrer Terminalregisterkarten wird jedoch automatisch auf den Basisnamen des aktuellen Arbeitsverzeichnisses gesetzt.

LikeTheRock
quelle