web-dev-qa-db-fra.com

Est-il possible de définir le titre de terminal Gnome sur "User @ Host" pour n'importe quel hôte je suis connecté?

Je voudrais définir le titre du terminal sur user@Host Donc, je peux facilement dire quelle machine je suis connectée à partir du titre de la fenêtre. Y a-t-il un moyen de le faire de SSH ou de Gnome Terminal?

22
Naftuli Kay

Oui. Voici un exemple de bash à l'aide de PS1 qui devrait être distro-agnostique:

Plus précisément, la séquence d'évacuation \[\e]0; __SOME_STUFF_HERE__ \a\] est d'intérêt. J'ai modifié cela pour être défini dans une variable séparée pour plus de clarté.

# 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

Notez également qu'il peut y avoir de nombreuses façons de définir le titre d'un XTERM, en fonction du programme terminal que vous utilisez et de la coque. Par exemple, si vous utilisez Konsole de KDE, vous pouvez remplacer le paramètre Titre en allant sur Settings-> Configure Profiles-> Edit Profile-> Tabs et définir le Tab title format et Remote tab title format Les paramètres.

Konsole titlebar settings dialog

De plus, vous voudrez peut-être vérifier:

20
TrinitronX

Voici une version du script SSH Bash que j'utilise qui définit l'invite de titre et de commande du serveur distant sans modifier le serveur distant.

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"

Vous pouvez l'invoquer en appelant ./my_ssh.sh Nom d'utilisateur Nom d'utilisateur Nom d'hôte

3
Austin Beer

Les œuvres suivantes pour moi (probablement uniquement sur Gnome-Terminal):

comp@home$ cat /usr/bin/ssh
#!/bin/bash    
echo -ne "\033]0;${1}\007"
ssh_bkup "$@"

Lorsque la commande SSH_BKUP n'est que de base 'ssh' avec un nom modifié, qui est appelé juste après que la commande ECHO modifie le titre du terminal actuel.

1
Yuriy Mankovskiy

ceci est une version 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'
0
Pasquale