# Tail

tail (dalla lingua inglese tail, "coda", per estensione "in fondo") è un comando dei sistemi operativi Unix e Unix-like, e più in generale dei sistemi POSIX, che mostra sullo standard output le ultime linee di dati provenienti da uno o più file di testo o dallo standard input. Esso è anche in grado di mantenere sotto osservazione uno o più file di testo o named pipe, rilevando e mostrando le linee aggiunte in coda nel frattempo. È un tipo di filtro.
tail viene spesso usato in una pipeline software sia come ultimo comando per mostrare solo una parte dei risultati, sia come fonte di dati a partire da un file di log in costante aggiornamento.
La versione GNU di tail è in grado di operare contemporaneamente su più file, precedendo l'output relativo ad ogni file con una linea di intestazione che indica a quale file si riferisce.

## Sintassi

La sintassi del comando tail è la seguente:
Il parametro facoltativo file indica il nome dei file in input. Se omesso, viene letto lo standard input.
Il doppio trattino -- (facoltativo) indica che i parametri successivi non sono da considerarsi opzioni. Il comportamento predefinito prevede di mostrare solo le ultime 10 linee di dati.

## Opzioni

Tra le opzioni principali di tail vi sono:

### -c pos

    Indica la posizione pos nel file a partire dalla quale mostrare i risultati, espressa in numero di byte a partire dalla fine dei dati (con 1 che indica l'ultimo byte). Se pos è preceduto dal segno + (ad esempio +45), la posizione è calcolata invece a partire dall'inizio dei dati (il primo byte ha posizione +1).

### -f

    Se i dati provengono da un file o da una named pipe, fa in modo che tail rimanga in esecuzione (invece di terminare subito) rilevando e mostrando eventuali aggiunte effettuate da parte di altri processi.

### -n pos

    Indica la posizione pos nel file a partire dalla quale mostrare i risultati, espressa in numero di linee a partire dalla fine dei dati (con 1 che indica l'ultima linea). Se pos è preceduto dal segno + (ad esempio +45), la posizione è calcolata invece a partire dall'inizio dei dati (la prima linea ha posizione +1).

### -pos

    Forma storica dell'opzione -n (ad esempio tail -3 equivale a tail -n 3).

## Monitoraggio di file

L'opzione -f (dall'inglese follow, segui) permette di seguire in tempo reale le aggiunte in coda ad un file o ad una named pipe: in questo caso tail, oltre a mostrare i dati come specificato, resta in esecuzione mostrando le aggiunte effettuate nel frattempo da altri processi. Ciò è particolarmente utile per tenere sotto controllo i file di log, o per fornire dati in ingresso ad una pipeline software.
Per interrompere l'esecuzione di tail in questo caso occorre spedirgli un segnale che lo faccia terminare, ad esempio premendo la combinazione di tasti Ctrl+C.
Una funzionalità analoga è presente nel comando less, che offre in più la possibilità di scorrere all'indietro le linee aggiunte nel frattempo.

## Esempi

Mostra le ultime 10 righe del file dati.txt:
Mostra le ultime 20 righe del file dati.txt:
Mostra le righe del file dati.txt a partire dalla ventesima:
Mostra gli ultimi 15 byte del file dati.txt:
Mostra le ultime 10 righe del file /var/adm/syslog e rimane in attesa di dati aggiuntivi, mostrandoli: