# Multiplexer 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`. Un elenco dei comandi principali: - `CTRL + a + w`: mostra i nomi delle finestre. Il conteggio parte da 0 - `CTRL + a + c`: crea una nuova finestra (il simbolo `*` indica la finestra corrente) - `CTRL + a + "`: mostra una lista a elenco: delle finestre ```bash 0-$ bash 1*$ bash ``` - `CTRL + a + A`: rinominare la finestra corrente - `screen -t anotherwindow`: crea una finestra con un nome stabilito - `CTRL + a + n`: spostarsi alla finestra successiva - `CTRL + a + p`: precedente - `CTRL + a + number`: alla finestra *number* - `CTRL + a + k`: chiude la finestra attualmente in uso - `CTRL + a + S`: divide il terminale in due regioni orizzontali - `CTRL + a + |`: verticalmente - `CTRL + a + Tab`: muoversi tra le regioni - `CTRL + a + Q`: termina tutte le regioni - `CTRL + a + X`: termina la regione corrente - `CTRL + a + D`: distacco dalla sessione - `CTRL + a + :`: per entrare nella modalita' di comando - `quit` Alcune opzioni di screen: - `screen -ls`: mostra un elenco di tutte le sessioni - `screen -S new-session`: creare una nuova sessione con nome *new-session* - `screen -R SESSION-PID` o `screen -R SESSION-NAME`: collegarsi alla medesima sessione - `screen -t SESSION-NAME COMMAND`: crea una sessione SESSION-NAME, nella quale sara' eseguito il comando COMMAND. Ad esempio: `screen -t top top` - `screen -X -S SESSION_NAME quit`: chiude la sessione ### Copia e incolla: scrollback-mode - `CTRL + a + [`: accedere alla scrollback-mode - Spostarsi all'inizio del testo da copiare coi tasti freccia - Premere `Space`, per segnale l'inizio della selezione del testo - Spostarsi coi tasti freccia fino al termine del testo da copiare - Premere `Space`, per segnale il termine della selezione del testo - `CTRL + a + ]`: permette di incollare il testo ## tmux - 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 - `CTRL + b + &`: per chiudere una finestra - `CTRL + b + $`: rinominare una sessione - `CTRL + b + ,`: rinominare una finestra - `CTRL + b + n`: per passare alla finestra successiva - `CTRL + b + p`: precedente - `CTRL + b + s` o `tmux ls`: elencare le varie sessioni - `tmux kill-session -t SESSION_NAME`: terminare la sessione SESSION_NAME - `tmux attach -t SESSION_NAME`: collegarsi alla sessione SESSION_NAME - `CTRL + b + d`: detach dalla sessione - `CTRL + b + :`: per entrare nella modalita' di comando - `split-window` - `kill-window` ### Riquadri 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 I suoi file di conf si trovano in `/etc/tmux.conf` o `~/.tmux.conf`****