Im .bashrc
case "$TERM" in
xterm*|rxvt*)
PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
;;
*)
;;
esac
Ich verstehe ${debian_chroot:+($debian_chroot)}\u@\h: \w
, aber nicht \[\e]0;
. Was macht das?
Im .bashrc
case "$TERM" in
xterm*|rxvt*)
PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
;;
*)
;;
esac
Ich verstehe ${debian_chroot:+($debian_chroot)}\u@\h: \w
, aber nicht \[\e]0;
. Was macht das?
Das \e]0;
ist eine Fluchtsequenz; \e
wird durch ASCII 27 (ESC) ersetzt, sodass das Terminal die 4 Zeichen erhält, die ESC ] 0 ;
xterm anweisen, das Symbol und die Titelleiste festzulegen, die mit BEL ( \a
) enden .
Die Sequenz \e]0;STUFFGOESHERE\a
setzt also den Titel des Terminals auf STUFFGOESHERE. In Ihrem Beispiel wird der Titel auf Benutzer / Host / Pfad gesetzt.
FWIW, xterm Escape-Sequenzen sind dokumentiert unter: https://www.x.org/docs/xterm/ctlseqs.pdf
Die Zeichen
\e[0;
in der Zeilewird von der Schale (Gleichsetzen interpretiert ,
\e
um\033
das ASCII ESC Escape - Zeichen), beginnend eine Escape - Sequenz. Die Sequenz endet am\a
(ebenfalls interpretiert durch die Shell \ 007` ASCII BEL Glocke ).Dies
0
ist ein Parameter (für einen sogenannten Betriebssystembefehl ), der das Terminal anweist, sowohl Symbol- als auch Fenstertitel zu ändern.Technisch sollte es sein
\e\\
(ECMA-48), aber so hat es nicht angefangen. Als das Feature 1986 erstmals eingeführt wurde, wurdexterm
der Titel des ersten nicht druckbaren Zeichens beendet. Das\a
wurde als String - Terminator von xterm seit X11R4 im Jahr 1989 anerkannt (wenn getrennte Parameter1
und2
wurden hinzugefügt , um das Symbol und Fenstertitel zu unterscheiden).rxvt
Einige Jahre später wurde dies aufgegriffen, und einige Jahre später wurde xterm so geändert, dass es auch einen Standard-String-Terminator akzeptiert. Im Änderungsprotokoll wurde kein besonderer Punkt erwähnt, aber es erschienctlseqs.ms
zuerst im August 1996. Wenn andere Terminals die Funktion implementiert haben, akzeptieren sie im Allgemeinen\a
nur.Ohne das Ende könnte das isolierte Escape-Zeichen terminalspezifisch als Fehler behandelt werden (einschließlich des vollständigen Ignorierens des Textes).
Weiterführende Literatur:
ctlseqs.ms
(August 1996) .quelle