Tail (Unix)
# Tail (Unix)

tail (/usr/bin/tail), (engl. „Schwanz“, „Ende“) ist einer der vielen Textfilter in den POSIX-Standard einhaltenden UNIX- und diesen ähnlichen Betriebssystemen und dient zur Ausgabe der letzten Zeilen einer Datei. Sein Gegenstück ist head, welches die ersten Zeilen einer Datei anzeigt.

Der Funktionsumfang und das Verhalten tails ist durch den POSIX-Standard festgelegt.

## Arbeitsweise

Das Verhalten und die Syntax von tail gleichen denen vieler anderer Kommandozeilen-Programme, insbesondere wird in der Spezifikation auf den Standard IEEE Std 1003.1-2017 verwiesen. Es erwartet entweder einen Dateinamen oder einen Eingabe-Datenstrom auf stdin und liefert seine Ausgabe auf stdout, Fehlermeldungen werden auf stderr ausgegeben. Ausgaben können mit den herkömmlichen Mitteln (Redirection, Pipeline) umgeleitet werden.

Wie viel von einer Datei ausgegeben wird, kann entweder in Bytes (-c N, wobei N die Anzahl Bytes ist) oder in Zeilen (-n N, wobei N die Anzahl der Zeilen ist) angegeben werden. Vorsicht: da die Internationalisierungs-Variablen (LANG, LC_ALL, LC_CTYPE etc.) die Funktion von tail erheblich beeinflussen, ist die Anzahl der Zeichen nicht gleich der Anzahl der Bytes (etwa bei Unicode-Dateien). Durch Modifikatoren kann noch festgelegt werden, ob relativ vom Beginn der Datei oder vom Ende (der Default) gezählt wird:

Als Default gibt tail die letzten 10 Zeilen einer Datei aus.

### Obsolete Syntax-Varianten

Die meisten Implementationen (z. B. AIX, HP-UX) verstehen darüber hinaus auch noch eine – mittlerweile nicht mehr zur Verwendung empfohlene – Syntax, die ohne die Option -n auskommt:

Diese Syntax entspricht nicht dem POSIX-Standard und ist deshalb zu vermeiden. Es kann nicht vorausgesetzt werden, dass diese Syntax auf einem System oder einer zukünftigen Version desselben noch unterstützt wird.

### Änderungsverfolgung

Mit dem Schalter -f (follow) wird die Ausgabe so lange kontinuierlich aktualisiert, bis dem Programm das Signal SIGINT (z. B. mit der Tastenkombination Strg + C) gesendet wird. Diese Funktion macht tail als Live-Monitor für sich laufend ändernde Dateien (z. B. Logs) geeignet.

Das folgende Beispiel zeigt die letzten 15 Zeilen des Logs eines HACMP-Clusters (/usr/es/adm/cluster.log) und ergänzt kontinuierlich neue Einträge:

## Nonstandard-Varianten

Bei der Änderungsverfolgung folgt tail der geöffneten Datei mittels Filehandle, weshalb naive Logdatei-Rotation mittels Umbenennung und Neuanlage der Datei die Weiterverfolgung verhindert. Darauf nehmen manche Implementierungen Rücksicht durch die Einführung einer Zusatzoption (-F), die die zu verfolgende Datei ausschließlich über den Dateinamen identifiziert.

