Ich versuche, die Dokumentation darüber zu finden, was genau der printf
Befehl in update_terminal_cwd
.
Wenn Sie es noch nicht wussten, die update_terminal_cwd
Funktion ist (zumindest unter Mac OS X 10.7.4) in definiert /etc/bashrc
und in derselben Datei wird die Funktion hinzugefügt, $PROMPT_COMMAND
sodass sie jedes Mal ausgeführt wird, wenn Sie im Terminal die Eingabetaste drücken.
Der Text der update_terminal_cwd
Funktion selbst lautet wie folgt:
update_terminal_cwd() {
# Identify the directory using a "file:" scheme URL,
# including the host name to disambiguate local vs.
# remote connections. Percent-escape spaces.
local SEARCH=' '
local REPLACE='%20'
local PWD_URL="file://$HOSTNAME${PWD//$SEARCH/$REPLACE}"
printf '\e]7;%s\a' "$PWD_URL"
}
Dies ist ein paar Schritte den Kaninchenbau hinunter, nachdem ich versucht habe, meine Terminal-Registerkartennamen über die Befehlszeile festzulegen , was ziemlich einfach möglich ist , aber der Registerkartenname wird zurückgesetzt, wenn er ssh
in eine Box eingegeben wird.
Dies führte mich zu Wie stoppe ich die automatische Änderung von iTerm-Titeln? und die ziemlich obskure Liste der Steuersequenzen auf dem Mac .
Wenn Sie zu diesem letzten Link gehen und nach der Zeichenfolge suchen osc ps ; pt bel
, finden Sie den Abschnitt, der das Escape-Zeichen definiert, mit dem die Umbenennung von Tabulatoren funktioniert. Dies erklärt zwar printf '\e]1;%s\a'
(beachten Sie die "1"), aber nicht, was die "7" in der update_terminal_cwd
oben zitierten Funktion bewirkt.
Wo ist das dokumentiert?? (Und warum ist PWD_URL
das Präfix enthalten file://
?)
ab Terminal.app v2.6.1 (OS X 10.11) ist unter Einstellungen/Profile/Fenster der Text "Escape-Sequenz..." hervorgehoben, der besagt:
Das Arbeitsverzeichnis und der Speicherort des aktuellen Dokuments können mit der OSC-Escape-Sequenz (Operating System Command) festgelegt werden:
ESC ] Ps ; Punkt BEL
Der Parameter Ps ist entweder 6 (Dokument) oder 7 (Arbeitsverzeichnis) und Pt ist eine „Datei:“-URL. Die URL sollte einen Hostnamen enthalten, um lokale und entfernte Pfade zu unterscheiden, und die Zeichen müssen entsprechend prozentual codiert sein.
Wenn sowohl das Arbeitsverzeichnis als auch das Dokument festgelegt sind, wird nur das Dokument angezeigt.
auch unter Einstellungen/Profile/Tab:
Fenster- und Registerkartentitel können mit der OSC-Escape-Sequenz (Operating System Command) festgelegt werden:
ESC ] Ps ; Punkt BEL
Der Parameter Ps ist entweder 1 (Tab-Titel – auch „Symboltitel“ genannt) oder 2 (Fenstertitel) und Pt ist der Titeltext.
Ein benutzerdefinierter Fenstertitel wird innerhalb des Registerkartentitels (zusammen mit den anderen ausgewählten Elementen) angezeigt, wenn es keinen benutzerdefinierten Registerkartentitel gibt.
Der folgende Beispiel-Bash-Befehl setzt den Tab-Titel auf „My Tab“:
printf '\e]1;%s\a' 'My Tab'
David X
sleep 5
Updates Teil des Tab- und Fenstertitels sein sollsleep
, aber ich bin mir nicht sicher, wie es ausgelöst wird.