Document-page-setup.png Attenzione: questo articolo è ancora incompleto e in fase di scrittura da parte del suo autore.

Sentitevi liberi di contribuire, proponendo modifiche alla guida tramite l'apposita pagina di discussione, in modo da non interferire con il lavoro portato avanti sulla voce. Per altre informazioni si rimanda al template.


Introduzione

GNU/Screen è un multiplatore di terminale che esegue tanti "schermi" separati su un unico terminale, per questa ragione è paragonabile all'uso delle aree di lavoro (workspace) di un ambiente grafico e quindi possiamo considerarlo in un certo qual modo un Window Manager per applicazioni testuali e ncurses.


Installazione

Come sempre Debian rende tutto molto semplice:

# aptitude install screen

In un emulatore di terminale o in una tty lo avviamo quindi con:

$ screen


Configurazione

Superato il noioso messaggio di benvenuto (che rimuoveremo più avanti) ci si ritrova al solito prompt e nulla sembra cambiato, purtroppo il non mostrare da subito una barra di stato è una delle pecche di screen e la sua stessa configurazione è piuttosto ostica.

È importante ricordare che screen è studiato per rimanere in funzione in background (non è il termine esatto ma credo renda l'idea) per cui impariamo subito i comandi di base. Qualsivoglia sia la ragione si potrebbe avere la tentazione di chiudere il terminale, aprirne un altro e avviare nuovamente screen; questo significa aprire una nuova sessione ma lasciare attiva la precedente, oltre che errato come concetto si rischia di ritrovarsi con un certo numero di sessioni abbandonate :)

screen usa un attivatore per tutte le altre funzioni, ovvero una prima sequenza di tasti che attendono una seconda, questo attivatore è di default Ctrl-a, per cui dire Ctrl-a : significa premere appunto Ctrl-a, rilasciare e quindi premere i due punti.

Innanzitutto rendiamoci la vita facile con la fantomatica statusbar, all'interno di screen digitate:

Ctrl-a :

Il cursore si sposterà al fondo dove appariranno i due punti, questo è il prompt dei comandi, per intenderci è simile alla modalità comando di Vim; da qui possiamo impartire vari comandi che al momento non abbiamo nel file di configurazione o, in altri casi, che vogliamo solo per la sessione in corso.

A questo punto, subito dopo i due punti, scriviamo:

hardstatus alwayslastline

e premiamo Invio.
Ora abbiamo una barra di stato, configuriamola in modo da avere un riscontro visivo delle finestre, questa volta dal prompt bash digitiamo:

screen -X hardstatus string "$(man screen | grep %-L)"

Invece del prompt di screen abbiamo usato la riga di comando, sia per mostrarvi un'altra caratteristica che per la sua versatilità; questi due sistemi non sempre sono uno l'alternativa dell'altro, l'opzione -X è particolarmente usata in script o per inviare comandi più complessi, è inoltre utilizzabile dall'esterno della sessione per inviare comandi remoti.

Abbiamo perciò inviato alla sessione il comando "hardstatus string" che richiede un argomento, e per comodità questo argomento è stato pescato direttamente dalla manpage, la stringa si presenta così:

%-Lw%{= BW}%50>%n%f* %t%{-}%+Lw%<

Come accennato in apertura, la sintassi è complessa e la affronteremo più avanti.

Ed ecco che la nostra statusbar, non particolarmente bella ma utile, si presenta come 0-$ bash, un rettangolino bianco su campo blu, mentre per il colore dell'intera barra viene usato il reverse (il contrario del colore di background usato dal terminale). La numerazione delle finestre parte da zero, ok è strano e con poco senso ma tant'è, ora apriamo un'altra finestra con un'altra istanza di bash:

Ctrl-a c

Ctrl-a è l'attivatore e c la scorciatoia per il comando screen, perché all'interno della sessione screen apre una finestra, che di default prende il nome dalla variabile d'ambiente SHELL.
Ora abbiamo due voci nella barra, la porzione blu indica la finestra attualmente in focus ed anche il suo aspetto "testuale" è diverso:

0$ bash  1-$* bash

Per passare da una finestra all'altra ci sono diversi metodi:

  • finestra specificata da [numero]: Ctrl-a [numero]
  • finestra successiva: Ctrl-a n (oppure Ctrl-a space)
  • finestra precedente: Ctrl-a p (oppure Ctrl-a backspace)
  • finestra visualizzata in precedenza: Ctrl-a Ctrl-a
  • lista selezionabile di finestre: Ctrl-a "





skizzhg ven 14 ott 2011, 19.34.46, CEST