Colorare bash: differenze tra le versioni

Da Guide@Debianizzati.Org.
Vai alla navigazione Vai alla ricerca
Nessun oggetto della modifica
mNessun oggetto della modifica
Riga 4: Riga 4:
==Personalizzare il prompt==
==Personalizzare il prompt==


Bash è un tipo, forse il più usato, di shell per Linux. Spesso però c'è la necessità di amministrare più macchine, anche solo all'interno di una rete casalinga. Possiamo riconoscerle certamente dall'hostname, ma se vogliamo fare una cosa anche più carina oltre che utile, possiamo colorare il prompt. Per farlo basta modificare il file <code>~/.bashrc</code>. Al suo interno troveremo (se non le abbiamo cancellate in precedenza) delle righe più o meno cosi:
Bash è un tipo, forse il più usato, di [[shell]] per Linux. Spesso però c'è la necessità di amministrare più macchine, anche solo all'interno di una rete casalinga. Possiamo riconoscerle certamente dall'[[hostname]], ma se vogliamo fare una cosa anche più carina oltre che utile, possiamo colorare il prompt. Per farlo basta modificare il file <code>~/.bashrc</code>. Al suo interno troveremo (se non le abbiamo cancellate in precedenza) delle righe più o meno cosi:


<pre>
<pre>
Riga 30: Riga 30:
Per l'elenco di tutte le stringhe vedere la sezione ''STRINGHE DI PROMPT'' nel manuale di bash.
Per l'elenco di tutte le stringhe vedere la sezione ''STRINGHE DI PROMPT'' nel manuale di bash.


Debian utilizza un'altra variabile per distinguere l'hostname di un chroot:
Debian utilizza un'altra variabile per distinguere l'hostname di un [[chroot]]:
<pre>
<pre>
# set variable identifying the chroot you work in (used in the prompt below)
# set variable identifying the chroot you work in (used in the prompt below)
Riga 103: Riga 103:


Attribute codes:
Attribute codes:
00=none 01=bold 04=underscore 05=blink 07=reverse 08=concealed
<pre>00=none 01=bold 04=underscore 05=blink 07=reverse 08=concealed</pre>
Text color codes:
Text color codes:
30=black 31=red 32=green 33=yellow 34=blue 35=magenta 36=cyan 37=white
<pre>30=black 31=red 32=green 33=yellow 34=blue 35=magenta 36=cyan 37=white</pre>
Background color codes:
Background color codes:
40=black 41=red 42=green 43=yellow 44=blue 45=magenta 46=cyan 47=white
<pre>40=black 41=red 42=green 43=yellow 44=blue 45=magenta 46=cyan 47=white</pre>





Versione delle 10:16, 8 set 2011

Debian-swirl.png Versioni Compatibili

Tutte le versioni supportate di Debian

Personalizzare il prompt

Bash è un tipo, forse il più usato, di shell per Linux. Spesso però c'è la necessità di amministrare più macchine, anche solo all'interno di una rete casalinga. Possiamo riconoscerle certamente dall'hostname, ma se vogliamo fare una cosa anche più carina oltre che utile, possiamo colorare il prompt. Per farlo basta modificare il file ~/.bashrc. Al suo interno troveremo (se non le abbiamo cancellate in precedenza) delle righe più o meno cosi:

# Coloriamo bash
if [ "$PS1" ]; then
export PS1="\[\033[1;32m\]\u\[\033[1;37m\]@\[\033[1;31m\]\h\[\033[1;0m\]:\w\$ "
fi

La sintassi è abbastanza semplice, esploriamo invece i vari comandi:

u = Il nostro nome utente
@ = il carattere @
[\033[1;32m\] = cambio il colore in verde
h = hostname
[\033[1;0m\] = colore di default
: = il carattere :
w = directory corrente
$ = $ se siamo user, # se siamo superuser

Nell'esempio riportato sopra, che è una parte del mio ~/.bashrc, possiamo usare bash con la bandiera italiana. Ovviamente potete personalizzarlo come volete, cambiare caratteri, modificare colori e quant'altro.

Per l'elenco di tutte le stringhe vedere la sezione STRINGHE DI PROMPT nel manuale di bash.

Debian utilizza un'altra variabile per distinguere l'hostname di un chroot:

# set variable identifying the chroot you work in (used in the prompt below)
if [ -z "$debian_chroot" ] && [ -r /etc/debian_chroot ]; then
    debian_chroot=$(cat /etc/debian_chroot)
fi

questo è infatti solitamente l'inizio di PS1:

PS1='${debian_chroot:+($debian_chroot)}

Il file /etc/debian_chroot non esiste in modo predefinito ma si può creare inserendo un nome a scelta che andrà a sostituire il default.


Usare i colori negli script

Se si vogliono usare spesso i colori negli script bash è molto comodo definire delle variabili mnemoniche alle quali assegnare i codici di ogni colore. Questo può essere fatto ad esempio creando un file di nome /usr/local/bin/colors, con il seguente contenuto:

#!/bin/bash
export WHITE="\e[1;37m"
export LGRAY="\e[0;37m"
export GRAY="\e[1;30m"
export BLACK="\e[0;30m"
export RED="\e[0;31m"
export LRED="\e[1;31m"
export GREEN="\e[0;32m"
export LGREEN="\e[1;32m"
export BROWN="\e[0;33m"
export YELLOW="\e[1;33m"
export BLUE="\e[0;34m"
export LBLUE="\e[1;34m"
export PURPLE="\e[0;35m"
export PINK="\e[1;35m"
export CYAN="\e[0;36m"
export LCYAN="\e[1;36m"
export Z="\e[0m"

In questo modo non ci resta che fare un source del file /usr/local/bin/colors ogni qual volta vogliamo usare i colori. Per fare il source basta inserire:

. colors

in un punto dello script. A questo punto potremo colorare facilmente il nostro output in questo modo:

echo -e "$RED *** $Z Attenzione: la dir $LGREEN documenti $Z sarà eliminata"

che dà come risultato nel terminale:

*** Attenzione: la dir documenti sarà eliminata

Nota 1
bisogna usare l'opzione -e con echo per fargli interpretare correttamente i caratteri di escape.
Nota 2
la variabile $Z ripristina il colore di default del terminale.
Warning.png ATTENZIONE
I colori sono un caratteristica non POSIX di bash, quindi non usateli se volete fare script portabili



Colori

I parametri da cambiare sono la parte compresa tra le quadre e dopo l'escape ([\033): [1;5;33m\]
Ogni gruppo di attributi è separato da un punto e virgola.
Attribute codes è per il primo gruppo.
Background color codes è per il secondo gruppo.
Text color codes è per il terzo gruppo.

I riferimenti si trovano con dircolors -p che mostra anche i colori associati ad ogni tipo di file usando ls --color

Attribute codes:

00=none 01=bold 04=underscore 05=blink 07=reverse 08=concealed

Text color codes:

30=black 31=red 32=green 33=yellow 34=blue 35=magenta 36=cyan 37=white

Background color codes:

40=black 41=red 42=green 43=yellow 44=blue 45=magenta 46=cyan 47=white



Autore iniziale: Bedo

Verificata ed estesa da : ~ The_Noise