Linux: Colorare la shell
Inizio questo articolo salutando i lettori, dato che questo e’ il mio primo post. Sono BoySka, e sono stato “arruolato” da poco nella redazione di MultimediaZone. Nei miei articoli parlero’ soprattuto di GNU/Linux, presentando tutto cio’ che a mio parere rende la mia box piu’ divertente da usare.
Il tema di oggi e’ la shell, l’interprete dei comandi in Linux (quella che molti chiamano la “riga di comando”). In Linux si puo’ scegliere la shell che piu’ ci aggrada, ma il 90% degli utenti usa la shell bash. Se c’e’ una cosa che proprio non mi puo’ andare giu’ e’ la sua “tristezza”: bianco su nero, non c’e’ proprio niente di piu’ bello? E poi il prompt sembra essere a volte troppo lungo, a volte carente di informazioni!
Pensiamo a un classico prompt:
[boyska@my_station directory] $
In questo prompt ci viene detto il nostro nome utente, il nome della macchina su cui siamo loggati, e il nome della directory in cui ci troviamo (NON il percorso completo). Ma se non siamo dei grandi utilizzatori di shell remote, e’ assolutamente superfluo sapere in che macchina ci troviamo! Abbiamo quindi un’informazoine di troppo che ruba spazio e crea disordine. Potrebbe essere molto piu’ comodo, per chi usa in modo intensivo la shell, poter visualizzare sempre l’ora, in modo da poter usare la shell come un orologio.
Personalizzare il prompt
Insomma, ognuno ha le sue esigenze e i suoi gusti: e per ognuno c’e’ un prompt adatto! Infatti il prompt si puo’ modificare tramite la variabile PS1. Ad esempio, se vogliamo un prompt che mostri solo il nome utente e la directory possiamo usare
PS1 = "\u \w$"
Come forse avrete intuito, una lettera preceduta da un backslash e’ una sequenza di escape. In modo analogo possiamo aggiungere qualunque campo, scegliendo le informazioni da mostrare. Ma come possiamo decidere anche il loro colore?
La risposta e’ quasi ovvia: altre sequenze di escape. Sebbene questo metodo possa sembrare obsoleto, si dimostra molto efficiente e intuitivo nella pratica.
Cosa ci si puo’ fare
Molto piu’ di quanto possa sembrare. Le informazioni disponibili tramite le sequenze di escape sono moltissime, ma ci si puo’ spingere ancora oltre: possiamo usare l’output di comandi dentro il nostro prompt! Questo ci permette di aggiungere un numero pressoche’ illimitato di informazioni, specie se si ha qualche conoscenza di programmazione. Io, ad esempio, ho un programma, chiamato shortpath che, dato un percorso /home/davide/documenti/bash/, mi restituisce la stringa “/h/d/d/”; ovvero il percorso in cui sono mostrate le sole iniziali delle directory superiori.Questo mi permette di capire quanto sono in “profondita’“. Segue poi il nome della directory corrente, in un colore diverso. (Per i piu’ attenti: si’, ho copiato questo comportamento da fish
).
Ci si puo’ davvero sbizzarrire, a seconda dell’uso che si fa della shell.
Una scelta comune e’ quella di mostrare il numero di file nella directory corrente, o la loro dimensione complessiva: questo e’ utile soprattutto a chi usa la shell per muoversi nel filesystem e spostare/copiare files.
Chi ha un portatile potrebbe essere interessato allo carica rimanente della batteria.
Un amministratore potrebbe voler colorare il suo prompt (o almeno una sua parte) di rosso, in modo da non confondere questa shell con quella da utente semplice (con tutti i rischi annessi e connessi)
Documentazione
Se tutto cio’ vi ha incuriosito, non vi resta che leggere questo ottimo howto.
Sono anche disponibili numerosi esempi[EN]: guardate, usate, leggete, migliorate, pubblicate!
Technorati Tags: bash, prompt, shell, linux, customization

Feed degli articoli




Michele D'Ascanio ha scritto,
il Novembre 1, 2007 @ 01:15
un po’ triste la bash, solo bianco e nero, pua’.
Una mia bash è verde con la scritta bianca. quando sono su un host+nomeutente lo sò perchè c’è scritto nomeHost@nomeutente, quindi non mi perdo. se voglio sapere l’ora: # date; - in quale cartella sono: # pwd; - quanto occupa la cartella e tutti i suoi files interni: # dh -h nomecartella - elencare i suoi files: ls -al –color alias di ls; - poi il file di configurazione per tutte le altre moltissime cose che vuoi modificare. esempio stupido. ho un’emoticon come prompt della mia bash shell su un host e un’altro diverso da qualche altra parte e configurato diversamente.
I colori della bash shell?
Dipendono da come accediamo alla bash. Se non hai X.org puoi scegliere tutti i colori che un terminale VT di consente. Pensi che ti possano bastare 50 colori per distinguere i files dalle cartelle, i socketi, i link, i files compressi etc?. A me, spesso, si. Però la mia versione di X mi permette con un click di cambiare colore dello sfondo, la tonalità, la trasparenza, la saturazione, etc e così anche per il testo, che può essere un file, bianco, una directory, verde, un link, giallo, un prompt, rosso(quello di root), un socket, viola per esempio.
Tutto questo per ogni shell acceduta dal mio X, sia essa locale o remota.
Che bello la bash colorata, grazie alla grafica di X.
ShortPath: « MultimediaZone ha scritto,
il Maggio 17, 2008 @ 16:50
[…] Colorare la shell vi avevo parlato dei modi in cui possiamo abbellire la nostra shell usando un prompt colorato che […]