Ricerca nel sito web

Come personalizzare i colori e il contenuto di Bash nel prompt del terminale Linux


Oggi Bash è la shell predefinita nella maggior parte (se non in tutte) le moderne distribuzioni Linux. Tuttavia, potresti aver notato che il colore del testo nel terminale e il contenuto del prompt possono essere diversi da una distribuzione all'altra.

Lettura consigliata: 5 shell open source per Linux utilizzate più frequentemente

Nel caso ti stia chiedendo come personalizzarlo per una migliore accessibilità o per semplice capriccio, continua a leggere: in questo articolo spiegheremo come farlo.

La variabile d'ambiente Bash PS1

Il prompt dei comandi e l'aspetto del terminale sono governati da una variabile d'ambiente chiamata PS1. Secondo la pagina man di Bash, PS1 rappresenta la stringa di prompt primaria che viene visualizzata quando la shell è pronta per leggere un comando.

Il contenuto consentito in PS1 è costituito da diversi caratteri speciali con escape backslash il cui significato è elencato nella sezione PROMPTING della pagina man.

Per illustrare, mostriamo il contenuto corrente di PS1 nel nostro sistema (questo potrebbe essere leggermente diverso nel tuo caso):

echo $PS1

[\u@\h \W]$

Spiegheremo ora come personalizzare la PS1 secondo le nostre esigenze.

Personalizzazione del formato PS1

Secondo la sezione PROMPTING nella pagina man, questo è il significato di ciascun carattere speciale:

  1. \u: il nome utente dell'utente corrente.
  2. \h: il nome host fino al primo punto (.) nel nome di dominio completo.
  3. \W: il basename della directory di lavoro corrente, con $HOME abbreviato con una tilde (~).
  4. \$: Se l'utente corrente è root, visualizza #, $ altrimenti.

Ad esempio, potremmo prendere in considerazione l'aggiunta di \! se vogliamo visualizzare il numero della cronologia del comando corrente, o \H se vogliamo visualizzare il FQDN invece di il nome breve del server.

Nell'esempio seguente importeremo entrambi nel nostro ambiente attuale eseguendo questo comando:

PS1="[\u@\H \W \!]$"

Quando premi Invio vedrai che il contenuto della richiesta cambia come mostrato di seguito. Confronta il prompt prima e dopo l'esecuzione del comando precedente:

Ora facciamo un ulteriore passo avanti e cambiamo il colore dell'utente e del nome host nel prompt dei comandi, sia del testo che dello sfondo circostante.

In realtà, possiamo personalizzare 3 aspetti del prompt:

Text Format Foreground (text) color Background color
0: normal text 30: Black 40: Black
1: bold 31: Red 41: Red
4: Underlined text 32: Green 42: Green
33: Yellow 43: Yellow
34: Blue 44: Blue
35: Purple 45: Purple
36: Cyan 46: Cyan
37: White 47: White

Utilizzeremo il carattere speciale \e all'inizio e una m alla fine per indicare che quella che segue è una sequenza di colori.

In questa sequenza i tre valori (sfondo, formato e primo piano) sono separati da virgole (se non viene fornito alcun valore si assume quello predefinito) .

Lettura consigliata: Impara lo scripting della shell Bash in Linux

Inoltre, poiché gli intervalli di valori sono diversi, non importa quale (sfondo, formato o primo piano) specifichi per primo.

Ad esempio, il seguente PS1 farà apparire il messaggio in testo sottolineato giallo con sfondo rosso:

PS1="\e[41;4;33m[\u@\h \W]$ "

Per quanto possa sembrare, questa personalizzazione durerà solo per la sessione utente corrente. Se chiudi il terminale o esci dalla sessione, le modifiche andranno perse.

Per rendere permanenti queste modifiche, dovrai aggiungere la seguente riga a ~/.bashrc o ~/.bash_profile a seconda della tua distribuzione:

PS1="\e[41;4;33m[\u@\h \W]$ "

Sentiti libero di giocare con i colori per trovare quello che funziona meglio per te.

Riepilogo

In questo articolo abbiamo spiegato come personalizzare il colore e il contenuto del tuo prompt Bash. Se hai domande o suggerimenti su questo post, non esitare a utilizzare il modulo di commento qui sotto per contattarci. Restiamo in attesa della vostra risposta!