2013-09-05 2 views
2

Когда я пытаюсь установить свой терминальный заголовок окна:управляющие последовательности терминалов не работает на OS X Mavericks 10.9DP7

$ echo -n "\033]0;foo\007" 
\033]0;foo\007 

Это просто печатать обычный текст, название терминала не было никаких изменений. Как это исправить?

ответ

2

Команда Bash's echo больше не поддерживает функцию -n, поскольку она не является опцией POSIX. Вместо этого используйте команду printf для отправки управляющих символов: printf '\033]0;foo\007’.

В общем, это лучшая практика для использования printf для получения стабильных результатов вместо echo для чего-то более сложного, чем печать строки с ASCII графических символов, потому что POSIX echo довольно проста и любые расширенные поведения могут различаться между оболочками.

† Я не помню точно, какую версию ОС он изменил, но он не поддерживается в 10.8.

4

Вам не хватает -e для эха, который сообщает ему интерпретировать escape-последовательности обратной косой черты. Попробуйте это:

$ echo -en "\033]0;foo\007" 

Хотя @ Крис-страница правильно о -n нестандартного, Баш эхо и встроенная система/бене/эха как поддержка -n. Тем не менее, системное эхо не поддерживает -e, который является реальной функцией импорта при попытке отправить эти escape-коды на терминал.

Также следует помнить, что общесистемные /etc/bashrc наборы PROMPT_COMMAND функции 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" 
} 

и, видимо, operating system code 7 для Terminal.app компании Apple устанавливает специальную ссылку значок для текущей работы каталог. Вы можете щелкнуть правой кнопкой мыши значок папки в строке заголовка, чтобы открыть Finder в этом месте. Этот код также немного изменяет заголовок заголовка, добавляя последний компонент текущего рабочего каталога.

Я изучаю, как устанавливаются заголовки вкладки Terminal.app и заголовок заголовка. И, судя по всему, они хорошо сочетаются с xterm's, где «имя значка» - это заголовок вкладки, а «заголовок окна» - заголовок заголовка.

  • Заголовок заголовка - это то, что вы установили с помощью osc-2 (или osc-0). Если дополнительный компонент пути установлен osc-7, он будет добавлен к заголовку заголовка. И если какие-либо компоненты отмечены в окне «Настройки-> Настройки->», они будут добавлены в заголовок заголовка.
  • Заголовок вкладки - это то, что вы установили с помощью osc-1 (или osc-0). Если это не задано, это будет содержимое окна Title окна «Настройки-> Настройки-> с добавлением активного имени процесса. Если заголовок точно равен Terminal (независимо от того, задано ли оно текстовым полем в настройках или с помощью osc-1), заголовок вкладки будет только активным именем процесса.
+0

still output '-en' – gongqj

+0

Возможно, вы используете оболочку, кроме bash? Например, '/ bin/sh' не поддерживает ни' -e', ни '-n', как опции для встроенного' echo'. Системный двоичный '/ bin/echo' поддерживает' -n', но не '-e'. И встроенное 'echo' bash поддерживает как' -e', так и '-n'. Я нахожусь в OS X 10.9.1, который поставляется с bash 3.2, и он поддерживает '-en', я также установил 4.2 и все еще поддерживает оба.Хотя я думаю, что оболочка по умолчанию на OS X может быть '/ bin/sh', попробуйте изменить ее с помощью' chsh -s/bin/bash' и открыть новый терминал. – onlynone

Смежные вопросы