next up previous contents index
Next: Il punto interrogativo Up: Metacaratteri Previous: Metacaratteri

Cosa succede realmente?

Buona domanda. In realtà ci sono due caratteri speciali che vengono intercettati dalla shell bash . Il carattere `` *'', un asterisco, dice ``sostituisci questa parola con tutti i file che verificano questa specifica''. In questo modo, il comando cp data* ~/backup, come nell'esempio precedente, viene cambiato in cp data-new data1 data2 data5 ~/backup prima di venire eseguito. Per vedere come funziona introduciamo un nuovo comando, echo . echo è un comando estremamente semplice; rimanda sullo schermo o stampa ogni parametro. Cioè:
71#71
Come potete vedere, la shell espande il metacarattere e passa tutti i file al programma che volete sia eseguito. Questo solleva una domanda interessante: cosa succede se non ci sono file che incontrano le specifiche del metacarattere? Provate echo /rc/fr*og e guardate cosa succede...bash passa testualmente la stringa con il metacarattere al programma. Bisogna dire anche che altre shell, come tcsh , invece di passare testualmente il metacarattere, rispondono No match. Ecco lo stesso comando sotto tcsh:
72#72
L'ultima cosa che chiederete è come fare se volete che sullo schermo compaia data*, al posto della lista dei nomi dei file? Beh, sia sotto bash che tcsh, basta racchiudere la stringa tra virgolette:



73#73



oppure


74#74




next up previous contents index
Next: Il punto interrogativo Up: Metacaratteri Previous: Metacaratteri
Eugenia Franzoni
1998-09-29