58
contributi
Riga 1: | Riga 1: | ||
==Intro== | ==Intro== | ||
'''GNU Bash''' | '''GNU Bash''' � la shell *nix probabilmente pi� ricca di funzionalit� sia per l'uso interattivo che per lo scripting. Spesso per� molte funzioni sono poco note. | ||
Questa pagina ha lo scopo di raccogliere il | Questa pagina ha lo scopo di raccogliere il pi� ampio numero di "trucchi" pi� o meno noti riguardanti Bash, senza avere peraltro la pretesa di coprire tutte le funzionalit�. | ||
==Per iniziare== | ==Per iniziare== | ||
Riga 11: | Riga 11: | ||
==Shell Interattiva== | ==Shell Interattiva== | ||
In questa sezione verranno elencate | In questa sezione verranno elencate funzionalit� riguardanti l'uso interattivo di Bash. | ||
===Navigare velocemente tra le directory=== | ===Navigare velocemente tra le directory=== | ||
* Per andare sulla propria '''home''' basta digitare il comando '''cd''' senza nessun paramentro. | * Per andare sulla propria '''home''' basta digitare il comando '''cd''' senza nessun paramentro. | ||
* Per tornare indietro alla precedente directory visitata | * Per tornare indietro alla precedente directory visitata � sufficiente il comando '''cd -''' | ||
* E possibile salvare un percorso con '''pushd''' e richiamarlo con '''popd'''. In | * E possibile salvare un percorso con '''pushd''' e richiamarlo con '''popd'''. In realt� questi comandi (come il nome pu� fare intuire) implementano una coda FIFO (First In First Out) nella quale � possibile memorizzare un numero illimitato di percorsi per poi richiamarli dall'ultimo inserito in poi. Usare questi comadi � semplicissimo: basta usare '''pushd''' al posto i '''cd''' (in tal modo si memorizzano i percorsi via via visitati) e poi digitare '''popd''' una o pi� volte per tornare indietro. | ||
===Riutilizzo degli argomenti=== | ===Riutilizzo degli argomenti=== | ||
Bash memorizza l'ultimo argomento del comando precedente in una speciale variabile chiamata $_. E' possibile fare riferimento all'ultimo argomento dell'ultimo comando usando direttamente $_ ma la via di gran lunga | Bash memorizza l'ultimo argomento del comando precedente in una speciale variabile chiamata $_. E' possibile fare riferimento all'ultimo argomento dell'ultimo comando usando direttamente $_ ma la via di gran lunga pi� veloce � comoda � usare 'ESC .'. | ||
Ecco un esempio stupido, creare un directory ed entrarvi: | Ecco un esempio stupido, creare un directory ed entrarvi: | ||
Riga 27: | Riga 27: | ||
</pre> | </pre> | ||
Altro esempio forse un | Altro esempio forse un p� pi� utile, creare velocemente uno script: | ||
<pre> | <pre> | ||
$ :> /usr/local/bin/nomescript | $ :> /usr/local/bin/nomescript | ||
Riga 46: | Riga 46: | ||
: '''<tt>META+backspace</tt>''': Cancella la parola precedente | : '''<tt>META+backspace</tt>''': Cancella la parola precedente | ||
{{Box|Nota sul tasto META|Il tasto Meta | {{Box|Nota sul tasto META|Il tasto Meta pu� essere usato premendo ALT e ''contemporaneamente'' il carattere del comando che interessa, oppure premendo ESC e ''successivamente'' il tasto del comando che interessa. In quest'ultimo modo non � necessario permere due tasti conemporaneamente. Questa � una regola generica per gli shortcut di bash che usano il tasto Meta.}} | ||
===Uso avanzato dello storico=== | ===Uso avanzato dello storico=== | ||
Come noto Bash memorizza gli ultimi (solitamente 500 ma il numero | Come noto Bash memorizza gli ultimi (solitamente 500 ma il numero � impostabile in $HISTSIZE) comandi digitati ai quali � possibile accedere semplicemente con le freccette SU e GIU. Tuttavia � possibile effettuare molte altre operazioni per ricercare nello storico dei comandi. | ||
====Ricerca incrementale inversa==== | ====Ricerca incrementale inversa==== | ||
Sotto questo astruso nome si cela la | Sotto questo astruso nome si cela la possibilit� di ricercare nello storico dei comandi semplicemente premendo CRTL+r e digitando qualche carattere del comando cercato. Verr� immendiatamente mostrato l'ultimo comando che sottisfa i criteri di ricerca. Se pi� comandi soddisfano la ricerca � possibile scorrerli (dall'ultimo al primo) premendo nuovamente CTRL+r. | ||
Una volta trovato il comando lo si | Una volta trovato il comando lo si pu� eseguire con INVIO oppure editare con CTRL+j. | ||
====Ricerca nella cronologia==== | |||
Altra possibilit� � cercare tra tutti i comandi precedenti che cominciano con un certo gruppo di lettere. | |||
Questa funzionalit� non � abilitata di default; bisogna modificare il file /etc/inputrc (o creare un analogo file .inputrc nella propria home), aggiungendo le righe: | |||
<pre> | |||
# PgUp/Down searches history in bash | |||
"\e[5~": history-search-backward | |||
"\e[6~": history-search-forward | |||
</pre> | |||
In questo esempio si � scelto di usare i tasti PGUP e PGDOWN. | |||
Da notare che il file inputrc contiene altre comodit� pronte all'uso: basta decommentarle! | |||
====Accesso diretto==== | ====Accesso diretto==== | ||
Riga 71: | Riga 85: | ||
richiama ed esgue l'ultimo comando che comincia con '''ta''' (potrebbe essere: tail -f /var/log/messages). Il '''!!''' richiama invece l'ultimo comando. | richiama ed esgue l'ultimo comando che comincia con '''ta''' (potrebbe essere: tail -f /var/log/messages). Il '''!!''' richiama invece l'ultimo comando. | ||
Se si vuole richiamare il comando ma non eseguirlo si | Se si vuole richiamare il comando ma non eseguirlo si pu� usare il modificatore :p (''print''), ad esempio | ||
<pre> | <pre> | ||
Riga 100: | Riga 114: | ||
==Bash Scripting== | ==Bash Scripting== | ||
In questa sezione verranno elencati alcuni brevi tip per lo scripting Bash. Questa non vuole essere assolutamente una guida completa, ma | In questa sezione verranno elencati alcuni brevi tip per lo scripting Bash. Questa non vuole essere assolutamente una guida completa, ma pi�ttosto un elenco di costrutti per lo scripting bash particolarmente eleganti, curiosi e/o poco noti. | ||
===Variabili speciali=== | ===Variabili speciali=== | ||
Riga 106: | Riga 120: | ||
; $? : Contiene il valore di uscita dell'ultimo comando o funzione. Il comando ha successo se ritorna zero, qualsiasi altro valore indica invece un codice di errore. | ; $? : Contiene il valore di uscita dell'ultimo comando o funzione. Il comando ha successo se ritorna zero, qualsiasi altro valore indica invece un codice di errore. | ||
; $@ : Contiene la lista dei paramentri passati allo script corrente. Ogni parametro viene opportunamente quotato e questo permette l'utilizzo di questa variabile nei '''cicli for''' per processare (ad esempio) una lista di nomi di file che possono contenere anche spazi. L'uso di questa variabile | ; $@ : Contiene la lista dei paramentri passati allo script corrente. Ogni parametro viene opportunamente quotato e questo permette l'utilizzo di questa variabile nei '''cicli for''' per processare (ad esempio) una lista di nomi di file che possono contenere anche spazi. L'uso di questa variabile � quindi in genere consigliato rispetto a '''$*''' che ha la stessa funzione ma non quota i vari parametri. | ||
''Esempio:'' | ''Esempio:'' | ||
Riga 124: | Riga 138: | ||
===Alternativa a basename=== | ===Alternativa a basename=== | ||
Quando in uno script ci si deve riferire al nome dello script stesso | Quando in uno script ci si deve riferire al nome dello script stesso � usuale utilizzare il comando (esterno a bash) '''basename'''. Tuttavia Bash stessa � in grado di fornire questa funzionalit� usando la l'espressione ${0##*/}. | ||
Esempio: | Esempio: |
contributi