Я пытаюсь найти документацию о том, что именно 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://
?)
из 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'
Дэйв Х
sleep 5
обновляет часть вкладки и заголовка окнаsleep
, но я не уверен, как это запускается.