Cerca nel sito:
ricerca
avanzata

Frasi Celebri...

La morale ? (penso, in ultima analisi) Che l'uomo ? una bestia ingrata.

Hilarie Belloc 

Sondaggio:

In quale citt? vi piacerebbe vivere?

New York
Londra
Roma
Madrid
Parigi
Milano
Tokyo
Berlino
Altro

visualizza risultati


 

Personalizzare bash

Una delle caratteristiche della filosofia di Unix è che l'impostazione del sistema non vuole prevedere tutte le necessità dell'utente, ma tenta di rendere semplice per ciascuno modificarsi l'ambiente a seconda delle proprie necessità. Per questo vengono usati principalmente dei file di configurazione, noti anche come file init, file rc (per run control, controllo dell'esecuzione) o anche file punto, perché il loro nome di solito inizia con ".". Se vi ricordate, i file che hanno il nome che inizia con "." non vengono normalmente visualizzati da ls.

I file di configurazione più importanti sono quelli utilizzati dalla shell. La shell di default di Linux è bash , ed è di questa che parleremo in questo capitolo. Prima di vedere come personalizzare bash, bisogna sapere quali file utilizza.

Ci sono diversi modi in cui può essere eseguita bash, ad esempio come shell di login, che è come viene eseguita al login. La shell di login dovrebbe essere la prima che vedete.

Un'altra modalità in cui si esegue bash è come shell interattiva: una shell qualsiasi che presenti un prompt all'utente ed aspetti dei comandi. Una shell di login è anche interattiva. Un modo per ottenere una shell interattiva non di login è per esempio una shell all'interno di un xterm. Qualsiasi shell che viene creata in modo diverso dal login è una shell non di login.

Infine ci sono le shell non interattive, che sono usate per eseguire dei file di comandi, più o meno come i file batch di MS-DOS, quelli che finiscono in .BAT. Questi script di shell funzionano come dei mini-programmi; anche se sono generalmente molto più lenti di un normale programma compilato, è spesso vero che sono molto più semplici da scrivere.

A seconda del tipo di shell, al suo avvio vengono usati diversi file:

Tipo di shell Azione
Login interattivo Viene letto ed eseguito il file .bash_profile
Interattivo Viene letto ed eseguito il file .bashrc
Non interattivo Viene letto ed eseguito lo script di shell

 

Dato che la maggior parte degli utenti vogliono avere lo stesso ambiente in qualsiasi shell, interattiva, di login o no, iniziamo con un comando molto semplice da mettere nel file .bash_profile: "source ~/.bashrc". Il comando source dice alla shell di interpretare l'argomento come uno script di shell. Per noi questo significa che ogni volta che viene eseguito .bash_profile, viene eseguito anche .bashrc.

Ora aggiungeremo semplicemente dei comandi al file .bashrc. Se volete che un comando sia valido solo per una shell di login, aggiungetelo a .bash_profile.

Quali sono le cose che volete personalizzare? Ecco qualcosa che credo si trovi nel .bashrc del 90% degli utenti di bash:

alias ll="ls -l"

Questo comando ha definito un alias di shell con nome ll, che, quando viene richiamato dall'utente, si "espande" nel normale comando di shell ls -l. Quindi, assumendo che bash abbia letto quel comando dal file .bashrc, potete digitare semplicemente "ll" per avere l'effetto di ls -l nella metà delle digitazioni. Quello che accade è che quando digitate "ll" e premete , bash lo intercetta, dato che si aspetta degli alias, e lo sostituisce con ls -l. In realtà non c'è nessun programma che si chiama "ll" sul sistema, ma la shell traduce automaticamente l'alias in un programma valido.

Alcuni alias di esempio sono riportati di seguito:

alias ls="ls -F"   #da' i caratteri alla fine dell'elenco
alias ll="ls -l"   #ls speciale
alias la="ls -a"
alias ro="rm *~; rm .*~"   #elimina file di backup
alias rd="rmdir"   #risparmia battute!
alias md="mkdir"
alias pu=pushd     #pushd, popd, e dirs non sono stati
alias po=popd      #spiegati in questo manuale, forse
alias ds=dirs      #volete guardare di che si tratta nella
                   #manpage di bash

# questi sono solo scorciatoie da tastiera
alias to="telnet cs.oberlin.edu"
alias ta="telnet altair.mcs.anl.gov"
alias tg="telnet wombat.gnu.ai.mit.edu"
alias tko="tpalk kold@cs.oberlin.edu"
alias tjo="talk jimb@cs.oberlin.edu"

alias mroe="more"   #per correggere!
alias moer="more"
alias email="emacs -f rmail"   #il mio lettore di posta
alias ed2="emacs -d floss:0 -fg \"grey95\" -bg \"grey50\""   #un modo di richiamare Emacs

Li potete aggiungere al vostro .bashrc. Un alias particolarmente interessante è il primo; con quell'alias, quando qualcuno digita ls, automaticamente viene aggiunta l'opzione -F (l'alias non prova ad espandersi di nuovo). È un modo abbastanza comune per aggiungere delle opzioni che usate ogni volta che richiamate un programma. Notate i commenti con il carattere # . Quando appare un #, la shell ignora il resto della linea.

Potreste aver notato alcune strane cose su questi alias: ad esempio, in alcuni ho tralasciato le virgolette (come in pu). Rigorosamente parlando, le virgolette non sono necessarie quando avete solo una parola a destra del segno di uguale. Non è che mettere le virgolette faccia male, quindi non prendete cattive abitudini: dovreste usarle di sicuro se state per fare un alias di un comando con delle opzioni e/o argomenti:

alias rf="refrobnicate -verbose -prolix -wordy -o foo.out"

Inoltre, l'alias finale ha dei caratteri strani:

alias ed2="emacs -d floss:0 -fg \"grey95\" -bg \"grey50\""

Come potete aver indovinato, volevo passare le virgolette nelle opzioni stesse, quindi le ho dovute far precedere da una barra rovesciata in modo da evitare che bash pensasse che volevo segnalare la fine dell'alias.

Infine, ho messo come alias due comuni errori di battitura, mroe e moer, per il comando esatto, more. Gli alias non interferiscono con gli argomenti passati ad un programma. Funziona lo stesso se scrivete:

/home/larry# mroe hurd.txt

In effetti, sapere come creare gli alias è probabilmente almeno metà della personalizzazione della shell che farete mai. Sperimentate, scoprite quali comandi lunghi date spesso, e createne degli alias. Scoprirete che rende molto più piacevole lavorare al prompt della shell.

 

successivo
–«  INDICE  »–

 

 

 

 
Powered by paper&pencil (carta&matita ) - Copyright © 2001-2019 Cataldo Sasso