Screen est un utilitaire très pratique qui permet de gérer plusieurs pseudo-terminaux avec un seul terminal physique. Il est disponible dans de nombreuses distributions Linux.
Sous Debian, il suffit d'exécuter la ligne suivante en tant que root ou avec la commande sudo :
sudo apt install screen
Pour bien comprendre le fonctionnement de screen, il faut connaître la notion de fenêtre et de région.
La fenêtre est un espace virtuel auquel est attaché un processus (un Bash interactif, un éditeur vi, une commande top etc.).
La région est une zone physique de votre écran.
Screen permet d'attacher et de détacher à volonté une fenêtre sur une région.
Pour lancer screen, il suffit de taper
screen -S masession
Avec cette commande, on crée une nouvelle session de screen pour le terminal en cours.
Si tout se passe bien, l'écran a été effacé et l'invite de commande vous attend.
Un esprit chagrin pourrait croire qu'il ne s'est rien passé. Si vous tapez
screen -list
Vous devriez voir votre session masession apparaître pour vous convaincre du contraire.
Par défaut, screen crée une région, une fenêtre et y attache un shell interactif.
Il est possible d'attacher ou de détacher une fenêtre de sa région. Quand cela est fait, le processus attaché à la fenêtre n'est pas détruit. Seul son affichage n'est pas visibile, il continue de fonctionner normalement.
Screen est un utilitaire très complet et fournit donc un grand nombre de combinaisons de touches.
Pour ne pas gêner d'autres programmes, les combinaisons de touches de Screen commencent par la combinaison Ctrl + a.
Voici ma sélection de touches.
Il est possible de diviser une région en deux horizontalement ou verticalement.
Comme expliqué précédemment, supprimer la région courante ne tue pas le processus ! Celui-ci reste toujours actif et pourra être rattachée à une région plus tard.
Au lancement de screen, il n'existe qu'une région occupant tout le terminal physique, tout l'écran.
Une fenêtre est attachée à une région ou plus.
Pour gérer les fenêtres, les combinaisons suivantes sont utiles :
Pour manipuler les fenêtres, le principe est de se placer d'abord sur la région dans laquelle les changements doivent être effectués.
Screen apporte la possibilité de copier-coller du texte entre les différentes régions. Une fonctionnalité très pratique pour copier le texte d'une entrée de man ou d'une page sous Lynx pour le coller dans vi par exemple, le tout sans recourir à la souris.
Une fois le mode copier-coller activé, screen fait apparaître un curseur libre dans la région en cours :
En plus du copier-coller classique de lignes, screen permet le copier-coller de colonnes, bien pratique pour copier-coller les colonnes intéressantes d'une commande ls ou autre.
Pour faire un copier-coller de colonnes, la procédure est similaire à celle du copier-coller de lignes :
Une fois le mode copier-coller activé, screen fait apparaître un curseur libre dans la région en cours :
les touches c et Maj + c peuvent en fait être utilisées à tout moment de la sélection,
il ne s'agit pas réellement d'une copie de colonnes car c et Maj + c ne font que définir les marges gauche et droite, mais cela permet de l'émuler simplement sous screen.
Screen est décidément plein de fonctionnalités qui rendent la vie plus simple.
Lorsque vous travaillez sous screen, l'ensemble des processus et fenêtres créés s'appellent une session.
Screen permet de détacher une session du terminal physique en cours d'utilisation pour la rattacher à un autre terminal. On peut également utiliser cette fonctionnalité pour détacher une session, couper sa connexion, revenir plus tard et retrouver sa session telle qu'on l'a laissée !
Pour détacher une session, il suffit de faire Ctrl + a d.
Pour rattacher la dernière session, il suffit de taper :
screen -r
Et voilà !