6 999
contributi
S3v (discussione | contributi) Nessun oggetto della modifica |
|||
Riga 40: | Riga 40: | ||
===Editing della linea di comando=== | ===Editing della linea di comando=== | ||
Alcuni tasti di scelta rapida per l'editing da linea di comando: | Alcuni tasti di scelta rapida per l'editing da linea di comando: | ||
: '''< | : '''<code>CTRL+a</code>''': Vai all'inizio delle linea | ||
: '''< | : '''<code>CTRL+e</code>''': Vai alla fine della linea | ||
: '''< | : '''<code>CTRL+k</code>''': Cancella fino dalla posizione corrente alla fine della linea | ||
: '''< | : '''<code>CTRL+u</code>''': Cancella fino dalla posizione corrente all'inizio della linea | ||
: '''< | : '''<code>CTRL+l</code>''': Pulisce lo schermo | ||
: '''< | : '''<code>META+f</code>''': Vai una parola avanti | ||
: '''< | : '''<code>META+b</code>''': Vai una parola indietro | ||
: '''< | : '''<code>META+d</code>''': Cancella la parola successiva | ||
: '''< | : '''<code>META+backspace</code>''': Cancella la parola precedente | ||
{{Box|Nota sul tasto META|Il tasto Meta può essere usato premendo <code>ALT</code> e ''contemporaneamente'' il carattere del comando che interessa, oppure premendo <code>ESC</code> e ''successivamente'' il tasto del comando che interessa. In quest'ultimo modo non è necessario premere due tasti contemporaneamente. Questa è una regola generica per gli shortcut di bash che usano il tasto Meta.}} | {{Box|Nota sul tasto META|Il tasto Meta può essere usato premendo <code>ALT</code> e ''contemporaneamente'' il carattere del comando che interessa, oppure premendo <code>ESC</code> e ''successivamente'' il tasto del comando che interessa. In quest'ultimo modo non è necessario premere due tasti contemporaneamente. Questa è una regola generica per gli shortcut di bash che usano il tasto Meta.}} | ||
Riga 81: | Riga 81: | ||
</pre> | </pre> | ||
richiama ed esegue il | richiama ed esegue il terzultimo comando, mentre: | ||
<pre> | <pre> | ||
Riga 146: | Riga 146: | ||
=== Manipolazione delle stringhe === | === Manipolazione delle stringhe === | ||
Nelle shell *nix, storicamente, la manipolazione delle stringhe viene fatto attraverso programmi esterni alla shell come seq, awk e perl. Questi programmi vengono ancora usati quando si vuole mantenere la compatibilità con la shell < | Nelle shell *nix, storicamente, la manipolazione delle stringhe viene fatto attraverso programmi esterni alla shell come seq, awk e perl. Questi programmi vengono ancora usati quando si vuole mantenere la compatibilità con la shell <code>'''sh'''</code>, tuttavia imparare anche il solo sed (il più semplice dei tre) non è cosa immediata. | ||
Se si usa Bash, non è necessario usare nessun programma esterno, ma basta imparare i tre operatori fondamentali ed alcuni concetti di base, per poter fare tutte le manipolazioni più comuni. | Se si usa Bash, non è necessario usare nessun programma esterno, ma basta imparare i tre operatori fondamentali ed alcuni concetti di base, per poter fare tutte le manipolazioni più comuni. | ||
In Bash una stringa non è altro che una variabile, si indica dunque con < | In Bash una stringa non è altro che una variabile, si indica dunque con <code>${nome}</code> oppure con la forma abbreviata <code>$nome</code>. Il nome dentro le graffe può essere seguito da un modificatore che manipola la variabile, ad esempio: | ||
<pre>VAR="stringa-di-esempio" | |||
echo ${VAR#stringa-}</pre> | |||
elimina "stringa-" dall'inizio della variabile. | elimina "stringa-" dall'inizio della variabile. | ||
Riga 159: | Riga 159: | ||
I modificatori sono molti, ma possono essere facilmente ricordati se si imparano i tre fondamentali: | I modificatori sono molti, ma possono essere facilmente ricordati se si imparano i tre fondamentali: | ||
; < | ; <code>#</code> : sottrae dall'inizio della stringa ''(minimale)'' | ||
; < | ; <code>%</code> : sottrae dalla fine della stringa ''(minimale)'' | ||
; < | ; <code>/</code> : sostituisce una sottostringa con un'altra ''(solo la prima volta che viene incontrata)'' | ||
Questi operatori sono minimali, questo vuol dire che se si usano le espressioni regolari per indicare la sottostringa (da eliminare o sostituire) verrà individuata in caso di ambiguità la sottostringa più piccola (o solo la prima nel caso della sostituzione). | Questi operatori sono minimali, questo vuol dire che se si usano le espressioni regolari per indicare la sottostringa (da eliminare o sostituire) verrà individuata in caso di ambiguità la sottostringa più piccola (o solo la prima nel caso della sostituzione). | ||
Riga 167: | Riga 167: | ||
Per ottenere gli operatori massimali basta raddoppiare il simbolo: | Per ottenere gli operatori massimali basta raddoppiare il simbolo: | ||
; < | ; <code>##</code> : sottrae dall'inizio della stringa ''(massimale)'' | ||
; < | ; <code>%%</code> : sottrae dalla fine della stringa ''(massimale)'' | ||
; < | ; <code>//</code> : sostituisce una sottostringa con un'altra ''(tutte le volte che viene incontrata)'' | ||
Gli operatori massimali cercano di individuare la sottostringa più grande che corrisponde all'espressione regolare (nel caso del modificatore '''//''' tutte le sottostringhe vengono sostituite). Gli operatori di questo tipo vengono comunemente chiamati anche ''greedy (ingordi)''. | Gli operatori massimali cercano di individuare la sottostringa più grande che corrisponde all'espressione regolare (nel caso del modificatore '''//''' tutte le sottostringhe vengono sostituite). Gli operatori di questo tipo vengono comunemente chiamati anche ''greedy (ingordi)''. | ||
Per una spiegazione dettagliata di tutti i modificatori e anche di altri modi di manipolare le stringhe in Bash (ad esempio < | Per una spiegazione dettagliata di tutti i modificatori e anche di altri modi di manipolare le stringhe in Bash (ad esempio <code>expr</code>) vedere: | ||
* [http://www.tldp.org/LDP/abs/html/string-manipulation.html Advanced Bash-Scripting Guide: Manipulating Strings] | * [http://www.tldp.org/LDP/abs/html/string-manipulation.html Advanced Bash-Scripting Guide: Manipulating Strings] | ||
Riga 179: | Riga 179: | ||
==== Esempi: manipolazione delle stringhe ==== | ==== Esempi: manipolazione delle stringhe ==== | ||
<pre>VAR="questa.sarebbe.una.stringa.di.esempio" | |||
# Risultato: | # Risultato: | ||
Riga 190: | Riga 190: | ||
echo ${VAR/st/ST} # --> queSTa.sarebbe.una.stringa.di.esempio | echo ${VAR/st/ST} # --> queSTa.sarebbe.una.stringa.di.esempio | ||
echo ${VAR//st/ST} # --> queSTa.sarebbe.una.STringa.di.esempio | echo ${VAR//st/ST} # --> queSTa.sarebbe.una.STringa.di.esempio</pre> | ||
===Alternativa a basename=== | ===Alternativa a basename=== | ||
Riga 204: | Riga 204: | ||
=== Cambiare l'estensione ai file === | === Cambiare l'estensione ai file === | ||
Rinomina tutti i file < | Rinomina tutti i file <code>*.txt</code> della directory corrente in <code>*.log</code>: | ||
<pre>for f in *.txt; do mv "$f" "${f/%txt/log}"; done</pre> | |||
==Link== | ==Link== |
contributi