Der Befehl tail

tail-featured

In diesem Beitrag lernen Sie den Befehl tail kennen, welcher unter UNIX- / Linux-Betriebssystemen verwendet wird, um einen Teil vom Ende des Inhalts einer Datei auszugeben. Der Befehl ist im essenziellen Paket "coreutils" enthalten und somit auf den meisten Systemen bereits vorinstalliert.

Sie lernen neben der allgemeinen Syntax und den wichtigsten Optionen des Befehls an einigen Beispielen auch seine Anwendung kennen.

Allgemeine Syntax

Die allgemeine Syntax von tail lautet:

tail [Optionen] [Datei(en)]

tail gibt standardmäßig die letzten 10 Zeilen jeder angegebenen Datei aus. Bei Angabe mehrerer Dateien wird jeweils zusätzlich eine Kopfzeile mit dem entsprechenden Namen der Datei, aus der die Zeilen stammen, ausgegeben. Bei Angabe keiner Datei oder der Zeichenkette "-" wird von dem Standard-Input stdin gelesen.

Wichtigste Optionen

Im Folgenden werden die wichtigsten Optionen des Befehls tail vorgestellt.

-c - Letzte Anzahl Bytes ausgeben

Mit der Option -c lassen sich die letzten [N] Bytes einer Datei ausgeben. Wird vor den der Option -c übergebenen Parameter noch der Präfix "+" angehängt, dann werden alle Bytes ab dem [N]-ten Byte jeder Datei ausgegeben.

tail -c [+][N] [Datei(en)]

[N] kann zusätzlich von einem der Multiplikatoren b (512), kB (1000), K (1024), MB (1000*1000), M (1024*1024), GB (1000*1000*1000), G (1024*1024*1024) und so weiter gefolgt werden. Der Multiplikator wird als Suffix direkt an [N] angehängt.

Beispiel: Option -c

In diesem Beispiel wird die Option -c verwendet, um eine bestimmte Anzahl Bytes vom Ende einer Datei auszugeben.
Inhalt /home/hellberg/hedv.txt:

Der Inhalt der hier verwendeten Datei "hedv.txt" ist im Folgenden zu sehen.

Der Inhalt
dieser Datei
wird nun
zeilenweise
festgelegt

Eingabe:

Der Option -c wird der Parameter "11" übergeben, um die letzten 11 Bytes der Datei auszugeben.

tail -c 11 /home/hellberg/hedv.txt

Nach Ausführung:

In der Ausgabe ist nun das Wort "festgelegt" zu lesen. Dieses hat selbst eine Länge von 10 Bytes (Speicherbedarf pro Zeichen hier 1 Byte mit Zeichenkodierung UTF-8). Ein Zeilenumbruch am Ende der Zeile stellt das 11. Byte dar.

festgelegt

Beispiel: Option -c (mit "+")

Hier soll wieder die Anwendung der Option -c demonstriert werden. Diesmal wird dem übergebenen Parameter jedoch der Präfix "+" angehängt.
Inhalt /home/hellberg/hedv.txt:

Es wird dieselbe Datei "hedv.txt" wie aus dem vorherigen Beispiel verwendet.

Der Inhalt
dieser Datei
wird nun
zeilenweise
festgelegt

Eingabe:

Der Parameter "+12" wird angegeben, um alle Bytes ab (und inklusive) dem 12. Byte auszugeben. Die Zeichenkette "Der Inhalt", welche die ersten 10 Bytes darstellt sowie das 11. Byte - ein Zeilenumbruch - sollen damit abgeschnitten werden.

tail -c +12 /home/hellberg/hedv.txt

Nach Ausführung:

Erwartungsgemäß werden alle Bytes ab dem 12. Byte ausgegeben - in diesem Fall sind das alle Zeilen außer der ersten Zeile.

dieser Datei
wird nun
zeilenweise
festgelegt

-f - Angehängte Daten ausgeben

Diese Option wird verwendet, um bei einer wachsenden Datei jeweils immer die angehängten Daten auszugeben. Wurden mehrere Dateien spezifiziert, dann gibt tail jeweils immer eine Kopfzeile aus, wenn in einer anderen Datei etwas hinzugefügt wurde. Die Option wird ignoriert, wenn aus einer Pipe gelesen wird.

tail -f [Datei(en)]

Wird die Langform "--follow" der Option verwendet, kann ein Argument "Name" oder "Deskriptor" übergeben werden (z.B. "--follow=Name"), um festzulegen, wie tail auf das Entfernen einer Datei reagiert. Bei "Name" erkennt tail entfernte Dateien und gibt eine Meldung aus. Wurde zusätzlich "--retry" spezifiziert, dann überprüft tail außerdem periodisch, ob die Datei wieder auftaucht. Wurde für "--follow" dagegen "Deskriptor" spezifiziert, dann wird ein "unlink" oder ein Umbenennen einer Datei nicht erkannt und entsprechend auch keine Meldung ausgegeben. Standardmäßig ist "Deskriptor" voreingestellt.

tail --follow[=[Name|Deskriptor]] [Datei(en)]

-n - Letzte Anzahl Zeilen ausgeben

Möchten Sie anstelle der standardmäßigen letzten 10 eine andere Anzahl Zeilen ausgeben, so können Sie hierzu die Option -n verwenden. Durch Hinzufügen eines Präfix "+" an den der Option übergebenen numerischen Wert, ist es möglich, alle Zeilen ab der [N]-ten Zeile auszugeben.

tail -n [+][N] [Datei(en)]

Ähnlich wie bei der Option -c können auch hier Multiplikatoren verwendet werden.

Beispiel: Option -n

Die Option -n wird hier zur Ausgabe einer bestimmten Anzahl Zeilen vom Ende einer Datei verwendet.
Inhalt /home/hellberg/profi-tutorials/benutzer.txt:

Der Inhalt der hier verwendeten Datei "benutzer.txt" ist im Folgenden zu sehen.

hedv
hellberg
admina
bibo
tiffy
kermit

Eingabe:

Um nur die letzte Zeile der übergebenen Datei auszugeben, wird der Option -c der Parameter "1" übergeben.

tail -n 1 /home/hellberg/profi-tutorials/benutzer.txt

Nach Ausführung:

Es wird nur die letzte Zeile ausgegeben.

kermit

Beispiel: Option -n (mit "+")

Dieses Beispiel ist ähnlich wie das vorherige - jedoch wird hier der Präfix "+" verwendet, um Zeilen ab einer angegebenen Zeile auszugeben.
Inhalt /home/hellberg/profi-tutorials/benutzer.txt:

Es wird dieselbe Datei "benutzer.txt" wie im Beispiel zuvor verwendet.

hedv
hellberg
admina
bibo
tiffy
kermit

Eingabe:

Der Parameter "+5" wird spezifiziert, um die Zeilen ab (und inklusive) der 5. Zeile auszugeben.

tail -n +5 /home/hellberg/profi-tutorials/benutzer.txt

Nach Ausführung:

Es werden die letzten beiden Zeilen (5. und 6. Zeile) ausgegeben.

tiffy
kermit

-q - Keine Kopfzeilen ausgeben

Bei Verwendung der Option -q (quiet) gibt head keine Kopfzeilen aus, wenn mehrere Dateien spezifiziert wurden:

tail -q [Datei(en)]

-v - Immer Kopfzeilen ausgeben

Durch Verwendung der Option -v (verbose) gibt head immer Kopfzeilen aus - auch wenn nur eine Datei übergeben wurde:

tail -v [Datei(en)]
Beispiel: Option -v

Hier soll die Ausgabe von Kopfzeilen in jedem Fall erzwungen werden. Im Beispiel wird zugunsten einer besseren Übersicht die erste Zeile einer (ohnehin einzeiligen) Datei ausgegeben.
Eingabe:

Es werden die Optionen -v und -n spezifiziert, wobei -n aus gegebenem Grund zusätzlich der Parameter "1" übergeben wird.

tail -v -n 1 /home/hellberg/befehl-cat.txt

Ausgabe:

Die Ausgabe besteht an erster Stelle aus einer Kopfzeile mit dem Namen der Datei. Darauf folgt die erste Zeile aus dem Inhalt der Datei.

==> /home/hellberg/befehl-cat.txt <==
Der Linux-Befehl cat.

-z - NUL-Trenner verwenden

Mithilfe der Option -z (zero-terminated) kann festgelegt werden, dass head anstelle des standardmäßigen Zeilenumbruchs das Nullbyte (NUL) zum Trennen von Zeilen verwendet:

tail -z [Datei(en)]

Abonniere JETZT unseren Newsletter!


Verpasse nie wieder neue Beiträge und exklusive Insider-Only-Inhalte!

Joel Benseler

Click Here to Leave a Comment Below

Leave a Comment: