I Metacaratteri 

0
(0)

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

/ 5
Grazie per aver votato!
Vuoi abilitare le notifiche?
Desiderate avere la possibilita’ di ricevere delle notifiche? Se si avrete la possibilita’ di essere sempre aggiornati con le nostre ultime proposte o notizie . Consigliamo l’adesione Grazie !
Attiva

How useful was this post?

Click on a star to rate it!

Average rating 0 / 5. Vote count: 0

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

Vai alla barra degli strumenti