Gostaria de definir o título do terminal para user@host
que eu possa dizer com facilidade a qual máquina estou conectado no título da janela. Existe uma maneira de fazer isso no SSH ou no Terminal GNOME?
Gostaria de definir o título do terminal para user@host
que eu possa dizer com facilidade a qual máquina estou conectado no título da janela. Existe uma maneira de fazer isso no SSH ou no Terminal GNOME?
Respostas:
Sim. Aqui está um exemplo para o bash usando o PS1 que deve ser independente da distribuição:
Especificamente, a sequência de escape \[\e]0; __SOME_STUFF_HERE__ \a\]
é de interesse. Eu editei isso para ser definido em uma variável separada para maior clareza.
# uncomment for a colored prompt, if the terminal has the capability; turned
# off by default to not distract the user: the focus in a terminal window
# should be on the output of commands, not on the prompt
force_color_prompt=yes
if [ -n "$force_color_prompt" ]; then
if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then
# We have color support; assume it's compliant with Ecma-48
# (ISO/IEC-6429). (Lack of such support is extremely rare, and such
# a case would tend to support setf rather than setaf.)
color_prompt=yes
else
color_prompt=
fi
fi
TITLEBAR='\[\e]0;\u@\h\a\]'
# Same thing.. but with octal ASCII escape chars
#TITLEBAR='\[\033]2;\u@\h\007\]'
if [ "$color_prompt" = yes ]; then
PS1="${TITLEBAR}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\W\[\033[00m\]\$ "
else
PS1="${TITLEBAR}\u@\h:\W\$ "
fi
unset color_prompt force_color_prompt
Observe também que existem várias maneiras de definir o título de um xterm, dependendo do programa do terminal que você está usando e do shell. Por exemplo, se você estiver usando o Konsole do KDE, poderá substituir a configuração do título em Settings
-> Configure Profiles
-> Edit Profile
-> Tabs
e definir as configurações Tab title format
e Remote tab title format
.
Além disso, você pode querer conferir:
\h
esse prompt apenas se $SSH_CLIENT
não estiver vazio.
\[\e]2;\u@\h\a
. (Também editei a minha resposta com que info)
Aqui está uma versão do script SSH bash que eu uso, que define o título e o prompt de comando do servidor remoto sem fazer alterações no servidor remoto.
my_ssh.sh:
#!/bin/bash
SETTP='MY_PROMPT="$HOSTNAME:$PWD\$ "'
SETTP="$SETTP;"'MY_TITLE="\[\e]0;$HOSTNAME:$PWD\a\]"'
SETTP="$SETTP;"'PS1="$MY_TITLE$MY_PROMPT"'
ssh -t $1@$2 "export PROMPT_COMMAND='eval '\\''$SETTP'\\'; bash --login"
Você pode invocá-lo chamando ./my_ssh.sh nome de usuário hostname
O seguinte funciona para mim (provavelmente apenas no gnome-terminal):
comp@home$ cat /usr/bin/ssh
#!/bin/bash
echo -ne "\033]0;${1}\007"
ssh_bkup "$@"
Onde o comando ssh_bkup é apenas básico 'ssh' com um nome alterado, que é chamado logo após o comando echo alterar o título do terminal atual.
~/bin
tem prioridade no meu caminho, então coloquei seu script no meu ~/bin/ssh
. A última linha chama explicitamente para /usr/bin/ssh
. Dessa forma, outros usuários ainda usam o padrão ssh
quando estão conectados à máquina e (como nossos diretórios pessoais estão no servidor, contas LDAP) recebo a funcionalidade em qualquer máquina em que estiver conectado.
esta é a versão alias
SETTP='MY_PROMPT="$HOSTNAME:$PWD\$ "'
SETTP="$SETTP;"'MY_TITLE="\[\e]0;$HOSTNAME:$PWD\a\]"'
SETTP="$SETTP;"'PS1="$MY_TITLE$MY_PROMPT"'
SETPC="export PROMPT_COMMAND='eval '\\''$SETTP'\\'; bash --login"
alias myssh='function _myssh(){ ssh -t $1@$2 $SETPC; };_myssh'