Der Befehl tail ist das Gegenstück zu head und filtert die letzten Zeilen aus einer Eingabedatei aus. Standardmäßig sind das 10 Zeilen, die Anzahl können Sie aber, durch Angabe der gewünschten Zahl mit der Option -n, frei verändern. Geben Sie die Zahl mit einem vorangestellten Pluszeichen an, dann nimmt tail die entsprechende Anzahl von Zeilen, statt vom Ende, vom Anfang der Datei. Die Angabe der Zeilenzahl als eigenständige Option, also zum Beispiel "tail -2" um die letzten beiden Zeilen einer Datei auszugeben, ist zwar noch möglich aber veraltet und, insbesondere in Shell-Skripten, unerwünscht.
Da die aktuellsten Daten in einer Log-Datei immer am Ende der Datei stehen, wird tail häufig zum Ansehen von Logs verwendet. Ein Kommando "tail /var/log/messages" zeigt beispielsweise die 10 neuesten allgemeinen Systemmeldungen an. Wollen Sie verfolgen, was auf Ihrem System passiert, geben Sie die Option -f an und tail beendet sich nicht, nachdem es die letzten Zeilen der Datei ausgegeben hat, sondern wartet auf neuen Inhalt. Neuere Versionen von tail erlauben hierbei auch die Angabe mehrerer Dateien, so dass Sie mit einer Kommandozeile wie "tail -f /var/log/messages /var/log/kern.log /var/log/daemon.log" nicht nur allgemeine Systemmeldungen, sondern auch Meldungen des Betriebssystemkerns und der Hintergrundprogramme angezeigt bekommen.
Interessant sind hier auch die Optionen -F (--follow) und --retry. Normalerweise merkt tail nicht, wenn eine Datei, die es geöffnet hat, umbenannt wird. Das passiert zum Beispiel beim Rotieren von Log-Dateien. Da dieser Vorgang auf Linux-Systemen üblicherweise automatisch durchgeführt wird, muss man entsprechende tail Kommandos normalerweise regelmäßig neu starten. Verwenden Sie die Option -F, erübrigt sich das. Mit der Option --retry betrachtet tail außerdem das Fehlen einer Datei nicht als Fehler, sondern versucht so lange sie zu öffnen, bis es damit Erfolg hat.
Der Befehl tail arbeitet im Normalfall zeilenweise und hält sich, was die Kennzeichnung einer Zeile angeht, an die Konvention des Betriebssystems. Bei DOS/Windows ist das ein Wagenrücklauf-Zeichen (CR) gefolgt von einem Zeilenvorschub (LF). Apples Mac-Systeme lehnen sich an das Vorbild mechanischer Schreibmaschinen an und haben zuerst den Zeilenvorschub und dann den Wagenrücklauf. Unix-Entwicklern war dagegen die Effizienz am wichtigsten, auch unter Linux benutzt man daher nur ein Zeichen, den Zeilenvorschub, um Zeilen abzuschließen (in einem durchschnittlichen Text machen die Zeilenende-Zeichen 10 bis 20% aus und als Unix entwickelt wurde, war Speicherplatz noch extrem knapp).
Mit der Option -c aufgerufen arbeitet tail nicht mehr zeilenorientiert sondern gibt die Anzahl Bytes, die Sie mit der Option angegeben haben, vom Ende (oder Anfang mit +) der Datei aus.