# Screen

Screen è un comando molto utile che dà la possibilità di utilizzare più sessioni di shell:

- non è necessario aprire esplicitamente diverse sessioni per eseguire più operazioni in parallelo;

- aiuta anche a continuare il processo anche se la connessione alla sessione si interrompe. Normalmente quando si esegue un comando se la connessione alla shell si interrompe,
come quando si chiude la finestra, la sessione e tutti i comandi eseguiti dal terminale si interrompono. Screen serve proprio per evitare l'interruzione dei comandi.

## Installazione

```bash
sudo apt install screen
```

## Utilizzo

Avviare una nuova sessione digitando il comando:

```bash
screen
```

Avviare adesso il comando o lo script che si desidera utilizzare:

```bash
./my_script.sh
wget -c https://ftpmirror.gnu.org/gnu/guix/guix-system-install-1.4.0.x86_64-linux.iso
```

Dopo averlo avviato è possibile uscire dalla sessione senza fermare processo. Digitare:

```bash
[CTRL + a]+ d
```

Controllare le sessioni attive tramite il comando:

```bash
screen -ls
```

Ecco un esempio:

```bash
345.tt-3.host (Detached)
567.tty-1.host (Detached)
877.host (Detached)
```

Se si desidera riaprire una sessione specifica, digitare il numero che precede il nome della sessione:

```bash
screen -r 567
```

Nal caso si desiderasse assegnare un nome specifico ad una sessione utilizzare il flag -S:

```bash
screen -S guix
```

Quindi una volta usciti dalla sessione è possibile utilizzare il nome scelto in precedenza per riaprirla:

```bash
screen -r guix
```

## Altri comandi utili

| Shortcut | Funzione |
|----------|----------|
[ ctrl + a ] + d | Uscrire dalla sessione
[ ctrl + a ] + k | kill screen
[ ctrl + a ] + n | prossima sessione
[ ctrl + a ] + p | sessione precedente
[ ctrl + a ] + A | rinominare la sessione
[ ctrl + a ] + ? | tutte le scorciatoie

## Collegamenti

- [https://noviello.it/come-utilizzare-il-comando-screen-per-le-sessioni-su-linux/](https://noviello.it/come-utilizzare-il-comando-screen-per-le-sessioni-su-linux/)
- [https://linuxhandbook.com/screen-command/](https://linuxhandbook.com/screen-command/)
- [https://linuxize.com/post/how-to-use-linux-screen/](https://linuxize.com/post/how-to-use-linux-screen/)
