Shells: Tutorial


* Einf├╝hrung * Installation * Paketmanager * Grundlagen * Shells * Entwicklung * KDE * Skriptsprachen * AWK * PHP * Perl * Apache * Veranstaltungen * Schulungen * B├╝cher * Netzwerk * OpenOffice * OpenSource * Samba

Shells


© <a href="http://www.fotolia.de/p/29003">Ljupco Smokovski</a> - FOTOLIA
Home
Erste Schritte mit der Bourne-Shell
Dateien zeilenweise zusammenf├╝gen
Head or Tail
Schleifen und Z├Ąhlen
Shell-Variablen
Pipes
Sortieren von Daten
Wer sucht der findet!
Praktische Shell-Skripte
Rechtschreibung
Schleifen und elegant Z├Ąhlen
Texte formatieren mit fmt und fold
Umlenkung der Ein- und der Ausgaben
Klammer-Erweiterung
Verkn├╝pfen von Textdateien mittels Schl├╝sselfeldern
Mit freundlicher Unterstützung von:

Linux-Kurse und Seminare Linux Kurse
Veranstalter des
Linux-Tag
am Bodensee
2007 und 2008

Kontakt
Haftung
Impressum
Problem Hilfe Startseite


Head or Tail

Wenn ein Engländer sagt "I cannot make head or tail of it.", dann meint er, dass er aus etwas nicht klug werden kann. Manchmal sagt er oder sie auch "I am unable to make head or tail of it", was ebenfalls bedeutet, dass jemand sich keinen Reim auf etwas machen kann. Wir hoffen natürlich nicht, dass es einem unserer Besucher so gehen wird mit den gleichnamigen Shell-Kommandos. Vor allem nicht mehr nach unserer Erklärung und unseren Beispielen.

Die Schöpfer von Linux hatten bei den beiden Namen nur ihre direkte Bedeutung im Kopf, d..h. Kopf (head) und Schwanz (tail). Mit diesen Kommandos kann man sich wahlweise eine bestimmte Anzahl von Zeilen vom Anfang oder vom Ende einer Datei beginnend ausgeben lassen.

head

       Gibt die ersten Zeilen einer oder mehrerer Dateien aus.


Beschreibung:

head druckt (in die Standardausgabe), wenn keine anderen Parameter angegeben sind, die ersten 10 Zeilen jeder Datei aus, die in der Kommandozeile stehen. Falls mehr  als eine Datei angeben wird, wird jede Teilausgabe mit einer Kopfzeile mit dem Dateinamen eingeleitet.

       head [OPTION]... [Datei]...[Datei]

       -c, --bytes=[-]N
              Ausgabe der ersten N Bytes von jeder Datei; bei vorangestelltem `-'-Zeichen werden alle außer den letzten N Bytes einer Datei  ausgegeben
       -n, --lines=[-]N
              wie bei "-c", nur dass statt Bytes Zeilen ausgegeben werden

       -q, --quiet, --silent
              Keine Ausgabe von Kopfzeilen mit den Dateinamen

       -v, --verbose
              Es werden immer Kopfzeilen für die Dateinamen mit ausgegeben

tail

gibt die letzten Zeilen einer Datei aus

       tail [OPTION]... [Datei]...[Datei]


Beschreibung:
tail druckt die letzten 10 Zeilen jeder Datei aus, die in der Kommandozeile angegeben ist. Falls mehr als eine Datei angeben wird, wird jede Teilausgabe mit einer Kopfzeile mit dem Dateinamen eingeleitet.

       -c, --bytes=N
              Ausgabe der letzten N Bytes

       -f, --follow[={name|descriptor}]
              Ausgabe der angehängten Daten, während eine Datei wächst;  -f, --follow und --follow=descriptor sind gleichwertig

       -F    gleich wie --follow=name --retry

       -n, --lines=N
              Ausgabe der letzten N Zeilen statt der letzten 10

       --max-unchanged-stats=N
              bei  --follow=name,  eine Datei, die ihre Größe nach N (default 5) Iterationen nicht verändert hat, wird von neuem geöffnet, um zu sehen, ob nicht die Verknüpfung (unlinked) aufgehoben wurde oder umbenannt wurde.

       --pid=PID
              bei -f, beednen, falls die Proszess-Id  ID, PID stirbt

       -q, --quiet, --silent
              Keine Kopfzeilen (header), falls mehr als eine Datei angegeben wurden, werden ausgegeben

       -s, --sleep-interval=S
              bei -f schlafe etwa S Sekunden (default 1.0) zwischen den Iterationen.

       -v, --verbose
              Kopfzeilen werden immer für jede bearbeitete Datei ausgegeben

Beispiele zu Head und Tail:

(der folgende Text wurde bei Einführung in die Shell-Programmierung, Head or Tail mit Genehmigung der Betreiber übernommen.)
tail daten.txt

Obiger Befehl druckt zum Beispiel die letzten 10  Zeilen der Datei "daten.txt" aus. Will man z.B. die letzten 7 Zeilen haben, so kann man folgenden Befahl benutzen:

tail -7 daten.txt

Manchmal möchte man auch alle Zeilen einer Datei außer einer bestimmten Anzahl am Anfang sehen, also zum Beispiel alle außer den ersten 3 Zeilen:

tail +4 daten.txt

Dieses Kommando druckt alle Zeilen ab (und inklusive) der 4. Zeile.


Wie der Name bereits vermuten lässt, ist der Befehl "head" äquivalent zu tail, nur das sich die Operationen auf den Anfang einer Datei auswirken.

head daten.txt

druckt  die ersten zehn Zeilen der Datei daten.txt.

Allerdings funktioniert die "plus"-Variante nicht, d.h. head +2 daten.txt druckt nicht, wie man erwarten würde, alle außer der letzten Zeile, sondern führt zu der Fehlermeldung "head: ,,+2" kann nicht zum Lesen geöffnet werden: Datei oder Verzeichnis nicht gefunden"

Sehr interessant ist das Zusammenspiel der beiden Befehle. So liefert einem

tail +4 daten.txt | head -3 

die Zeilen 4 bis  6.  (4. und 6. Zeile inklusive)


© Copyright 2007 - 2010, Bernd Klein mit freundlicher Unterst├╝tzung von Bodenseo, Linux-Kurse und Schulungen,
Foto linke Seite (Mann mit Strick und Colt): Foto: ┬ę Ljupco Smokovski, fotolia 984022