Personalizzare il Comportamento del Terminale Linux con stty
Il comando stty
in Linux è uno strumento potente per controllare il
comportamento del terminale. Ti permette di vedere e modificare molte delle sue
impostazioni, come i tasti di controllo (Ctrl+C
, Ctrl+D
, ecc.), il flusso
di input/output e altre caratteristiche che influenzano l'interazione con la
shell. In questa sezione, vedremo come visualizzare le impostazioni attuali
del terminale e come modificarle.
Visualizzare le impostazioni del terminale con stty
Per visualizzare le impostazioni correnti del terminale, scrivere:
stty -a
Questo comando ti mostrerà una lista dettagliata di tutte le impostazioni correnti del terminale. L'output sarà simile a questo:
Cosa significano queste impostazioni?
speed 38400 baud: Indica la velocità di trasmissione dei dati (baud rate) del terminale, che in questo caso è impostata a 38400 bps (bit per secondo).
rows 30; columns 124: Questi valori rappresentano le dimensioni del terminale, rispettivamente 30 righe e 124 colonne. Questi dati variano a seconda della larghezza del terminale nel momento in cui esegui il comando.
intr = ^C: Definisce il carattere di interruzione (in genere
Ctrl+C
) che termina i processi in esecuzione.erase = ^?: Questo è il tasto utilizzato per cancellare il carattere precedente. Nel caso mostrato, l'impostazione è su
^?
che rappresenta il codice ASCII 127, che è il carattere diDEL
(delete). Questo significa che il terminale utilizza il tasto Backspace o Delete per cancellare il carattere precedente.kill = ^U: Cancella l'intera linea di input.
eof = ^D: Rappresenta il carattere di "End of File", che chiude lo standard input (come per terminare una sessione di input da tastiera).
Nota bene!
Il simbolo ^
nei comandi come intr = ^C
rappresenta il tasto Ctrl
(Control) sulla tastiera. Quando vedi qualcosa come ^C
, significa che il
tasto Ctrl
deve essere premuto insieme al tasto C
.
Modificare i Caratteri Speciali di Default
I terminali permettono di modificare i valori di default associati ai caratteri
speciali. Questo è utile quando si desidera personalizzare il comportamento
del terminale per adattarlo alle proprie esigenze o abitudini di lavoro. Ad
esempio, se vuoi cambiare il tasto di cancellazione che per default è impostato
su Backspace (^?
), puoi facilmente sostituirlo con un'altra combinazione,
come Ctrl+H (^H
), utilizzando il comando stty
.
Modifica del Carattere di Cancellazione
Supponiamo che tu voglia cambiare il tasto di cancellazione da Backspace
(^?
) a Ctrl+H (^H
).
Puoi farlo con il comando:
stty erase '^H'
Dopo questo cambiamento, ogni volta che premi Ctrl+H, cancellerai il carattere precedente. Puoi verificare che la modifica sia avvenuta correttamente usando:
stty -a
Il terminale mostrerà un output simile a questo:
erase = ^H;
In questo modo, hai personalizzato con successo il tasto di cancellazione.
Nota bene!
La modifica che fai con stty è valida solo per la sessione corrente del terminale. Se chiudi il terminale e ne apri uno nuovo, il tasto di cancellazione tornerà al suo valore di default.
Modifica del Carattere di Interruzione
Un'altra funzionalità di stty
è la possibilità di cambiare il carattere
utilizzato per interrompere un processo. Il carattere predefinito è Ctrl+C
,
ma puoi modificarlo. Supponiamo che tu voglia usare Ctrl+X
per interrompere i
processi.
Esegui:
stty intr '^X'
Ora, ogni volta che premi Ctrl+X
, interromperai il processo in esecuzione.
Puoi ripristinare il comportamento predefinito con:
stty intr '^C'
Abilitare e Disabilitare le Opzioni di stty
Il comando stty
offre la possibilità di controllare molte delle funzionalità
del terminale, permettendo di attivare o disattivare opzioni che gestiscono il
modo in cui il terminale elabora l'input e l'output. Questo è particolarmente
utile per personalizzare il comportamento del terminale in base alle esigenze.
Alcune di queste opzioni possono essere abilitate o disabilitate con un
semplice comando.
Ad esempio, il terminale applica di default il post-processing all'output,
ovvero un insieme di trasformazioni automatiche come la conversione dei
caratteri di newline (\n
) in una combinazione di ritorno a capo e newline
(\r\n
). Tuttavia, è possibile disabilitare questa funzione e osservare come
cambia l'output del terminale.
Disabilitare il Post-Processing con opost
Una delle funzionalità utili che si possono gestire con stty
è la
disabilitazione del post-processing dell'output. Questo può essere ottenuto
usando l'opzione -opost
.
Quando esegui il comando:
stty -opost
Stai istruendo il terminale a non eseguire il post-processing dell'output.
Normalmente, quando premi "Invio", il terminale converte il carattere newline
(\n
) in una sequenza di ritorno a capo seguito da newline (\r\n
),
permettendo al cursore di tornare all'inizio della linea successiva.
Disabilitando opost
, questo comportamento cambia, e il cursore potrebbe non
allinearsi correttamente.
Prova ad eseguire il seguente comando prima e dopo aver disabilitato il post-processing:
echo "Questo è un test"
Con -opost
disabilitato, noterai che il cursore non ritorna correttamente
all'inizio della linea successiva. In alcune configurazioni, potrebbe
semplicemente spostarsi di una linea verso il basso senza il corretto
allineamento orizzontale.
Ripristinare il Post-Processing
Se desideri tornare al comportamento standard, puoi riattivare l'opzione con il comando:
stty opost
Questo ripristina il post-processing dell'output, garantendo che i newline vengano gestiti come di consueto.
Nota bene!
Negli esempi ti è stato mostrato come abilitare e disabilitare
opost
, tuttavia lo stesso approccio può essere utilizzato con
tutte le opzioni mostrate dal comando stty -a
.
Ripristinare le impostazioni predefinite
Se vuoi ripristinare tutte le impostazioni del terminale ai valori predefiniti, puoi eseguire:
stty sane
Questo comando imposta le opzioni di configurazione del terminale su un insieme di valori "standard" che funzionano nella maggior parte delle situazioni. Questo può essere utile se hai fatto qualche cambiamento che ha causato problemi.
Conclusione
Il comando stty
è uno strumento versatile che ti permette di controllare a
fondo il comportamento del terminale. Può sembrare complicato all'inizio, ma
con alcuni semplici comandi puoi facilmente personalizzare la tua esperienza
nella shell. Abbiamo visto come visualizzare le impostazioni attuali,
modificare specifici valori e disabilitare il post-processing.
Nei prossimi articoli, vedremo come questi controlli si combinano con i caratteri speciali che la shell interpreta per gestire i comandi.