Définir un nom pour une session d'écran

46

Est-il possible de donner un nom particulier à une session écran Unix? Par exemple, disons que j'exécute le même programme plusieurs fois, chacun avec des paramètres différents et que je veux dire lequel est lequel.

bien en fait
la source
Pas une question de programmation. Devrait aller à SuperUser ou Unix.
0xC0000022L

Réponses:

56

Vous pouvez nommer une session lorsque vous la démarrez avec l' -S nameoption. À partir d'un écran en cours d'exécution, vous pouvez le modifier en tapant CTRL-a, :sessionname name. Vous pouvez afficher les sessions d'écran en cours avec screen -lset vous connecter à l'une par leur nom avec screen -xS name.

Dans une session d'écran unique, vous pouvez également nommer chaque fenêtre. Faites ceci en tapant CTRL-a, Aensuite le nom que vous voulez. Vous pouvez afficher une liste interactive de fenêtres nommées en les saisissant CTRL-a, ", puis sélectionner celle que vous souhaitez utiliser dans cette liste.

Nommer à la fois les écrans et les terminaux dans les écrans est vraiment utile pour se rappeler de ce qu’ils sont et de la raison pour laquelle vous les avez démarrés.

Lars Yencken
la source
Renommer une session d'écran après son démarrage est possible (à l'aide de :sessionname NEWNAME), mais il est "généralement déconseillé". La $STYvariable d'environnement fait toujours référence au nom d'origine. Voir le screenmanuel: gnu.org/software/screen/manual/html_node/Session-Name.html
Keith Thompson
22

Il y a deux concepts ici, et je ne suis pas sûr de savoir lequel vous avez en tête:

  • Vous pouvez avoir plusieurs fenêtres d'écran. Chaque fenêtre exécute un shell ou un autre programme. Toutes les fenêtres sont hébergées par le même processus. C-a ccrée une fenêtre C-a net C-a ppasse à la fenêtre suivante / précédente, etc.
  • Vous pouvez avoir plusieurs sessions d'écran. Chaque session est hébergée par son propre processus et est indépendante de toutes les autres sessions. L'écran de démarrage sans aucune option de recollage ( -rou -R) crée une nouvelle session.

Les titres de Windows peuvent être définis via l' -toption de ligne de commande, la C-a Aliaison de clé, la titlecommande ou la \ekséquence d'échappement. Voir la réponse du shellter pour plus de détails.

Les sessions peuvent avoir des noms. Vous définissez généralement le nom sur la ligne de commande avec l' -Soption; si vous ne spécifiez pas de nom, l’écran en crée un. Si vous utilisez plusieurs sessions d'écran, vous leur donnerez généralement un nom différent. Vous pouvez lister la session d'écran en cours avec screen -ls; le premier mot sur chaque ligne de session est 12345.sessionnameoù 12345 est l'ID de processus d'écran. Utilisez screen -r sessionnameou screen -r 12345pour reprendre une session indiquée par son nom ou son ID de processus.

Gilles, arrête de faire le mal
la source
1
Dans les raccourcis clavier par défaut, pour changer de titre, vous devez utiliser Ca A.
enzotib
11

Ah ... Écran, ça me ramène ;-)

Pour une fenêtre

-t name
    sets the title (a.k.a.) for the default shell or specified program. 
    See also the "shelltitle" .screenrc command.

Pour plusieurs sessions démarrées depuis votre .screenrc

screen -t top 2 nice top
screen -t ....

Voici un lien vers une copie en ligne de la page de manuel pour écran.

Edit: ajouté

Pour changer le nom de l'écran actuel, créez un outil de script shell comme

cat scrnTitle.sh
#/bin/bash
echo -ne '\ek${0}\e\\'

Non testé, je n'ai pas d'écran disponible sur le système sur lequel je travaille.

pilon
la source
Merci, cela aide beaucoup. Est-il possible de renommer une session d'écran existante?
Et bien en fait le
@Charlotte: voir les modifications. Merci pour les votes!
shellter
Belle réponse @shellter! Je suis curieux, avez-vous dit "me ramène" pour signifier que vous utilisez autre chose ces jours-ci (par exemple, tmux), ou simplement qu'il a plus de 32 ans ?
tutuDajuju
1
@tutuDajuju: Gulp, maintenant que j'y pense, j'ai utilisé screenau moins 25 ans. Me reprend, parce que maintenant c'est un cas d'utilisation spécial qui m'emmènerait screen. Normalement, je continue à ouvrir X-Terms, mais je me souviens quand il semblait impossible de fonctionner Xsur un PC 486 ;-) A la vôtre!
shellter
@shellter FYI, j'ai utilisé X sur un PC 486 avec 8 Mo de RAM en 1992 ...
Eno
4

En cours d'exécution screen:

Ctrl+a(ou quelle que soit votre screenséquence d'échappement)A

Ninjalj
la source
3

Les réponses ci-dessus vous indiquent déjà comment nommer un écran lorsque vous le démarrez. Ils soulignent également qu’un écran ne peut plus être renommé après son démarrage. Le titre de la fenêtre peut être défini, mais le nom utilisé pour attacher à l'écran reste pid.pty.host.

Cependant, pour obtenir un effet utile, j’ai constaté que l’utilisation d’alias fonctionnait plutôt bien. Si j'oublie de nommer un écran ou si je me trouve dans une session avec un groupe d'écrans en place qui sont naturellement devenus des écrans pour des tâches particulières, je définis simplement un alias pour que la commande s'y attache.

Exemple:

alias goncompile='screen -r 2354'

L’émission de la commande alias par elle-même vous rappellera les écrans que vous avez en place et la commande que vous avez définie pour les y associer.

Utilisez unaliaspour les enlever.

Caoimhin
la source