Identificare e lavorare con i tipi di File

Se siete nuovi utenti di Linux, vi capiterà spesso di vedere file con estensioni che potrebbero sembrare sconosciute. L'estensione di un file è l'ultima parte del nome del file stesso, dopo il punto finale (nel file sneakers.txt, "txt" è l'estensione di questo file).

Ecco una breve lista di estensioni e dei loro significati:

File Compressi/Archiviati

Formati dei File

File di Sistema

File di Programmazione e Script

Ma le estensioni dei file non vengono sempre utilizzate. Quindi cosa avviene quando un file non ha un'estensione, oppure il file non sembra essere quel tipo di file indicato dall'estensione?

Questi sono i casi in cui il comando file può essere utile.

Nel Capitolo 15, abbiamo creato un file chiamato saturday -- senza un'estensione. Utilizzando il comando file, possiamo scoprire di che file si tratta digitando:

file saturday
	    

vedremo che si tratta di un file di testo. Qualunque file che viene riconosciuto come file di testo è leggibile tramite cat, more, o less.

SuggerimentoLeggere la pagina man
 

Per maggiori informazioni sul comando file, leggete la pagina man di file digitando man file.

Vediamo come leggere i file…

Ci sono molti modi per leggere file sotto Linux. Nel Capitolo 15, per esempio, abbiamo trattato i pager more e less -- vengono chiamati pager perché potete scorrere le "pagine" dei documenti uno schermo alla volta. Abbiamo anche imparato come possiamo non solo vedere ma manipolare file con il comando cat .

Ma esistono anche altre opzioni: per esempio, quando dovete leggere file README, pagine man o documenti che avete creato.

Avrete a disposizione un certo numero di strumenti per leggere i file, o gli editor di testi come pico, emacs, vim, i pager more e less, e i visualizzatori head, tail, cat, e grep.

Provate a guardare alcune caratteristiche di questi strumenti.

Il comando less

Nel Capitolo 15, abbiamo introdotto il pager less. Less è il pager che viene utilizzato per mostrare le pagine man.

Per consultare la pagina man di less digitate

man less
	      

Per muovervi avanti nello schermo, premete Spazio; per muovervi indietro premete B, e per uscire, premete Q.

Ci sono altre potenti caratteristiche di less, come la capacittà di scorrere orizzontalmente il testo e specificare il numero di linee da scorrere.

Il comando more

Anche se potrebbe sembrare strano, more offre meno caratteristiche di less (in verità, less è stato ispirato da more).

Diamo uno sguardo alla pagina man di more, ma questa volta aprite la pagina utilizzando more -- utilizzando la pipe per ridirezionare l'output di man a more.

man more | more
	      

All'inizio potrebbe non sembrare così diverso, ma il comando more accetta meno comandi del comando less. Probabilmente la differenza più sostanziale è la caratteristica di non poter far scorrere indietro un documento -- rimangono uguali i comandi per muoversi avanti (utilizzando Spazio) e per uscire (premendo Q.

Il comando head

Potete utilizzare il comando head se volete guardare solo l'inizio di un file. Il comando è:

head <filename>
	      

Head può essere utile, ma poiché il comando si limita alla visualizzazione delle prime righe, non è possibile sapere quanto è effettivamente lungo il file. Di default, appaiono solo le prime 10 righe di un file, anche se potete specificare il numero di righe da visualizzare digitando:

head -20 <filename>
            

Leggete la pagina man del comando head (man head) per maggiori informazioni. Probabilmente troverete less o more più utili, poiché potrete scorrere il file per intero se vi accorgete che le informazioni che cercavate si trovano più avanti di quanto credavate.

Il comando tail

L'opposto di head, è tail. Con (tail), potrete rivedere le ultime 10 linee di un file.

Il comando cat

Il comando cat, abbreviazione per concatenazione, vi mostrerà l'intero contenuto di un file sullo schermo. Utilizzare cat può essere utile se il file è relativamente corto, come quando avete creato sneakers.txt . Ma se un file è abbastanza lungo, scorrerà facilmente oltre lo schermo.

Il comando grep

Il comando grep è abbastanza utile per ricercare stringhe di caratteri in un file. Supponiamo che vogliate cercare ogni riferimento alla parola "coffee" nel file sneakers.txt , che avete creato nella vostra directory di login. Potrete digitare:

grep coffee sneakers.txt
          

in modo da vedere ogni singola linea nella quale appare la parola "coffee".

SuggerimentoRicordate le maiuscole e le minuscole
 

A meno che sia specificato altrimenti, le ricerche di grep sono case sensitive. Questo vuol dire che cercare Coffee e` diverso da cercare coffee. Tra le opzioni di grep troviamo anche -i, che vi permetterà di eseguire una ricerca senza tener conto delle lettere maiuscole/minuscole in un file. Consultate la pagina man di grep per ricevere maggiori informazioni su questo comando.

La ridirezione I/O e la Pipe

Non dimenticate l'utilizzo di pipe e la ridirezione dell'output quando volete salvare e/o stampare informazioni per leggerle in un secondo momento.

Potete, per esempio, utilizzare grep per cercare dei contenuti particolari di un file, quindi salvare o stampare questi risultati.

Per stampare informazioni su riferimenti alla parola "coffee" in sneakers.txt, per esempio, digitate:

grep coffee sneakers.txt | lpr
	      

Questo comando si comporta in modo simile al comando ls -al /etc | more, che potreste aver utilizzato nel Capitolo 15 per mostrare il contenuto della directory /etc e quindi spedire i risultati attraverso il comando more per visualizzarli sullo schermo.

SuggerimentoÈ più sicuro utilizzare >>
 

Ricordate le differenze nell'utilizzo di > e >>: > sovrascrive un file, mentre >> aggiunge le informazioni ad un file già esistente. In genere, è più sicuro utilizzare >>, poichè non perderete informazioni importanti (anche se potreste dover modificare il file se non volete che queste infomazioni vengano aggiunte ad esso).

Wildcard ed Espressioni Regolari

Cosa succede se dimenticate il nome del file che state cercando? Non potete dire al vostro computer: "Cerca il file chiamato 'sneak' o 'sneak-qualcosa'".

Bene, in un certo senso è possibile. Utilizzando le wildcard o le espressioni regolari, potete eseguire delle azioni su un file o su più file senza sapere il nome completo del file. Digitate solo ciò che conoscete, quindi sostituite il rimanente con una wildcard.

SuggerimentoApprofondimenti su wildcard e sulle espressioni regolari
 

Per avere maggiori informazioni su wildcard ed espressioni regolari, potete consultare la pagina man della bash (man bash). Ricordate: potete salvare il file in un file di testo digitando man bash | col -b > bash.txt. Quindi, potete aprirlo e visualizzarlo con less o pico (pico bash.txt). Se volete stamparlo, fate attenzione, è molto lungo.

Sapete che il file si chiama "sneak-something.txt," quindi digitate:

ls sneak*.txt
	      

ed ecco il nome del file:

sneakers.txt
	      

Probabilmente utilizzerete l'asterisco (*) frequentemente durante una ricerca. L'asterisco vi permette di cercare qualsiasi cosa che corrisponde al nome che state cercando. Quindi digitando:

ls *.txt
	      

o:

ls sn*
	      

troverete sneakers.txt -- Col tempo ci saranno più file di testo, e quindi ne verranno mostrati di più poichè corrisponderanno al nome che state cercando.

Vi sarà d'aiuto, quindi, restringere il più possibile la ricerca.

Per restringere la ricerca utilizzate il punto di domanda (?).

In questo caso, tuttavia, ? è utile per ricercare caratteri singoli -- così se state cercando sneaker?.txt, troverete sneakers.txt come risultato -- e/o sneakerz.txt, se questo file esiste.

Se un asterisco, per esempio, fa parte di un nome, come sarebbe il caso se il nome del file sneakers.txt fosse invece sneak*.txt, potrebbe essere utile un'espressione regolare.

Le espressioni regolari sono più complesse dell'asterisco, che invece è più semplice da utilizzare.

Utilizzando il carattere (\), potrete specificare che non volete cercare qualsiasi cosa utilizzando l'asterisco, ma invece state cercando un file con un asterisco nel nome.

Se il file è chiamato sneak*.txt, allora, digitate:

sneak\*.txt
	      

Ecco una breve lista di wildcard ed espressioni regolari:

  • * -- Corrisponde a tutti i caratteri

  • ? -- Corrisponde ad un carattere in una stringa (come sneaker?.txt)

  • \* -- Corrisponde al carattere *

  • \? -- Corrisponde al carattere ?

  • \) -- corrisponde al carattere )

Potete anche utilizzare le wildcard per velocizzare la ricerca: possono essere utili quando volete spostare e rinominare file. Le espressioni regolari possono aiutarvi a rinominare i file che contengono caratteri come * e ? nel loro nome.