Il comando Cat è uno dei comandi più utilizzati per visualizzare il contenuto di un file in Linux. Ma potresti non voler visualizzare sempre tutte le righe di un file di grandi dimensioni. Il comando Tail aiuta in uno scenario del genere.
Cos'è il comando coda?
Il comando tail, come suggerisce il nome, restituisce le ultime parti di un singolo file o più file. Per impostazione predefinita, il comando tail stampa le ultime dieci righe dei file di input. Il comando tail serve anche per leggere i file di log in tempo reale.
La sintassi per il comando tail è:
tail [options] [files]
5 esempi pratici del comando Tail in Linux
Impariamo come utilizzare il comando tail in Linux con alcuni esempi pratici. Userò questo file di testo in questo tutorial:
The Mysterious Affair at Styles
The Secret Adversary
The Murder on the Links
The Man in the Brown Suit
The Secret of Chimneys
The Murder of Roger Ackroyd
The Big Four
The Mystery of the Blue Train
The Seven Dials Mystery
The Murder at the Vicarage
Giant's Bread
The Floating Admiral
The Sittaford Mystery
Peril at End House
Lord Edgware Dies
Murder on the Orient Express
Unfinished Portrait
Why Didn't They Ask Evans?
Three Act Tragedy
Death in the Clouds
Puoi scaricare il file di esempio dal nostro repository GitHub e seguire il tutorial mentre ti eserciti contemporaneamente.
Se usi il comando tail senza alcuna opzione, stamperà le ultime 10 righe. Questo è il comportamento predefinito del comando tail.
tail agatha.txt
Giant's Bread
The Floating Admiral
The Sittaford Mystery
Peril at End House
Lord Edgware Dies
Murder on the Orient Express
Unfinished Portrait
Why Didn't They Ask Evans?
Three Act Tragedy
Death in the Clouds
Se il file ha meno di dieci righe, visualizzerà solo le righe disponibili. Se le ultime righe sono vuote, verranno comunque conteggiate come righe valide.
Ma non devi accontentarti dell'uso predefinito del comando tail. C'è di più. Vediamo uno per uno l'uso più comune dei comandi tail.
1. Stampa le ultime N righe con il comando tail
Per visualizzare le ultime N righe, invece delle 10 predefinite, puoi utilizzare il comando tail nel modo seguente:
tail -n N <filename>
Ad esempio, se vuoi vedere le ultime 5 righe con il comando tail nel nostro file di esempio, puoi usarlo in questo modo:
tail -n 5 agatha.txt
Murder on the Orient Express
Unfinished Portrait
Why Didn't They Ask Evans?
Three Act Tragedy
Death in the Clouds
Suggerimento:puoi anche usare semplicemente tail -N invece di tail -n N per visualizzare le ultime N righe di un file.
2. Stampa tutte le righe che iniziano con il numero di riga N
Se vuoi visualizzare tutte le righe a partire dalla riga numero N, puoi utilizzare l'opzione + qui.
tail -n +N <filename>
Nel nostro file di esempio se vuoi vedere tutte le righe a partire dalla riga numero 7, puoi usarlo in questo modo:
tail -n +7 agatha.txt
The Big Four
The Mystery of the Blue Train
The Seven Dials Mystery
The Murder at the Vicarage
Giant's Bread
The Floating Admiral
The Sittaford Mystery
Peril at End House
Lord Edgware Dies
Murder on the Orient Express
Unfinished Portrait
Why Didn't They Ask Evans?
Three Act Tragedy
Death in the Clouds
3. Utilizzo di più file con il comando tail
Il comando tail consente di utilizzare più di un file contemporaneamente. Tutte le opzioni del comando tail standard sono applicabili a più file.
tail -n N <file1> <file2> <file3>
L'output viene combinato per tutti i file e, per impostazione predefinita, il nome del file viene visualizzato in righe che iniziano con "==>".
Ad esempio, se vuoi vedere le ultime tre righe dei file sherlock.txt e agatha.txt, sarebbe così:
tail -n3 sherlock.txt agatha.txt
==> sherlock.txt <==
The Adventure of the Noble Bachelor
The Adventure of the Beryl Coronet
The Adventure of the Copper Beeches
==> agatha.txt <==
Why Didn't They Ask Evans?
Three Act Tragedy
Death in the Clouds
Suggerimento:puoi rimuovere i nomi dei file dall'output utilizzando la modalità silenziosa con l'opzione -q.
4. Monitora i file in tempo reale con il comando tail [Utilissimo per il monitoraggio dei log]
Supponiamo di avere un file e di aggiungervi nuovo contenuto. Il comando tail permette di visualizzare tutte le nuove righe man mano che vengono aggiunte al file.
Per questo, puoi usare l'opzione -f.
tail -f <log-file>
Il comando visualizzerà prima le ultime 10 righe dei file e quindi aggiornerà l'output man mano che le nuove righe vengono aggiunte al file.
Questo è ampiamente utilizzato per guardare i file di registro in tempo reale. Questo è forse l'uso più pratico del comando tail.
Suggerimento:se utilizzi l'opzione -F invece dell'opzione -f, il comando tail attenderà la creazione del file di input (se non esiste già) e quindi visualizzerà il contenuto del file in tempo reale.
5. Usare il comando tail con i tubi
Il comando tail può essere utilizzato in coniugazione con altri comandi che utilizzano pipe.
Ad esempio, se hai troppi file in una directory e vuoi vedere solo gli ultimi 3 file modificati, puoi usarlo nel modo seguente:
ls -ltr | tail -n3
Nel comando precedente, ls -lrt elenca tutti i file in ordine cronologico inverso. E quindi il comando tail analizza ulteriormente questo output e visualizza solo le ultime tre righe dell'output del comando ls e quindi otteniamo l'elenco degli ultimi tre file modificati.
Suggerimento bonus:mostra l'output del comando tail con i numeri di riga
I numeri di riga aiutano molto a comprendere e analizzare l'output. Si supponga di aver visualizzato le ultime 20 righe di un file ma di voler anche vedere i loro numeri di riga in modo da poter vedere le righe totali nel file.
Sfortunatamente, non esiste un'opzione incorporata per visualizzare l'output del comando tail con i numeri.
Ma ciò non significa che non puoi visualizzare i numeri di riga con il comando tail. A questo scopo, puoi usare la potenza dei tubi. Hai appena visto nella sezione precedente che i comandi di coda possono essere usati con le pipe. Perché non usarlo qui.
nl è il modo per visualizzare il contenuto di un file con i numeri di riga. Se lo combini con il comando tail usando pipe, visualizzerai l'output del comando tail con i numeri di riga.
nl <filename> | tail -3
Spero che tu possa trovare utili gli esempi di comando tail. Consiglio di leggere anche il comando principale. Se hai suggerimenti o domande, condividili nella sezione commenti qui sotto.