Configurare il Prompt della Shell (PS1) in Linux

Si definisce prompt della shell quella linea di testo visualizzata su un terminale in attesa di ricevere l'input dell'utente. In ambiente Linux*, il **prompt della shell è altamente configurabile per mezzo della variabile d'ambiente PS1.

La personalizzazione del prompt della shell permette di migliorare il lavoro quotidiano poiché attraverso i colori e le formattazioni, l'utente può rendersi conto su quale server sta lavorando. Occorre precisare che quando si apre un terminale, il modo più intuitivo e veloce che l'utente ha per stabilire su quale computer sta lavorando, è quello di vedere il prompt della shell. Personalizzare il prompt della shell sui vari server è una scelta saggia ed ha enormi benefici.

Questo articolo mostrerà come è possibile personalizzare il prompt della shell al fine di migliorare l'esperienza d'uso del terminale.

Cos'è PS1

PS1 è una variabile d'ambiente che definisce l'aspetto del prompt della shell. PS1 è definita all'interno dei file di configurazione caricati all'avvio dai software di terminale. Ad esempio, la shell bash definisce la variabile d'ambiente all'interno del file .bashrc. Per apportare modifiche al prompt della shell, occorre definire le regole che vedremo ed inserirle all'interno del file ~/.bashrc.

L'aggiornamento temporaneo della variabile PS1 può essere eseguito con il comando:

export PS1=...

Questo comando termina la sua personalizzazione alla chiusura del terminale.

La variabile PS1, priva di personalizzazioni, solitamente appare così:

user@hostname:~$

Inizialmente la colorazione è grigia, ma possiamo personalizzare tutto: sia i colori che le informazioni mostrate. Vediamo come!

Sintassi di PS1

La sintassi di PS1 si avvale di una serie di escape per includere le informazioni sul prompt. Alcuni degli escape più comuni sono:

  • \u: nome utente
  • \h: nome host fino al primo punto
  • \H: nome completo host
  • \w: directory di lavoro corrente
  • \W: basename della directory di lavoro corrente
  • \d: data nel formato "NomeGiorno Mese NumeroGiorno"
  • \t: ora attuale nel formato 24 ore HH:MM:SS
  • \A: ora attuale nel formato 24 ore HH:MM
  • \@: ora attuale nel formato 12 ore am/pm
  • \!: numero della cronologia del comando
  • \$: mostra un # se l'utente è root, altrimenti mostra un $

Per poter vedere cosa mostrano le varie opzioni, puoi aggiungere in fondo al tuo file ~/.bashrc, il seguente prompt:

PS1='\u|\h|\H|\w|\W|\d|\t|\A|\@|\!|\$'

Nel prompt sono state inserite tutte le opzioni suddivise dal carattere |.

Colorare il prompt PS1

Il precedente prompt non mostra alcun tipo di colore, e come è facilmente intuibile, risulta complesso da interpretare e leggere. Per migliorare la lettura del prompt possiamo definire delle colorazioni, che aumentano notevolmente la leggibilità.

Anche per i colori, il prompt della shell PS1 utilizza delle sequenze di escape. Le sequenze di escape per i colori sono nella forma:

\[\033[XX;YYm\]

dove:

  • \033: è l'inizio della sequenza di escape (equivalente a ESC in ASCII)
  • XX: rappresenta gli attributi del testo
  • YY: rappresenta il colore del testo
  • m: sequenza finale dell'escape

Attributi del testo (XX)

Gli attributi del testo più comuni sono:

  • 0: Reset (reimposta tutti gli attributi)
  • 1: Grassetto (colori ad alta intensità)
  • 4: Sottolineato
  • 7: Inverso (inverte colore di sfondo e di primo piano)

Colori del testo (YY)

I colori standard (a bassa intensità) sono:

  • 30: Nero
  • 31: Rosso
  • 32: Verde
  • 33: Giallo
  • 34: Blu
  • 35: Magenta
  • 36: Ciano
  • 37: Bianco

I colori brillanti (ad alta intensità) sono ottenuti aggiungendo il valore 60 al valore base:

  • 90: Nero
  • 91: Rosso
  • 92: Verde
  • 93: Giallo
  • 94: Blu
  • 95: Magenta
  • 96: Ciano
  • 97: Bianco

Esempi di prompt

Riporto alcuni esempi di prompt da utilizzare.

Colore bassa e alta intensità

export PS1='\[\033[0;31m\]\u|\[\033[0;91m\]\h:\[\033[1;33m\]\w\[\033[0m\]\$ '

in questo esempio il prompt ha un rosso a bassa (31) ed alta (91) intensità.

Prompt con data e ora

Se desideri includere la data e ora nel tuo prompt, puoi inserire il seguente comando:

export PS1='\[\033[1;32m\]\u@\h \[\033[1;34m\]\d \t \[\033[1;37m\]\w\$\[\033[0m\] '

Conclusioni

In questo articolo hai visto come personalizzare il prompt della shell PS1 sulla tua distro Linux. Utilizzando delle formattazioni e colorazioni ad-hoc, migliorerà tantissimo la tua esperienza utente.

L'articolo ti ha mostrato come colorare il terminale, come mostrare diverse informazioni, e come impostare le configurazioni in modo permanente o temporaneo.