RÉFÉRENCE RAPIDE GNU SCREEN
Sessions, fenêtres, divisions, mode copie et partage
Gestion des sessions
Créer et lister des sessions
screen # new unnamed session
screen -S work # new session named "work"
screen -ls # list all sessions
screen -list # same as -ls
Commandes de session
| screen -S name | Démarrer une nouvelle session nommée |
| screen -r name | Rattacher une session détachée |
| screen -x name | Se rattacher à une session déjà attachée (partage) |
| screen -d name | Détacher une session distante |
| screen -d -r name | Détacher ailleurs, se rattacher ici |
| screen -D -RR | Forcer le détachement et le rattachement (agressif) |
| screen -ls | Lister toutes les sessions avec leurs PID |
| screen -wipe | Nettoyer les sessions mortes |
Fenêtres
Bases des fenêtres
| Ctrl-a c | Créer une nouvelle fenêtre |
| Ctrl-a n | Fenêtre suivante |
| Ctrl-a p | Fenêtre précédente |
| Ctrl-a 0-9 | Passer à la fenêtre par numéro |
| Ctrl-a " | Lister toutes les fenêtres (interactif) |
| Ctrl-a ' | Passer à la fenêtre par nom/numéro |
| Ctrl-a A | Renommer la fenêtre actuelle |
| Ctrl-a k | Fermer la fenêtre actuelle |
Gestion des fenêtres
| Ctrl-a w | Afficher la liste des fenêtres dans la barre d'état |
| Ctrl-a Ctrl-a | Basculer entre les deux dernières fenêtres |
| Ctrl-a N | Afficher le numéro et le nom de la fenêtre |
| exit / Ctrl-d | Fermer la fenêtre (quitter le shell) |
Division et régions
Commandes de division
| Ctrl-a S | Diviser horizontalement (haut/bas) |
| Ctrl-a | | Diviser verticalement (gauche/droite) |
| Ctrl-a Tab | Déplacer le focus vers la région suivante |
| Ctrl-a X | Fermer la région actuelle |
| Ctrl-a Q | Fermer toutes les régions sauf la courante |
Flux de travail des régions
Ctrl-a S # split horizontal
Ctrl-a Tab # move to new region
Ctrl-a c # create window in region
Ctrl-a :resize 20 # set region to 20 lines
Mode copie
Défilement et copie
| Ctrl-a [ | Entrer en mode copie/défilement |
| Space | Début/fin de sélection (en mode copie) |
| Enter | Copier la sélection et quitter le mode copie |
| Ctrl-a ] | Coller le texte copié |
| h/j/k/l | Déplacer le curseur (touches vi en mode copie) |
| Ctrl-u / Ctrl-d | Faire défiler d'une demi-page vers le haut/bas |
| / or ? | Rechercher vers l'avant/arrière |
| Esc | Quitter le mode copie |
Flux de travail de copie
Ctrl-a [ # enter copy mode
Space # mark start (navigate first)
Space # mark end + copy (navigate first)
Ctrl-a ] # paste into current window
Détachement et rattachement
Détacher
| Ctrl-a d | Détacher la session actuelle |
| Ctrl-a D D | Détacher et se déconnecter |
| Ctrl-a z | Suspendre screen (comme Ctrl-Z) |
| screen -d PID | Détacher à distance une session par PID |
Se rattacher
screen -r # reattach (if only one session)
screen -r work # reattach by name
screen -r 12345 # reattach by PID
screen -d -r work # steal session from other terminal
Flux de travail persistants
# Start long-running task, detach, reconnect later
screen -S build
make -j4 all # start build
Ctrl-a d # detach, go home
screen -r build # reattach later
Partage
Mode multi-utilisateur
# Host enables multiuser
Ctrl-a :multiuser on
Ctrl-a :acladd alice # grant access to user alice
# Alice attaches
screen -x hostuser/sessionname
Contrôle d'accès
| :multiuser on | Activer le mode multi-utilisateur |
| :acladd user | Accorder un accès complet à l'utilisateur |
| :aclchg user -w '#' | Mettre l'utilisateur en lecture seule (toutes les fenêtres) |
| :acldel user | Supprimer l'accès de l'utilisateur |
| screen -x user/sess | Se rattacher à une session partagée |
Configuration
Essentiels de ~/.screenrc
startup_message off # skip splash screen
defscrollback 10000 # scrollback buffer lines
hardstatus alwayslastline
hardstatus string '%{gk}%H %{wk}%?%-Lw%?%{bw}%n*%f %t%{wk}%?%+Lw%?'
shell -$SHELL # use login shell
Paramètres utiles
| startup_message off | Supprimer le message de démarrage |
| defscrollback N | Définir le tampon de défilement (défaut 100) |
| escape ^Bb | Changer la touche préfixe en Ctrl-b |
| shelltitle '$ |bash' | Définir automatiquement les titres de fenêtres |
| caption always '%n %t' | Toujours afficher la légende avec les infos de fenêtre |
| autodetach on | Détacher automatiquement en cas de déconnexion (défaut activé) |
| vbell on | Utiliser une alerte visuelle plutôt qu'auditive |
Motifs courants
Configuration de développement
# Auto-create windows in .screenrc
screen -t editor 0 vim
screen -t server 1 python -m http.server
screen -t shell 2 bash
select 0 # start on editor window
Journalisation et surveillance
Ctrl-a H # toggle logging to screenlog.N
Ctrl-a M # monitor window for activity
Ctrl-a _ # monitor window for silence
Référence rapide
| Ctrl-a ? | Afficher toutes les liaisons de touches |
| Ctrl-a :help | Aide intégrée |
| Ctrl-a :source file | Charger un fichier de configuration |
| Ctrl-a :screen cmd | Exécuter une commande dans une nouvelle fenêtre |
| Ctrl-a :quit | Fermer toutes les fenêtres et quitter la session |