next up previous contents
Next: Anche il file discende Up: Le operazioni con i Previous: Cambiamo nome. (mv)   Contents

Guardare dentro un file (cat, head, tail, more, less, grep, lpr)

Finora avete giocato a taglia e cuci con i file, ma non avete ancora visto cosa c' dentro. Bisogna premettere che esistono quattro tipi di file:

  1. File ordinari;
  2. File device (cio ``finti'' che si riferiscono ad una periferica);
  3. Le directory (abbiate pazienza, le vedremo in seguito);
  4. I link simbolici (abbiate ancora pi pazienza :).
Quelli che noi abbiamo trattato finora e di cui tratteremo fino alla fine del capitolo sono file ordinari, che a loro volta sono di due tipi fondamentali:

  1. I file di testo (in inglese text files), che contengono solo caratteri alfanumerici e che Unix pu visualizzare bene;
  2. I file binari (in inglese binary files), che contengono codici speciali e che sembrano scritti da scimmie quando vengono visualizzati sullo schermo.
I file delle immagini, dei database, dei fogli di calcolo, della video scrittura e quasi tutto il resto fanno parte del secondo tipo. Per visualizzare un file di testo sullo schermo si utilizza il comando cat:




width


$ cat nome_file_da_visualizzare


width

Potreste decidere ora di dare un'occhiata al file del primo canto della Divina Commedia:




width


quest@medialab:$ cat canto


width

Se invece provate ad utilizzare cat con un file di tipo immagine o di qualunque altro tipo vedremo scorrere sullo schermo il dialetto meridionale di un abitante di Marte ma provateci:




width


quest@medialab:$ cat freaknet.gif 
GIF87AVqgv1/a`R Sq L@ W@p3Ybt>) 5{S[{8sft Gwe r@6rY%O9 
q`J?|b[cTDgX'o9qeF7kjhE%cG@a#erar |&+[G0b\DK{u:?,Wxt_Z 
||+,(y xc{#D{R#-49 r>'cYs{c!bEv J ;% qqMy#yow]lYFuhhF` 
I @Ox%MA# Ux>v(u?u:}_v)rZ(ao-?f tyViuuqtF %pkxqkbBciJ( 
Tdsct aB N %FYZ[@Kz 1q||I#`O{pe4FwKf<Pr>X`n A)c6]08k` 
s?iI#F`bUpG(QP8rRi|pM|tamrp>rpI(OR@-yQop|_NJX!=r9uq 
$$!SKoo<cAc%aHCU\oBvu 
quest@medialab:$


width

Il programma cat nonostante la sua bont ha una pecca, se il file che vorremmo vedere troppo lungo ci scorre via davanti agli occhi senza che noi possiamo leggere niente. Per vedere solo le prime dieci righe di un file c' il comando head. Proviamo a leggere le prime dieci righe del primo Canto della Divina Commedia:




width


quest@medialab:$ head canto 
LA DIVINA COMMEDIA 
di Dante Alighieri INFERNO 
 
 
 
 
<B>Inferno: Canto I</B> 
 
 
Nel mezzo del cammin di nostra vita 
mi ritrovai per una selva oscura


width

Se al contrario invece volessimo sapere che fine hanno fatto Dante e Virgilio alla fine del primo Canto dovremmo usare il comando tail.




width


quest@medialab:$ tail canto 
tal era io a quella vista nova: 
veder voleva come si convenne 
l'imago al cerchio e come vi s'indova; 
ma non eran da ci le proprie penne: 
se non che la mia mente fu percossa 
da un fulgore in che sua voglia venne 
A l'alta fantasia qui manc possa; 
ma gi volgeva il mio disio e 'l <I>velle</I>, 
s come rota ch'igualmente mossa, 
l'amor che move il sole e l'altre stelle.


width

Ora se invece volessimo vedere, finalmente, tutto il contenuto di un file di testo e scorrerlo con calma, dovremmo usare i comandi more e less. Proviamo a digitare:




width


quest@medialab$ more canto 
LA DIVINA COMMEDIA 
di Dante Alighieri INFERNO 
 
 
 
 
<B>Inferno: Canto I</B> 
 
 
Nel mezzo del cammin di nostra vita 
mi ritrovai per una selva oscura 
che la diritta via era smarrita. 
Ahi quanto a dir qual era cosa dura 
esta selva selvaggia e aspra e forte 
che nel pensier rinova la paura! 
Tant' amara che poco pi morte; 
ma per trattar del ben ch' vi trovai, 
dir de l'altre cose ch' v'ho scorte. 
Io non so ben ridir com' v'intrai, 
tant'era pien di sonno a quel punto 
che la verace via abbandonai. 
Ma poi ch' fui al pi d'un colle giunto, 
l dove terminava quella valle 
-More-(0%)


width

come possiamo vedere in fondo alla pagina c' un indice che ci dice quale percentuale abbiamo visto fin'ora del documento che stiamo leggendo, nel nostra caso (0%). Con more il testo si scorre premendo in tasto invio. Proviamo ora ad usare less.




width


quest@medialab$ less canto 
LA DIVINA COMMEDIA 
di Dante Alighieri INFERNO 
 
 
 
 
<B>Inferno: Canto I</B> 
 
 
Nel mezzo del cammin di nostra vita 
mi ritrovai per una selva oscura 
ch la diritta via era smarrita. 
Ahi quanto a dir qual era cosa dura 
esta selva selvaggia e aspra e forte 
che nel pensier rinova la paura! 
Tant' amara che poco pi morte; 
ma per trattar del ben ch' vi trovai, 
dir de l'altre cose ch' v'ho scorte. 
Io non so ben ridir com' v'intrai, 
tant'era pien di sonno a quel punto 
che la verace via abbandonai. 
Ma poi ch' fui al pi d'un colle giunto, 
l dove terminava quella valle 
canto 1/14753 0% 


width

il risultato pi o meno identico; cambia l'indice in basso, che sta volta ci indica pure a che riga stiamo leggendo. In less il testo si scorre utilizzando i tasti cursore.

Ora che sappiamo come leggere un file vorremmo anche cercarci dentro le cose che ci interessano, magari vorremmo sapere tutte le righe del primo canto della Divina commedia in cui compare la parola Dio.

A questo scopo ci pu aiutare il commando grep:




width


$ grep parola_che_vogliamo_cercare file_in_cui_cercare


width

per esempio:




width


quest@medialab:$ grep dio canto 
vagliami l lungo studio e l grande amoren fiamma d'esto 
incendio non m'assale.che nvidiosi son d'ogne altra sorte.da 
fastidiosi vermi era ricolto.Ovidio l tergo, e l'ultimo 
Lucano.che con misura nullo spendio ferci.portando dentro 
accidioso fummo: D'ogne malitia, ch'odio in cielo 
acquista,quelle fiere selvagge che n odio hannolo ncendio e 
giace dispettoso e torto,gent' avara, invidiosa e superb:del 
misero Sabello e di Nasidio, Taccia di Cadmo e d'Aretusa 
Ovidio;converte poetando, io non lo nvidio;


width

Come previsto grep vi ha mostrato tutte le righe in cui lui ha trovato la stringa dio. Attenti all'uso di grep, perch il programma ha trovato anche i versi in cui dio non una parola, ma solo parte di una parola pi grande, come oDIO o inviDIOso.

Ora se noi avessimo una stampante potremmo anche stampare, basta usage il commando lpr:




width


$ lpr nome_file_da_stampare


width

quindi volendo stampare il primo Canto della Divina Commedia dovrete digitare:




width


quest@medialab:$ lpr canto 
quest@medialab:$ 


width


next up previous contents
Next: Anche il file discende Up: Le operazioni con i Previous: Cambiamo nome. (mv)   Contents
angelo 2003-02-09