Next: Modificare file con Emacs
Up: Piccoli programmi potenti
Previous: Cosa c'è nel file?
Questa sezione discute i comandi che alterano un file, ci
eseguono una determinata
operazione o mostrano statistiche su di esso.
grep [-nvwx] [-numero] espressione [file1 file2 ...fileN]
Uno dei comandi più utili di UNIX è grep, il generalized regular expression parser (analizzatore generalizzato di
espressioni regolari). È un nome buffo per uno strumento che
ricerca del testo in un file solamente. Il modo più semplice per usare grep
è questo:
113#113
Uno svantaggio di questo comando è che, sebbene mostri tutte le linee
contenenti una
parola, non dice dove cercarla nel file--non dà nessun numero di
riga: può essere utile
secondo quello che state facendo. Per
esempio, se state cercando gli errori nell'output di un programma, potete
provare a.out | grep error, dove a.out è il nome del vostro
programma.
Se siete interessati alla posizione delle corrispondenze, usate l'opzione
n con grep per dirgli di stampare i numeri di riga. Usate
l'opzione v se volete vedere tutte le linee che non contengono
l'espressione specificata.
Un'altra caratteristica di grep è che verifica solo parti di
una
parola, come nel mio esempio precendente igre verifica tigre.
Per comunicare a grep di verificare solo parole intere, usate
l'opzione w; l'opzione x comunica a grep di controllare le
corrispondenze di linee intere.
Se non specificate nessun file, grep esamina lo stdin.
wc [-clw] [file1 file2 ...fileN]
wc sta per word count (conta parole).
Conta semplicemente il numero di parole, linee e caratteri nel/nei
file. Se non viene
specificato nessun file nella linea di comando, opera sullo stdin.
I tre parametri, clw, stanno rispettivamente per caratteri, linee e word (parole), e comunicano a wc quali dei tre
conteggiare. Così, wc -cw conta il numero di caratteri e di parole, ma
non il numero di linee. Per default, wc conta tutto--parole,
linee e caratteri.
Un uso semplice di wc è trovare quanti file sono presenti in una
directory: ls | wc -w. Se volete vedere quanti file finiscono
.c, provate ls *.c | wc -w.
spell [file1 file2 ...fileN]
spell è un comando UNIX di
controllo ortografico molto semplice, generalmente
per l'inglese americano.7.3 spell
è un
filtro, come molti dei programmi di cui abbiamo parlato, che legge un file
di testo ASCII e scrive tutte le parole che considera errate. spell
opera sui file elencati nella linea di comando, o, se non ne vengono
dati, sullo stdin.
Probabilmente nella vostra macchina è disponibile anche
un programma di ortografia più sofisticato, ispell .
ispell offre la
possibilità di correggere l'ortografia ed ha una simpatica
interfaccia a
menù se viene specificato un file nella linea di comando, oppure
funziona
come filtro se non viene specificato nessun file.
Anche se operare con ispell dovrebbe essere abbastanza banale,
consultate la pagina man se avete bisogno di maggiori informazioni.
cmp file1 [file2]
cmp ``compares'' (confronta) due file. Il primo
deve essere
specificato nella linea di comando, mentre il secondo può essere
specificato nella linea di comando o letto dallo standard input. cmp
è molto semplice, e dice solamente dove i due file cominciano a non
essere identici.
diff file1 file2
Uno dei comandi standard di UNIX più complicati è chiamato
diff.
La versione GNU di diff ha più di venti
opzioni possibili da linea di comando!
È una versione di cmp molto più potente e mostra quali sono le
differenze invece di comunicare semplicemente dove si trova la prima.
Dato che parlare in modo approfondito di diff esula dallo scopo
di
questo libro, ne mostrerò soltanto le operazioni di base. In
breve, diff
accetta due parametri (i file da confrontare) e mostra le
differenze tra questi linea per linea. Per esempio:
114#114
Come potete vedere, diff non stampa niente quando i due file sono
identici; quando confronto due file diversi, ho
un'intestazione di
sezione, 1c1,2, che indica che stava confrontando la linea 1
del file
di sinistra, animali, con le linee 1-2 di cani e quali
differenze ha notato; quindi confronta la linea 3 di animali con la
linea 4 di cani. Mentre può sembrare strano a prima vista confrontare
diversi numeri di riga, è molto più efficiente di elencare ogni singola
linea se c'è soltanto un ritorno a capo in più all'inizio di un file.
gzip [-v#] [file1 file2 ...
fileN]
gunzip [-v] [file1 file2 ...
fileN]
zcat [file1 file2 ...fileN]
Questi tre programmi vengono usati per
comprimerecompressione e
decomprimeredecompressione dati. gzip, o GNU zip, è
il programma che legge i file originali e rende file più piccoli.
gzip cancella i file specificati dalla linea di comando e li
sostituisce con file che hanno nome identico ma con un ``.gz''
finale.
tr stringa1 stringa2
Il comando di ``traduzione di caratteri'' opera sullo
standard input--non accetta un nome di file come parametro; invece, i suoi
due parametri sono stringhe arbitrarie. Sostituisce tutte le stringhe
uguali a stringa1 nell'input con stringa2. In aggiunta a
dei comandi semplici come
tr pippo pluto, tr accetta anche comandi più complicati.
Ad esempio, ecco un modo veloce di convertire i caratteri minuscoli
in caratteri maiuscoli:
115#115
tr è abbastanza complesso e di solito viene usato in piccoli
programmi di shell.
Next: Modificare file con Emacs
Up: Piccoli programmi potenti
Previous: Cosa c'è nel file?
Eugenia Franzoni
1998-09-29