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