Зміна заголовка термінала в Mac OS X


39

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


Слід зазначити, що для цього немає нічого конкретного OS X - відповідь буде працювати майже на будь-якому терміналі.
Ендрю Ейлетт

Це Баш-специфічний тоді?
Дан Розенстарк

@Andrew Aylett, тож сценарій, який я поставив у своїй відповіді (нижче), також буде працювати і на дистрибутивах Linux?
Дан Розенстарк

Так, він повинен працювати в будь-якому місці (з отриманою ш-оболонкою), яка використовує термінали unix-y.
Ендрю Ейлетт

Відповіді:


48

Ця стаття розповідає про те, як.

По суті, ви використовуєте послідовності символів, що лунають на екрані, щоб повідомити терміналу, який заголовок він повинен відображати.

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

У наведеному вище прикладі незалежно від того, що вказано назву змінної, вона стане назвою терміналу. Звичайно, ви можете просто мати заголовок у рядку, щоб відлунювати такі, як:

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"(різні параметри та поведінки відлуння неоднакові у всіх системах, оболонках чи навіть параметрах оболонок). Також змінні призначення в bash не повинні мати пробілів навколо знака рівності.
Кріс Джонсен

1
Я використовував $ * і в межах функції, тому мені не доведеться цитувати свій рядок заголовка.
BeepDog

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

ОК: Просто працює fprintf (stdout, ..). Я повинен був спробувати, перш ніж запитати.
ph

34

Додавання до цього результату ~/.profileпризведе до того ж ефекту:

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

І тоді швидкий title 'et voila'вирішить усі ваші вкладки.


чому це проблема, якщо у вас є багато функцій у .profile? є обмеження?
tgkprog

1
IDK чому, але довелося редагувати .bash_profile замість .profile
Nakilon

2
Або: alias title="printf '\033]0;%s\007'".
kenorb

export alias title="printf '\033]0;%s\007'"
Mwayi

Ви також можете додати його за допомогою sudo nano /etc/bashrc. Це має працювати для всіх користувачів. Перезапустіть сеанс терміналу або зробіть, source /etc/bashrcщоб застосувати зміни.
Євген Кулабухов

8

Ремікс відповіді Дена MgG:

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

Зберігайте його у файлі під назвою / usr / bin / title (використовуючи sudo!) Та chmod до + x. Тоді з будь-якого місця ви можете просто набрати

title 'Trying to Figure This GIT Thing Out'

і ти отримаєш гарний маленький заголовок.

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


Якщо ви користуєтеся однією з нових версій OS X, ви можете зробити це /usr/local/bin/titleзамість цього.
Samy Bencherif

2

Як альтернатива рішенням на основі командного рядка на основі sh, програма OS X Terminal має перевагу змінити заголовок наступним чином: У меню оболонки Terminal-> є вибір "редагувати заголовок", виберіть це, і ви можете змінити заголовок легко.


1

У ОС 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.