С Bash + iTerm2, как назвать вкладки?

В iTerm2 (Build 1.0.0.20120203) я обычно открываю несколько вкладок, каждый из которых имеет разделенные панели и относится к одной конкретной теме работы, например, к управлению версиями, кодированию, управлению файлами, работе терминала mysql. Обычно мне приходится переключаться между 5 и более вкладками в моем рабочем потоке. Иногда трудно вспомнить или сказать, что именно, глядя на содержимое экрана. Я бы назвал вкладки каким-то образом, поэтому я могу быстро сказать, что именно это, быстро взглянув. Возможно ли это?

150 голосов | спросил qazwsx 2 Maypm12 2012, 23:08:06

12 ответов


181

Поскольку вы используете iterm2 на Mac, другой вариант - вы можете просто нажать Cmd-I, набрать что-нибудь и нажать Escape.

Терминальное решение немного быстрее, чем это, но просто хотел сообщить вам.

ответил mawaldne 8 PM00000070000005631 2013, 19:29:56
105

Я нашел следующую функцию, помещенную в мой ~/.bashrc, чтобы быть полезной:

function title {
    echo -ne "\033]0;"$*"\007"
}

Затем я могу вызвать его из приглашения bash следующим образом:

> title I want a pony!

И моя вкладка получила название соответственно.

ответил Jason Sundram 23 Maypm13 2013, 21:57:44
40

запустите эту команду, чтобы установить заголовок закладки или окна:

export PROMPT_COMMAND='echo -ne "\033]0;YOUR NAME HERE\007"'

Я добавил следующее в мой ~/.bash_profile, чтобы всегда указывать текущий каталог относительно моего домашнего каталога:

export PROMPT_COMMAND='echo -ne "\033]0;${PWD/#$HOME/~}\007"'

полезно, когда у вас есть 100 свернутых терминалов в вашей доке

отзыв о шляпе в мир Mac

ответил schpet 4 MaramMon, 04 Mar 2013 04:33:33 +04002013-03-04T04:33:33+04:0004 2013, 04:33:33
15

Добавьте эту функцию в свой файл ~/.bash_profile, и он должен работать.

function title ()
{
    TITLE=$*;
    export PROMPT_COMMAND='echo -ne "\033]0;$TITLE\007"'
}
ответил jiangyu7408 24 +04002013-10-24T07:26:21+04:00312013bEurope/MoscowThu, 24 Oct 2013 07:26:21 +0400 2013, 07:26:21
11

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

 example

Для этого требуется узел , но теперь это обычно установленная платформа. Чтобы установить:

npm install -g iterm2-tab-set
ответил Jonathan Eunice 15 J0000006Europe/Moscow 2016, 17:19:36
6

Мне нравится этот:

#setup terminal tab title
function title {
    if [ "$1" ]
    then
        unset PROMPT_COMMAND
        echo -ne "\033]0;${*}\007"
    else
        export PROMPT_COMMAND='echo -ne "\033]0;${PWD/#$HOME/~}\007"'
    fi
}
title

Это позволит вам переключать имя вкладки между пользовательским именем и значением по умолчанию вашего CWD.

title -> название вашей вкладки будет ~/YOUR_CWD/

title hey there -> название вашей вкладки будет hey there

ответил taylorstine 26 J000000Sunday15 2015, 18:29:16
4

Мне очень нравится ответ taylorstine , но он прерывает iTerm2 интеграция оболочек , которая зависит от переменной PROMPT_COMMAND. Вы можете изменить код Тейлора, чтобы исправить это, добавив __bp_precmd_invoke_cmd обратно в PROMPT_COMMAND каждый раз, когда вы возитесь с ним:

 # iTerm2 shell integration
test -e "${HOME}/.iterm2_shell_integration.bash" && source "${HOME}/.iterm2_shell_integration.bash"

# iTerm2 tab titles
function title {
    if [ "$1" ]
    then
        export PROMPT_COMMAND='__bp_precmd_invoke_cmd'
        echo -ne "\033]0;${*}\007"
    else
        export PROMPT_COMMAND='echo -ne "\033]0;${PWD/#$HOME/\~}\007";__bp_precmd_invoke_cmd'
    fi
}
title
ответил Michael 30 MarpmWed, 30 Mar 2016 17:45:36 +03002016-03-30T17:45:36+03:0005 2016, 17:45:36
3

Мне нравится ответ Майкла .

Но что, если .iterm2_shell_integration.bash не существует?

Вот мой прием:

 # iTerm2 shell integration
test -e "${HOME}/.iterm2_shell_integration.bash" && source "${HOME}/.iterm2_shell_integration.bash"

# iTerm2 tab titles
function title {
  if [ "$1" ] ; then
    test -e "${HOME}/.iterm2_shell_integration.bash" \
      && export PROMPT_COMMAND='iterm2_preexec_invoke_cmd' \
      || unset PROMPT_COMMAND
    echo -ne "\033]0;${*}\007"
  else
    test -e "${HOME}/.iterm2_shell_integration.bash" \
      && export PROMPT_COMMAND='echo -ne "\033]0;${PWD/#$HOME/~}\007";iterm2_preexec_invoke_cmd' \
      || export PROMPT_COMMAND='echo -ne "\033]0;${PWD/#$HOME/~}\007"'
  fi
}
title
ответил user1318024 23 Maypm17 2017, 16:21:15
2

Если вы работаете с профилями (что очень удобно): Предпочтения -> Внешний вид -> Окно & Заголовки табуляции: нажмите «Показать имя профиля»:

 image

Вот как это выглядит:

 миниатюра, связанная с основным изображением

ответил aianitro 24 Jpm1000000pmTue, 24 Jan 2017 23:45:17 +030017 2017, 23:45:17
0

Я думаю, Автоматическое переключение профилей и Значки предназначены именно для того, что вам нужно:

  

Автоматическое переключение профилей iTerm2 может использовать информацию, которую он знает о вашем текущем пути, имени хоста и имени пользователя для изменения профилей. Например, цвет фона вашего окна или кодировка символов терминала могут измениться при подключении к различным узлам.

     

Значки   Вы можете поместить значок в верхнем правом углу вашего терминала, отображая информацию о текущем сеансе. Он может отображать ваше имя пользователя, имя хоста или даже настраиваемые данные, такие как текущая ветвь git.

, поэтому результат может выглядеть следующим образом:

 введите описание изображения здесь>> </a> </p></body></html>

ответил lengxuehx 1 Maypm17 2017, 12:15:15
0
Preferences -> Profiles -> Terminal
  uncheck Terminal may set Tab/Window title

Комментарий Макс Кантора сработал для меня.

ответил B Seven 27 FebruaryEurope/MoscowbTue, 27 Feb 2018 16:22:47 +0300000000pmTue, 27 Feb 2018 16:22:47 +030018 2018, 16:22:47
-1

Юк, все эти псевдонимы и функции. Простое решение (если вы root), вставьте его в терминал:

TARGET=/usr/bin/title
sudo tee "$TARGET" <<'EOF'
#!/usr/bin/env bash
echo -ne "\033]0;$*\007"
EOF
sudo chmod 755 "$TARGET"

Или просто создайте заголовок названия файла где-нибудь на своем пути или глобальный путь и вставьте две строки между EOF.

ответил Orwellophile 29 J0000006Europe/Moscow 2015, 16:35:41

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132