web-dev-qa-db-fra.com

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

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

62
well actually

Vous pouvez nommer une session lorsque vous la démarrez avec le -S name option. Depuis 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 -ls, et connectez-vous à l'un par son nom avec screen -xS name.

Dans une même session d'écran, vous pouvez également nommer chaque fenêtre. Pour ce faire, tapez CTRL-a, A puis le nom que vous voulez. Vous pouvez afficher une liste interactive des fenêtres nommées en tapant CTRL-a, ", puis sélectionnez celui vers lequel vous souhaitez basculer dans cette liste.

Nommer les écrans et les terminaux dans les écrans est très utile pour se rappeler ce qu'ils sont et pourquoi vous les avez démarrés en premier lieu.

73
Lars Yencken

Il y a deux concepts ici, et je ne sais pas 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 c Crée une fenêtre, C-a n Et C-a p Basculent vers 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 réattachement (option -r Ou -R) Crée une nouvelle session.

Windows a des titres, qui peuvent être définis via l'option de ligne de commande -t, La liaison de touche C-a A, La commande title ou la séquence d'échappement \ek. Voir réponse du shellter pour plus de détails.

Les sessions peuvent avoir des noms. Vous devez généralement définir le nom sur la ligne de commande avec l'option -S; 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 des noms de session différents. Vous pouvez lister la session d'écran en cours avec screen -ls; le premier mot sur chaque ligne de session est 12345.sessionname où 12345 est l'ID de processus d'écran. Utilisez screen -r sessionname Ou screen -r 12345 Pour reprendre une session indiquée par son nom ou son ID de processus.

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 à partir de votre .screenrc

screen -t top 2 Nice top
screen -t ....

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

Modifier: ajouté

Pour modifier le nom des écrans actuels, 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.

12
shellter

Lors de l'exécution de screen:

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

4
ninjalj

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 pas ê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 trouvé que l'utilisation de l'alias fonctionne plutôt bien. Si j'oublie de nommer un écran ou que je me retrouve dans une session avec un tas d'écrans qui sont naturellement devenus des écrans pour des tâches particulières, je définis simplement un alias pour la commande à y attacher.

exemple:

alias goncompile='screen -r 2354'

L'émission de la commande d'alias en elle-même vous rappellera les écrans que vous avez et la commande que vous avez configurée pour les attacher.

Utilisez unalias pour les supprimer.

3
caoimhin