La maggior parte dei sistemi Ubuntu utilizza bash o dash come applicazione terminale predefinita. Digiti i tuoi comandi a un prompt dei comandi standard, che di solito mostra il tuo nome utente, nome host e directory corrente in uno schema di colori predefinito. Bash offre molte opzioni di personalizzazione per il prompt dei comandi che ti consentono non solo di aggiungere diverse funzioni al prompt, ma anche di distinguerle in base a colori diversi.
In questo articolo, utilizzeremo vari esempi per personalizzare e ricolorare il prompt dei comandi della nostra applicazione terminale in modo che tu possa fare lo stesso secondo necessità. Eseguiremo i comandi e le procedure descritte in questo articolo su un sistema Ubuntu 22.04 LTS.
Visualizza la configurazione del prompt di Bash corrente
Quando apri il tuo Terminale tramite il Dash o la scorciatoia Ctrl+Alt +T, vedrai il messaggio come segue:
[email protected]:directory$
Questo formato predefinito elenca il nome utente, il nome host e quindi la directory corrente dell'utente. Il bash preleva questa configurazione dal file bashrc che è impostato individualmente per ogni utente nella sua home directory. Ecco come puoi aprire questo file:
$ nano ~/.bashrc
Posizione:/home/nomeutente/.bashrc
Puoi anche utilizzare qualsiasi altro editor di testo per aprire questo file.
Ecco come appare questo file di configurazione. Ti mostriamo qui la parte rilevante del file.
La variabile PS1 che vedi nell'immagine sopra ha tutta la configurazione richiesta per il prompt di bash. Spieghiamo innanzitutto cosa indicano i caratteri in questa variabile. Puoi visualizzare chiaramente questa variabile nella variabile PS1 elencata dopo l'istruzione else.
- \u-Questo indica il nome utente dell'utente corrente
- \h:indica il nome host dell'utente corrente estratto dal nome di dominio completo.
- \w:indica la directory di lavoro corrente. La tua home directory è indicata con un simbolo tilde ~.
- \$:indica se sei un utente normale ($) o un utente root (#).
Puoi anche visualizzare la configurazione della variabile PS1 facendo eco al suo valore come segue:
Personalizza il prompt della shell
Dopo aver visto dove sono memorizzate le informazioni del prompt e cosa descrive la variabile PS1, vediamo come possono essere modificate per personalizzare il nostro prompt bash.
Prima di modificare la variabile PS1, è importante memorizzare il suo contenuto predefinito in una nuova variabile. Questo ci aiuterà a ripristinare il prompt alla sua configurazione originale se qualcosa va storto. Inserisci il seguente comando nel tuo Terminale:
$ DEFAULT=$PS1
Ora la variabile "DEFAULT" ha tutte le informazioni di cui abbiamo bisogno per ripristinare le nostre impostazioni di prompt predefinite.
Ora sperimentiamone un po' con la nostra variabile PS1. Immettere il seguente comando:
$ PS1="\u\$ "
Questo nuovo valore di PS1 ha il seguente effetto sulla tua richiesta:
Ora puoi vedere solo il tuo nome utente e le informazioni sull'utente root senza alcun colore poiché non è stata ancora impostata alcuna informazione sul colore.
Inseriamo il comando seguente in modo che il nostro prompt elenchi anche la nostra directory di lavoro
$ PS1="\u:\w\$ "
Questo nuovo valore di PS1 ha il seguente effetto sulla tua richiesta:
Poiché la mia directory di lavoro era home, potevo vedere solo il simbolo ~. In un'altra directory, ad esempio bin, il mio prompt mostrerà le seguenti informazioni:
Reimposta il prompt come predefinito
Poiché abbiamo memorizzato la configurazione originale della variabile PS1 nella variabile DEFAULT, possiamo riportare il valore di PS1 al valore predefinito alimentandolo con il valore della nostra variabile DEFAULT.
Cos'altro puoi personalizzare?
Se desideri che il tuo prompt contenga un testo personalizzato specifico , puoi utilizzare la seguente sintassi:
$ PS1="[custom text] \[email protected]\h:\w\$ "
Esempio:
Ho impostato il mio prompt per includere un messaggio personalizzato come segue:
Puoi incorporare i seguenti caratteri di base nel tuo prompt:
Personaggio | Scopo |
\d | La data nel formato data giorno mese. |
\e | Il carattere della campana. |
\a | Il carattere di escape. |
\h | Il nome host dell'utente corrente fino a '.' |
\H | Il nome host dell'utente corrente. |
\l | Nome base del dispositivo terminale. |
\j | Il numero di lavori eseguiti dalla shell. |
\r | Ritorno a bordo. |
\n | Una nuova linea. |
\u | Nome utente dell'utente corrente. |
\v | Versione Bash. |
\! | Numero della cronologia di stampa del comando in esecuzione. |
Puoi includere l'ora di sistema corrente nel tuo prompt tramite il seguente comando:
$ PS1=”\A\u: \w\$ “
Questo nuovo valore di PS1 ha il seguente effetto sulla tua richiesta:
Puoi anche personalizzare il tuo prompt per includere un output di un comando; questo ti offre opzioni illimitate da incorporare nel tuo prompt.
Sintassi:
$ PS1="\[email protected]\h on `[command]` \w\$ "
Esempio:
In questo esempio, imposterò il prompt per includere il nome del gruppo principale a cui appartiene l'utente corrente.
$ PS1="\[email protected]\h on `id -gn` \w\$ "
Colora il prompt
Dopo aver personalizzato il prompt, ti renderai conto che le cose potrebbero sembrare un po' incasinate. La semplice ragione è che non è troppo facile differenziare una caratteristica dall'altra se sono elencate tutte con lo stesso colore. Ora impariamo come colorare il prompt per renderlo più piacevole alla vista.
Per aggiungere colori a una o più funzionalità, la variabile PS1 include tag colore. Il testo evidenziato nell'immagine seguente è un tag colorato.
Questo è il formato di un tag colore:
\[\033[COLOR]m\]
Ad esempio, il nome utente e il nome host predefiniti che vediamo nel prompt del terminale predefinito sono verdi a causa del seguente tag colorato:
\[\033[01;32m\]\[email protected]\h
Puoi modificare questo valore di colore rispetto a una funzione del prompt di bash per assegnargli un nuovo colore o aggiungere un nuovo tag colore a una funzione che non ne ha.
Ecco alcuni colori comuni e i loro valori:
Colore | Valore |
Verde | 32 |
Rosso | 31 |
Nero | 30 |
Blu | 34 |
Ciano | 36 |
Viola | 35 |
Giallo | 33 |
Bianco | 37 |
Esempio:
Il seguente comando trasformerà il prompt in rosso poiché stiamo specificando 31 (colore rosso) nel tag colore:
$ PS1="\[\033[31m\]\[email protected]\h:\w$ "
Utilizza gli stili di testo nel prompt
È possibile aggiungere stili al testo del prompt assegnando un valore di attributo a un tag colore. Ecco il formato di un tag colore con un attributo:
\[\033[ATTRIBUTE; COLORm\]
È possibile utilizzare i seguenti valori di attributo per il testo del prompt:
Valore attributo | Scopo |
0 | Testo normale (questo è il valore predefinito anche se non è impostato alcun attributo) |
1 | Nel terminale Ubuntu, questo valore specifica il testo in grassetto |
2 | Testo attenuato |
4 | Evidenziazione del testo |
5 | Per testo lampeggiante |
7 | Inverte i colori del testo e dello sfondo |
8 | Per il testo nascosto |
Esempio:
Puoi usare il seguente comando per sottolineare il tuo prompt bash:
$ PS1="\[\033[4;31m\]\[email protected]\h:\w$ "
Il valore 4 indica che vogliamo “sottolineare” il testo.
Apporta modifiche permanenti al prompt
I comandi che hai eseguito fino ad ora cambieranno solo il prompt per la sessione bash corrente. Dopo aver sperimentato la personalizzazione del testo e la colorazione del prompt e aver raggiunto un finale che desideri impostare in modo permanente per tutte le sessioni bash, devi modificare il file bashrc.
Apri il file .bashrc e copia il valore PS1 che hai finalizzato nella riga PS1 sotto if; quindi linea. Nell'immagine seguente, ho appena cambiato il colore del mio prompt di bash in rosso:
Salva il file premendo Ctrl+X e quindi premendo Y . Le modifiche al prompt di bash ora saranno permanenti. Esci dal Terminale e riapri per vedere che il tuo prompt bash sarà sempre lo stesso che hai impostato.
Dopo aver praticato insieme a questo tutorial, puoi eccellere nella personalizzazione del prompt di bash. È quindi possibile impostare i colori per differenziare le diverse funzioni incorporate nel prompt. In questo modo sarai in grado di visualizzare e utilizzare quelle informazioni utili ogni volta che utilizzi il prompt di bash.