Come forse saprai, il comando cat viene utilizzato per visualizzare l'intero contenuto di un file tramite l'input standard. Ma in alcuni casi, dobbiamo stampare l'ultima parte del file. In Linux e Unix, il comando tail viene utilizzato per visualizzare le ultime 10 righe (per impostazione predefinita) di un file utilizzando l'output standard.
Il comando Tail è comunemente usato per guardare e analizzare i file in quanto può visualizzare le righe appena aggiunte. Questa funzione viene utilizzata principalmente per visualizzare registri o altri file che si aggiornano di volta in volta.
In questo tutorial impariamo come usare il comando tail in Linux con alcuni esempi pratici. Esamineremo anche le opzioni di coda in dettaglio.
Sintassi del comando di coda
La riga seguente mostra la sintassi del comando tail:
tail [OPTION]... [FILE]...
Senza alcuna OPTION
o FILE
, il comando tail accetta l'input da STDIN. Quindi in STDIN, se inserisci più di 10 righe, verranno visualizzate solo le ultime 10 righe dove il comando head fa l'esatto opposto del comando tail.
Il comando Tail può accettare uno o più nomi di file di input (FILE
).
1) Usare il comando tail per visualizzare le ultime dieci righe di un file
Senza alcuna opzione, comando tail con visualizzazione delle ultime 10 righe del file di input.
Negli esempi seguenti il comando tail mostra le ultime 10 righe del file 'file1.txt':
$ tail file1.txt
memtest86+_multiboot.bin
System.map-2.6.38-12-generic
System.map-2.6.38-13-generic
System.map-2.6.38-8-generic
vmcoreinfo-2.6.38-12-generic
vmcoreinfo-2.6.38-13-generic
vmcoreinfo-2.6.38-8-generic
vmlinuz-2.6.38-12-generic
vmlinuz-2.6.38-13-generic
vmlinuz-2.6.38-8-generic
2) Visualizza un numero specifico (limitato) di righe
Se vuoi visualizzare solo un numero specifico di righe, devi usare l'opzione -n.
Possiamo utilizzare tre diverse opzioni per limitare il numero di linee.
I seguenti tre comandi (-n100
, -n 100
, -100
) visualizza le ultime 100 righe dal file '/var/log/apache2/error.log':
$ tail -n100 /var/log/apache2/error.log
o
$ tail -100 /var/log/apache2/error.log
o
$ tail -n 100 /var/log/apache2/error.log
3) Come mostrare più file
Il comando Tail può essere visualizzato da più file se fornito come argomento. Quindi emette le ultime 10 righe di ogni file e con un'intestazione che mostra il nome del file.
$ tail file1.txt file2.txt
==> file1.txt <==
memtest86+_multiboot.bin
System.map-2.6.38-12-generic
System.map-2.6.38-13-generic
System.map-2.6.38-8-generic
vmcoreinfo-2.6.38-12-generic
vmcoreinfo-2.6.38-13-generic
vmcoreinfo-2.6.38-8-generic
vmlinuz-2.6.38-12-generic
vmlinuz-2.6.38-13-generic
vmlinuz-2.6.38-8-generic
==> file2.txt <==
smi.conf
snmp
sound
speech-dispatcher
ssh
ssl
sudoers
sudoers.d
sysctl.conf
tr command
Se non vuoi stampare le intestazioni ('==> file1.txt <==' e '==> file2.txt <=='), puoi usare la modalità silenziosa con -q
, --quiet
o --quiet
opzione. Questa opzione può essere utilizzata per combinare file.
$ tail -q file1.txt file2.txt
Se vuoi sempre stampare le intestazioni, anche quando viene fornito un solo nome file come argomento, puoi usare -v
o --verbose
opzione
$ tail -v file1.txt
4) Visualizza gli ultimi byte specifici di un file
Per visualizzare gli ultimi byte specifici del file, usa -c
o --bytes
opzione.
Il seguente comando tail stampa gli ultimi 30 byte del file file2.txt:
$ tail -c 30 file2.txt
sudoers.d
sysctl.conf
sysctl.d
In alternativa, puoi usare -c +number
per produrre tutto a partire dal byte number
.
$ tail -c +300 file1.txt
5) Guarda le modifiche ai file
Usa -f
o --follow
opzione per il monitoraggio delle modifiche ai file. Questa opzione è molto comunemente usata per il monitoraggio e la risoluzione dei problemi dei file di registro.
Il comando seguente visualizzerà le ultime 10 modifiche sul terminale per il file '/var/log/Xorg.1.log'.
$ tail -f /var/log/Xorg.1.log
[ 86.774] (**) Option "xkb_layout" "us"
[ 86.774] (**) Option "xkb_options" "terminate:ctrl_alt_bksp"
[ 86.774] (II) Toshiba input device: (II) is tagged by udev as: Keyboard
[ 86.774] (II) Toshiba input device: (II) device is a keyboard
[ 88.453] (II) Display (Seiko/Epson (DFP-0)) does not support NVIDIA 3D
[ 88.453] (II) Vision stereo.
[ 102.094] (II) Display (Seiko/Epson (DFP-0)) does not support NVIDIA 3D
[ 102.094] (II) Vision stereo.
[ 540.435] (II) Axis 0x1 value 1158 is outside expected range
See https://wayland.freedesktop.org for details
Il -f
l'opzione attenderà sempre i dati aggiunti e non si chiuderà da sola. Devi premere Ctrl+C
per uscire.
Proviamo a visualizzare le ultime 3 righe di un output di coda usando il -n
e f
opzioni.
$ tail -n3 -f /var/log/Xorg.1.log
[ 102.094] (II) Vision stereo.
[ 540.435] (II) Axis 0x1 value 1158 is outside expected range
See https://wayland.freedesktop.org for details
Usando il -fq
opzione puoi monitorare le modifiche da più file.
$ tail -fq /var/log/Xorg.1.log file2.txt
Con il -s
o --sleep-interval
(l'impostazione predefinita è 1 secondo), puoi regolare l'intervallo di sospensione tra le iterazioni.
$ tail -f -s 4 /var/log/Xorg.1.log
Come accennato in precedenza con il -f
opzione la shell non esce da sola, ma puoi dire al comando di terminare dopo che un processo muore con il --pid
opzione.
Il comando uscirà non appena il processo con PID 4309 muore.
$ tail -f file2.txt --pid=4309
Con il --retry
opzione, puoi continuare a provare ad aprire un file anche quando è, o diventa, inaccessibile. Una volta che diventa accessibile, verrà visualizzato l'output.
$ tail -f file2.txt --retry
6) Usare la coda con i tubi
Il comando tail può essere inviato a/da altri comandi per produrre risultati ottimizzati.
L'esempio seguente usa il comando ls per elencare tutti i file e le directory ed elencare tutte le directory in alto.
$ ls -l /etc | tail | sort
drwxr-xr-x. 2 root root 4096 Mar 3 08:15 yum.repos.d
drwxr-xr-x. 2 root root 4096 Mar 3 08:17 yum
drwxr-xr-x. 2 root root 4096 Sep 25 14:54 xinetd.d
drwxr-xr-x. 4 root root 4096 Sep 25 14:54 xdg
drwxr-xr-x. 6 root root 4096 Sep 25 14:54 X11
lrwxrwxrwx. 1 root root 12 Dec 19 15:43 yum.conf -> dnf/dnf.conf
-rw-r--r--. 1 root root 1204 Nov 11 19:08 virc
-rw-r--r--. 1 root root 1982 Nov 11 19:08 vimrc
-rw-r--r--. 1 root root 28 Sep 25 14:51 vconsole.conf
-rw-r--r--. 1 root root 642 Dec 9 2016 xattr.conf
Se vuoi controllare le richieste per un particolare tipo di file usa il seguente comando:
$ tail -f /var/log/apache/myvirtualhost.log | grep .jpg
Nell'esempio seguente il comando tail di output viene inviato tramite pipe e utilizzando il comando sort si ottiene il contenuto di 'continent.txt' ordinato in ordine alfabetico.
$ tail -n 5 continent.txt | sort
Africa
Antarctica
Asia
Australia
Europe
Conclusione
Ora abbiamo visto come utilizzare il comando tail e le sue opzioni per visualizzare le righe di fondo di un file di testo. Spero che ti sia piaciuto leggere e per favore lascia i tuoi suggerimenti nella sezione commenti qui sotto.