Capitolo 16. Strumenti da linea di comando

Sommario
16.1. grep: General Regular Expression Parse
16.2. find: cerca file in base a determinati criteri
16.3. crontab: analizzare o modificare il file crontab
16.4. at: programmare un comando, ma per una sola volta
16.5. tar: Tape ARchiver
16.6. bzip2 e gzip: programmi per la compressione di dati
16.7. Tanti, tanti altri...

Lo scopo di questo capitolo è presentare alcuni strumenti da linea di comando che possono tornare utili nell'uso quotidiano. Naturalmente potete saltare questo capitolo se intendete usare unicamente l'ambiente grafico, ma una rapida lettura potrebbe farvi cambiare opinione :-).

Questo capitolo non ha una vera e propria struttura, i comandi sono elencati così come capita, dal più comunemente usato al più oscuro. Ciascun comando sarà accompagnato da un esempio, ma la ricerca di altri usi interessanti per gli stessi comandi sarà lasciata a voi, come esercizio.

16.1. grep: General Regular Expression Parse

Va bene, il nome non è molto intuitivo, e non lo è neanche l'acronimo, ma il suo scopo è semplice: cercare in uno o più file un modello ("pattern") immesso come argomento. La sua sintassi è:

grep [opzioni] <schema> [uno o più file]

Se indicate più file insieme, prima di ciascuna riga del risultato sarà mostrato il nome del file corrispondente. Usate l'opzione -h per evitare che i nomi dei file siano mostrati; usate invece l'opzione -l per ottenere solo i nomi dei file in cui sono state trovate corrispondenze. Quest'ultima opzione può essere utile, specialmente con lunghe liste di argomenti, per analizzare i file con un ciclo di shell e usare il trucchetto grep <modello> <nomefile> /dev/null. Il modello è una espressione regolare, sebbene la maggior parte delle volte si tratti di una semplice parola. Le opzioni usate più di frequente sono le seguenti:

  1. -i: Fa una ricerca che non distingue fra maiuscole e minuscole.

  2. -v: Inverte la ricerca: mostra le righe che non contengono corrispondenze.

  3. -n: Mostra il numero di riga per ogni riga in cui viene trovata una corrispondenza.

  4. -w: Dice a grep che il modello deve corrispondere a una parola intera.

Ecco un esempio di come usarlo:

$ cat my_father
Hello dad
Hi daddy
So long dad

  # Cerca la stringa "hi", nessuna differenza tra maiuscole e minuscole
$ grep -i hi my_father
Hi daddy

  # Cerca la stringa "dad" come parola intera, e stampa 
  # il numero di riga prima di ogni occorrenza
$ grep -nw dad my_father
1:Hello dad
3:So long dad

  # Adesso vogliamo tutte le righe che non cominciano con "H"
$ grep -v "^H" my_father
So long dad
$

Se volete usare grep in una pipe non dovete indicare il nome di un file, poiché come comportamento predefinito il comando preleva il suo ingresso dallo standard input. Allo stesso modo, come comportamento predefinito, il comando stampa il risultato sullo standard output, quindi potete redirigere l'output di un grep verso un altro programma senza alcun problema. Ad esempio:

$ cat /usr/doc/HOWTO/Parallel-Processing-HOWTO | \
  grep -n thread | less

Tux on Star from MandrakeSoft Linux è un trademark registrato di Linus Torvalds. Tutti gli altri copyright e trademark appartengono ai rispettivi proprietari.
A meno che non sia specificato diversamente, tutto il contenuto di queste pagine e tutte le immagini sono Copyright MandrakeSoft S.A. e MandrakeSoft Inc. 2000.
http://www.linux-mandrake.com/