56 votes

Ensemble écran-titre de shellscript

Est-il possible de définir l' Screen-Title à l'aide d'un script shell?

J'ai pensé à quelque chose comme l'envoi de la clé de commandes Strg+A Shift-A Name <Enter>

J'ai cherché pendant une heure environ sur la façon d'émuler les touches dans un script shell, mais je n'ai pas trouver la réponse.

Merci pour l'Aide!

Beerweasle

58voto

Shirkrin Points 2211

Vous pouvez régler l'écran / xterm titre à l'aide des lignes suivantes:

#!/bin/bash

mytitle="Some title"
echo -e '\033k'$mytitle'\033\\'

20voto

Espo Points 24318

À partir de http://www.faqs.org/docs/Linux-mini/Xterm-Title.html#s3

xterm les séquences d'échappement

Icône et la fenêtre de titres peut être changé dans un xterm en utilisant XTerm les séquences d'échappement. La suite les séquences sont utiles à cet égard:

  • ESC]0;stringBEL -- Définir le nom de l'icône et le titre de la fenêtre de la chaîne
  • ESC]1;stringBEL -- Définir le nom de l'icône de la chaîne
  • ESC]2;stringBEL -- Définir le titre de la fenêtre de la chaîne

où l'ESC est le caractère d'échappement (\033), et BEL est la cloche de caractère (\007).

L'impression de l'une de ces séquences au sein de le xterm sera la cause de la fenêtre ou icône de titre pour être changé.

Remarque: ces séquences s'appliquent à la plupart xterm dérivés, tels que nxterm, couleur-xterm et rxvt. D'autres terminaux types utilisent souvent des fuites différentes; voir l'annexe pour des exemples. Pour l' liste complète des xterm les séquences d'échappement voir le fichier ctlseq2.txt qui vient avec le terminal de distribution, ou xterm.seq, qui est livré avec le rxvt de la distribution.

L'impression des séquences d'échappement

Pour plus d'informations, constant tout au long de la durée de vie de cette coquille, comme l'hôte et le nom d'utilisateur, il sera suffit simplement l'écho de l'évasion chaîne dans le shell fichier rc:

    echo -n "\033]0;${USER}@${HOST}\007"

devrait produire un titre comme nom d'utilisateur@nom d'hôte, en supposant que le shell les variables $USER et $HOST sont ensemble correctement. Les options requises pour echo peut varier en fonction shell (voir les exemples ci-dessous).

Pour plus d'informations qui peuvent changer en cours d' la coquille de la vie, tels que le courant de répertoire de travail, ces évasions vraiment besoin d'être appliqué à chaque fois l'invite de changements. De cette façon, le la chaîne est mis à jour avec chaque commande vous émettez et pouvez garder une trace de des informations telles que travail en cours le répertoire, le nom d'utilisateur, nom d'hôte, etc. Quelques coquilles de fournir des fonctions spéciales à cette fin, certains ne le font pas et nous insérez le titre des séquences directement dans la chaîne d'invite. Cette est illustré dans la section suivante.

12voto

Johnny Halfmoon Points 29

Voici d'autres façons de faire un script pour renommer les intitulés d'écran:

L'ajout de l'un des paramètres suivants à l' .ssh/config définit le titre de l'écran automatiquement lors de la connexion à un système à l'aide de SSH:

Host *
  PermitLocalCommand yes
  LocalCommand [ "$TERM" == 'screen' ] && echo -ne "\033k%h\033\\" 

Au lieu de %h, ce qui représente le nom d'hôte de la machine avec lequel vous vous connectez, vous pouvez utiliser %n, qui est le nom réel / alias que vous avez utilisé pour vous connecter à la machine.

REMARQUE: Vous avez besoin d'OpenSSH >= v5.1 pour être en mesure d'utiliser le Localhost %n et %h paramètres. Découvrez "man ssh_config" pour plus d'informations sur LocalCommand.

Pour revenir automatiquement le titre, pour le nom d'hôte de l'hôte local, après la fermeture de la session SSH, vous pouvez ajouter une séquence d'échappement vous invite variable PS1 en .bashrc :

export PS1='you_favorite_PS1_here'
if [ "$TERM" == 'screen' ]; then
    export PS1=${PS1}'\[\033k\h\033\\\]'
fi

Ces astuces sont particulièrement utiles lors de l'utilisation d'un .screenrc config qui vous montre ce que l'écran de l'onglet " vous êtes actuellement en train de travailler. Ajouter quelque chose comme ce qui suit à l' .screenrc à le faire fonctionner:

caption always "%{= kY}%-w%{= Yk}%n %t%{-}%+w%{ kG} %-= @%H - %LD %d %LM - %c"

9voto

Seff Points 23

Essayez les commandes ci-dessous, pas besoin d'éditer des fichiers de configuration ou comme ~/.bashrc, Peut être utilisé lors de l'exécution.

Définir le texte statique comme titre: (Mon Titre)

export PS1='\[\e]0;My Title\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '

Jeu global/local variable comme titre: ($UTILISATEUR)

export PS1='\[\e]0;$USER\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '

Ensemble de commande de sortie: titre: (nom d'hôte)

export PS1='\[\e]0;`hostname`\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '

Par défaut (Revenir en arrière):

export PS1='\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '

7voto

Randy Proctor Points 2331
set_screen_title ()
{
    echo -ne "\ek$1\e\\"
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X