Xubuntu: modificare il colore del prompt del terminale
Vogliamo modificare il colore del prompt del terminale di Ubuntu.
Il tipo di terminale che ci interessa è il “non-login”, che carica le sue impostazioni dal file
.bashrc
residente nella home.
Per modificare tali caratteristiche, editare il file suddetto:
mousepad ~/.bashrc
e decommentare la riga di codice contenente:
force_color_prompt=yes
Questa modifica consente di abilitare la colorazione del prompt fornita nel file di default.
La colorazione di default (ad es. di Xubuntu), è racchiusa nella seguente stringa:
if [ "$color_prompt" = yes ]; then PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
Nota:
cosa è ${debian_chroot:+($debian_chroot)}?
Questo è uno schema del tipo ${var:+value} che significa:
Se la variabile $var è definita, allora utilizza il valore ‘value’;
altrimenti non fare nulla.
La variabile debian_chroot è definita nel file /etc/bash.bashrc e si
occupa di prendere il contenuto del file /etc/debian_chroot, se questo file esiste
ed è leggibile. Di default però, tale file non esiste.
esempio:
banco@banco-desktop:~$ PS1='${var:+($var)}\u@\h:\w\$ ' banco@banco-desktop:~$ var="example" (example)banco@banco-desktop:~$
La colorazione viene decisa da una stringa racchiusa tra i caratteri di escape
\[\033[ e \]
a volte \[\033[ è sostituito da \e[
– Stringhe Colori disponibili
Ecco le stringhe usate per la colorazione del testo:
txtblk=’0;30m’ # Nero – Regular
txtred=’0;31m’ # Rosso
txtgrn=’0;32m’ # Verde
txtylw=’0;33m’ # Giallo
txtblu=’0;34m’ # Blu
txtpur=’0;35m’ # Viola
txtcyn=’0;36m’ # Ciano
txtwht=’0;37m’ # Bianco
bldblk=’1;30m’ # Nero – Bold
bldred=’1;31m’ # Rosso
bldgrn=’1;32m’ # Verde
bldylw=’1;33m’ # Giallo
bldblu=’1;34m’ # Blu
bldpur=’1;35m’ # Viola
bldcyn=’1;36m’ # Ciano
bldwht=’1;37m’ # Bianco
unkblk=’4;30m’ # Nero – Underline
undred=’4;31m’ # Rosso
undgrn=’4;32m’ # Verde
undylw=’4;33m’ # Giallo
undblu=’4;34m’ # Blu
undpur=’4;35m’ # Viola
undcyn=’4;36m’ # Ciano
undwht=’4;37m’ # Bianco
bakblk=’40m’ # Nero – Background
bakred=’41m’ # Rosso
badgrn=’42m’ # Verde
bakylw=’43m’ # Giallo
bakblu=’44m’ # Blu
bakpur=’45m’ # Viola
bakcyn=’46m’ # Ciano
bakwht=’47m’ # Bianco
txtrst=’0m’ # Text Reset
Nel nostro caso specifico, verrà usata la sequenza di escape non stampabile, ‘1;32m’ (verde grassetto):
\[\033[01;32m\]
Il testo successivo, fino alla sequenza successiva, verrà modificato; la stringa GreenBold sarà:
\u@\h
dove ‘\u@\h\’ sta per user@host
– Comandi di escape disponibili
Ecco la lista dei comandi di escape disponibili:
\a il carattere ASCII beep (07) \d la data nel formato "Giorno-della-settimana Mese Data" \D{format} the format is passed to strftime(3) and the result is inserted into the prompt string an empty format results in a locale-specific time representation. The braces are required \e un carattere di escape ASCII (033) \h l'hostname fino al primo `.' \H l'hostname \j the number of jobs currently managed by the shell \l the basename of the shell's terminal device name \n il carattere "newline" \r il carattere "carriage return" \s il nome della shell, il nome base di $0 (la parte che segue lo slash finale) \t l'ora corrente nel formato 24-ore HH:MM:SS \T l'ora corrente nel formato 12-ore HH:MM:SS \@ l'ora corrente nel formato 12-ore am/pm \A the current time in 24-hour HH:MM format \u lo username dell'utente corrente \v la versione di bash (e.g., 2.00) \V la release di bash, versione + patchlevel (es, 2.00.0) \w la directory di lavoro corrente, con $HOME abbreviato con una tilde \W il nome di base della directory di lavoro corrente abbreviato con una tilde \! il numero cronologico (history number) di questo comando \# il numero di questo comando \$ se l'UID effettivo è 0, un #, altrimenti un $ \nnn il carattere corrispondente al numero ottale nnn \\ un backslash \[ comincia una sequenza di caratteri non stampabili, che potrebbero essere usati per inserire una sequenza di controllo del terminale nel prompt \] termina la sequenza di caratteri non stampabili
tornando alla stringa, dopo user@host, abbiamo un text reset, ovvero togliamo la colorazione per il carattere “:”,
\[\033[00m\]:
poi abbiamo il path in blu grassetto:
\[\033[01;34m\]\w
dove appunto \w sta per la directory corrente
ed infine, sempre senza colorazione:
\[\033[00m\]\$ '
dove \$ controlla l’UID (user identifier):
se è 0 (root), viene visualizzato un ‘#’, altrimenti il ‘$’.
– Modificare il prompt di root
Per modificare il prompt di root, ad esempio utilizzando il rosso, è necessario modificare il file
.bashrc in root.
Copiare in /root il file skeleton:
/etc/skel/.bashrc
sudo cp /etc/skel/.bashrc /root
Editare quindi il file .bashrc di root e, prima decommentare:
force_color_prompt=yes
poi modificare il colore nella stringa:
PS1='\[\033[01;31m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
Commenti recenti