Una delle prime cose, imbarazzantemente semplici da realizzare per rendere il nostro terminale su OSX più simile ai terminali sui quali abbiamo smanettato sino ad ora su ogni altra distribuzione linux può essere quella di voler colorare l’output quando chiamiamo la funzione ls.
Scrivo questo articolo poichè ne ho cercati altri simili per risolvere la cosa con pigrizia, ed ottenendo scarsi risultati mi sono “armato di man e pazienza” ed ho letto, ed ora mi va di rendere le cose più veloci al povero pigro che, come me, desidera un terminale più simpatico con poca fatica.
Fondamentalmente ci sono due modi per risolvere velocemente la questione, il primo è semplicissimo, l’altro è “semplicemente semplice”.
Metodo semplicissimo: Basta digitare man ls per scoprire che, con l’opzione -G possiamo colorare l’output sul terminale con le configurazioni standard della nostra shell, ciò che ci interessa quindi è fare in modo che, ad ogni avvio del terminale, senza la necessità di aggiungere ogni volta l’opzione -G, l’output di ls venga colorato. . . e ci sono in totale due modi per farlo, in base alla nostra volontà di rendere la configurazione globale, o attiva solo per il nostro account.
Nel primo caso dobbiamo andare ad editare il file bashrc conenuto in /etc per cui digiteremo:
sudo nano /etc/bashrc
inseriremo la password ed aggiungeremo in fondo al file il seguente codice:
alias ls=”ls -G”
non ci resta che digitare ctrl+X, salvare le modifiche e riavviare il terminale.
Nel caso sia nostra intenzione abilitare la colorazione solo sul nostro account, senza andare ad editare bashrc e rendere “globali” le modifiche, ci toccherà creare nella nostra home folder (nel caso non l’abbiate già creato personalmente) un file chiamato “ .bash_profile ” ed aggiungere la stessa stringa di prima, per cui digiteremo
nano .bash_profile
e all’interno del file scriveremo il solito
alias ls=”ls -G”
e come abbiamo già fatto in precedenza, salveremo e rilanceremo terminale.
Ciò che abbiamo fatto è stato un semplice “chiedere” alla shell di sostituire al comando ls il comando ls -G ogni volta che questo viene digitato.
Il secondo metodo, quello “semplicemente semplice” è un po’ più “smart” ma decisamente più “custom” (per fare i fighi con le parole in inglese XD ) , stavolta non utilizzeremo alias ma giocheremo con le variabili d’ambiente della shell.
Ed anche qui interviene l’inesauribile man che ci insegna due nuove alternative all’opzione -G che sono la variabile CLICOLOR e la variabile LSCOLORS.
Per sommi capi (nonostante il mio consiglio per i più curiosi sia quello di andare a spulciare il man ls) quando CLICOLORS è settata ad 1 i colori nel terminale vengono abilitati secondo la configurazione contenuta in LSCOLORS, variabile che, a questo punto, merita un attimo d’attenzione.
Il modo di definire LSCOLORS può apparire di primo acchitto molto brutto es:
LSCOLORS=exfxcxdxbxegedabagacad
Don’t panic, è tutto molto facile, LSCOLORS è definita, come ci dice zio man, da una stringa composta da 11 coppie del tipo “fb” dove f sta per “foreground” e b sta per “background” , a queste lettere va ovviamente sostituito il codice di colore che il terminale dovrà utilizzare:
a nero
b rosso
c verde
d marrone
e blu
f magenta
g celeste
h grigio chiaro
A nero grassetto (a quanto pare esce grigio)
B rosso grassetto
C verde grassetto
D marrone grassetto (a quanto pare esce giallo)
E blu grassetto
F magenta grassetto
G azzurro grassetto
H grigio chiaro grassetto (a quanto pare esce bianco)
x default
tutto ciò che ci resta da sapere ora è a cosa corrispondono le 11 coppie con le quali definiamo LSCOLORS, ed ovviamente anche questo è riportato nella man page:
1. directory
2. symbolic link
3. socket
4. pipe
5. executable
6. block special
7. character special
8. executable with setuid bit set
9. executable with setgid bit set
10. directory writable to others, with sticky bit
11. directory writable to others, without sticky bit
e questo è quanto.
Tutto ciò che ci resta da fare è andare ad editare opportunamente il file /etc/bashrc oppure il file ~/.bash_profile inserendo:
export CLICOLOR=1
export LSCOLORS=exfxcxdxbxegedabagacad
una votla salvate le modifiche e riavviato il terminale il gioco è fatto.
Osservate che quella quissù riportata è la configurazione default di LSCOLORS, praticamente identica all'output che darebbe il semplice ls -G, ma in base a quanto visto fino ad ora, posso personalizzare la stringa e fare in modo che ad esempio, le cartelle, mi appaiano di un volgarissimo “verde su sfondo magenta”, tutto ciò che devo fare è modificare la stringa in questo modo:
cffxcxdxbxegedabagacad
e la cosa kitsch è fatta.
Beh, questo è tutto. . .spero che qualcuno possa trovare nella semplicità di questo tutorial qualcosa di utile od istruttivo.
Buon divertimento.