Colorare bash: differenze tra le versioni

m
nessun oggetto della modifica
mNessun oggetto della modifica
 
(13 versioni intermedie di 6 utenti non mostrate)
Riga 1: Riga 1:
[[Categoria:Shell]]
{{Versioni compatibili}}
[[Categoria:Tips&Tricks]]
 
==Personalizzare il prompt==
==Personalizzare il prompt==


Dunque come sappiamo 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 editare il file ~/.bashrc. 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 26: Riga 24:
</pre>
</pre>


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.
Nell'esempio riportato sopra, che è una parte del mio <code>~/.bashrc</code>, 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]]:
<pre>
# 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
</pre>
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==
==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:
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 <code>/usr/local/bin/colors</code>, con il seguente contenuto:


<pre>
<pre>
Riga 53: Riga 66:
</pre>
</pre>


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:
In questo modo non ci resta che fare un source del file <code>/usr/local/bin/colors</code> ogni qual volta vogliamo usare i colori. Per fare il source basta inserire:


<pre>
<pre>
Riga 62: Riga 75:


<pre>
<pre>
echo -e "$LGREEN *** $Z Attenzione: la dir $LGREEN documenti $Z sara' eliminata"
echo -e "$RED *** $Z Attenzione: la dir $LGREEN documenti $Z sarà eliminata"
</pre>
</pre>


che da come risultato nel terminale:
che come risultato nel terminale:


<div style="padding: 10px; background-color: black;color: white;">
<div style="padding: 10px; background-color: black;color: white;">
<tt><font color="red"> *** </font>Attenzione: la dir <font color="#0FFF2F">documenti</font> sara' eliminata</tt>
<code><font color="red"> *** </font>Attenzione: la dir <font color="#0FFF2F">documenti</font> sarà eliminata</code>
</div>
</div>


;Nota 1: bisogna usare l'opzione '''-e''' con echo per fargli interpretare correttamente i caratteri di escape.
;Nota 1: bisogna usare l'opzione <code>-e</code> con echo per fargli interpretare correttamente i caratteri di escape.


;Nota 2: la variabile $Z ripristina il colore di default del terminale.
;Nota 2: la variabile <code>$Z</code> ripristina il colore di default del terminale.


{{warningbox| I colori sono un caratteristica non POSIX di bash, quindi non usateli se volete fare script portabili}}
{{warningbox| I colori sono un caratteristica non POSIX di bash, quindi non usateli se volete fare script portabili}}




----
=== Colori ===
Autore iniziale: Bedo
I parametri da cambiare sono la parte compresa tra le quadre e dopo l'escape ([\033): [1;5;33m\] <br>
Ogni gruppo di attributi è separato da un punto e virgola. <br>
''Attribute codes'' è per il primo gruppo. <br>
''Background color codes'' è per il secondo gruppo. <br>
''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:
<pre>00=none 01=bold 04=underscore 05=blink 07=reverse 08=concealed</pre>
Text color codes:
<pre>30=black 31=red 32=green 33=yellow 34=blue 35=magenta 36=cyan 37=white</pre>
Background color codes:
<pre>40=black 41=red 42=green 43=yellow 44=blue 45=magenta 46=cyan 47=white</pre>
 
==Colorare l'output di ls==
Quando viene eseguito il comando "ls" avrete notato che i nomi delle directory vengono colorati in un modo (di default in blu) come anche i file in base alla loro estensione. Stesso discorso anche per i link, le pipe etc.<br/>
Ciò è dovuto alle seguenti righe presenti nel file <code>.bashrc</code> :
<pre>
# enable color support of ls and also add handy aliases
if [ -x /usr/bin/dircolors ]; then
    eval "`dircolors -b .dircolors`"
..
</pre>
se avete installato Debian da un po' di tempo, oppure:
<pre>
# enable color support of ls and also add handy aliases
if [ -x /usr/bin/dircolors ]; then
    test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
..
</pre>
per le nuove installazioni. Cambiate il vostro file <code>.bashrc</code> in questo modo se si presenta nella prima forma ed eseguite un:
<pre>$. .bashrc</pre>
per rendere effettive le modifiche.
 
Ora, come si vede, ad occuparsi dei colori è <code>dircolors</code>. Si può visualizzare il database di <code>dircolors</code> con il comando:
<pre>$ dircolors -p</pre>
in cui sono presenti le varie associazioni oggetto/colore. Per modificarle eseguite:
<pre>$ dircolors -p > ~/.dircolors</pre>
con cui verrà creato nella vostra home un file nascosto chiamato <code>.dircolors</code> .
Adesso si può modificare questo file nel modo che si preferisce; ad esempio, per cambiare il colore delle directory da blu a giallo, si può modificare la riga corrispondente in questo modo:
<pre>
DIR 01;33 # directory
</pre>
oppure si può aggiungere un'estensione di file che non si trova in lista o inserire un background al testo.<br/>
I colori sono nella forma "stile_carattere;colore_testo;colore_sfondo". Per cui:
<pre>
DIR 01;33;44
</pre>
visualizzerà i nomi delle directory in grassetto, in giallo e su sfondo blu.<br/>
Le modiche vanno rese effettive chiudendo e riaprendo la finestra di emulatore del terminale oppure, se vi trovate in tty, con:
<pre>$ . ~/.bashrc</pre>
Per altri utenti, compreso [[root]], bisogna ripetere il procedimento.
 
{{Autori
|Autore = [[Utente:Bedo|Bedo]]
|Verificata_da =
:[[Utente:TheNoise|~ The_Noise]]
|Estesa_da =
:[[Utente:TheNoise|~ The_Noise]]
:[[Utente:S3v|S3v]] (colorare ls)
|Numero_revisori = 1
}}


Verificata ed estesa da : [[Utente:TheNoise|~ The_Noise]]
[[Categoria:Bash]]
6 999

contributi