Изменить заголовок терминала в Mac OS X


39

Как я могу произвольно изменить заголовок окна терминала в Mac OS X? Я видел этот вопрос и это волшебство , но думаю, что это просто простая команда Mac OS X.


Следует отметить, что в этом нет ничего специфического для OS X - ответ будет работать практически на любом терминале.
Эндрю Айлетт

Это специфично для Bash?
Дэн Розенстарк

@ Андрей Айлетт, так что сценарий, который я вставил в свой ответ (ниже), будет работать и на дистрибутивах Linux?
Дэн Розенстарк

Да, он должен работать где угодно (с оболочкой, производной от sh), которая использует терминалы unix-y.
Эндрю Айлетт

Ответы:


48

Эта статья рассказывает вам, как.

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

title='My first title'
echo -n -e "\033]0;$title\007"

В приведенном выше примере, независимо от того, какая переменная title установлена ​​в то время, становится заголовком терминала. Конечно, вы можете просто добавить заголовок в строку, например:

echo -n -e "\033]0;My first title\007"

Но первый способ немного облегчает использование и / или расширение позже.


Превосходно. Не могли бы вы включить в свой пример пример сценария (как этот? echo -n -e "\033]0;$1\007"), Чтобы я мог отметить его как лучший ответ, пожалуйста?
Дэн Розенстарк

2
printf может быть более надежным: printf "\033]0;%s\007" "$title_variable"(различные параметры и поведение echo не одинаковы для всех систем, оболочек или даже параметров оболочки). Кроме того, присваивания переменных в bash не должны иметь пробелов вокруг знака равенства.
Крис Джонсен

1
Я использовал $ * и внутри функции, поэтому мне не пришлось бы заключать в кавычки мою строку заголовка.
BeepDog

Есть ли способ изменить заголовок из программы на C? Программа, о которой я думаю, запускает анимацию на основе ncurses.h, поэтому я не уверен, как подключиться к терминалу :-(
phs

ОК: Просто fprintf (stdout, ..) работает. Я должен был попробовать, прежде чем спрашивать.
тел.

34

Добавление следующего к вашему ~/.profileприведет к тому же эффекту:

# function for setting terminal titles in OSX
function title {
  printf "\033]0;%s\007" "$1"
}

А затем быстро title 'et voila'рассортирует все ваши вкладки.


почему это проблема, если у вас много функций в .profile? есть ли предел?
tgkprog

1
ИДК почему, но пришлось редактировать .bash_profile вместо .profile
Накилон

2
Или: alias title="printf '\033]0;%s\007'".
Кенорб

export alias title="printf '\033]0;%s\007'"
Муэй,

Вы также можете добавить его, используя sudo nano /etc/bashrc. Это должно работать для всех пользователей. Перезапустите сеанс терминала или выполните source /etc/bashrcизменения.
Евгений Кулабухов

8

Ремикс Дана МГГ:

echo -n -e "\033]0;$1\007"

Сохраните его в файле / usr / bin / title (используя sudo!) И измените его на + x. Тогда из любого места вы можете просто набрать

title 'Trying to Figure This GIT Thing Out'

и вы получите хороший маленький титул.

(Синтаксис может отличаться, если вы не используете OSX, если я правильно понимаю)


Если вы используете одну из этих более новых версий OS X, вы можете сделать это /usr/local/bin/titleвместо этого.
Сэми Бенчериф

2

В качестве альтернативы решениям на основе командной строки на основе sh, приложение OS X Terminal имеет предпочтение изменить заголовок следующим образом: В меню «Terminal-> shell» есть выбор «edit title», выберите его, и вы можете изменить заголовок легко.


1

На OS X настройки терминала хранятся в ~/Library/Preferences/com.apple.Terminal.plist .

Название терминала сохраняется в WindowTitleнастройках.


0

Спасибо за это. Я только что добавил функцию в мой .bashrc:

    function stit() {
    echo -n -e "\033]0;$1\007"
}

По моему мнению "stit" = удобный ярлык для "set_title". И теперь, когда я хочу установить название моих окон на лету, я набираю:

stit "[new window title]"

0

Ответ, помеченный как Лучший ответ, работает нормально ... это то, что я сделал ...

tell application "Terminal"
    activate
    do script "echo -n -e \"\\033]0;WorkerTab1\\007\"; cd $HOME/folder1"
end tell

это установит имя новой вкладки на WorkerTab1, а затем выполнит другие команды, такие как «cd» и т. д.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.