tmux — Guida ai fondamentali
tmux è un terminal multiplexer: permette di gestire più sessioni, finestre e pannelli in un unico terminale, e di lasciare processi in esecuzione anche dopo aver chiuso la connessione SSH.
Concetti fondamentali
Server tmux
└── Sessione (session)
└── Finestra (window) ← come tab nel browser
└── Pannello (pane) ← split della finestra
- Sessione — contesto di lavoro indipendente; sopravvive alla disconnessione
- Finestra — occupa l'intera area del terminale; una sessione ne può avere molte
- Pannello — suddivisione di una finestra in più aree affiancate
- Prefix — combinazione di tasti che attiva i comandi tmux (default:
Ctrl+b)
Ogni comando tmux si attiva premendo prima il prefix (Ctrl+b), poi il tasto dell'azione.
Installazione
# Fedora / RHEL
sudo dnf install tmux
# Debian / Ubuntu
sudo apt install tmux
# macOS (Homebrew)
brew install tmux
# verifica versione
tmux -V
Sessioni
Le sessioni sono il cuore di tmux: permettono di lasciare lavoro in esecuzione in background e riprenderlo in qualsiasi momento.
tmux # nuova sessione senza nome
tmux new -s lavoro # nuova sessione con nome
tmux ls # elenca sessioni attive
tmux attach -t lavoro # riprendi sessione per nome
tmux attach # riprendi l'ultima sessione
tmux kill-session -t lavoro # termina sessione
tmux kill-server # termina tutte le sessioni
Dentro tmux, con il prefix:
| Tasto | Azione |
|---|---|
Ctrl+b d |
detach — lascia la sessione attiva in background |
Ctrl+b $ |
rinomina la sessione corrente |
Ctrl+b s |
elenco interattivo delle sessioni |
Ctrl+b ( |
passa alla sessione precedente |
Ctrl+b ) |
passa alla sessione successiva |
Finestre
Le finestre funzionano come tab: ogni finestra è uno spazio di lavoro separato dentro la stessa sessione.
| Tasto | Azione |
|---|---|
Ctrl+b c |
crea nuova finestra |
Ctrl+b , |
rinomina la finestra corrente |
Ctrl+b w |
elenco interattivo delle finestre |
Ctrl+b n |
prossima finestra |
Ctrl+b p |
finestra precedente |
Ctrl+b 0–9 |
vai alla finestra per numero |
Ctrl+b & |
chiudi finestra corrente (chiede conferma) |
Ctrl+b f |
cerca finestra per nome |
Pannelli (split)
I pannelli dividono una finestra in più terminali visibili contemporaneamente.
| Tasto | Azione |
|---|---|
Ctrl+b % |
split verticale (affiancati) |
Ctrl+b " |
split orizzontale (uno sopra l'altro) |
Ctrl+b freccia |
sposta focus al pannello nella direzione |
Ctrl+b o |
cicla tra i pannelli |
Ctrl+b q |
mostra i numeri dei pannelli |
Ctrl+b q 0–9 |
vai al pannello per numero |
Ctrl+b z |
zoom — ingrandisci/riduci il pannello corrente |
Ctrl+b { |
sposta pannello a sinistra |
Ctrl+b } |
sposta pannello a destra |
Ctrl+b Spazio |
cicla tra i layout predefiniti |
Ctrl+b x |
chiudi pannello corrente (chiede conferma) |
Ridimensionare i pannelli:
Ctrl+b :resize-pane -D 5 # espandi verso il basso di 5 righe
Ctrl+b :resize-pane -U 5 # su
Ctrl+b :resize-pane -L 10 # sinistra
Ctrl+b :resize-pane -R 10 # destra
Oppure tieni premuto Ctrl+b e usa le frecce (in alcune configurazioni).
Modalità copia (copy mode)
Permette di scorrere il buffer, selezionare e copiare testo senza mouse.
| Tasto | Azione |
|---|---|
Ctrl+b [ |
entra in copy mode |
q o Esc |
esci dalla copy mode |
frecce / PgUp PgDn |
scorri il buffer |
Ctrl+s |
cerca testo (forward) |
Ctrl+r |
cerca testo (backward) |
In copy mode con tasti vi (se configurato):
v # inizia selezione
y # copia selezione
/ # cerca
n / N # prossimo / precedente risultato
| Tasto | Azione |
|---|---|
Ctrl+b ] |
incolla il testo copiato |
Configurazione — ~/.tmux.conf
Il file di configurazione viene caricato all'avvio. Ricaricalo senza riavviare con:
tmux source-file ~/.tmux.conf
# oppure dall'interno di tmux:
Ctrl+b :source-file ~/.tmux.conf
Configurazione consigliata per iniziare:
# cambia prefix da Ctrl+b a Ctrl+a (stile screen)
unbind C-b
set-option -g prefix C-a
bind-key C-a send-prefix
# ricarica config con prefix + r
bind r source-file ~/.tmux.conf \; display "Config ricaricata."
# numerazione finestre da 1 invece di 0
set -g base-index 1
setw -g pane-base-index 1
# split con tasti più intuitivi
bind | split-window -h -c "#{pane_current_path}"
bind - split-window -v -c "#{pane_current_path}"
unbind '"'
unbind %
# navigazione pannelli con Alt+freccia (senza prefix)
bind -n M-Left select-pane -L
bind -n M-Right select-pane -R
bind -n M-Up select-pane -U
bind -n M-Down select-pane -D
# mouse abilitato
set -g mouse on
# storia del buffer più lunga
set -g history-limit 10000
# colori 256
set -g default-terminal "screen-256color"
# barra di stato minimale
set -g status-bg colour235
set -g status-fg colour136
set -g status-left "[#S] "
set -g status-right "%H:%M %d-%b"
Comandi dalla riga di comando
Puoi eseguire comandi tmux direttamente dalla shell (utile negli script):
tmux new-session -d -s analisi # crea sessione in background
tmux send-keys -t analisi "python script.py" Enter # invia comando
tmux split-window -t analisi -h # split nella sessione
tmux select-layout -t analisi tiled # applica layout
tmux kill-session -t analisi
Plugin — TPM (Tmux Plugin Manager)
# installa TPM
git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm
Aggiungi in fondo a ~/.tmux.conf:
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-sensible'
set -g @plugin 'tmux-plugins/tmux-resurrect' # salva/ripristina sessioni
run '~/.tmux/plugins/tpm/tpm'
Gestione plugin dentro tmux:
| Tasto | Azione |
|---|---|
prefix I |
installa i plugin elencati |
prefix U |
aggiorna i plugin |
prefix alt+u |
rimuovi plugin non elencati |
tmux-resurrect è particolarmente utile: salva l'intera struttura di sessioni, finestre e pannelli e la ripristina dopo un reboot con prefix + Ctrl+r.
Workflow tipico
Scenario: sessione di analisi neuroimaging sul server GEEKOM che deve continuare anche dopo la disconnessione SSH.
# sul server remoto, crea sessione nominata
tmux new -s neuroimaging
# apri tre pannelli: codice | log | monitor
Ctrl+b % # split verticale
Ctrl+b " # split orizzontale nel pannello di destra
# lancia i processi in ogni pannello
# pannello 1: script Python / FreeSurfer
# pannello 2: tail -f del log
# pannello 3: htop
# disconnettiti lasciando tutto in esecuzione
Ctrl+b d
# --- ore dopo, riconnettiti via SSH ---
tmux attach -t neuroimaging
Cheatsheet
# Sessioni
tmux new -s <nome>
tmux ls
tmux attach -t <nome>
tmux kill-session -t <nome>
prefix + d detach
prefix + s elenco sessioni
prefix + $ rinomina sessione
# Finestre
prefix + c nuova finestra
prefix + , rinomina finestra
prefix + w elenco finestre
prefix + n/p prossima / precedente
prefix + 0-9 vai a numero
# Pannelli
prefix + % split verticale
prefix + " split orizzontale
prefix + frecce naviga
prefix + z zoom
prefix + x chiudi
# Utility
prefix + [ copy mode
prefix + ] incolla
prefix + ? elenco tutti i tasti
prefix + : prompt comandi tmux
Suggerimento:
prefix + ?mostra tutti i key binding attivi nella sessione corrente. È il riferimento più affidabile dopo aver personalizzato.tmux.conf.
Guida ai fondamentali di tmux — terminale multiplexer per sessioni persistenti e workflow paralleli.