Home Linux Personaliziamo il terminale: alias e colori
Personaliziamo il terminale: alias e colori
Linux
Domenica 07 Febbraio 2010 11:02

E' possibile personalizzare il terminale per renderlo più comodo, sotto diversi aspetti.

Le uniche modifiche che ho fatto (che sono le uniche che mi servono) sono gli alias e i colori.

Possiamo fare modifiche sia a livello di sistema che di unico utente.

Io preferisco la seconda.

Per operare in questo modo dobbiamo modificare il file .bashrc nella home, e crearne una in /root (se non è già presente ovviamente).

Facendo così potete usare i colori in entrambi gli utenti (sennò quando diventate root ridiventerà tutto monocolor), e potete impostare gli alias a seconda del privilegio richiesto.

Ricordate di abilitare la visualizzazione dei file nascosti sennò non vedrete .bashrc.

Cominciamo con gli alias.

Alias

Altro non sono che scorciatoie.

In sostanza, perchè digitare ogni volta nmap -sS -O 192.168.1.1/24 quando al suo posto possiamo digitare semplicemente scan (o quello che volete)?.

Vi posto i miei alias, del mio utente:

alias ls='ls --color=auto'
alias mus='tree -h -N /media/personal/Personal/Musica > /media/personal/Personal/Documenti/musica.txt'
alias film='tree -h -L 1 --dirsfirst -N /media/matte320/Film-Video/ > /media/personal/Personal/Documenti/film.txt'
alias filmn='tree -h --dirsfirst -N /media/matte320/Film-Video-non-masterizzati/ > /media/personal/Personal/Documenti/filmn.txt'
alias 40='rsync -av --delete /media/personal/Personal/ /media/matte40/Personal'
alias 320='rsync -av --delete /media/personal/Personal/ /media/matte320/Personal'

E di root:

alias ls='ls --color=auto'
alias up='pacman -Syu'
alias zzz='s2ram -f -p -s'
alias scan='nmap -sS -O 192.168.1.1/24'
alias off='shutdown -h now'

Come vedete sono diversi: in root ho impostato comandi che richiedono privilegi di amministratore, come l'aggiornamento, lo spegnimento, ecc.

E' possibile anche impostare sudo nell'account normale, ma personalmente preferisco fare così.

Come al solito l'unico modo è provare.

Il primo alias di entrambi è impostato di default nella maggior parte delle distro linux e serve per colorare l'output di ls.

Venendo nello specifico se digitate ls vi verrà automaticamente colorato senza dover digitare ogni volta ls --color=auto.

Stessa cosa, ad esempio, con off.

Per spegnere il pc invece di digitare ogni volta shtudown -h now, digito solo off.

Comodo no?

Colori

Non sto parlando dei colori di ls, ma di questi:

Come vedete la parte iniziale (che indica con chi sei connesso, l'hostname e la directory di lavoro) è colorata invece di essere dello stesso colore dei comandi.

Ho impostato gli stessi colori e opzioni sia per il mio utente che per root.

Notate che questi colori colori sono indipendenti da quelli che potete scegliere dalle opzioni del terminale.

Infatti in genere il terminale parte con scritta nera su sfondo bianco.

A me non piace e quindi inverto i colori e imposto la trasparenza.

Poi vado in ./home/.bashrc e /root/.bashrc e faccio i cambiamenti specifici che vedete.

Nell'originale c'è una riga cos':

PS1='[\u@\h \W]\$ '

E io la cambo così:

if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
BLACK="\[\033[0;30m\]"
RED="\[\033[0;31m\]"
GREEN="\[\033[0;32m\]"                                                                                                                                                
BROWN="\[\033[0;33m\]"
BLUE="\[\033[0;34m\]"
PURPLE="\[\033[0;35m\]"
CYAN="\[\033[0;36m\]"
LIGHTGRAY="\[\033[0;37m\]"
DARKGRAY="\[\033[1;30m\]"
LIGHTRED="\[\033[1;31m\]"
LIGHTGREEN="\[\033[1;32m\]"
YELLOW="\[\033[1;33m\]"
LIGHTBLUE="\[\033[1;34m\]"
LIGHTPURPLE="\[\033[1;35m\]"
LIGHTCYAN="\[\033[1;36m\]"
WHITE="\[\033[1;37m\]"
NOCOLOR="\[\033[0m\]"
BOLD="\[\033[1m\]"

PS1="$LIGHTRED\u$YELLOW@$LIGHTGREEN\h $LIGHTBLUE\w$NOCOLOR\\$ "
export PS1

Non lasciatevi spaventare, in verità quello che interessa è la penultima riga, è li che si decide tutto.

Come vedete vengono impostate delle opzioni di visualizzazione con lo specifico colore.

Vi posto le varie opzioni:

\a     il carattere ASCII beep (07)
\d     la data nel formato "Giorno-della-settimana Mese Data" (e.g., "Tue May 26")
\e     un carattere di escape ASCII (033)
\h     l'hostname fino al primo `.'
\H     l'hostname
\n     il carattere "newline"
\r     il carattere "carriage return"
\s     il nome della shell, il nome base di $0  (la parte che segue lo slash finale)
\t     l'ora corrente nel formato 24-ore HH:MM:SS
\T     l'ora corrente nel formato 12-ore HH:MM:SS
\@     l'ora corrente nel formato 12-ore am/pm
\u     lo username dell'utente corrente
\v     la versione di bash (e.g., 2.00)
\V     la release di bash, versione + patchlevel (e.g., 2.00.0)
\w     la directory di lavoro corrente
\W     il nome di base della directory di lavoro corrente
\!     il numero cronologico (history number) di questo comando
\#     il numero di questo comando
\$     se l'UID effettivo è 0, un #, altrimenti un $
\nnn   il carattere corrispondente al numero ottale nnn
\\     un backslash
\[     comuncia una sequenza di caratteri non stampabili, che potrebbero essere usati per inserire una sequenza di controllo del terminale nel prompt \]     termina la sequenza di caratteri non stampabili

Il numero di comando e il numero della cronologia sono usualmente diversi: il numero della cronologia di una comando è la sua posizione nella lista della cronologia, che potrebbe includere comandi reintegrati dal file di cronologia (vedere HISTORY di seguito), mentre il numero di comando è la posizione nella sequenza di comandi eseguiti durante la sessione di shell attuale. Dopo che la stringa sia stata decodificata, e' espansa attraverso espansione di parametri, sostituzione di comandi, espansione aritmetica, rimozione di apici, soggetta al valore delle opzioni di promptvars della shell (vedere la descrizione del comando shopt sotto SHELL BUILTIN COMMANDS, di seguito).

Come vedete io ho le opzioni \u (lo user dell'utente corrente, nell'immagine è root), \h (che indica l'hostname, cne mio caso è mattearch), e \W (in verità li la w piccola, l'ho cambiata recentemente; la differenza la vedrete solo loggati come root).


Ho trovato recentemente un'altra modifica possibile.

Ve la posto (dal .bashrc di root):

# Check for an interactive session
[ -z "$PS1" ] && return

alias ls='ls --color=auto'
alias up='pacman -Syu'
alias zzz='s2ram -f -p -s'
alias off='shutdown -h now'
alias scan='nmap -sS -O 192.168.1.1/24'

if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
BLACK="\[\033[0;30m\]"
RED="\[\033[0;31m\]"
GREEN="\[\033[0;32m\]"                                                                                                                                                
BROWN="\[\033[0;33m\]"
BLUE="\[\033[0;34m\]"
PURPLE="\[\033[0;35m\]"
CYAN="\[\033[0;36m\]"
LIGHTGRAY="\[\033[0;37m\]"
DARKGRAY="\[\033[1;30m\]"
LIGHTRED="\[\033[1;31m\]"
LIGHTGREEN="\[\033[1;32m\]"
YELLOW="\[\033[1;33m\]"
LIGHTBLUE="\[\033[1;34m\]"
LIGHTPURPLE="\[\033[1;35m\]"
LIGHTCYAN="\[\033[1;36m\]"
WHITE="\[\033[1;37m\]"
NOCOLOR="\[\033[0m\]"
BOLD="\[\033[1m\]"

clear
echo -e '\e[1;36m';
echo "  ______  _____   _____  _______";
echo " |_____/ |     | |     |    |";
echo " |    \_ |_____| |_____|    |";
echo -e '\e[m';
echo "NON FARE CAZZATE :) "

PS1="$LIGHTRED\u$YELLOW@$LIGHTGREEN\h $LIGHTBLUE\w$NOCOLOR\\$ "
export PS1

Le righe che vanno da clear a "NON FARE CAZZATE :)".

Provate a fare delle modifiche e vedrete il risultato.

 

Buona personalizzazione!!

Ultimo aggiornamento Sabato 12 Febbraio 2011 16:01
 

Commenti  

 
+1 #1 pringo 2010-02-25 15:45
ottimo lavoro!!
Citazione
 
 
0 #2 RiKI 2010-10-27 18:52
Ciao, conosci per caso la sequenza di escape per sottolineare un testo nel terminale?
Citazione
 
 
0 #3 fermat 2010-10-27 22:26
escape per sottolineare??
bhe no.
se x caso trovo qualcosa in giro ti faccio sapere ma così su due piedi nn mi viene in mente :-?
Citazione
 

Aggiungi commento