Corso Linux / Leggere file con cat, less, more, head e tail
In Linux usa cat per stampare un breve file di testo, less o more per sfogliarne uno lungo e head o tail per leggere soltanto l'inizio o la fine. Visualizzare il contenuto nel terminale è diverso dal modificarlo. Questa lezione applica i cinque comandi allo stesso file di prova e spiega quando scegliere ciascuno.
Qui leggerai il contenuto dei file; selezione e conteggio delle righe sono trattati nell'esercitazione su grep, cut, sort, uniq e wc, in inglese.
Preparare un file di prova in sicurezza
Esegui i comandi in Bash come utente normale, senza sudo. Servono i programmi indicati; cat, head, tail e seq qui seguono l'uso GNU. Se un programma manca, consulta le indicazioni della tua distribuzione prima di proseguire.
Se ~/linux-course-10-practice esiste già, scegli un altro nome e usalo in entrambi i comandi di preparazione. Esegui una riga alla volta: se mkdir fallisce, fermati. Continuare nella directory già esistente potrebbe sovrascrivere dati.
mkdir ~/linux-course-10-practice
cd ~/linux-course-10-practice
pwd
Prosegui solo dopo il successo di mkdir e cd, verificando che pwd indichi la nuova directory. Il percorso mostrato da pwd, da solo, non prova che la directory sia appena stata creata. Il comando seguente produce cinque righe: in printf, \n rappresenta un a capo; > salva l'output standard nel file e normalmente ne sovrascrive il contenuto se esiste già.
printf 'alpha\nbeta\ngamma\ndelta\nepsilon\n' > sample.txt
Usa questo comando soltanto nella directory nuova, con il nome sample.txt ancora libero. Non cambiare il percorso in quello di un documento importante per provare la redirezione.
Leggere subito un file breve con cat
cat invia il contenuto all'output standard, normalmente il terminale. Sul file appena creato stampa le cinque righe nello stesso ordine.
cat sample.txt
Risultato atteso:
alpha
beta
gamma
delta
epsilon
cat non suddivide l'output in pagine e non modifica il file. Un testo molto lungo può scorrere troppo rapidamente: in quel caso scegli less. Evita di inviare direttamente al terminale un file binario sconosciuto. In caso di errore sul nome, verifica con pwd di essere ancora nella directory di prova e controlla il percorso prima di ripetere il comando.
Sfogliare file lunghi con less e more
less è un paginatore, cioè un programma per consultare il testo una schermata alla volta, spostarsi e cercare. Avvialo così:
less sample.txt
Dentro less, premi Spazio per avanzare di una schermata e b per tornare indietro. Digita /gamma e premi Invio per cercare; n ripete la ricerca della corrispondenza successiva. Nel file di cinque righe gamma compare una sola volta, quindi la ricerca successiva può segnalare che non ci sono altre corrispondenze. Premi q per tornare alla shell.
Questi sono tasti del paginatore, non ulteriori comandi da incollare nella shell. Cinque righe possono entrare in una sola schermata: lo spostamento si osserva meglio con il file di 80 righe proposto più avanti. Altezza del terminale, opzioni e personalizzazioni possono cambiare l'aspetto e la navigazione.
Anche more presenta il testo a schermate. In una sessione interattiva, Spazio normalmente avanza e q esce. Un file breve può essere visualizzato interamente e il programma può terminare al raggiungimento della fine, a seconda dell'implementazione e dell'ambiente.
more sample.txt
Se ti servono spostamenti avanti e indietro e ricerca, less è generalmente una scelta comoda. Le funzioni di more variano: consulta il manuale della versione installata, soprattutto quando l'ingresso arriva da una pipe anziché da un file.
Leggere solo inizio o fine con head e tail
head seleziona l'inizio del file, tail la fine. Con gli strumenti GNU, -n 2 richiede due righe.
head -n 2 sample.txt
tail -n 2 sample.txt
Il primo comando produce:
alpha
beta
Il secondo produce invece:
delta
epsilon
tail -f nome-file mostra la parte finale e poi continua ad attendere dati aggiunti. Sostituisci nome-file con il percorso reale di un file leggibile. Per interrompere l'attesa e tornare al prompt premi Ctrl+C: l'assenza del prompt durante l'attesa non significa che la shell sia bloccata.
GNU tail -f segue normalmente il descrittore del file aperto. Se il log viene rinominato o sostituito durante la rotazione, GNU tail -F, equivalente a seguire il nome con nuovi tentativi, può essere più adatto. Non recupera automaticamente dati persi e non supera i permessi di lettura; controlla quale file viene effettivamente seguito.
Scegliere il comando e provare la navigazione
| Esigenza | Comando | Motivo |
|---|---|---|
| Leggere tutto un file breve | cat |
Output immediato del contenuto |
| Sfogliare e cercare in un file lungo | less |
Navigazione e ricerca |
| Lettura essenziale a schermate | more |
Paginazione di base |
| Controllare le prime righe | head -n |
Mostra soltanto l'inizio |
| Controllare le ultime righe o le aggiunte | tail -n, tail -f |
Mostra la fine o segue nuovi dati |
Se non sai se un file è testo, consulta prima file, spiegato nella lezione sui tipi di file e metadati. Il riconoscimento del formato non garantisce l'assenza di caratteri di controllo che alterano la visualizzazione nel terminale. I comandi di lettura usati qui non modificano il contenuto, mentre la redirezione > usata per prepararlo può sovrascriverlo. La lettura può inoltre influire sul tempo di accesso secondo le regole del file system.
Per vedere il cambio di schermata, crea un file separato di 80 righe nella stessa nuova directory. Controlla prima che long-sample.txt non esista; seq scrive i numeri da 1 a 80, uno per riga.
seq 1 80 > long-sample.txt
less long-sample.txt
In less prova Spazio, poi b; con /40 e Invio cerca la riga con 40, quindi esci con q. Se il terminale mostra già tutte le 80 righe, riduci l'altezza della finestra per osservare lo scorrimento. Il numero di righe di una schermata non è fisso.
Il file sample.txt rimane invariato: puoi verificarlo ripetendo cat sample.txt e confrontando le cinque righe. Dopo la prova, rm -i long-sample.txt consente di rimuovere soltanto il file aggiuntivo dopo la conferma; rifiutando, lo conservi. Controlla directory e nome prima di rispondere: non serve cancellare ricorsivamente la directory di esercizio.
Documentazione ufficiale
I manuali GNU distribuiti da Debian per cat, head e tail specificano le opzioni di lettura. Il manuale di Bash sulla redirezione dell'output descrive >. Per la navigazione, consulta i manuali di less e di more di util-linux, oltre a man less e man more nella tua installazione.




