3.3. I caratteri speciali (meta-caratteri) e le espressioni regolari nella shell

Probabilmente usate già i caratteri speciali (noti anche come meta-caratteri, o anche caratteri jolly) senza saperlo. Quando scrivete o cercate un file in Windows potete utilizzare il carattere * al posto di una sequenza di caratteri qualsiasi. Per esempio, scrivendo *.txt identificate tutti i file il cui nome finisce per .txt. Lo abbiamo anche utilizzato spesso nell'ultima paragrafo. Ma * non è l'unico carattere speciale di cui potete servirvi.

Quando digitate un comando come ls *.txt e premete Invio, il compito di individuare i file che corrispondono all'espressione *.txt non viene svolto dal comando ls, ma dalla shell stessa. Vediamo più in dettaglio in che modo la shell interpreta una linea di comando quando questa viene digitata. Quando scrivete:

$ ls *.txt
readme.txt  ricette.txt

prima di tutto la linea di comando viene suddivisa in parole (ls e *.txt in questo esempio). Quando la shell trova un carattere * in una parola, interpreterà la parola intera come un modello di meta-espansione e la sostituirà con i nomi di tutti i file che corrispondono al modello. Pertanto la linea di comando che viene effettivamente eseguita sarà ls readme.txt recipe.txt, che darà i risultati che abbiamo mostrato. Ci sono altri caratteri che vengono interpretati in modo simile dalla shell:

Ecco alcuni esempi con il relativo significato:

Note

[1]

Attenzione! Se questo è vero sotto GNU/Linux, potrebbe non esserlo per altri sistemi operativi basati su Unix. Questa caratteristica dipende dall'ordine di raggruppamento dei caratteri. Su alcuni sistemi [a-z] corrisponde a a, A, b, B, (...) , z. E non abbiamo neanche menzionato il fatto che alcune lingue hanno dei caratteri accentati...


Tux on Star from MandrakeSoft Linux è un marchio registrato di Linus Torvalds. Tutti gli altri marchi e copyright appartengono ai rispettivi proprietari.
Se non diversamente specificato, i diritti di tutto il contenuto di queste pagine e di tutte le immagini sono proprietà di MandrakeSoft S.A. e MandrakeSoft Inc. 2001.
http://www.mandrakelinux.com/