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:

Output comando stty -a

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 di DEL(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).

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.

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.

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.