Come usare tmux su Linux (e perché è meglio dello schermo)
Pubblicato: 2022-01-29 Il comando Linux tmux
è un multiplexer di terminale, come screen
. I suoi sostenitori sono molti e vocali, quindi abbiamo deciso di confrontare i due. tmux
è davvero migliore o si tratta solo di preferire ciò che conosci?
tmux contro schermo
Entrambi i comandi screen
tmux
e GNU sono multiplexer di terminali. Ti consentono di avere più finestre all'interno di una singola finestra di terminale e di saltare avanti e indietro tra di esse. Una finestra può essere suddivisa in riquadri, ognuno dei quali fornisce una riga di comando indipendente.
Puoi anche scollegare una sessione e diventa un'entità senza testa in esecuzione in background, puoi persino chiudere la finestra del terminale che l'ha avviata. Quando sei pronto, puoi aprire una nuova finestra del terminale e ricollegare la sessione ancora in esecuzione. Puoi anche farlo tramite una connessione SSH.
Puoi scollegare una sessione su un computer, tornare a casa e accedere al computer remoto. Una volta ricollegato, è possibile ricollegare la sessione in background e riutilizzarla in modo interattivo.
Qual è il comando dello schermo?
Il comando screen
è anche un multiplexer di terminale ed è ricco di opzioni. Per informazioni dettagliate su tutto ciò che puoi fare con esso, dai un'occhiata al nostro articolo di approfondimento.
Questa volta, ci concentreremo su tmux
. Man mano che procediamo, menzioneremo come lo screen
gestisce la stessa caratteristica o funzione.
Solo una cosa ci ha infastidito screen
. Lo tratteremo quando ci arriveremo e vedremo se tmux
se la cava meglio.
CORRELATI: Come utilizzare il comando dello schermo di Linux
Installazione di tmux
Mentre screen
è generalmente installato per impostazione predefinita sulle distribuzioni Linux più diffuse, tmux
non lo è. Per installare tmux
su Ubuntu, digita quanto segue:
sudo apt-get install tmux
Su Manjaro puoi usare pacman
:
sudo pacman -Sy tmux
Su Fedora 31, tmux
è già installato.
Avvio di una sessione tmux
Per avviare tmux
, digitalo e premi Invio:
tmux
La finestra del terminale mostrerà una barra di stato quando sei in una sessione tmux
.
Il lato destro della barra di stato mostra il nome host, l'ora e la data. Il lato sinistro mostra le seguenti informazioni relative alla sessione:
- [0]: questo è il nome della sessione. Per impostazione predefinita, sono numerati, a partire da zero. Di seguito spieghiamo come assegnare nomi significativi alle sessioni.
- 0:bash*: Lo 0 indica che questa è la prima finestra in questa sessione. L'unico processo in esecuzione in questa sessione è
bash
. Se esegui un programma, il suo nome apparirà qui. L'asterisco (*) significa che questa è la finestra che stai guardando. Ogni volta che crei una nuova finestra in una sessionetmux
, il suo numero di finestra e il nome del programma in esecuzione in essa vengono aggiunti alla barra di stato.
Il comando screen
non fornisce una barra di stato per impostazione predefinita. Devi volare alla cieca e fare affidamento sul tuo ingegno per sapere cosa sta succedendo, il che richiede un po' di pratica. (A meno che tu non configuri la tua barra di stato.)
Tra i lati positivi, non perderai una linea di proprietà immobiliari della finestra del terminal. Ovviamente, normalmente espanderesti la finestra del tuo terminale per rendere utile l'utilizzo di un multiplexer di terminale. In tal caso, la perdita di una riga per la barra di stato non è un grosso problema. Abbiamo lasciato le immagini delle finestre del terminale qui alla dimensione predefinita in modo da poter vedere le informazioni.
I comandi vengono dati a tmux
usando le sequenze di tasti e ci sono due parti in questo. Per prima cosa, premi Ctrl+B per attirare l'attenzione di tmux
. Quindi premi rapidamente il tasto successivo per inviare un comando a tmux
. I comandi vengono impartiti premendo lettere, numeri, segni di punteggiatura o tasti freccia.
È lo stesso in screen
, tranne per il fatto che premi Ctrl+A per attirare la sua attenzione.
Per chiudere la finestra, premi Ctrl+B, quindi premi rapidamente X. La barra di stato diventa color ambra. Ti viene quindi chiesto di confermare che desideri uccidere la finestra.
Premi Y per chiudere la finestra o N se cambi idea. Non è necessario premere Invio in seguito; Y o N è sufficiente per registrare la tua scelta.
Se premi Y, la finestra si chiude. Poiché questa è l'unica finestra in questa sessione, la sessione viene terminata.
La sessione tmux
viene chiusa e si torna alla riga di comando da cui è stato avviato tmux
. Vedrai "[exited]" nella finestra del terminale.
Potrebbe sembrare che stia affermando l'ovvio, ma è una conferma che hai chiuso la sessione e non l'hai lasciata staccata e funzionante. Discuteremo le sessioni di distacco di seguito.
Avvio di una sessione tmux denominata
Se avvii regolarmente più sessioni di tmux
, apprezzerai rapidamente la funzionalità di assegnare a ciascuna di esse un nome significativo. Puoi anche nominare le sessioni in screen
, ma non vengono visualizzate da nessuna parte nelle finestre delle sessioni.
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 la sessione di tmux
viene caricata, "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, premi Ctrl+B, quindi C. Otterrai una finestra terminale vuota nella sessione corrente. Quindi avremo qualcosa in esecuzione in questa nuova finestra, avviamo il comando dmesg
con l' -w
(segui):
dmesg -w
Ora abbiamo due finestre nella sessione; uno è in esecuzione in top
e l'altro dmesg
. Tuttavia, possiamo vederne solo uno alla volta (ne parleremo tra poco).
Dai un'occhiata al lato sinistro della barra di stato. Siamo ancora nella sessione tmux
"geek-1". 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, premi 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.
Puoi anche scegliere una finestra da un elenco. Se premi Ctrl+B e poi W, viene visualizzato un elenco di finestre.
Per spostare la barra di evidenziazione color ambra, premi le frecce su o giù, Home o Fine. La sezione inferiore del display mostra un'anteprima del contenuto nella finestra evidenziata.
Premi Invio per passare alla finestra evidenziata o Esc per uscire dall'elenco delle finestre senza cambiare.
Staccare e allegare sessioni
Se premi Ctrl+B e poi D, disconnetterai la sessione. Continuerà a essere eseguito in background, ma non sarai in grado di vederlo o interagire con esso.
Abbiamo iniziato in top
alla 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é è ciò che usiamo per collegarci a una sessione in background e quindi ripristinarla in una sessione interattiva.
Per allegare una sessione separata, useremo il comando autoesplicativo attach-session
con l'opzione -t
(sessione di destinazione). Forniremo anche il nome della sessione che desideriamo richiamare.
Digitiamo quanto segue:
tmux attach-session -t geek-1
La nostra sessione ritorna e diventa di nuovo una sessione visibile e interattiva.
Tutti i processi di lunga durata o continui che hai avviato prima di scollegare la sessione saranno ancora in esecuzione in background (a meno che non siano stati completati) quando alleghi la sessione.
screen
può farlo, ma non in modo così intuitivo.
Gestione di sessioni multiple
Apriamo un'altra finestra di terminale e avviamo una nuova sessione di tmux
chiamata "geek-2":
tmux new -s geek-2
In quella sessione, inizieremo dmesg
:
dmesg -w
Ora abbiamo la nostra sessione tmux
"geek-1" originale e una nuova chiamata "geek-2".
La barra di stato ci mostra che questa sessione si chiama "geek-2" e ha una finestra che esegue dmesg
.
Se premiamo Ctrl+B e poi D, disconnettiamo quella sessione.
Tornando alla sessione tmux
"geek-1", premiamo Ctrl+B, quindi S per visualizzare un elenco di sessioni tmux
.
Per essere chiari, questo è un elenco di sessioni. La visualizzazione simile che abbiamo visto in precedenza era un elenco di finestre in una singola sessione.
Puoi spostare la barra di evidenziazione color ambra premendo le frecce su e giù, Home e Fine. La sezione inferiore mostra un'anteprima del contenuto nella sessione evidenziata.
Se si preme la freccia destra, vengono visualizzate le finestre della sessione evidenziata.
Premere Invio per passare alla sessione o alla finestra evidenziata o Esc per uscire dall'elenco delle sessioni senza modificare le sessioni. Se selezioni una nuova sessione, quella corrente si stacca e quella che hai selezionato viene allegata.
Abbiamo staccato la sessione "geek-2" prima di farlo. Tuttavia, puoi farlo con sessioni che sono ancora collegate alle loro finestre di terminale originali. Quando lo fai, qualsiasi modifica dello schermo apparirà contemporaneamente in entrambe le sessioni di tmux
.
Anche il comando screen
può farlo tramite un insieme simile di comandi.
Lavorare con i riquadri delle finestre
Se premi Ctrl+B, quindi virgolette doppie (""), dividi la finestra orizzontalmente in due riquadri.
Questo ha effetto solo sulla finestra corrente; gli altri nella sessione non verranno modificati. Abbiamo usato il comando tmux ls
nel riquadro superiore 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 alla finestra zero premendo Ctrl+B e poi 0 (zero), vediamo che è proprio come l'abbiamo lasciato.
Queste sono due righe di comando indipendenti, non due viste in una finestra; sono gusci distinti e separati. 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 premi Ctrl+B e poi il segno di percentuale ( %)
divide il riquadro corrente verticalmente.
Premere Ctrl+B, quindi Q per fare in modo che tmux
lampeggi brevemente il numero di ciascun riquadro.
Questi numeri vengono utilizzati nei prompt e nei messaggi di tmux
. Premi Ctrl+B, quindi X per chiudere il riquadro corrente. La barra di stato diventa gialla e ti viene chiesto di confermare che vuoi chiudere quel numero di riquadro. Premi 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 screen
è che se scolleghi una sessione con i riquadri, scompaiono quando ricolleghi 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: scollega la sessione corrente.
- Ctrl+B, e poi ?: Visualizza la pagina della Guida in
tmux
.
Comandi finestra
- C: Crea una nuova finestra.
- ,: Rinomina la finestra corrente.
- W: Elenca le finestre.
- N: Passa alla finestra successiva.
- P: Passa alla finestra precedente.
- Da 0 a 9: passa al numero di finestra specificato.
Comandi del riquadro
- %: crea una divisione orizzontale.
- “: crea una divisione verticale.
- H o Freccia sinistra: spostati nel riquadro a sinistra.
- I o Freccia destra: spostati nel riquadro a destra.
- J o Freccia giù: passa al riquadro sottostante.
- K o Freccia su: passa al riquadro sopra.
- D : Mostra brevemente i numeri dei riquadri.
- O: scorrere i riquadri in ordine. Ogni pressione ti porta a quella successiva, finché non le fai scorrere tutte.
- }: scambia la posizione del riquadro corrente con il successivo.
- {: scambia la posizione del riquadro corrente con il precedente.
- X: chiude il riquadro corrente.
Come si confrontano
In termini di funzionalità, screen
e tmux
comportano in modo simile e offrono le stesse caratteristiche principali. È il modo in cui accedi a quelle funzionalità che è notevolmente diverso. tmux
offre modi più semplici e comodi per accedere alle varie funzioni. Tuttavia, questa non è l'unica differenza.
La possibilità di rinominare sessioni e finestre in tmux
è ordinata e il fatto che mantenga i riquadri quando si ricollega una sessione è un punto di svolta.
screen
, invece, perde completamente i riquadri quando si scollega e si ricollega una sessione. Questo è quasi abbastanza fastidioso da farti evitare di staccarti in primo luogo.
C'è molto di più in tmux
, comprese le sue capacità di scripting incredibilmente flessibili. Lo devi a te stesso per verificarlo.
Comandi Linux | ||
File | tar · pv · cat · tac · chmod · grep · diff · sed · ar · man · pushd · popd · fsck · testdisk · seq · fd · pandoc · cd · $PATH · awk · join · jq · fold · uniq · journalctl · tail · stat · ls · fstab · echo · less · chgrp · chown · rev · look · strings · type · rename · zip · unzip · mount · umount · install · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · patch · converti · rclone · shred · srm | |
Processi | alias · screen · top · nice · renice · progress · strace · systemd · tmux · chsh · history · at · batch · free · which · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · timeout · wall · yes · kill · sleep · sudo · su · time · groupadd · usermod · groups · lshw · shutdown · reboot · halt · poweroff · passwd · lscpu · crontab · date · bg · fg | |
Rete | netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · dig · finger · nmap · ftp · curl · wget · who · whoami · w · iptables · ssh-keygen · ufw |
CORRELATI: I migliori laptop Linux per sviluppatori e appassionati