Un multiplexer, o *mux*, e' un dispositivo che consente ci collegare piu' ingressi a una singola uscita. Un multiplexer da terminale permette di passare tra diversi ingressi o sessioni. Due esempi sono `screen` e `tmux`.
Le sessioni possono essere scollegate dal terminale corrente, coi programmi che continuano ad essere eseguiti in background.
## screen
Invocato semplicemente digitando `screen` sul terminale. Il file di configurazione e' `~/.screenrc`
Ogni comando e' preceduto dalla combinazione `CTRL + a`.
- Implementa un modello client-server: il server fornisce una serie di sessioni, ciascuna delle quali puo' avere un numero di finestre ad esse collegate, che possono a loro volta essere condivise tra diversi client
- Progetto piu' recente
- Consente di gestire più sessioni contemporaneamente
- tmux ha un sistema di plugin più avanzato, con possibilità di estendere le funzionalità del programma
Puo' essere invocato digitando `tmux`:
```bash
[0] 0:bash* "pc" 21:36 10-dic-24
```
La barra di stato fornisce le seguenti informazioni:
- data e ora
- Nome della sessione: `[0]`
- Numero della finestra: `0`
- Window name: `bash*`. Nome di default del programma, che tmux aggiorna in modo da riflettere il programma in esecuzione. L'asterisco indica la finestra corrente
Un elenco dei comandi principali:
-`tmux new -s "NAME_SESSION" -n "WINDOW_NAME"`: assegnare un nome alla sessione e alla finestra
-`CTRL + b`: prefisso dei comandi
-`CTRL + b + c`: per creare una nuova finestra
-`CTRL + b + w`: per visualizzare tutte le finestre
tmux permette di suddividere la finestra in *riquadri*. Si tratta di pseudo-terminali: terminare un riquadro terminera' anche il suo pseudo terminale e tutti i programmi ad esso associati.
-`CTRL + b + "`: per dividere la finestra orizzontalmente
-`CTRL + b + %`: per dividere la finestra verticalmente
-`CTRL + b + x`: per eliminare il riquadro corrente