J'ai du mal à faire la différence entre mon serveur de développement et mon serveur de production. J'utilise SSH pour me connecter aux machines (toutes deux Ubuntu 10.04), et je me demandais s'il existait un moyen de modifier la couleur de la fenêtre du terminal en fonction du serveur SSH auquel elle est connectée, car j'oublierai de modifier la couleur pour chaque serveur...
Réponses
Trop de publicités?Cet article de blog fournit un script pour résoudre ce problème.
#!/bin/bash
#
# ssh into a machine and automatically set the background
# color of Mac OS X Terminal depending on the hostname.
#
# Installation:
# 1. Save this script to /some/bin/ssh-host-color
# 2. chmod 755 /some/bin/ssh-host-color
# 3. alias ssh=/some/bin/ssh-host-color
# 4. Configure your host colors below.
set_term_bgcolor() {
local R=$1
local G=$2
local B=$3
/usr/bin/osascript <<EOF
tell application "Terminal"
tell window 0
set the background color to {$(($R*65535/255)), $(($G*65535/255)), $(($B*65535/255))}
end tell
end tell
EOF
}
# Host-specific background colors.
if [[ "$@" =~ production1.com ]]; then
set_term_bgcolor 127 0 0
elif [[ "$@" =~ production2.com ]]; then
set_term_bgcolor 0 127 0
fi
ssh $@
# Default background color.
set_term_bgcolor 34 79 188
Dans Terminal.app, vous pouvez modifier le "thème" par onglet (par exemple, Pro ou Ocean) en cliquant avec le bouton droit de la souris sur un seul onglet --> Inspecter l'onglet--> Paramètres. Vous pouvez également utiliser iTerm car il dispose de cette option : "Les étiquettes des onglets peuvent changer de couleur pour indiquer les activités de la session".
J'ai essayé d'utiliser des couleurs différentes pour les différentes sessions SSH il y a quelque temps. Cela n'a pas vraiment fonctionné car j'oubliais trop facilement quelle machine était la rouge et quelle était la bleue.
J'ai fini par apprendre moi-même quelques commandes qui vous disent où vous êtes, et qui vous êtes là. whoami par exemple.
En utilisant iTerm2, vous pouvez modifier la couleur de la barre de titre et de l'onglet pour chaque serveur à partir du fichier .bashrc de chaque machine. Voir le docs pour obtenir des informations à ce sujet. Je combine cela avec le réglage de la couleur de l'invite pour faciliter la distinction. J'ai généralement une fenêtre iTerm par serveur, avec éventuellement plusieurs onglets. Cela permet de trouver facilement la bonne fenêtre dans Expose.
Voici la section correspondante de mon .cshrc. Il faudrait l'adapter pour bash (NOTE : ^] est control+] et ^G est control+G)
if ( ${?term} != 0 ) then
# tab window
alias cwdcmd 'printf "^]1;%s^G^]2;%s^G" "$cwd:t" "$HOST `echo $cwd | sed s $HOME-~-`" '
# Set title/tab color
alias settermr "echo -n '^]6;1;bg;red;brightness;\!*^G'"
alias settermg "echo -n '^]6;1;bg;green;brightness;\!*^G'"
alias settermb "echo -n '^]6;1;bg;blue;brightness;\!*^G'"
settermr 171;settermg 0;settermb 0
# Set title text
alias settitle 'echo -n "^]2; "\!*"^G"'
settitle `hostname -s`
# Set tab text
alias settab 'echo -n "^]1; "\!*"^G"'
settab $cwd:h:t/$cwd:t
cwdcmd
endif