На этот вопрос уже есть ответ здесь:
Согласно моему первоначальному вопросу, ни установка PS1
, ни PROMPT_COMMAND
не оказали никакого влияния.
Используя только команду в командной строке, как мне изменить заголовок текущей вкладки терминала?
Многие сообщения предлагают следующее:
echo -en "\033]0;New terminal title\a"
но ничего не делает.
Ни один из текущих ответов не работает (некоторые не отвечают на вопрос), поэтому для ясности:
Кроме того, переменная PROMPT_COMMAND
не установлена в моих сеансах терминала. Если я установлю:
PROMPT_COMMAND='echo -en "\033]0;New terminal title\a"'
, это не даст никакого эффекта.
Какая команда является правильной?
К вашему сведению, вывод uname -a
:
Linux d136172 3.13.0-45-generic # 74-Ubuntu SMP Tue 13 января 19: 36:28 UTC 2015 x86_64 x86_64 x86_64 GNU / Linux
от @Maythux, этих работ для моих потребностей игнорировать мой автобыстрый текущий каталог на терминале.
PROMPT_COMMAND='echo -en "\033]0;New terminal title\a"'
Меняют струну на "Новом Терминальном Имени" с $("pwd")
:
PROMPT_COMMAND='echo -en "\033]0; $("pwd") \a"'
Это автоматически изменит заголовок, даже когда Вы добавляете новую вкладку.
<час>я использую установку ниже , который выглядит лучше, можно также играть программирование удара и установить собственное.
PROMPT_COMMAND='echo -en "\033]0;$(whoami)@$(hostname)|$(pwd|cut -d "/" -f 4-100)\a"'
Добавляют эту установку на Ваш ~/.bashrc
.
От https://askubuntu.com/a/774543/455406, определенное для удара решение состоит в том, чтобы создать пользовательскую функцию (см., например, это практическое руководство ) как
# 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>
Когда PS1
наборы заголовок, любая попытка установить заголовок с помощью команды или PROMPT_COMMAND
перестанет работать, так как подсказка печатается после всех них. Поэтому я предпочитаю сохранять простую подсказку при тестировании заголовков (PS1=$; unset PROMPT_COMMAND
).
Вероятно, что PROMPT_COMMAND
установлен, и это перезаписывает Ваш выбор заголовка каждый раз, когда подсказка отображена. Попытайтесь сбросить его и затем дать Вашу команду заголовка:
PROMPT_COMMAND=
echo -en "\033]0;New terminal title\a"
.bashrc
. source ~/.bashrc
settitle Banana
function settitle()
{
if [ $# -eq 0 ]
then
eval set -- "\\u@\\h: \\w"
fi
case $TERM in
xterm*) local title="\[\033]0;$@\007\]";;
*) local title=''
esac
local prompt=$(echo "$PS1" | sed -e 's/\\\[\\033\]0;.*\\007\\\]//')
PS1="${title}${prompt}"
}
Одним из решений может быть установка последней версии tmux .
tmux позволяет задавать заголовки для каждой панели, которые активируются этой командой:
tmux set -g pane-border-status top
Они также могут отображаться внизу.
Затем заголовки устанавливаются с помощью escape-последовательности:
printf '\033]2│;%s\033\\' 'My Pane Title'
Каждая панель может иметь свой собственный заголовок, и все заголовки отображаются постоянно.
Панели tmux будут выглядеть следующим образом:
──0 "My Pane Title"──────┬──1 "Another Pane"───────
> │>
Это было протестировано на linux mint 18.2 (как Ubuntu) с tmux 2.8. Инсталляция была из тарбола.
Если вы хотите повысить производительность своего терминала, tmux также предлагает множество других функций.
Можно сделать это, или в CLI или в GUI (я предполагаю, что Вы используете терминал гнома, можно сделать для других, просто заменяют название приложения):
В Выполнении CLI команда:
gconftool-2 --set /apps/gnome-terminal/profiles/Default/title --type=string "New Terminal Name"
Примечание: новое имя применяется ко всем экземплярам терминальных вкладок, а не для единственной текущей вкладки.
Или от GUI:
Войдите в Меню: Терминал-> Заголовок Набора-> Входит, новый заголовок затем сохраняют.
Необходимо добавить эту строку к .bashrc
файл и не непосредственно к Вашему терминалу.
gedit .bashrc
Добавьте эту строку:
PROMPT_COMMAND='echo -en "\033]0;New terminal title\a"'
Затем сохраните и получите bashrc файл.
source .bashrc
На основе ответа @muru
PS1 устанавливает заголовок, любая попытка установить заголовок с помощью команды или PROMPT_COMMAND перестанет работать, так как подсказка печатается после всех них
Это работало в моем Элементарном S.O:
PS1='\u:\W\$ '
PROMPT_COMMAND='echo -en "\033]0;New terminal title\a"'
Я выполняю это на каждой новой вкладке:
И поскольку предыдущее изображение показывает, у меня есть несколько вкладок с уникальным именем.
С 16.04.1 Ubuntu
Используя удар, wmctrl, xprop, PS
1) Для продолжительной активной программы:
Например, запустите программу (рейнджер), работающий в терминале, запущенном с рабочего стола, измените заголовок, однажды, после некоторой задержки (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;" &
Этот поток может быть немного старым, но здесь является решением, которое работает на меня:
https://blog.programster.org/ubuntu-16-04-set-terminal-title
Просто отредактируйте свой файл $HOME/.bashrc и добавьте следующую функцию:
заголовок набора () {
$PS1 ORIG=
ЗАГОЛОВОК = "\e] 2; $ \a"
$ PS1= {ORIG} $ {ЗАГОЛОВОК}
}Теперь каждый раз, когда Вы хотите установить заголовок своего терминала, просто введите что-то как:
заголовок набора "мой потрясающий терминальный заголовок"