------------------------------------------------------------------------------ PERSONALIZZAZIONE DEL PROMPT DI SHELL HOW-TO ver 0.2 ------------------------------------------------------------------------------ Di: WhiteR4bbit (whiter4bbit[at]linuxmail[dot]org) linuxhowtos.altervista.org Licenza: FDL Ultimo aggiornamento: Maggio 2004 Testing: Debian sid (2.6.1); shell bash ------------------------------------------------------------------------------ Fonti e link utili: http://www.pcimprover.it/articoli/vedi.php/id=13 http://www.gentoo.it/tips/PERLE.V5.html http://www.pluto.linux.it/ildp/HOWTO/Bash-Prompt-HOWTO-9.html http://www.volalibero.it/aggiungere_variabili_ambiente.html ------------------------------------------------------------------------------ SOMMARIO: 0) Changelog 1) Introduzione 2) La variabile PS1 3) Colori 4) Rendere effettive le modifiche ------------------------------------------------------------------------------ 0) 0.2 [Maggio 2004] Corretti alcuni errori nella codifica dei caratteri 0.1 [Febbraio 2004] Documento originale 1) Introduzione Questo how-to è dedicato ai piu' smaliziati, a cui piacerebbe avere un prompt di shell personalizzato; cosa si intende con personalizzato? semplicemente che potrete modificarne la struttura e i colori come più preferite, alcuni esempi: [ username@localhost@12:37:01 ]$ {sab feb 01 - username} $ username[localhost]@/mnt/cdrom: % in cui ogni carattere o variabile avrà un colore da voi definito. 2) La variabile PS1 E' la variabile che vogliamo modificare per agire sull'aspetto del nostro prompt. Potrete assegnare ad essa un valore ed esportarlo, molto utile per fare delle prove al volo; il comando da utilizzare sarà dunque: $ export PS1='struttura_del_prompt' Dove struttura_del_prompt è la vostra personalizzazione del prompt di bash; queste sono le variabili che possono comporre il vostro prompt: \w Directory corrente \u Username \h Hostname (default=localhost) \d Data (dd mm gg) \t Ora corrente (hh:mm:ss) \s Nome della shell (default=bash) Vediamo dunque un paio di esempi di utilizzo: $ export PS1='{\s}\w:\u $' vi ritornerà  un prompt del genere: {bash}/home:username $ mentre con $ export PS1='(\d - \t)\u %' avrete (sab feb 07 - 22:14:54)username % e con $ export PS1='\u@\h using shell \s: $' otterrete username@localhost using shell bash: $ Credo che il concetto sia chiaro, potete disporre come meglio preferite variabili e caratteri, parole e spazi... l'unico limite è la vostra fantasia (e la vostra tastiera :P ). 3) Colori Ora passiamo alla fase di personalizzazione forse più divertente (e più complicata), ossia cambieremo i colori del nostro prompt. Ogni colore è rappresentato da un codice numerico che può essere di 5 tipi: 0;3x con x variabile, per i colori puri 1;3x con x variabile, per colori in grassetto 0;4x con x variabile, per avere il testo evidenziato nel colore scelto 0;38 per il testo sottolineato 1;38 per il testo grassetto sottolineato Ogni codice dovrà essere preceduto da \[\033[ e seguito da m\] per funzionare correttamente. Questi sono i colori disponibili: Nero 0;30 Grigio scuro 1;30 Evidenziato nero 0;40 Rosso 0;31 Rosso grassetto 1;31 Evidenziato rosso 0;41 Verde 0;32 Verde grassetto 1;32 Evidenziato verde 0;42 Giallo 0;33 Giallo grassetto 1;33 Evidenziato giallo 0;43 Blu 0;34 Blu grassetto 1;34 Evidenziato blu 0;44 Viola 0;35 Viola grassetto 1;35 Evidenziato viola 0;45 Azzurro 0;36 Azzurro grassetto 1;36 Evidenziato azzurro 0;46 Grigio 0;37 Bianco grassetto 1;37 Evidenziato grigio 0;47 Default 0;39 Sottolineato 0;38 Vediamo qualche esempio per capire meglio. Il mio consiglio è di utilizzare questa stringa le prime volte per fare delle prove, cambiando di volta in volta il codice del colore che volete provare: $ export PS1='\[\033[0;40m\]\u@\h \[\033[0;39m\]$' In questo caso state testando il testo evidenziato nero (codice 0;40), e vedrete il vostro username seguito da una chiocciola e dal nome dell'host così colorati, per poi ritornare al colore di default per stampare il simbolo '$' e il testo che scriverete in seguito. Sostituite a 0;40 il codice del colore che volete provare, e quando ci avrete preso un po' la mano datevi a combinazioni più fantasiose, ad esempio: $ export PS1='\[\033[0;36m\]{\t}\[\033[1;37m\]\u@\h$ \[\033[1;33m\]' così avrete un prompt del tipo {22:55:45}username@localhost$ in cui l'orario è azzurro, la parte centrale è in bianco grassetto, e i comandi che scriverete voi saranno in giallo grassetto. 4) Rendere effettive le modifiche Quando avrete trovato un prompt che vi piace particolarmente e vorrete tenerlo come prompt di default, dovrete andare a modificare il file ~/.bashrc dato che il comando export apporta delle modifiche solo temporanee; aprite suddetto file dunque con l'editor che preferite e cercate la sezione # set a fancy prompt PS1='\u@\h:\w\$ ' e modificatela o createla voi se non esiste; il succo del discorso sta nell'assegnare a PS1 un valore costante, per offrirvi un ulteriore esempio vi copio la mia attuale parte incriminata del file in questione: # set a fancy prompt ### default #PS1='\u@\h:\w\$ ' ### personalizzato PS1='\[\033[0;35m\][\[\033[1;37m\]\u@\h\[\033[0;35m\]]\[\033[1;37m\]\w \[\033[0;39m\]$' Una volta modificato il file, salvatelo e uscite, e per vedere aggiornate le modifiche senza bisogno di riavviare date il comando: $ source ~/.bashrc che d'ora in avanti potrete usare per tornare alle impostazioni scelte nel file se farete qualche errore durante i test di modifica del prompt. Ovviamente ogni utente ha nella sua home un file .bashrc perciò potete avere un prompt diverso per ogni utente (root compreso).