Как изменить заголовок текущей вкладки терминала, используя только командную строку

25

Ни один из ответов, опубликованных в настоящее время, не отвечает / не отвечает на вопрос.

Используя только команду в командной строке, как мне изменить заголовок текущей вкладки терминала?

Многие сообщения предлагают это:

echo -en "3]0;New terminal title\a"

, но он ничего не делает.

Ни один из текущих ответов не работает (некоторые не отвечают на вопрос), поэтому для ясности:

  • После изменения названия я не хочу, чтобы он менялся, если я меняю каталог и т. д.
  • Мне не нужен заголовок same на всех вкладках. Я только хочу установить заголовок для вкладки Я запускаю команду в
  • Я хочу, чтобы для каждой вкладки было несколько вкладок.

Кроме того, переменная PROMPT_COMMAND не установлена ​​в моих сеансах терминала. Если я его установил:

PROMPT_COMMAND='echo -en "3]0;New terminal title\a"'

он не действует.

Какова правильная команда?

FYI, выход uname -a равен:

Linux d136172 3.13.0-45-generic #74-Ubuntu SMP Tue Jan 13 19:36:28 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

    
задан Bohemian 16.06.2015 в 02:48
источник

9 ответов

14

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

PROMPT_COMMAND='echo -en "3]0;New terminal title\a"'

Инструкция

Измените строку в «New Terminal Name» на $("pwd") :

PROMPT_COMMAND='echo -en "3]0; $("pwd") \a"'

Это автоматически изменит заголовок, даже если вы добавите новую вкладку.

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

PROMPT_COMMAND='echo -en "3]0;$(whoami)@$(hostname)|$(pwd|cut -d "/" -f 4-100)\a"'

Добавьте этот параметр в свой ~/.bashrc .

    
ответ дан Kelly DC 22.08.2016 в 06:49
7

Когда PS1 устанавливает заголовок, любая попытка установить заголовок с помощью команды или PROMPT_COMMAND не будет выполнена, так как после каждого из них будет напечатано приглашение. По этой причине я предпочитаю держать простую подсказку при тестировании названий ( PS1=$; unset PROMPT_COMMAND ).

    
ответ дан muru 22.06.2015 в 00:31
3

Вы можете сделать это либо в CLI, либо в GUI (я полагаю, вы используете gnome-terminal, вы можете сделать для других просто замену имени приложения):

В командной строке выполните команду:

gconftool-2 --set /apps/gnome-terminal/profiles/Default/title --type=string "New Terminal Name"

Примечание: новое имя применяется ко всем экземплярам вкладок терминала, а не к текущей текущей вкладке.

ИлиизGUI:

ПерейдитевМеню:Терминал->SetTitle->Введитеновыйзаголовокисохранитеего.

ТеперьПочемувашакоманданеработает?

Выдолжныдобавитьэтустрокувфайл.bashrc,аненапрямуюксвоемутерминалу.

gedit.bashrc

Добавьтеэтустроку:

PROMPT_COMMAND='echo-en"3]0;New terminal title\a"'

Затем сохраните и запустите файл bashrc.

source .bashrc
    
ответ дан Maythux 16.06.2015 в 06:28
2

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

PROMPT_COMMAND=
echo -en "3]0;New terminal title\a"
    
ответ дан John1024 16.06.2015 в 03:22
2

Инструкции

  1. Добавьте пункт settitle () в ваш .bashrc .
  2. source ~/.bashrc
  3. settitle Banana

SETTITLE ()

function settitle()
{
    if [ $# -eq 0 ]
        then
        eval set -- "\[email protected]\h: \w"
    fi

    case $TERM in
        xterm*) local title="\[3]0;[email protected]%pr_e%7\]";;
        *) local title=''
    esac
    local prompt=$(echo "$PS1" | sed -e 's/\\[\033\]0;.*\007\\]//')
    PS1="${title}${prompt}"
}
    
ответ дан earthmeLon 16.06.2015 в 03:42
2

Из Ссылка , решение, основанное на bash, заключается в создании пользовательской функции (см., например, этот способ ), например

# function to set terminal title  
function set-title() {
  if [[ -z "$ORIG" ]]; then
    ORIG=$PS1
  fi
  TITLE="\[\e]2;$*\a\]"
  PS1=${ORIG}${TITLE}
}

, который позволяет вам называть set-title <name you want to set it to>

    
ответ дан WillC 24.02.2017 в 00:31
1

Основываясь на ответе @muru

PS1 sets the title, any attempt to set the title using a command or PROMPT_COMMAND will fail, since the prompt is printed after all of them

Это работало в моем Элементарном S.O:

PS1='\u:\W\$ '
PROMPT_COMMAND='echo -en "3]0;New terminal title\a"'

Я выполняю это на каждой новой вкладке:

И как показывает предыдущее изображение, у меня есть несколько вкладок с уникальным именем.

16.04.1-Убунту

    
ответ дан JRichardsz 15.01.2018 в 14:32
1

Использование bash, wmctrl, xprop, ps

1) Для продолжительной активной программы:

Например, запустите программу (ranger), запущенную на терминале, запущенную с рабочего стола, измените заголовок один раз после некоторой задержки (5 секунд) при запуске программы:

startranger.sh:

#!/bin/bash
/usr/local/bin/changetitle.sh 5 ranger
/usr/local/bin/ranger

changetitle.sh:

#!/bin/bash
delay="$1"
shift
wintitle="$*"
winid='xprop -root | grep _NET_ACTIVE_WINDOW | head -1 | awk '{print $5}' | sed 's/,//' | sed 's/^0x/0x0/''
/bin/bash -c "sleep $delay; wmctrl -i -r $winid -N \"$wintitle\"" &

2) Если вы используете сеанс терминала без запуска активной программы, обновите заголовок в цикле, который заканчивается после выхода вашего терминала:

changetitleloop.sh 1 maintenance for server

работа над приведенным выше будет обновлять заголовок текущего терминала каждые 1 секунду, даже если вы cd (можете изменить его несколько раз), используя:

changetitleloop.sh

#!/bin/bash
interval="$1"
shift
wintitle="$*"
termpid="$(ps -p $$ -o ppid= | sed -e 's/^[ \t]*//')"
winid='xprop -root | grep _NET_ACTIVE_WINDOW | head -1 | awk '{print $5}' | sed 's/,//' | sed 's/^0x/0x0/''
/bin/bash -c "ss=\$$; echo \$ss > /tmp/term-$termpid.pid; while x=\$(wmctrl -i -r $winid -N \"$wintitle\"); ret=\$?; sleep $interval; owner=\$(cat /tmp/term-$termpid.pid); [ \$ret -eq 0 ] && [ \$ss -eq \$owner ]; do continue; done;" &
    
ответ дан Der Bosst 16.04.2018 в 15:17
1

Этот поток может быть немного старым, но вот решение, которое работает для меня:

Ссылка

Simply edit your $HOME/.bashrc file and add the following function:
set-title(){
ORIG=$PS1
TITLE="\e]2;[email protected]\a"
PS1=${ORIG}${TITLE}
}

Now whenever you want to set the title of your terminal, just enter something like:
set-title "my awesome terminal title"

    
ответ дан Sjoerd 17.05.2018 в 08:49
-2

Чтобы изменить заголовок активного окна терминала, выполните следующие действия:

  • Перейдите в Изменить-> Настройки профиля .
  • Перейдите на вкладку Название и команда , как показано ниже.

  • В этом окне вы можете увидеть поле ввода Начальное название , где вы можете установить заголовок терминала.

Примечание. . Если вы хотите, чтобы заголовок терминала был статическим (т.е. он никогда не изменится при запуске команд, которые изменяют название терминала, например cd ), тогда вы также следует выбрать опцию Сохранить начальный заголовок в поле ввода выпадающего списка ниже Поле заголовка ввода , названное как Когда команды терминала устанавливают свои собственные заголовки .     

ответ дан Akshay Pratap Singh 16.06.2015 в 04:06