Guida sulla ricerca delle informazioni in Linux (testo in lavorazione): | ||
---|---|---|
Indietro | Capitolo 2. Modelli di occorrenza (o pattern matching) | Avanti |
Frequenti:
* | Nessuno o qualsiasi altro carattere |
? | Un carattere qualsiasi |
[ ] | Delimitatori di possibili caratteri nella posizione di un carattere |
^ o ! | Ponendo dentro [ ] dopo [ uno dei due caratteri farà funzionare la delimitazione facendo valere l'opposto |
- | Si possono introdurre dentro [ ] singoli trattini per descrivere delle serie di caratteri |
Meno frequenti:
{ } | Come [ ] ma per delimitare un elenco, separato da virgole, di caratteri in successione |
Di interpretazione:
\ | Informa che il seguente carattere non deve essere interpretato come speciale |
Caratteri che possono richiedere \: \, $, %, #, ^, ?, [, ], |, !, *; fuori da virgolette per: lo spazio, &, <, >, {, };
Visto la compresenza di differenti modi di costituzione di modelli di occorrenza nell'interazione con la shell e l'estensione del problema per alcune direttive offerte da una shell[1] è bene sapere come evitare interferenze, i caratteri speciali sono interpretati in primo luogo dalla shell, nel caso questi non siano utili a trovare occorrenze con i nomi di file della directory corrente allora l'interpretazione passa al programma richiesto, per evitare dunque la sostituzione della shell nei casi in cui avverrebbe si può utilizzare la sbarra \ oppure le virgolette 'modello' (forma preferibile; nella tastiera italiana l'apostrofo sotto il punto interrogativo) o “modello”. Esempio:
voltaire:/ # locate ? / voltaire:/ # locate \? / voltaire:/ # locate '\?' voltaire:/ # |
Nella prima richiesta la shell cerca un nome di file nella directory corrente dalle dimensioni di un carattere soltanto e non trovandolo ha passato ? a locate così assumendo lo stesso valore della seconda richiesta, qui viene trovata l'unica occorrenza possibile, con il punto di partenza del file system principale, nella terza richiesta non c'è nessuna occorrenza poiché non esistono nomi di file con ?.
* e ?
find / -iname '??????????'
find va ad occorrere con tutti i nomi di file trovati con una lunghezza di 10 caratteri.
ls *.???
Occorre con tutti (*) i nomi di file presenti che hanno dopo il punto tre caratteri (???) e quindi visualizza con ls.
[ ]
*[0-9]
Occorre con ciò che termina con un valore numerico qualsiasi.
*[0-1][0-9]
Occorre con ciò che termina con una numero inferiore a 20 (01, 02, 03...).
[^Ll]eggimi
Può occorrere con Reggimi o reggimi, ma non deve essere Leggimi o leggimi
[a-zA-Z]* (valido meno volte [a-Z])
Occorre con ciò che inizia con una lettera dell'alfabeto, sia maiuscola che minuscola.
*[a-dJQ-Z]
Occorre con ciò che termina con: una lettera che va da a a d, J, una lettera che va da Q a Z.
[a-d]*[a-d]?
Occorre con ciò che inizia con una lettera che va da a a d, seguita da qualsiasi carattere in qualsiasi quantità, ma che deve terminare con una lettera che va da a a d più un carattere qualsiasi.
{ }
ls *.{html,sgml}
Occorre con tutti i file terminanti con .html e .sgml.
\
\[abc\]*
Occorre con tutto ciò che inizia con [abc].
'##*'(oppure: \#\#*)
Occorre con ciò che inizia con ##.
[1] | Ad esempio $ che all'inizio di una parola identifica una variabile di shell, un esempio: # echo $PATH |