Archivio

Posts Tagged ‘Xubuntu’

Xubuntu: modificare il colore del prompt del terminale

18 Ottobre 2019 Commenti chiusi

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\]\$ '

Categorie:Xfce Tag: ,