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:
\u:
il nome utente dell'utente corrente.\h:
il nome host fino al primo punto (.) nel nome di dominio completo.\W:
il basename della directory di lavoro corrente, con $HOME abbreviato con una tilde (~).\$:
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!