Download Linux Guida dell`Utente - ICAR-CNR

Transcript
6.1.1 Cosa succede realmente?
Buona domanda. In realta ci sono due caratteri speciali che vengono intercettati dalla
shell bash. Il carattere \*", un asterisco, dice \sostituisci questa parola con tutti i le
che vericano questa specica". 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 e un comando
estremamente semplice! rimanda sullo schermo o stampa ogni parametro. Cioe:
/home/larry$ echo Ciao!
Ciao!
/home/larry$ echo Come va?
Come va?
/home/larry$ cd report
/home/larry/report$ ls -F
1993-1
1994-1
data1
1993-2
data-new
data2
data5
/home/larry/report$ echo 199*
1993-1 1993-2 1994-1
/home/larry/report$ echo *4*
1994-1
/home/larry/report$ echo *2*
1993-2 data2
/home/larry/report$
Come potete vedere, la shell espande il metacarattere e passa tutti i le al programma che
volete sia eseguito. Questo solleva una domanda interessante: cosa succede se non ci sono
le che incontrano le speciche 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:
mousehouse>echo /rc/fr*og
echo: No match.
mousehouse>
L'ultima cosa che chiederete e come fare se volete che sullo schermo compaia data*, al posto