Aide-mémoire screen
Screen est un multiplexeur de terminal. Les commandes de screen commencent par Ctrl-a
Tmux est une alternative plus récente. Celles de tmux commencent par Ctrl-b. Ici je ne parlerai que de Screen.
- détacher un terminal pour le retrouver plus tard, typiquement après déconnexion du serveur : Ctrl-a d
-
rattacher un terminal détaché, quand on a qu'une session de screen :
screen -r
-
rattacher un terminal et le détacher de la session en cours, quand on en a qu'une :
screen -rd
-
Si on a plusieurs sessions de screen en cours, il faut préciser :
screen -r identifiant
ouscreen -rd identifiant
-
Lister les sessions de screen :
screen -ls
- Scroller dans screen : Ctrl-a [ (entre dans le mode copie) puis touches Page ▲ et Page ▼ (sans la touche Maj) puis Echap ou q pour sortir du mode copie.
-
Copier dans screen : Ctrl-a [ pour entrer dans le mode copie puis, au clavier (pas à la souris)
- placer le curseur en début de sélection
- appuyer sur Espace pour démarrer la sélection
- aller en fin de sélection
- appuyer sur Espace pour terminer la sélection
- Coller dans screen (pas dans le "presse-papier" de X11) : Ctrl-a ]
- Scinder une fenêtre en deux pour avoir deux fenêtres côte à côte dans le même terminal : Ctrl-a | puis Ctrl-a Tab pour passer dans la fenêtre d'à coté, puis Ctrl-a c pour y créer un shell.
-
Faire ces trois opérations en une seule : ajouter dans
~/.screenrc
la ligne suivante
bindkey | eval "split -v" "focus" "screen"
et il n'y a plus qu'à faire Ctrl-a | - On peut aussi scinder pour avoir deux fenêtres l'une en dessous de l'autre : Ctrl-a Maj-s
- Pas besoin de scinder pour avoir plusieurs fenêtres : Ctrl-a c pour créer une nouvelle fenêtre puis Ctrl-a n pour aller à la suivante, Ctrl-a p pour la précédente. Elles sont comme "empilées". Ctrl-a " pour avoir la liste, indexée à partir de 0. Ctrl-a 1 pour aller à la deuxième, etc.
- Supprimer une partie scindée : Ctrl-a Maj-x
-
Redimensionner une partie scindée : Ctrl-a
:resize 30%
-
Pour retrouver les fenêtres comme on les a scindées : Ctrl-a
:layout save default
- Nommer les fenêtres : Ctrl-a A
-
On peut aussi nommer les sessions : Ctrl-a
:sessionname
(taper :sess puis Tab pour compléter) - Lister les fenêtres et basculer de l'une à l'autre : Ctrl-a " puis flèches ↑ ↓
-
Passer d'une fenêtre à l'autre avec Ctrl-Page ▲ et Ctrl-Page ▼ au lieu de Ctrl-a n et Ctrl-a p mettre dans
~/.screenrc
:
bindkey -t ^[[5;5~ prev
bindkey -t ^[[6;5~ next
Évidemment, ça ne marche pas si on a plusieurs onglets dans le terminal XFCE. Dans ce cas, c'est le terminal XFCE qui traite ces touches.
De toute façon, il vaut mieux s'habituer aux touches par défaut parce que sur un serveur "neuf", il n'y aura pas ce réglage 🤷 -
Déplacer une fenêtre dans la liste = changer sa position : Ctrl-a
:number 3
par exemple
Notes
-
Bizarrement, le Ctrl-a de GNU Screen interfère avec le Ctrl-a de GNU Readline dans Bash… Donc il faut
- soit s'habituer à utiliser la touche Début aussi marquée 🡔 selon les claviers (pas facile)
- soit utiliser Ctrl-a suivi de a dès que je m'aperçois que Ctrl-a seul ne fait "rien" (« ah c'est vrai, je suis dans Screen… »)
- On peut déplacer un processus vers une session screen après coup avec rePTYr mais ce n'est pas simple et il faut que ce soit un processus sans sous-processus sinon erreur "Unable to attach" (il y a une option -T pour ça, mais elle est expérimentale)
-
Une liste des fenêtres en haut de l'écran :
hardstatus alwaysfirstline "%{b kw}%H %{-b kw}%u %-Lw%{= rW}%50> %n%f %t %{-}%+Lw%<"
(qui me rappelle les onglets d'un terminal XFCE)