Comment choisir ce qui apparaît dans la barre de titre de PuTTY sous Linux?

8

Dans la configuration PuTTY, il y a une option dans Terminal → Fonctionnalités appelée Désactiver le changement de titre de la fenêtre télécommandée . Sans cela, la barre de titre de PuTTY changera chaque fois que j'appuierai sur Entrée dans la console.

Je pensais que ce serait une solution plus propre de définir le texte de la barre de titre à partir de Linux que d'en spécifier un pour chaque client PuTTY que j'ai autour. Alors, où puis-je modifier ce que Linux définit comme titre de fenêtre?


$ uname -a
Linux drevo 2.6.32-5-amd64 # 1 SMP lun 16 janvier 16:22:28 UTC 2012 x86_64 GNU / Linux

$ cat / etc / debian_version
6.0.4
Hubro
la source

Réponses:

6

La plupart des programmes de terminaux - y compris konsole, putty et xterm - émulent l'ancien terminal VT100. Ce terminal vous permet de définir certaines choses, notamment le gras, les couleurs, la définition du titre du terminal, etc., à l'aide de séquences de caractères spéciaux appelées séquences d'échappement.

Le shell bash a une variable appelée PROMPT_COMMAND qui, si elle est définie, est évaluée avant chaque invite que vous imprimez (je crois que zsh a quelque chose de similaire, en fait je pense que bash leur a pris le code). Vous pouvez sortir des séquences d'échappement dans PROMPT_COMMAND et cela définira votre barre de titre.

Voici ce que j'ai dans le mien (Linux / bash):

USER=$(/usr/bin/id -un)
HOSTNAME=$(uname -n)
HOSTNAME=${HOSTNAME%%.*}
PROMPT_COMMAND='echo -ne "\e]0;$USER@${HOSTNAME}: $(pwd -P)\a"'

Vous pouvez le mettre dans votre ~ / .bashrc

Il y a beaucoup de personnalisations que vous pouvez faire avec votre terminal. J'aime le gras dans mon invite, pour qu'il soit plus facile de voir la fin de mon invite. Cela le rend jaune vif, bon sur mon fond noir par défaut:

PS1="\[\e[33;1m\]\h:\$\[\e[0m\] "

Regardez autour de vous pour la personnalisation d'invite Linux, vous trouverez plus de HowTos que vous ne saurez quoi en faire. Choisissez celui que vous trouvez le plus facile à lire.

Rich Homolka
la source
14

Le titre du terminal est défini à l'aide de séquences d'échappement spéciales dans la sortie de la console. Par défaut, l'invite bash inclut ces séquences d'échappement et définit le titre sur le répertoire de travail actuel.

Vous devrez donc modifier votre variable PS1 (la plupart du temps, elle est définie dans ~/.bashrc), sinon bash écrasera votre titre chaque fois que l'invite est affichée.

Vous pouvez ensuite définir le titre en mettant ce qui suit dans un script qui est exécuté lorsque vous vous connectez, par exemple ~/.profile:

echo -e "\033]0;<your string>\007"
jhenninger
la source
Notez, c'est le seul qui répond à la question.
Erik Aronesty
Remplacez-le -epar -ensi vous souhaitez éviter la ligne vierge supplémentaire générée par la commande echo.
ADTC
2

J'ai cherché dans de nombreux forums et je n'ai pas trouvé la réponse à la question:
comment obtenir toutes les sorties de commandes au titre Putty?

J'en avais besoin pour que d'autres programmes sachent quand certaines tâches sur un serveur sont terminées et si elles sont effectuées correctement ou incorrectement. Plink stdout et stdin ne fonctionnaient pas. J'ai utilisé de nombreux réglages avec des délais d'attente et pour certaines commandes qui ont fonctionné, pour d'autres non. XSEL et XCLIP n'ont pas pu être installés sur ce serveur.

Voici donc la solution:

  1. Récupère la sortie de la commande dans un fichier.
  2. Faites écho à ce fichier pour le titre.

Sur le client Putty et le serveur SUSE, cela ressemble à ceci:

ls /home | grep domagaja > logutoit.txt 
echo -e "\033]0\\;$(cat logutoit.txt)\\007\\c"

J'espère que quelqu'un pourra l'utiliser. Cela ne fonctionnera pas pour tous les types de serveurs et paramètres de client de mastic, bien sûr, mais l'idée devrait bien fonctionner.

Jacek Domagała
la source