I Metacaratteri 

()

Un metacarattere o carattere jolly o wild character o wildcard character è un carattere che, all’interno di una stringa, non rappresenta se stesso bensì un insieme di altri caratteri o sequenze di caratteri.

Un esempio ben noto è rappresentato dai metacaratteri utilizzati dalle shell del sistema operativo Unix per la specifica dei nomi di file. In questo caso, per esempio il carattere “*” rappresenta una qualsiasi sequenza di caratteri (con la sola eccezione di caratteri di significato speciale come “.” e “/”), inclusa la sequenza vuota. Così, per esempio, il comando

rm *prova*

(dove rm sta per remove, rimuovi, e deve essere seguito dal nome del file da rimuovere) rimuoverà tutti i file il cui nome includa la sequenza “prova” (seguita o preceduta da qualsiasi altra sequenza). Il metacarattere “?” rappresenta invece uno, e un solo, carattere: così per esempio,

rm prova?

rimuoverà solo i file il cui nome sia composto esattamente da sei caratteri, della forma per esempio “prova1” “prova2” ecc. (ma non rimuoverà “prova12”).

I metacaratteri ovviamente sono convenzionali e ogni sistema informatico può utilizzarne un insieme diverso. Per esempio, l’interprete dei comandi di MS-DOS utilizza metacaratteri simili a quelli del sistema Unix, ma assegnando loro un significato differente.

Comune è l’uso del metacarattere % in sistemi che facciano uso di database che fanno uso di Structured Query Language in richieste SELECT LIKE, ad esempio:

SELECT anni FROM usertable WHERE username LIKE 'ma%'

Per ipotesi se gli utenti mario e massimo sono nella tabella usertable verranno selezionati ambedue.

Ecco un elenco dei metacaratteri:

? ogni carattere
* ogni stringa di caratteri
[set] ogni carattere in set
[!set] ogni carattere non in set

Dove set può essere una lista di caratteri (es. [abc]) oppure un intervallo (es. [a-c]) o una combinazione dei due.

Se la shell trova un’espressione contenente metacaratteri in una linea di comando, la espande con tutti i nomi di file che “soddisfano” (match) l’espressione (espansione di percorso). Per capire meglio come funziona l’espansione di percorso introduciamo un nuovo comando, echo. È un comando estremamente semplice: rimanda sullo schermo ogni parametro.

/home/rossi$ echo Ciao!
Ciao!
/home/rossi$ cd report
/home/rossi/report$ ls -F
data-new data1 data2 inittab pippo pippo2
/home/rossi/report$ echo data*
data-new data1 data2
/home/rossi/report$ echo data?
data1 data2
/home/rossi/report$ echo [!id]*
pippo pippo2
/home/rossi/report$
(Cosa accade se si esegue cd *?)

Caratteri speciali

NEWLINE – initiates command execution
; – separates commands on same line
( ) – groups commands or identifies a function
& – executes a command in the background
| – pipe
> – redirects standard output
>> – appends standard output
< – redirects standard input
* – wildcard for any number of characters in a file name
? – wildcard for a single character in a file name
– quotes the following character
’ – quotes a string preventing all substitutions
” – quotes a string allowing variable and command substitution
‘ – performs command substitution
[ ] – denotes a character class in a file name
$ – references a variable
– command grouping within a function
. – executes a command (if at beginning of line)
# – begins a comment
: – null command La shell di Unix

How useful was this post?

Click on a star to rate it!

Average rating / 5. Vote count:

No votes so far! Be the first to rate this post.

As you found this post useful...

Follow us on social media!

We are sorry that this post was not useful for you!

Let us improve this post!

Tell us how we can improve this post?