update_terminal_cwd bitte entmystifiziert?

Ich versuche, die Dokumentation darüber zu finden, was genau der printfBefehl in update_terminal_cwd.

Wenn Sie es noch nicht wussten, die update_terminal_cwdFunktion ist (zumindest unter Mac OS X 10.7.4) in definiert /etc/bashrcund in derselben Datei wird die Funktion hinzugefügt, $PROMPT_COMMANDsodass sie jedes Mal ausgeführt wird, wenn Sie im Terminal die Eingabetaste drücken.

Der Text der update_terminal_cwdFunktion 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 sshin 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_cwdoben zitierten Funktion bewirkt.

Wo ist das dokumentiert?? (Und warum ist PWD_URLdas Präfix enthalten file://?)

Die Eingabeaufforderung der Remote-SSH-Box sendet möglicherweise einige Titel ändernde Zeichenfolgen, die den Titel Ihres lokalen Terminals zurücksetzen. Mir ist aufgefallen, dass so etwas wie sleep 5Updates Teil des Tab- und Fenstertitels sein soll sleep, aber ich bin mir nicht sicher, wie es ausgelöst wird.

Antworten (1)

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'