Nutzerkommandos - Textbearbeitung
cat - Dateien verketten Weiter

Aufruf:   cat [OPTIONEN] [DATEI]...

cat verkettet seine Argumente (Dateiinhalte) und schreibt das Ergebnis auf die Standardausgabe. Werden dem Kommando keine Argumente übergeben, erwartet cat seine Eingaben von der Standardeingabe (eine solche Eingabe wird mit [Ctrl]-[D] (EOF) abgeschlossen):

user@sonne> cat
Ohne Argument liest »cat« von der Standardeingabe [Enter]
Ohne Argument liest »cat« von der Standardeingabe
Jede durch [Enter] abgeschlossene Zeile gibt »cat« sofort aus[Enter]
Jede durch [Enter] abgeschlossene Zeile gibt »cat« sofort aus
Beendet wird die Ausgabe durch [Ctrl]-[D][Enter]
Beendet wird die Ausgabe durch [Ctrl]-[D]
[Ctrl]-[D]
user@sonne>

Mit der Option -n nummeriert cat die Zeilen in der Ausgabe:

user@sonne> cat -n testdatei
     1 Eine erste Zeile.
     2 Noch eine Zeile.
     3 Eine dritte Zeile.

csplit - Dateien an definierten Stellen zerlegen Zurück Anfang Weiter

Aufruf:   csplit [OPTIONEN]... DATEI MUSTER...

csplit zerlegt die angegebene Datei an allen dem Suchmuster entsprechenden Zeilen und schreibt die einzelnen Teile in die Dateien xx00, xx01, xx02, ...

Als Muster kann Folgendes stehen:

Ganze Zahl

Die Trennung erfolgt vor der durch die Zahl spezifizierten Zeile

/Regulärer Ausdruck/[OFFSET]

Die Trennung erfolgt vor der Zeile, die das Muster enthält

%Regulärer Ausdruck%[OFFSET]

Die Zeilen bis zur Zeile, die das Muster enthält, werden übersprungen

{Ganze Zahl}

Wiederholt die vorhergehende Mustersuche so oft wie angegeben

{*}

Wiederholt die vorhergehende Mustersuche so oft wie möglich

[OFFSET]

+/-n: trennt n Zeilen hinter/vor der durch das Muster spezifizierten Zeile

In unserer Beispieldatei steht Folgendes:

user@sonne> cat testdatei
Eine erste Zeile.
Noch eine Zeile.
Eine dritte Zeile.

Zunächst soll csplit an Zeilen, die das Muster "Zeile" enthalten, aufgeteilt werden:

user@sonne> csplit testdatei /Zeile/
0
51

Das Kommando trennt wie erwartet vor der Zeile mit dem Muster - allerdings betrachtet csplit nach der ersten erfolgreichen Suche seine Arbeit als erledigt. Die beiden Dateien xx00 und xx01 enthalten 0 bzw. 51 Bytes. Dies sind die Ausgaben des Kommandos.
Soll nun nach jeder Zeile mit dem Muster getrennt werden, hilft diese Eingabe:

user@sonne> csplit testdatei /Zeile/ {*} -f part -z
17
16
18

Mittels -f part werden die Zieldateien mit part00, part01, ... benannt. -z entfernt leere Dateien.

cut - Abschnitte aus jeder Zeile einer Datei extrahieren Zurück Anfang Weiter

Aufruf:   cut [OPTIONEN]... [DATEI]...

cut kann verwendet werden, um bestimmte Bytes, Felder oder Zeichen aus den Zeilen einer Datei zu extrahieren.

Extrahieren von Bytes: Mit der Option -b Bereich lassen sich die durch Bereich benannten Bytes aus der Eingabedatei herausfiltern. Als Beispiel soll die Verwendung in Verbindung mit dem Pipelining demonstriert werden:

user@sonne> ls -l /boot | cut -b 1-11,56-
total 718
-rw-r--r--      System.map 
-rw-r--r--      boot.b
-rw-r--r--      chain.b
-rw-------      map
-rw-r--r--      vmlinuz

cut bezieht seine Eingabe von der Ausgabe des Kommandos ls -l. Daraus werden die Bytes 1-11 (Zugriffsrechte) sowie alle Bytes ab dem 56. bis zum Zeilenende (Dateiname) extrahiert.

Extrahieren von Feldern: cut arbeitet mit der Option -f Feldnummern mit Feldern. Per Voreinstellung werden Tabulatoren als Feldbegrenzer angenommen. Mit der Option -d Zeichen kann ein beliebiger anderer Begrenzer angegeben werden:

user@sonne> cut -d " " -f 1,3 testdatei
Eine Zeile.
Noch Zeile.
Eine Zeile.

Extrahieren von Zeichen: Diese Option arbeitet analog zu -b, da ein Zeichen ein Byte groß ist.

diff - Dateiinhalte vergleichen Zurück Anfang Weiter

Aufruf:   diff [OPTIONEN] DATEI_1 DATEI_2

Nicht selten stößt man bei der Suche im Dateisystem auf Dateien mit gleichem Namen. Handelt es sich nun um Kopien oder entspringt die Namensverwandtschaft dem Zufall? diff hilft im Falle von Textdateien weiter, indem es einen zeilenweisen Vergleich vornimmt und die Unterschiede in den Dateien protokolliert. diff lässt sich selbst von eingefügten oder entfernten Zeilen nicht aus der Ruhe bringen. Das Werkzeug erkennt derartige Passagen und vermag unabhängig von der Zeilennummerierung den Vergleich zu führen.

Ein Beispiel

Anhand zweier Dateien soll die Arbeitsweise des Kommandos demonstriert werden.

user@sonne> cat Datei1
Abschnitt 1
Abschnitt 2
Abschnitt 3
   Unterabschnitt 3.1
   Unterabschnitt 3.2
Abschnitt 4

In der zweiten Datei bleibt die Grobstruktur erhalten:

user@sonne> cat Datei2
Abschnitt 1
   Unterabschnitt 1.1
Abschnitt 2
Abschnitt 3
Abschnitt 4
   Unterabschnitt 4.1

Zum Verstehen der Ausgabe von diff bedarf es sicher einiger Übung:

user@sonne> diff Datei1 Datei2
1a2
>   Unterabschnitt 1.1
4,5d4
<   Unterabschnitt 3.1
<   Unterabschnitt 3.2
6a6
>   Unterabschnitt 4.1

Der Report ist aus Sicht der zweiten Datei aus der Eingabe verfasst. Eine mit > beginnende Zeile, deutet an, dass sie hinzugekommen ist. < leitet eine entfernte Zeile ein. Die weiteren Angaben geben Auskunft über die Lage der Änderungen. a (append) steht für Einfügungen; d (delete) für gelöschte Zeilen. Die Nummern vor dem Buchstaben beschreiben hierbei die Positionen in der Originaldatei, die nachfolgenden Nummern die der zweiten Datei.

Neben dem obigen (Standard)Format steuern Optionen die Ausgabe von diff. In Zusammenhang mit patch ist das »unified«-Format verbreitet:

user@sonne> diff --unified Datei1 Datei2
--- Datei1      Fri Apr 13 18:28:51 2001
+++ Datei2      Fri Apr 13 18:32:49 2001
@@ -1,6 +1,6 @@
 Abschnitt 1
+  Unterabschnitt 1.1
 Abschnitt 2
 Abschnitt 3
-  Unterabschnitt 3.1
-  Unterabschnitt 3.2
 Abschnitt 4
+  Unterabschnitt 4.1

Von den Optionen seien nur -b und -B genannt, mit welchen diff enthaltene Leerzeichen bzw. Leerzeilen beim Vergleich außer Acht lässt.

Werden anstatt Dateinamen die Namen von Verzeichnissen angegeben, vergleicht diff die darin enthaltenen Dateien in alphabetischer Reihenfolge. Das Verfahren kann rekursiv (Option -r) auf alle Unterverzeichnisse angewendet werden, womit sich die Unterschiede ganzer Verzeichnishierarchien auswerten lassen.

In Skripten interessiert häufig nicht die konkrete Ausgabe von diff sondern einzig, ob sich zwei Dateien unterscheiden oder nicht. Hierfür kann der Rückgabewert des Kommandos betrachtet werden:

expand - Tabulatoren durch Leerzeichen ersetzen Zurück Anfang Weiter

Aufruf:   expand [OPTIONEN]... [DATEI]...

Die Voreinstellung der Tabulatorschrittweite ist 8 und kann mittels -t Anzahl geändert werden.

Die Beispieldatei wurde in einem Editor erstellt und enthält Tabulatoren, deren Anzahl durch eine vorangestellte Nummer markiert ist. Das Kommando cat kann zur symbolischen Anzeige der Tabulatoren genutzt werden:

user@sonne> cat -t tabdatei
1^I2^I
1^I2^I3^I4
1^I

Nun die Ausgaben von expand mit normaler Schrittweite des Tabulators und mit geänderter Schrittweite:

user@sonne> expand tabdat
1       2
1       2       3       4
1

user@sonne> expand -t 3 tabdat
1   2
1   2   3   4
1

Hinweis: Das Kommando unexpand ersetzt Leerzeichen durch die entsprechende Anzahl Tabulatoren.

fmt - Texte formatieren Zurück Anfang Weiter

Aufruf:   fmt [-w Länge] [OPTIONEN]... [DATEI]...

fmt ist ein sehr einfacher Textformatierer. Er ermöglicht das beliebige Auffüllen und Umbrechen der Zeilen von ASCII-Texten.

user@sonne> cat beispiel.txt
Der Inhalt der Beispieldatei soll zunächst nach der 30. Position umgebrochen werden.
Dann demonstrieren wir die Wirkung der Optionen "-s" und "-t".

user@sonne> fmt -w 30 beispiel.txt
Der Inhalt der Beispieldatei
soll zunächst nach der
30. Position umgebrochen
werden. Dann demonstrieren
wir die Wirkung der Option
"-s" und "-t".
user@sonne> fmt -w 30 -s beispiel.txt
Der Inhalt der Beispieldatei
soll zunächst nach der
30. Position umgebrochen
werden.
Dann demonstrieren wir die
Wirkung der Option "-s" und "-t".

user@sonne> fmt -w 30 -t beispiel.txt
Der Inhalt der Beispieldatei    soll zunächst nach der    30. Position umgebrochen    werden. Dann demonstrieren wir die    Wirkung der Option "-s"    und "-t".

Im Vergleich zu fold werden ganze Wörter im Text niemals zersäbelt. Genauso wird das Wort nach einem Punkt "." nicht abgetrennt. -w Spalten setzt die maximale Länge der Zeilen; mit der Option -s werden umgebrochene Zeilen nicht aufgefüllt (mit der nachfolgenden Zeile kombiniert). Und die Option -t verdeutlicht den Absatzanfang, indem alle weiteren Zeilen eingerückt werden.

Weitere Optionen sind:

-c bzw. --crown-margin

Erhält die Einrückung der ersten beiden Zeilen

-u bzw. --uniform-spacing

Kürzt auf ein Leerzeichen zwischen Worten, zwei nach Sätzen

fold - Lange Zeilen umbrechen Zurück Anfang Weiter

Aufruf:   fold [OPTIONEN]... [DATEI]...

Das Kommando bricht nach der Voreinstellung lange Zeilen in der Eingabe nach dem 80. Zeichen um. Das entspricht den Optionen -bw 80. Sollten die Zeilen an Whitespaces getrennt werden, muss das fold mitgeteilt werden -s. Mit -w Nummer kann eine beliebige Umbruchposition angegeben werden:

user@sonne> cat beispiel.txt
Der Inhalt der Beispieldatei soll zunächst nach der 30. Position umgebrochen werden.
Dann demonstrieren wir die Wirkung der Option "-s".

user@sonne> fold -w 30 beispiel.txt
Der Inhalt der Beispieldatei s
oll zunächst nach der 30. Posi
tion umgebrochen werden.
Dann demonstrieren wir die Wir
Wirkung der Option "-s".

user@sonne> fold -w 30 -s beispiel.txt
Der Inhalt der Beispieldatei
soll zunächst nach der 30.
Position umgebrochen werden.
Dann demonstrieren wir die
Wirkung der Option
"-s".

grep - Zeichenmuster in Dateien suchen Zurück Anfang Weiter

Aufruf:   grep [-[AB] NUM] [-CEFGVbchiLlnqsvwxyUu] [-e MUSTER | -f DATEI] files...

Zu grep existieren noch die verwandten Kommandos egrep und fgrep, die sich nur durch unterschiedliche Interpretation des Musters unterscheiden. Die Kommandos im allgemeinen durchsuchen die angegebenen Datei(en) (oder die Standardeingabe) nach Zeilen, die das Muster enthalten und schreiben im einfachsten Fall die übereinstimmenden Zeilen auf die Standardausgabe.

Da uns der Umgang mit dem Kommando als immens wichtig erscheint, haben wir der grep-Familie einen eigenen Abschnitt im Kapitel Werkzeuge (grep) spendiert und werden dort eine ausführliche Diskussion folgen lassen. Einige Beispiele sollen dennoch den Gebrauch des Kommandos schulen:

user@sonne> grep root /etc/passwd
root:x:0:0:root:/root:/bin/bash

user@sonne> ps ax | grep bash
  287 tty1     S      0:00 -bash
  355 pts/0    S      0:00 /bin/bash
  438 pts/4    S      0:00 -bash
 4341 pts/1    S      0:00 grep bash

user@sonne> ps x | grep bash | grep -v grep
  287 tty1     S      0:00 -bash
  355 pts/0    S      0:00 /bin/bash
  438 pts/4    S      0:00 -bash

less - Dateiinhalte betrachten Zurück Anfang Weiter

Aufruf:    less [OPTION]... [DATEI]...

less dient wie auch das nachfolgend beschriebene Kommando more zur Anzeige der Inhalte von Dateien. Allerdings ermöglicht less das Zurückblättern selbst in Texten, die aus einer Pipe gelesen werden. Auch beendet sich das Kommando nicht selbsttätig beim Erreichen des Dateiendes.

Als Weiterentwicklung von more kennt less dieselben Tasten zur Navigation (Siehe Tabelle bei more). Wichtige Erweiterungen sind die Rückwärtssuche von Text mit ?Muster, sowie die Kommandos g und G, die zur ersten/letzten Bildschirmzeile springen. Wird vor den Kommandos eine Zahl n eingegeben, so wird zur benannten Zeile gewechselt. Im Falle von G erfolgt die Zählung vom Dateiende aus.

Darüber hinaus stehen unzählige Kommandozeilenoptionen bereit, die in der Praxis so ziemlich niemals zum Einsatz gelangen.

more - Dateiinhalte betrachten Zurück Anfang Weiter

Aufruf:    more [-dlfpcsu] [-num] [+/ Muster] [+ Zeile] [DATEI ...]

more dient der seitenweisen Anzeige des Inhalts von Dateien. Nach jeder Seite wird die Ausgabe angehalten und auf eine Eingabe des Benutzers gewartet. Ist das Dateiende erreicht, beendet sich more selbsttätig. In einer Statuszeile zeigt more die prozentuale Position der dargestellten Seite innerhalb der Datei an.

Das Kommando beginnt mit der Darstellung der ersten Seite, es sei denn, mit + Zeilennummer wird explizit die erste darzustellende Zeile angegeben. Alternativ kann die Ausgabe mit +/ Muster 2 Zeilen vor der ersten Zeile mit dem Auftreten eines bestimmten Musters begonnen werden.

Von den Kommandozeilenoptionen sind -n nützlich, das die Anzahl darzustellender Zeilen pro Seite auf den Wert n setzt, -d zur erweiterten Anzeige der Statuszeile:

user@sonne> more -d datei.txt
...
--Mehr--(44%)[Leertaste zum Fortfahren, «Q» zum Beenden.]

Die Option -s fasst eine Folge von Leerzeilen zu einer einzigen zusammen und -u unterdrückt die Darstellung von unterstrichenen Text.

Die nachfolgende Liste zeigt die wichtigsten Eingaben zur Navigation in den Seiten auf:

[Leerzeichen]

Nächste Bildschirmseite, wird zuvor eine Zahl n eingegeben, so werden die folgenden n Zeilen angezeigt

d

Ausgabe der nächsten 11 Zeilen

ns

Überspringen der nächsten n Zeilen

nf

Überspringen der nächsten n Bildschirmseiten

nb

Springt um n Bildschirmseiten zurück

q

Beenden des Programms

=

Anzeige der aktuellen Zeile

v

Der Editor vi wird mit der aktuellen Datei gestartet

n/Muster

Springt zum n-ten Auftreten des Musters

n

Sucht das letzte Muster erneut, durch Voranstellen einer Zahl n wird das n-te Auftreten gesucht

,

Springt zum Ausgangspunkt der letzten Suche

n

Springt an den Anfang der nächsten Datei (falls mehrere in der Kommandozeile angegeben wurden), durch Voranstellen eine Zahl n wird um die entsprechende Anzahl Dateien weiter gegangen

p

Springt an den Anfang der aktuellen Datei, falls mehrere in der Kommandozeile angegeben wurden, gelangt man in die vorherige Datei aus der Liste

nl - Zeilen nummerieren Zurück Anfang Weiter

Aufruf:    nl [OPTION]... [DATEI]...

Das Kommando schreibt seine Eingabe auf die Standardausgabe, wobei vor jeder Zeile deren Nummer ausgegeben wird:

user@sonne> nl testdat
     1  eine erste Zeile
     2  eine zweite Zeile
     3  eine einzige Zeile

nl kann in der Eingabe logische Einheiten erkennen und für jede eine eigene Nummerierung vornehmen. In diesem Zusammenhang spielte das Kommando früher bei der Textformatierung eine Rolle. Heute wird es vor allem zur Nummerierung von Programm-Quelltexten genutzt.

Als Optionen seien hier nur genannt:

-i n

Inkrementiert die Zeilennummer in jedem Schritt um den Wert n

-s Zeichenkette

Schreibt Zeichenkette zwischen jede Zeilennummer und den Text der Zeile

-v n

Startet mit Zeilennummer n

user@sonne> nl -v 10 -i 10 -s ". Zeile = " testdat
    10. Zeile = eine erste Zeile
    20. Zeile = eine zweite Zeile
    30. Zeile = eine einzige Zeile

od - Dateiinhalte in verschiedenen Formaten darstellen Zurück Anfang Weiter

Aufruf:    od [OPTIONEN]... [DATEI]...

od lässt sich den Pagern zuordnen, da das Kommando nur das Betrachten von Dateien gestattet und nicht deren Modifikation. Das Standardausgabeformat ist oktale Bytes, kann aber wie folgt geändert werden:

-a bzw. -t a

ASCII-Format

-b bzw. -t oC

Oktale Bytes

-c bzw. -t c

ASCII und Escape-Squenzen (bei nichtdruckbaren Zeichen)

-d bzw. -t u2

Unsigned Short (dezimal)

-f bzw -t fF

Floats

-h bzw. -t x2

Short (hexadezimal)

-i bzw. -t d2

Shorts (dezimal)

-l bzw. -t d4

Long (dezimal)

-o bzw. -t o2

Shorts (oktal)

-x bzw. -t x2

Short (hexadezimal)

Der vorrangige Nutzen des Kommandos liegt sicherlich im Betrachten von Speicherauszügen. Optionen, die die Eingabe beeinflussen sind u.a., -j bytes zum Überspringen der ersten Bytes der Eingabedatei(en), -N bytes zum Begrenzen der Ausgabe auf eine anzugebende Anzahl Bytes und -w bytes zum Begrenzen der Länge einer Ausgabezeile.

Als Beispiel werfen wir einem Blick auf den Masterbootsektor Mbr der ersten IDE-Festplatte:

root@sonne> od -x -N 512 /dev/hda | tail -5
od -x -N 512 /dev/hda | tail -5
0000700 0201 fe06 067f 7d82 0000 fac5 003f 0000
0000720 1841 fe05 ffff a318 0044 1d2b 00b7 0000
0000740 0741 fe82 177f 7847 0040 2ad1 0004 0100
0000760 0001 fe83 013f 003f 0000 7d43 0000 aa55
0001000

root@sonne> od -a -N 512 /dev/hda | tail -5
0000700 soh stx ack   ~ del ack stx   } nul nul   E   z   ? nul nul nul
0000720   A can enq   ~ del del can   #   D nul   +  gs   7 nul nul nul
0000740   A bel stx   ~ del etb   G   x   @ nul   Q   * eot nul nul soh
0000760 soh nul etx   ~   ? soh   ? nul nul nul   C   } nul nul   U   *
0001000

sort - Dateiinhalte sortieren oder mischen Zurück Anfang Weiter

Aufruf:   sort [OPTIONEN]... [DATEI]...

Das Kommando sort verkettet alle Eingabedateien und schreibt das Ergebnis im default-Modus sortiert auf die Standardausgabe. Die weiteren Modi sind das Mischen sortierter Daten mittels der Option -m und das Prüfen, ob eine Datei sortiert ist -c.

sort vergleicht, wenn nicht anders angegeben, die gesamte Zeile. Das Sortierkriterium kann auf Feld(er) eingeschränkt werden, wobei die Feldgrenze zwischen letztem Nicht-Whitspace und Whitespace voreingestellt ist. Das impliziert, dass ein Feld führende Whitespace enthalten kann, aber keine nachfolgenden. Um ein Feld zu spezifizieren, sollte die POSIX-konforme Notation -k Feld1[,Feld2] verwendet werden, wobei die Nummerierung der Felder bei 1 beginnt. Um die Ausgabe des Kommandos ls -l nach der Dateigröße zu sortieren, benötigen wir folgende Kommandozeile:

user@sonne> ls -l /boot/ | sort -k 5
-rw-r--r--   1  root     root           620 Feb 24 18:26  os2_d.b
-rw-r--r--   1  root     root        667293 Nov 19  1999  vmlinuz.old
-rw-r--r--   1  root     root        716916 Dec 14  1999  vmlinuz
-rw-------   1  root     root          7680 Jan 13 09:04  chos.map
-rw-r--r--   1  root     root           812 Nov  9  1999  chos.loader-linux

Das Ergebnis entspricht vermutlich nicht ganz dem Erwarteten... sort sortiert, wenn man ihm nichts anderes mitteilt, gemäß dem ASCII-Zeichensatz. Und da bspw. die Zeichenkette "71" alphabetisch kleiner ist als "76", wird "716916" vor "7680" eingeordnet... Um eine numerische Sortierung zu erzwingen, ist die Option -n zu verwenden, allerdings kann sort auch dann nicht mit Vorzeichen und Gleitkommazahlen (wie "1.0e-34") umgehen. Letzteres ermöglicht erst die Option -g.

user@sonne> ls -l /boot/ | sort -nk 5
-rw-r--r--   1  root     root          620 Feb 24 18:26  os2_d.b
-rw-r--r--   1  root     root          812 Nov  9  1999  chos.loader-linux
-rw-------   1  root     root         7680 Jan 13 09:04  chos.map
-rw-r--r--   1  root     root       667293 Nov 19  1999  vmlinuz.old
-rw-r--r--   1  root     root       716916 Dec 14  1999  vmlinuz

Wichtige Optionen beeinflussen den Vergleich der Felder, so ignoriert -i nichtdruckbare Zeichen und die Option -d bewirkt eine Sortierung wie im Telefonbuch (alle Zeichen außer Leerzeichen, Ziffern und Buchstaben werden übergangen). Soll die Groß- und Kleinschreibung keine Rolle spielen, erreicht man das mit der Option -f. Auch ein anderer Feldtrenner ist über -t Separator angebbar. Eine Ausgabe der Datei /etc/passwd, sortiert nach der Gruppennummer erhält man mit:

user@sonne> sort -t : -gk 4 /etc/passwd | head
+::::::
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/bin/bash
daemon:x:2:2:daemon:/sbin:/bin/bash
ftp:x:40:2:ftp account:/usr/local/ftp:/bin/bash
man:x:13:2::/var/catman:/bin/bash
mysql:x:60:2:MySQL Database User:/var/mysql:/bin/false
postgres:x:26:2:Postgres Database Admin:/var/lib/pgsql:/bin/bash
amanda:x:37:6:Amanda Admin:/var/lib/amanda:/bin/bash
lp:x:4:7:lp daemon:/var/spool/lpd:/bin/bash

Schließlich lässt sich die Sortierung umkehren -r und die Ausgabe in eine -o Datei umlenken.

split - Dateien in gleichmäßige Portionen zerlegen Zurück Anfang Weiter

Aufruf:   split [OPTIONEN] [INPUT [PREFIX]]

Soll eine sehr große Datei auf Disketten kopiert werden, kommt man um eine Zerlegung der Datei nicht umhin. Das Kommando split erzeugt aus einer Eingabedatei die benötigte Anzahl Ausgabedateien, wobei die Größe der Einzeldateien und deren Präfix-Name konfigurierbar sind.

Mit der Option -b size weist man split an, das Original in Einzeldateien von jeweils size-Bytes Umfang (bis auf die letzte) aufzuteilen, deren Namen dann Prefixaa, Prefixab,..., Prefixaz, Prefixba, ... lauten. Wird "PREFIX" nicht angegeben, lautet dieses x.

user@sonne> ls -l
-rw-r--r--   1  user     users     2099200 Jun  8 07:04  linuxfibel.tar
user@sonne> split -b 1440k linuxfibel.tar
-rw-r--r--   1  user     users     2099200 Jun  8 07:04  linuxfibel.tar
-rw-r--r--   1  user     users     1474560 Jun 13 08:22  xaa
-rw-r--r--   1  user     users      624640 Jun 13 08:22  xab

Obiges Beispiel trennt exakt an der angegebenen Byteposition. Bei ASCII-Dateien kann es mitunter sinnvoll sein, eine bestimmte Anzahl Zeilen des Originals jeweils in eine neue Datei zu schreiben. Die Option -l number (kleines "L") erzwingt dieses Vorgehen. Der Nachteil sind die sicherlich stark unterschiedlichen Speichergrößen der einzelnen Teildateien, die stark von den Längen der Zeilen der Ausgangsdatei abhängen. Deshalb existiert -C size, wobei split am jeweils letzten Zeilenende trennt, so dass die entstehende Datei maximal size Bytes groß wird.

tac - "Verkehrtes cat" Zurück Anfang Weiter

Aufruf:   tac [OPTIONEN]... [DATEI]...

Das Kommando verkettet (mehrere) Dateien und schreibt das Ergebnis in umgekehrter Reihenfolge auf die Standardausgabe. Es arbeitet im einfachsten Fall wie ein "verkehrtes cat":

user@sonne> cat testdat
eine erste Zeile
eine zweite Zeile
eine erste Zeile
eine zweite Zeile
eine einzige Zeile

user@sonne> tac testdat
eine einzige Zeile
eine zweite Zeile
eine erste Zeile
eine zweite Zeile
eine erste Zeile

Im Unterschied zu cat arbeitet das Kommando allerdings auf Feldern. Da der voreingestellte Feldtrenner der Zeilenumbruch (Newline) ist, bewirkt tac das cat-ähnliche Verhalten.

Der Feldtrenner kann überschrieben werden. Mit der Option -b wird der Inhalt des ersten Feldes der Eingabedatei als Feldtrenner verwendet. Mit der Option -s Trenner kann dem Kommando ein beliebiges Trennmuster angegeben werden. Diese Muster kann ein regulärer Ausdruck sein, wenn das Kommando zusätzlich mit der Option -r aufgerufen wird:

user@sonne> tac -r -s ei[nt] testdat
zige Zeile
e eine Zeile
eine zweite erste Zeile
eine Zeile
eine zweite erste Zeile
einein

uniq - Doppelte Zeilen ausblenden Zurück Anfang Weiter

Aufruf:   uniq [OPTIONEN]... [INPUT [OUTPUT]]

uniq entfernt mehrfach auftretende Zeilen in einer sortierten Datei.

user@sonne> cat testdat
eine erste Zeile
eine zweite Zeile
eine erste Zeile
eine zweite Zeile
eine einzige Zeile

user@sonne> sort testdat | uniq
eine einzige Zeile
eine erste Zeile
eine zweite Zeile

Wichtige Optionen sind:

-c

Anzeige, wie oft die Zeile existiert:

user@sonne> sort testdat | uniq -c
1 eine einzige Zeile
2 eine erste Zeile
2 eine zweite Zeile

-d

Nur mehrfach exstierende Zeilen werden angezeigt:

user@sonne> sort testdat | uniq -d
eine erste Zeile
eine zweite Zeile

-f N / -s N

Die ersten N Felder/Zeichen werden in den Vergleich nicht mit einbezogen:

user@sonne> sort testdat | uniq -f 2
eine einzige Zeile

-i

Groß-/Kleinschreibung werden nicht unterschieden

-u

Nur einfach vorkommende Zeilen werden ausgegeben:

user@sonne> sort testdat | uniq -u
eine einzige Zeile

wc - Zeilen, Wörter, Zeichen zählen Zurück Anfang

Aufruf:   wc [OPTIONEN]... [DATEI]...

Das Kommando zählt die enthaltenen Zeilen (Option -l), Wörter (-w) und Zeichen (-c) in seiner Eingabe. Mit der Option -L wird die Anzahl Zeichen der längsten Eingabezeile ausgegeben:

user@sonne> wc testdat
      5      15      89 testdat

user@sonne> wc -c testdat
     89 testdat

user@sonne> wc -L testdat
     18 testdat