Come Utilizzare tmux su Linux (e Perché È Meglio Di Schermo)
- Dave McKay
@TheGurkha
- 14 Maggio 2020, 8:00 am EDT
Linux tmux
comando è un terminal multiplexer, come screen
. I suoi sostenitori sono molti e vocali, quindi abbiamo deciso di confrontare i due. È tmux
davvero meglio, o è solo un caso di preferire ciò che sai?
tmux vs. screen
Entrambi i comandi tmux
e GNU screen
sono multiplexer di terminale. Essi consentono di avere più finestre all’interno di una singola finestra di terminale, e di saltare avanti e indietro tra di loro. Una finestra può essere divisa in riquadri, ognuno dei quali fornisce una riga di comando indipendente.
Puoi anche staccare una sessione e diventa un’entità senza testa in esecuzione in background—puoi persino chiudere la finestra del terminale che l’ha lanciata. Quando sei pronto, puoi aprire una nuova finestra del terminale e ricollegare la sessione ancora in esecuzione. È anche possibile farlo tramite una connessione SSH.
È possibile staccare una sessione su un computer, tornare a casa e accedere al computer remoto. Una volta ricollegato, è possibile ricollegare la sessione in background e utilizzarla nuovamente in modo interattivo.
Qual è il comando screen?
Il screen
comando è anche un multiplexer terminale, ed è ricco di opzioni. Per la verità su tutto ciò che si può fare con esso, controllare il nostro articolo approfondito.
Questa volta, ci concentreremo su tmux
. Mentre andiamo avanti, menzioneremo come screen
gestisce la stessa funzione o funzione.
Solo una cosa ci ha infastidito screen
. Lo copriremo quando ci arriveremo e vedremo se tmux
va meglio.
CORRELATI: Come Usare Linux il Comando a schermo
Installazione di tmux
Mentre screen
è generalmente installato di default su distribuzioni Linux, tmux
non è. Per installare tmux
su Ubuntu, digitare il seguente:
sudo apt-get install tmux
Su Manjaro è possibile utilizzare pacman
:
sudo pacman -Sy tmux
Su Fedora 31, tmux
è già installato.
Avvio di una sessione tmux
Per avviare tmux
, basta digitare e premere Invio:
tmux
La finestra terminale mostrerà una barra di stato quando sei in una sessione tmux
.
Il lato destro della barra di stato mostra il nome host e l’ora e la data. Il lato sinistro mostra le seguenti informazioni relative alla sessione:
- : Questo è il nome della sessione. Per impostazione predefinita, sono numerati, a partire da zero. Copriamo come si può dare nomi significativi alle sessioni di seguito.
- 0: bash*: Lo 0 indica che questa è la prima finestra di questa sessione. L’unico processo in esecuzione in questa sessione è
bash
. Se si esegue un programma, il suo nome apparirà qui. L’asterisco ( * ) significa che questa è la finestra che stai guardando. Ogni volta che si crea una nuova finestra in una sessionetmux
, il suo numero di finestra e il nome del programma in esecuzione vengono aggiunti alla barra di stato.
Il comando screen
non fornisce una barra di stato. Devi volare cieco e fare affidamento sul tuo ingegno per sapere cosa sta succedendo, il che richiede un po ‘ di pratica.
Sul lato positivo, non perderai una linea di immobili per finestre terminali. Naturalmente, normalmente espanderesti la finestra del terminale per rendere utile l’utilizzo di un multiplexer terminale. In tal caso, la perdita di una riga per la barra di stato non è molto di un problema. Abbiamo lasciato le immagini delle finestre del terminale qui alla dimensione predefinita in modo da poter vedere le informazioni.
I comandi sono dati a tmux
usando le sequenze di tasti, e ci sono due parti in questo. Per prima cosa, premi Ctrl+B per ottenere l’attenzione di tmux
. Quindi premere rapidamente il tasto successivo per inviare un comando atmux
. I comandi vengono dati premendo lettere, numeri, segni di punteggiatura o tasti freccia.
È lo stesso in screen
, tranne che premi Ctrl+A per attirare la sua attenzione.
Per chiudere la finestra, premere Ctrl + B, quindi premere rapidamente X. La barra di stato diventa ambra. Viene quindi richiesto di confermare che si desidera uccidere la finestra.
Premere Y per chiudere la finestra o N se si cambia idea. Non devi premere Invio in seguito; Y o N è sufficiente per registrare la tua scelta.
Se si preme Y, la finestra si chiude. Poiché questa è l’unica finestra di questa sessione, la sessione viene terminata.
La sessione tmux
viene chiusa e si ritorna alla riga di comando da cui si è avviato tmux
. Vedrai “” nella finestra del terminale.
Questo potrebbe sembrare che stia affermando l’ovvio, ma è una conferma che hai chiuso la sessione e non l’hai lasciata staccata e in esecuzione. Discuteremo le sessioni di distacco di seguito.
Avvio di una sessione tmux denominata
Se avvii regolarmente più sessioni tmux
, apprezzerai rapidamente la funzionalità di dare a ciascuna di esse un nome significativo. Puoi nominare anche le sessioni in screen
, ma non vengono visualizzate in nessuna parte delle finestre della sessione.
Per avviare tmux
con un nome di sessione, utilizzare il comando new
(nuova sessione) e l’opzione -s
(nome sessione). La nostra sessione si chiamerà “geek-1”, quindi digitiamo quanto segue:
tmux new -s geek-1
Quando viene caricata la sessione tmux
, “geek-1” viene visualizzato come prima voce nella barra di stato, all’estrema sinistra.
Aggiunta di più finestre
Per creare una nuova finestra nella sessione corrente, premere Ctrl+B, e poi C. Si otterrà una finestra di terminale vuota nella sessione corrente. Quindi avremo qualcosa in esecuzione in questa nuova finestra, iniziamo il comando dmesg
con l’opzione -w
(segui) :
dmesg -w
Ora abbiamo due finestre nella sessione; uno è in esecuzione top
, e l’altro dmesg
. Possiamo vedere solo uno alla volta, però (più su che in un momento).
Dai un’occhiata al lato sinistro della barra di stato. Siamo ancora nella sessione” geek-1 ” tmux
. Nella finestra zero, top è in esecuzione e nella finestra uno, dmesg
è in esecuzione. L’asterisco ( * ) dopo dmesg
ci dice quale finestra è visibile.
Per passare da una finestra all’altra, premere Ctrl + B, quindi uno dei seguenti tasti:
- N: Visualizza la finestra successiva.
- P: Visualizza la finestra precedente.
- da 0 a 9: visualizza una finestra numerata da 0 a 9.
È anche possibile scegliere una finestra da un elenco. Se si preme Ctrl + B e poi W, viene visualizzato un elenco di finestre.
Per spostare la barra di evidenziazione ambra, premere le frecce Su o Giù, Home o Fine. La sezione inferiore del display mostra un’anteprima del contenuto nella finestra evidenziata.
Premere Invio per passare alla finestra evidenziata o Esc per uscire dall’elenco delle finestre senza cambiare.
Disconnessione e collegamento di sessioni
Se si preme Ctrl+B e poi D, si scollega la sessione. Continuerà a funzionare in background, ma non sarà in grado di vedere o interagire con esso.
Abbiamo iniziato top
nella sessione, quindi abbiamo un processo in esecuzione con cui dimostrare. Quindi, premiamo Ctrl + B, quindi D. La sessione scompare e diventa una sessione in background.
Torniamo alla finestra del terminale originale. C’è un messaggio da tmux
che ci dice che la sessione è staccata. Ci ricorda anche il nome che abbiamo dato alla sessione. Questo è utile perché è quello che usiamo per collegare a una sessione in background, e quindi ripristinarlo a uno interattivo.
Per allegare una sessione distaccata, useremo il comando autoesplicativo attach-session
con l’opzione -t
(sessione di destinazione). Forniremo anche il nome della sessione che vogliamo richiamare.
Digitiamo quanto segue:
tmux attach-session -t geek-1
La nostra sessione ritorna e diventa di nuovo una sessione visibile e interattiva.
Qualsiasi processo di lunga durata o continuo avviato prima di scollegare la sessione verrà comunque eseguito in background (a meno che non sia terminato) quando si collega la sessione.
screen
può farlo, ma non in modo intuitivo.
Gestione di più sessioni
Apriamo un’altra finestra del terminale e iniziamo una nuova sessione tmux
chiamata “geek-2”:
tmux new -s geek-2
In quella sessione, inizieremo dmesg
:
dmesg -w
Ora, abbiamo il nostro originale “geek-1” tmux
sessione, e uno nuovo chiamato ” geek-2.”
La barra di stato ci mostra questa sessione si chiama “geek-2”, e ha una finestra che esegue dmesg
.
Se premiamo Ctrl + B e poi D, stacciamo quella sessione.
Torna nella sessione “geek-1” tmux
, premiamo Ctrl+B e poi S per visualizzare un elenco di sessioni tmux
.
Per essere chiari, questo è un elenco di sessioni. Il display simile che abbiamo visto in precedenza era un elenco di finestre in una singola sessione.
È possibile spostare la barra di evidenziazione ambra premendo le frecce Su e Giù, Home e End. La sezione inferiore visualizza un’anteprima del contenuto nella sessione evidenziata.
Se si preme la freccia destra, vengono visualizzate le finestre per la sessione evidenziata.
Premere Invio per passare alla sessione o finestra evidenziata o Esc per uscire dall’elenco delle sessioni senza modificare le sessioni. Se si seleziona una nuova sessione, quella corrente si stacca e quella selezionata viene allegata.
Abbiamo staccato la sessione “geek-2” prima di farlo. Tuttavia, è possibile farlo con sessioni che sono ancora collegate alle finestre del terminale originale. Quando lo fai, tutte le modifiche allo schermo appariranno simultaneamente in entrambe le sessioni tmux
.
Il comando screen
può fare anche questo, tramite un insieme simile di comandi.
Lavorare con i riquadri delle finestre
Se si preme Ctrl+B, quindi si raddoppiano le virgolette (“”), si divide la finestra orizzontalmente in due riquadri.
Ciò riguarda solo la finestra corrente; gli altri nella sessione non verranno modificati. Abbiamo usato il comando tmux ls
nel riquadro in alto per elencare le finestre in questa sessione. Ce ne sono due, e la riga di stato ci dice che siamo nella finestra uno. Se saltiamo verso la finestra zero premendo Ctrl+B, e poi 0 (zero), vediamo che è proprio come l’abbiamo lasciato.
Si tratta di due linee di comando indipendenti, non di due viste in una finestra; sono shell distinte e separate. Possiamo mostrarlo eseguendo un comando diverso in ogni riquadro.
Digitiamo quanto segue:
uname -a
ls -hl
Per passare da un riquadro all’altro, premere Ctrl+B, quindi la freccia Su, Giù, Sinistra o Destra.
Se si preme Ctrl + B e quindi il segno percentuale (%)
divide verticalmente il riquadro corrente.
Premi Ctrl + B, quindi Q per far lampeggiare brevemente il numero di ciascun riquadro.
Questi numeri vengono utilizzati nei prompt e nei messaggi di tmux
. Premere Ctrl + B, quindi X per chiudere il riquadro corrente. La barra di stato cambia in ambra e viene richiesto di confermare di voler chiudere il numero del riquadro. Premere Y per rimuovere il riquadro o N per lasciare le cose come sono.
Se si preme Y, il riquadro viene rimosso.
Il comando screen
ha anche riquadri, ma, ancora una volta, sono meno intuitivi da usare. La cosa che ci infastidisce di screen
è se si stacca una sessione con i riquadri, scompaiono quando si riattacca quella sessione. Questo invecchia molto rapidamente.
Un Cheat Sheet Ctrl+B
Abbiamo incluso un cheat sheet dei diversi comandi che puoi usare in tmux
di seguito.
Comandi di sessione
- S: Elenca le sessioni.
- $: Rinomina la sessione corrente.
- D: Staccare la sessione corrente.
- Ctrl + B, e poi ?: Visualizza la pagina di aiuto in
tmux
.
Comandi finestra
- C: Crea una nuova finestra.
- ,: Rinominare la finestra corrente.
- W: Elenca le finestre.
- N: Passare alla finestra successiva.
- P: Passare alla finestra precedente.
- da 0 a 9: passare al numero della finestra specificato.
Comandi Riquadro
- %: Crea una divisione orizzontale.
- “: Crea una divisione verticale.
- H o Freccia sinistra: passare al riquadro a sinistra.
- I o Freccia destra: passare al riquadro a destra.
- J o Freccia giù: passare al riquadro sottostante.
- K o Freccia su: passare al riquadro sopra.
- D: Mostra brevemente i numeri del riquadro.
- O: Passare attraverso i riquadri in ordine. Ogni stampa ti porta alla successiva, fino a quando non li attraversi tutti.
- }: scambia la posizione del riquadro corrente con quella successiva.
- {: Scambia la posizione del riquadro corrente con quella precedente.
- X: Chiudere il riquadro corrente.
Come confrontano
In termini di funzionalità, screen
e tmux
eseguono entrambi allo stesso modo e offrono le stesse caratteristiche principali. È il modo in cui accedi a quelle funzionalità che è marcatamente diverso. tmux
offre slicker, modi più comodi per raggiungere le varie funzioni. Tuttavia, questa non è l’unica differenza.
La possibilità di rinominare sessioni e finestre in tmux
è pulito, e il fatto che mantiene i riquadri quando si riattacca una sessione è un punto di svolta.
screen
, d’altra parte, perde completamente riquadri quando si stacca e riattaccare una sessione. Questo è quasi abbastanza fastidioso da farti evitare di staccare in primo luogo.
C’è molto di più in tmux
, incluse le sue capacità di scripting incredibilmente flessibili. Lo devi a te stesso per controllare.
Dave McKay ha usato per la prima volta i computer quando il nastro di carta punzonato era in voga e da allora ha programmato. Dopo oltre 30 anni nel settore IT, ora è un giornalista tecnologico a tempo pieno. Durante la sua carriera, ha lavorato come programmatore freelance, manager di un team internazionale di sviluppo software, project manager di servizi IT e, più recentemente, come responsabile della protezione dei dati. Dave è un evangelista di Linux e fautore dell’open source.Leggi la biografia completa “