update_terminal_cwd демистифицируйте, пожалуйста?

Я пытаюсь найти документацию о том, что именно printfделает команда в update_terminal_cwd.

Если вы еще не знали, функцияupdate_terminal_cwd определена (по крайней мере, в Mac OS X 10.7.4) в том же файле, и в этот/etc/bashrc же файл функция добавляется так, $PROMPT_COMMANDчто она запускается каждый раз, когда вы нажимаете Enter в Терминале.

Текст update_terminal_cwdсамой функции выглядит следующим образом:

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"
}

Это несколько шагов вниз по кроличьей норе по сравнению с попыткой установить имена вкладок терминала из командной строки , что можно сделать довольно легко , но имя вкладки сбрасывается при sshвходе в поле.

Это привело меня к тому, как остановить автоматическую смену заголовков iTerm? и довольно неясный список управляющих последовательностей на Mac .

Если вы перейдете по этой последней ссылке и выполните поиск строки osc ps ; pt bel, вы найдете раздел, определяющий escape-символ, который позволяет переименовывать вкладки. Однако, хотя это и объясняет printf '\e]1;%s\a'(обратите внимание на «1»), это не объясняет, что делает «7» в функции, update_terminal_cwdкоторую я цитировал выше.

Где это задокументировано?? (И почему PWD_URLвключает префикс file://?)

Приглашение удаленного окна ssh может отправлять строки, изменяющие заголовок, которые сбрасывают заголовок вашего локального терминала. Я заметил, что что-то вроде sleep 5обновляет часть вкладки и заголовка окна sleep, но я не уверен, как это запускается.

Ответы (1)

из Terminal.app v2.6.1 (OS X 10.11) в разделе «Настройки/Профили/Окно» выделен текст «Escape-последовательность ...», в котором говорится:

Рабочий каталог и расположение текущего документа можно задать с помощью управляющей последовательности команды операционной системы (OSC):

ESC ] Пс ; Pt БЕЛ

Параметр Ps равен либо 6 (документ), либо 7 (рабочий каталог), а Pt — URL-адрес «файл:». URL-адрес должен включать имя хоста для устранения неоднозначности локальных и удаленных путей, а символы должны быть закодированы соответствующим образом.

Когда установлены и рабочий каталог, и документ, отображается только документ.

также из Preferences/Profiles/Tab:

Заголовки окон и вкладок можно задать с помощью escape-последовательности команды операционной системы (OSC):

ESC ] Пс ; Pt БЕЛ

Параметр Ps равен либо 1 (заголовок вкладки — он же «заголовок значка»), либо 2 (заголовок окна), а Pt — текст заголовка.

Пользовательский заголовок окна будет отображаться в заголовке вкладки (вместе с другими выбранными элементами), если нет пользовательского заголовка вкладки.

В следующем примере команда bash устанавливает заголовок вкладки «Моя вкладка»:

printf '\e]1;%s\a' 'My Tab'