Sto cercando di trovare la documentazione su cosa, esattamente, il comando printf
sta facendo in update_terminal_cwd
.
Se non lo sapevi già, la funzione update_terminal_cwd
è definita (almeno su Mac OS X 10.7.4) in /etc/bashrc
e in quello stesso file la funzione viene aggiunta a $PROMPT_COMMAND
in modo che venga eseguita ogni volta che si preme enter nel Terminale.
Il testo della funzione update_terminal_cwd
è la seguente:
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"
}
Questo è qualche passo in giù nella tana del coniglio dal provare a imposta i miei nomi delle schede Terminale dalla riga di comando , che può essere eseguita piuttosto facilmente , ma il nome della scheda diventa ripristina quando ssh
ing in una casella.
Questo mi ha portato a Come interrompere la modifica automatica dei titoli iTerm? e il piuttosto oscuro elenco delle sequenze di controllo sul Mac .
Se vai a quell'ultimo link e cerchi la stringa osc ps ; pt bel
, troverai la sezione che definisce il carattere di escape che fa funzionare la ridenominazione delle schede. Tuttavia, mentre ciò spiega printf '\e]1;%s\a'
(si noti il "1"), non spiega cosa fa il "7" nella funzione update_terminal_cwd
che ho citato sopra.
Dove è documentato ?? (E perché PWD_URL
include il prefisso file://
?)