GNU SCREEN RIFERIMENTO RAPIDO
Sessioni, finestre, split, modalità copia e condivisione
Gestione delle Sessioni
Crea ed Elenca Sessioni
screen # nuova sessione senza nome
screen -S work # nuova sessione chiamata "work"
screen -ls # elenca tutte le sessioni
screen -list # uguale a -ls
Comandi di Sessione
| screen -S name | Avvia nuova sessione con nome |
| screen -r name | Riattacca a sessione staccata |
| screen -x name | Attacca a sessione già attiva (condivisione) |
| screen -d name | Stacca sessione remota |
| screen -d -r name | Stacca altrove, riattacca qui |
| screen -D -RR | Forza stacco e riattacco (aggressivo) |
| screen -ls | Elenca tutte le sessioni con PID |
| screen -wipe | Pulisce le sessioni inattive |
Finestre
Basi delle Finestre
| Ctrl-a c | Crea nuova finestra |
| Ctrl-a n | Finestra successiva |
| Ctrl-a p | Finestra precedente |
| Ctrl-a 0-9 | Passa alla finestra per numero |
| Ctrl-a " | Elenca tutte le finestre (interattivo) |
| Ctrl-a ' | Passa alla finestra per nome/numero |
| Ctrl-a A | Rinomina la finestra corrente |
| Ctrl-a k | Chiude la finestra corrente |
Gestione delle Finestre
| Ctrl-a w | Mostra lista finestre nella barra di stato |
| Ctrl-a Ctrl-a | Alterna tra le ultime due finestre |
| Ctrl-a N | Mostra numero e nome della finestra |
| exit / Ctrl-d | Chiude finestra (esci dalla shell) |
Split e Regioni
Comandi di Split
| Ctrl-a S | Divide orizzontalmente (sopra/sotto) |
| Ctrl-a | | Divide verticalmente (sinistra/destra) |
| Ctrl-a Tab | Sposta il focus alla regione successiva |
| Ctrl-a X | Chiude la regione corrente |
| Ctrl-a Q | Chiude tutte le regioni tranne la corrente |
Flusso di Lavoro con le Regioni
Ctrl-a S # divide orizzontalmente
Ctrl-a Tab # sposta nella nuova regione
Ctrl-a c # crea finestra nella regione
Ctrl-a :resize 20 # imposta la regione a 20 righe
Modalità Copia
Scorrimento e Copia
| Ctrl-a [ | Entra in modalità copia/scorrimento |
| Space | Avvia/termina selezione (in modalità copia) |
| Enter | Copia la selezione ed esce dalla modalità copia |
| Ctrl-a ] | Incolla il testo copiato |
| h/j/k/l | Sposta il cursore (tasti vi in modalità copia) |
| Ctrl-u / Ctrl-d | Scorre su/giù di mezza pagina |
| / or ? | Cerca avanti/indietro |
| Esc | Esci dalla modalità copia |
Flusso di Lavoro per la Copia
Ctrl-a [ # entra in modalità copia
Space # segna l'inizio (naviga prima)
Space # segna la fine + copia (naviga prima)
Ctrl-a ] # incolla nella finestra corrente
Stacco e Riattacco
Stacco
| Ctrl-a d | Stacca la sessione corrente |
| Ctrl-a D D | Stacca e disconnetti |
| Ctrl-a z | Sospendi screen (come Ctrl-Z) |
| screen -d PID | Stacca remotamente sessione per PID |
Riattacco
screen -r # riattacca (se c'è solo una sessione)
screen -r work # riattacca per nome
screen -r 12345 # riattacca per PID
screen -d -r work # sottrai sessione da altro terminale
Flussi di Lavoro Persistenti
# Avvia task di lunga durata, stacca, riconnetti dopo
screen -S build
make -j4 all # avvia build
Ctrl-a d # stacca, vai a casa
screen -r build # riattacca dopo
Condivisione
Modalità Multi-Utente
# L'host abilita multiuser
Ctrl-a :multiuser on
Ctrl-a :acladd alice # concede accesso all'utente alice
# Alice si connette
screen -x hostuser/sessionname
Controllo degli Accessi
| :multiuser on | Abilita modalità multi-utente |
| :acladd user | Concede accesso completo all'utente |
| :aclchg user -w '#' | Rende l'utente di sola lettura (tutte le finestre) |
| :acldel user | Rimuove accesso utente |
| screen -x user/sess | Connetti a sessione condivisa |
Configurazione
Elementi Essenziali di ~/.screenrc
startup_message off # salta schermata di avvio
defscrollback 10000 # righe di buffer di scorrimento
hardstatus alwayslastline
hardstatus string '%{gk}%H %{wk}%?%-Lw%?%{bw}%n*%f %t%{wk}%?%+Lw%?'
shell -$SHELL # usa shell di login
Impostazioni Utili
| startup_message off | Sopprime il messaggio di avvio |
| defscrollback N | Imposta il buffer di scorrimento (default 100) |
| escape ^Bb | Cambia il tasto prefisso in Ctrl-b |
| shelltitle '$ |bash' | Imposta automaticamente i titoli delle finestre |
| caption always '%n %t' | Mostra sempre la caption con info finestra |
| autodetach on | Auto-stacca al hangup (default attivo) |
| vbell on | Usa campanello visivo invece di audio |
Pattern Comuni
Setup per lo Sviluppo
# Crea finestre automaticamente in .screenrc
screen -t editor 0 vim
screen -t server 1 python -m http.server
screen -t shell 2 bash
select 0 # parti dalla finestra editor
Logging e Monitoraggio
Ctrl-a H # attiva/disattiva log in screenlog.N
Ctrl-a M # monitora attività nella finestra
Ctrl-a _ # monitora silenzio nella finestra
Riferimento Rapido
| Ctrl-a ? | Mostra tutti i binding dei tasti |
| Ctrl-a :help | Aiuto integrato |
| Ctrl-a :source file | Carica file di configurazione |
| Ctrl-a :screen cmd | Esegui comando in nuova finestra |
| Ctrl-a :quit | Chiudi tutte le finestre ed esci dalla sessione |