Tabella Software: differenze tra le versioni

(→‎Audio player: inseriti link)
Riga 1: Riga 1:
==Intro==
=Introduzione=
'''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 pi� ampio numero di "trucchi" pi� o meno noti riguardanti Bash, senza avere peraltro la pretesa di coprire tutte le funzionalit�.
=Tabella Software=
{| {{Prettytable}} width="100%"
| align="center" | '''Closed Source'''
| align="center" | '''Free Software'''


==Per iniziare==
|-
Prima di iniziare non posso non segnalare altre due guide presente sul wiki che danno dei tip molto utili su Bash:
| align="center" colspan="2" |
===Browser Web===
|-


* [[Come abilitare il completamento automatico 'avanzato']]
|[http://www.microsoft.it Internet Explorer]
* [[Colorare bash]]


==Shell Interattiva==
[http://www.opera.com Opera]
In questa sezione verranno elencate funzionalit� riguardanti l'uso interattivo di Bash.


===Navigare velocemente tra le directory===
|[http://www.mozilla.org/products/firefox/ Firefox]
* Per andare sulla propria '''home''' basta digitare il comando '''cd''' senza nessun paramentro.
* Per tornare indietro alla precedente directory visitata � sufficiente il comando '''cd -'''
* 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===
[http://www.kde.org Konqueror]
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:
[http://galeon.sourceforge.net/ Galeon]
<pre>
$ mkdir /usr/local/nuovo-programma
$ cd ESC.
</pre>


Altro esempio forse un p� pi� utile, creare velocemente uno script:
[http://www.mozilla.org/ Mozilla]
<pre>
$ :> /usr/local/bin/nomescript
$ chmod +x ESC.
$ gvim ESC.
</pre>


===Editing della linea di comando===
|-
Alcuni tasti di scelta rapida per l'editing da linea di comando:
| align="center" colspan="2" |
: '''<tt>CTRL+a</tt>''': Vai all'inizio delle linea
===Client Email===
: '''<tt>CTRL+e</tt>''': Vai alla fine della linea
|-
: '''<tt>CTRL+k</tt>''': Cancella fino dalla posizione corrente alla fine della linea
: '''<tt>CTRL+u</tt>''': Cancella fino dalla posizione corrente all'inizio della linea
: '''<tt>CTRL+l</tt>''': Pulisce lo schermo
: '''<tt>META+f</tt>''': Vai una parola avanti
: '''<tt>META+b</tt>''': Vai una parola indietro
: '''<tt>META+d</tt>''': Cancella la parola successiva
: '''<tt>META+backspace</tt>''': Cancella la parola precedente


{{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.}}
| Outlook


===Uso avanzato dello storico===
Outlook Express
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====
Eudora
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 pu� eseguire con INVIO oppure editare con CTRL+j.
| [[ Software:evolution | Evolution ]]


====Ricerca nella cronologia====
[[ Software:thunderbird | Thunderbird ]]
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:
[[ Software:kmail | Kmail ]]


<pre>
[[ Software:sylpheed | Sylpheed ]]
# 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!
| align="center" colspan="2" |
===Chat/IM===
|-


====Accesso diretto====
| [http://www.mirc.com/ Mirc]
Il carattere ! permette di richiamare un preciso comando dello storico:


<pre>
| [[Software:xchat | Xchat]]
$ !-3
</pre>


richiama ed esegue il terzultimo comando, mentre:
[[Software:konversation | Konversation]]


<pre>
|-
$ !ta
</pre>


richiama ed esgue l'ultimo comando che comincia con '''ta''' (potrebbe essere: tail -f /var/log/messages). Il '''!!''' richiama invece l'ultimo comando.
| [http://www.icq.com/ Icq]


Se si vuole richiamare il comando ma non eseguirlo si pu� usare il modificatore :p (''print''), ad esempio
[http://www.msn.it Msn]


<pre>
| [[Software:kopete | Kopete]]
$ !ta:p
</pre>


stampa l'ultimo comando che inizia con ''ta''.
[[Software:gaim | Gaim]]


Per richiamare l'ultimo comando che contiene una certa parola (non all'inizio):
|}
 
<pre>
$ !?parola?
</pre>
 
E' possibile anche richiamare un parametro di un comando usando ''':''' seguito dal numero del parametro (0 indica il comando stesso). Ad esempio:
 
<pre>
$ man !-1:0
</pre>
 
visualizza la pagina di manuale dell'ultimo comando.
 
Per eseguire un comando con gli stessi argomenti del comando precedente:
 
<pre>
$ nuovocomando !!:1*
</pre>
 
==Bash Scripting==
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===
 
; $? : 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 � quindi in genere consigliato rispetto a '''$*''' che ha la stessa funzione ma non quota i vari parametri.
 
''Esempio:''
<pre>
FILES=$@
 
for file in $FILES; do
    # Fare quello che si vuole con $file
    echo $file 
    # ...
done
</pre>
 
; $$ : PID del processo corrente.
 
; $! : PID dell'ultimo job in background
 
===Alternativa a basename===
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:
<pre>
usage () {
        echo "usage: ${0##*/} "
        exit 1
}
</pre>
 
=== Cambiare l'estensione ai file ===
Rinomina tutti i file <tt>*.txt</tt> della directory corrente in <tt>*.log</tt>:
 
for f in *.txt; do mv "$f" "${f/%txt/log}"; done
 
Per una panoramica completa sulla manipolazione delle stringhe in bash:
 
* [http://www.tldp.org/LDP/abs/html/string-manipulation.html Advanced Bash-Scripting Guide: Manipulating Strings]
 
==Link==
Link ad altre risorse su '''GNU Bash''':
 
* [http://www.gnu.org/software/bash/manual/bash.html Bash Referece Manual]: manuale ufficiale
* [http://www.tldp.org/LDP/abs/html/ Advanced Bash-Scripting Guide]: la '''Bibbia''' dello bash scripting.
 
----
 
Autore iniziale: [[Utente:TheNoise|~ The_Noise]]
1 760

contributi