Keywords: guide

Next: Modificare file con Emacs Up: Piccoli programmi potenti Previous: Cosa c'è nel file?

# Comandi di elaborazione

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?