Diviser le terminal en plusieurs fenêtres (ou l’inverse…)

Lors d’une installation ou d’une configuration un peu lourde, on est vite tenté de lancer plusieurs terminaux pour éviter de passer notre temps à changer de dossier et à retrouver les commandes dans l’historique. Pour gagner en ergonomie, on peut diviser la fenêtre du terminal en plusieurs afin de pouvoir passer des commandes dans chacune d’elles. Pour cela, il existe deux solutions, une simple et une complexe très puissante. On va ici s’intéresser à la seconde.

Avant de commencer, je vais quand même donner la solution simple, mais toutefois très efficace : Terminator.


On va donc utiliser le logiciel screen. Son utilisation est de prime abord plus sommaire que Terminator, vu que c’est la console elle-même qui sera splittée en plusieurs terminaux (j’appelle ici « console » la fenêtre -ou interface graphique- dans laquelle apparaît le « terminal », programme qui traite les commandes). On aura donc pas la commodité de la souris par exemple. Mais son point fort est en fait l’inverse : afficher la même session de terminal dans plusieurs fenêtres, ce que nous verrons à la fin de cet article.
Quel intérêt ? me direz-vous. Hé bien c’est en fait très utile pour le contrôle à distance, par exemple en SSH pour se « connecter » à un terminal déjà ouvert sur la machine serveur par exemple.

Installation de screen

A priori, screen devrait être dans vos dépots par défaut :

apt-get install screen

Séparer la console en différents terminaux

Une fois la console lancée, tapez la commande screen pour lancer le programme sus-nommé. Un message vous donne la licence du programme, tapez entrée pour l’utiliser.

Le principe est en fait de lancer plusieurs terminaux, ou sessions, dans screen, au sein d’une même console. On commence donc par séparer l’espace de travail :

  • Ctrl+A puis | (pipe : Alt Gr+6 ) pour séparer verticalement
  • Ctrl+A puis S (S majuscule) pour séparer horizontalement.

Maintenant, on va donc changer d’espace de travail (je rappelle que la souris ne vous sera d’aucun secours) :
Ctrl+A puis Tab pour naviguer entre les espaces de travail.

Vous remarquerez que vous n’avez pas la main, simplement parce qu’il faut maintenant ouvrir un nouveau terminal dans cet espace :
Ctrl+A puis c (Create)

Vous noterez qu’en bas à gauche de chaque espace est donné un nom (« 1 bash » par exemple). Ces nom peuvent être changés avec :
Ctrl+A puis A (A majuscule)

Utilisation de Screen pour splitter un terminal en plusieurs sessions
Utilisation de Screen pour splitter un terminal en plusieurs sessions

Ce nom est le nom de la session. Vous pouvez créer autant de sessions que vous le souhaitez (du moins, à ma connaissance). Vous pouvez donc avoir plus de sessions que d’espaces de travail. Pour basculer d’une session à une autre :

  • Ctrl+A puis n (Next) pour la session suivante
  • Ctrl+A puis p (Previous) pour la session précédente

Vous pouvez également lister les sessions ouverte avec :
Ctrl+A puis « 

Vous aurez relevé que l’on peut donc afficher la même session dans deux espaces, mais a priori ça sert à rien car les espaces sont « coincés » dans la même console. Pour afficher une même session dans deux fenêtres, il faut utiliser les screens.

Afficher une session sur plusieurs consoles distinctes

screen peut être lancé plusieurs fois, et on peut nommer chacune des sessions de screen. Dans un premier terminal :

screen -S toto

Ainsi, on pourra se référer par la suite au screen toto. Si depuis le terminal 2, on veut prendre la main sur toto :

screen -r toto

Si la session est déjà attachée, alors screen ne voudra pas s’attacher. L’option -x à la place de r permet de forcer cette attache :

screen -x toto

Sachez que s’il n’y a qu’un seul screen d’ouvert, il est inutile de préciser son nom. A l’inverse, si vous voulez connaître la liste de tous les screens ouverts :

screen -ls

Résumé des principaux raccourcis clavier

  • Ctrl+A puis n  : (Next) aller au terminal suivant.
  • Ctrl+A puis p  : (Previous) aller au terminal précédent.
  • Ctrl+A puis 0,1…9 : aller au terminal désigné
  • Ctrl+A puis «   : lister des différents terminaux
  • Ctrl+A puis w  : lister les terminaux actuels avec leur nom.
  • Ctrl+A puis a  : retourner au terminal d’où l’on vient.
  • Ctrl+A puis A  : nommer les terminaux et s’y rendre par la suite plus aisément.

Vous pouvez à tout moment afficher la totalité des raccourcis clavier en faisant Ctrl+A puis  ? .

Eviter l’affichage de la licence à chaque lancement de screen

Modifiez (en super utilisateur) le fichier screenrc :

gedit /ect/screenrc

Et décommentez la ligne 23 :

startup_message off
Diviser le terminal en plusieurs fenêtres (ou l’inverse…)
4.8 (95 %) 4 votes
  • Linux_user

    Un très grand merci pour ce tuto! que Dieu vous bénisse!
    Bonne journée! :))

  • luneart

    Peut-etre pourrait-on mentionner le lien de la page d’ubuntu-fr vers les screenrc partagés, ce qui donne une bonne idée de ce qui peut se faire: http://forum.ubuntu-fr.org/viewtopic.php?id=390985 et aussi parler du fait que screen, avec minicom (autant dire silex), sont les seules interfaces permettant d’émuler un terminal sur un port COM, donc usb inclus: très utilisé pour paramétrer les équipements réseaux, ou tout simplement… la brique NXT des lego mindstorm!
    on peut parler aussi rapidement de byobu, mais contrairement à ce qui est dit sur ubuntu-fr, par défaut ce n’est pas screen derriere byobu (bien que ca soit facilement modifiable). et puis aussi le multi-users d’une meme session, et… bon je m’arrete 😉

  • Pingback: Les applis Android qu’elles sont bien | Le Blog de Dorian()

  • LAB3W.ORJ

    Merci pour ce Howt’to sur la commande screen et comment faire pour scinder un shell facilement.

    Par contre j’ai une question, comment faire pour dé-scinder les screens !? Mise en part de détacher et refaire le scindage du screen.

    En vous remerciant.
    Romain