Altri comandi base per leggere file di testo

Finora sono stati presentati numerosi comandi della shell per leggere file di testo. In questa sezione ve ne presentiamo altri.

Il comando head

Il comando head permette di guardare l'inizio di un file. Digitate quanto segue:

head <nomefile>

Head può rivelarsi un comando utile, ma poiché è limitato alle prime righe, non potete vedere l'effettiva lunghezza del file. Per default, potete leggere solo le prime dieci righe di un file. È comunque possibile modificare questo numero, specificandone uno diverso, come nel seguente esempio:

head -20 <nomefile>

Il comando tail

L'opposto di head è tail. Usando il comando tail, potete visualizzare le ultime dieci righe di un file.

Il comando grep

Il comando grep è di estrema utilità se dovete trovare una stringa specifica all'interno di un file. Per esempio, se vi occorre trovare ogni riferimento alla parola "coffee" nel file sneakers.txt, digitate:

grep coffee sneakers.txt

Vedrete tutte le righe in quel file dove compare la parola "coffee".

SuggerimentoRicordatevi le maiuscole e minuscole
 

Le ricerche di grep sono case sensitive, questo significa che la parola Coffee è diversa dalla parola coffee. Comunque tra le opzioni di grep, esiste -i, che vi consente di effetture una ricerca "case-insensitive". Per maggiori informazioni su grep, leggete la pagina man relativa.

Pipe e ridirezionamento di I/O

Potete utilizzare le pipe e il ridirezionamento dell'output quando desiderate memorizzare e/o stampare informazioni da leggere in un secondo momento.

Per esempio potete utilizzare grep per cercare contenuti particolari di un file e poi salvare i risultati della ricerca o inviarli alla stampante.

Per stampare le informazioni relative all'occorrenza della parola "coffee" in sneakers.txt, digitate:

grep coffee sneakers.txt | lpr

Caratteri jolly ed espressioni regolari

Cosa fare nel caso vi siate dimenticati il nome del file che state cercando? Utilizzando dei caratteri jolly o delle espressioni regolari, potete eseguire delle azioni su uno o più file senza conoscerne il nome intero.

SuggerimentoUlteriori informazioni sui caratteri jolly o sulle espressioni regolari
 

Per saperne di più sui caratteri jolly o sulle espressioni regolari, date un'occhiata alla pagina man di bash (digitando man bash). Ricordate che potete salvare le informazioni visualizzate in formato testo digitando man bash | col -b > bash.txt. Potete poi aprire e leggere il file con less o pico (pico bash.txt). Se volete stampare il documento, ricordate che è piuttosto lungo.

Sapete che esiste un file di testo il cui nome inizia con "sneak____.txt,", digitate dunque:

ls sneak*.txt

Ecco che compare il nome intero del file:

sneakers.txt

L'asterisco (*) vi risulterà senz'altro utile durante le vostre ricerche, infatti controlla qualsiasi file che coincida con la sequenza che state cercando. Digitando perfino:

ls *.txt

oppure:

ls sn*

Viene individuato il file che state cercando (sneakers.txt) e qualsiasi altro file il cui nome inizi con "sn". Il comando contribuisce a limitare il più possibile la ricerca.

Un modo per limitare una ricerca è quello di usare il punto interrogativo (?) che, come l'asterisco, aiuta a individuare un file che corrisponda alla sequenza di ricerca.

In questo caso, però, ? è utile per cercare un solo carattere, quindi se state cercando sneaker?.txt, i risultati di tale ricerca saranno sneakers.txt e/o sneakerz.txt, se esiste un simile nome di file.

Se invece l'asterisco fa parte del nome del file, per esempio sneak*.txt, allora vanno utilizzate le cosiddette "espressioni regolari"

Le espressioni regolari sono molto più complesse dell'asterisco o del punto interrogativo.

Con lo slash (\), potete specificare che non intendete cercare tutto usando l'asterisco, ma che state cercando un file con un asterisco nel nome.

Se il file si chiama sneak*.txt, digitate:

sneak\*.txt

Ecco una breve lista di caratteri jolly e di espressioni regolari: