|
Weitere Kommandos
xargs Programm [Parameter]Das xargs-Programm fällt etwas aus dem Rahmen der übrigen in diesem Kapitel behandelten Programme. xargs übergibt alle aus der Standardeingabe gelesenen Daten einem Programm als zusätzliche Argumente. Der Programmaufruf wird einfach als Parameter von xargs angegeben. Ein Beispiel soll die Funktionsweise klarmachen:$ Is *.txt | xargs echo Textdateien: Hier erzeugt ls eine Liste aller Dateien mit der Endung .txt im aktuellen
Verzeichnis. Das Ergebnis wird über die Pipe an xargs weitergereicht. xargs ruft echo
mit den Dateinamen von ls als zusätzliche Parameter auf. Der Output ist dann:
Textdateien: kap1.txt kap2.txt kap3.txt h.txt
Durch Optionen ist es möglich, die Art der Umwandlung der Eingabe in Argumente
durch xargs zu beeinflussen. Mit der Option -n <Nummer> wird eingestellt, mit
wievielen Parametern das angegebene Programm aufgerufen werden soll. Fehlt der
Parameter, nimmt xargs die maximal mögliche Zahl von Parametern. Je nach Anzahl der
Parameter ruft xargs das angegebene Programm einmal oder mehrmal auf. Dazu ein Beispiel.
Vergleich einer Reihe von Dateien nacheinander mit einer vorgegebenen Datei:
ls *.dat | xargs -n1 cmp compare Muster
Die Vergleichsdatei "Muster" wird der Reihe nach mitels cmp mit allen Dateien verglichen,
die auf ".dat" enden. Die Option -n1 veranlaßt xargs, je Aufruf immer nur einen Dateinamen
als zusätzliches Argument bei cmp anzufügen.
Mit der Option - i <Zeichen> ist es möglich, an einer beliebigen Stelle im Programmaufruf,
auch mehrmals, anzugeben, wo die eingelesenen Argumente einzusetzen sind. In diesem Modus
liest xargs jeweils ein Argument aus der Standardeingabe, ersetzt im Programmaufruf jedes
Vorkommen des hinter - i angegebenen Zeichens durch dieses Argument und startet das Programm.
In dem folgenden Beispiel wird das benutzt, um alle Dateien mit der Endung ".txt" in
".bak" umzubenennen.
ls *.txt | cut -d. f1 | xargs -iP mv P.txt P.bak
Das Ganze funktioniert allerdings nur, wenn die Dateien nicht noch weitere Punkte im
Dateinamen haben.
wc [-lwc] [Datei(en)]
Dieses Kommando zählt Zeilen, Worte oder Zeichen in einer Datei. Wird kein
Dateiname angegeben, liest wc von der Standardeingabe. Optionen:
-l | Zähle Zeilen |
-w | Zähle Worte |
-c | Zähle Zeichen |
pr [+n] [-h Header] [-ftF] [-wü] [-oü] [-lü] [Datei(en)]
(print) Ausgeben und Formatieren von Dateien. Ist keine Datei angegeben, wird von
der Standardeingabe gelesen. Optionen:
+n | Beginne bei Seite n der Dateien (Default: 1) |
-h Kopf | Definiere Seitenüberschrift (Default: Dateiname) |
-f | Verwende beim Seitenwechsel das Formfeed-Zeichen anstelle von Leerzeichen |
-t | Kopf- und Fußzeilen unterdrücken |
-F | Zu lange Zeilen nicht abschneiden sondern umbrechen |
-w# | Zeilenbreite festlegen (Default: 72) |
-o# | ü führende Leerzeichen vor jede Zeile setzen |
-l# | Seitenlänge festlegen (Default: 66). Davon gehen ab 5 Zeilen für
Header und 2 Zeilen für Seiten-Nummer am Ende der Seite. |
sleep zeit
Legt einen Prozeß für zeit Sekunden schlafen.
Erst nach Ablauf dieser Zeit wird er wieder als "bereit" in die Warteschlange
eingereiht. Anwendung in der Regel in Kommandoprozeduren (Shellskripts).
tr Ersetzungsliste
tr ist ein typischer Filter (tr = translate). Es wird benutzt, um in einer Datei
bestimmte Zeichen durch andere zu ersetzen. tr liest immer von der Standardeingabe
und schreibt auf die Standardausgabe. Als Parameter gibt man bei tr an, welche
Zeichen durch welche anderen zu ersetzen sind. Die einfachste Variante ist, ein
bestimmtes Zeichen in ein anderes umgewandelt werden soll. Dazu gibt man zunächst
das zu ersetzende Zeichen und danach - durch Leerzeichen getrennt - das neue Zeichen
als Parameter an. Beispiel:
tr : . < foo Ersetzt ":" durch ".".
tr abc def < foo Ersetzt "a" durch "d", "b" durch "e" und "c" durch "f".
tr a-z A-Z < foo Ersetzt Kleinbuchstaben durch Großbuchstaben.
Leider unterscheiden sich die Versionen von tr auf System V und BSD-UNIX-Varianten
etwas, was die Verarbeitung dieser Zeichenfolgen anbetrifft. Bei System V müssen
die Bereichs- und Wiederholungsangaben in eckigen Mammern eingeschlossen sein. Bei
BSD gibt es nur Bereichsangaben, allerdings ohne Klammern. Dafür wird das letzte
Zeichen der zweiten Zeichenfolge bei der ESD-Variante automatisch so oft wiederholt,
bis die zweite Zeichenfolge genauso lang ist wie die erste.
cut -cSpalten [dateien]
cut -fFelder [-dZeichen] [-s] [dateien]
Extrahieren bestimmter Spalten aus einer Datei. Werden keine Dateien angegeben, liest
cut von der Standardeingabe. Die Ausgabe erfolgt auf die Standardausgabe. Optionen:
-cSpalten | Die angegebenen Spalten werden herausgenommen, dabei sind mehrere
Zahlenangaben, getrennt durch Kommata möglich, ebenso Bereiche, z.B. 5-9. |
-c-10,15,20,30- | 1. bis 10. Spalte, Spalte 15, Spalte 20 und alles ab
Spalte 30 |
-fFelder | Angaben von Feldern durch die Feldnummern analog -c.
Als Feldtrenner ist das Tabzeichen vorgegeben.
| -dZeichen | Vorgabe des Feldtrenners. Das Zeichen wird als
Feldtrenner verwendet. z. B. -c:
| -s | Zeilen, in denen der Feldtrenner vorkommt, nicht ausgeben
(Voreinstellung: Zeile ausgeben) |
cal [[monat] jahr]
Kalender zu einem Monat oder Jahr auf der Standardausgabe ausgeben.
- ohne Parameter: aktueller Monat
- mit einem Parameter (jahr): Jahreskalender (1-9999)
- Mit 2 Parametern (monat): Monat (1-12) des angegebenen Jahres (1-9999)
calendar
Minimalversion eines Terminkalenders. Sucht im aktuellen Verzeichnis nach einer
Textdatei namens "calendar" und gibt alle Zeilen aus, die irgendwo das
aktuelle oder morgige Datum enthalten. Datumsangabe amerikanisch: Monat, Tag (z.
B. Jan 24, 1/25, January 25). Je nach Installation auch Funktion von cal implementiert.
basename string [suffix]
Extrahieren des Dateinamens aus einer Pfadangabe, die als String übergeben
wird. Wird ein Suffix angegeben, wird dieser am Ende des Dateinamens entfernt.
Zum Beispiel:
basename /home/plate/dings.c | dings.c |
basename /home/plate/dings | dings |
basename $0 | Programmname |
dirname
Extrahieren des Pfadnamens aus einer Pfadangabe, die als String übergeben wird.
Beispiel: dirname /home/plate/dings.c ergibt /home/plate und
dirname dingsda ergibt .
logname
Gibt den Loginnamen auf der Standardausgabe aus. Im Gegensatz zum Kommando id,
das immer den aktuellen Loginnamen ausgibt, wird hier der Name des Login geliefert,
auch wenn mit su die Benutzeridentität gewechselt wurde.
time [kommando]
Berechnet die Zeit, die das angegebene Kommando zur Ausführung braucht. Es
werden drei Zeiten ausgegeben:
real | Insgesamt verbrauchte Zeit (elapsed time) |
user | Im User-Modus verbrauchte Zeit |
sys | Im System-Modus verbrauchte Zeit (Systemdienste) |
bc [-lmath]
Einfacher Taschenrechner hoher Genauigkeit. Um mit Gleitpunktzahlen zu rechnen, muß
der Parameter angegeben werden. Liest Formeln von der Standardeingabe und gibt das Ergebnis
auf der Standardausgabe aus. End mit EOF = CTRL-D.
last [-Zahl] [-f datei] [namen]
Ausgabe der An- und Abmeldezeiten von Usern. Optionen:
-Zahl | Anzahl der Zeilen, die ausgegeben werden sollen |
-f Datei | Liest aus der Datei statt aus /var/adm/wtmpx |
namen | Benutzer- oder Terminalnamen |
script [-a] [datei]
script erlaubt es, eine Terminal-Sitzung (oder einen Teil davon) auf einer Datei
aufzuzeichnen. Dabei wird alles, was in dieser Zeit auf der alphanumerischen
Dialogstation (oder dem xterm-Fenster bei graphischen Oberflächen) erscheint,
festgehalten - auch das Eingabeecho.
Ist 'datei' im Aufruf angegeben, so wird die Sitzung in dieser Datei protokolliert.
Fehlt die Angabe einer Ausgabedatei, so wird in die Datei typescript des
aktuellen Katalogs geschrieben. Ctrl-C (Unterbrechung) beendet die Protokollierung.
Die Option -a veranlaßt script, das Protokoll an die Datei datei (oder typescript)
anzuhängen, anstatt eine neue Datei zu eröffnen.
script ist immer dann hilfreich, wenn alle Aktivitäten einer längeren Sitzung
dauerhaft protokolliert werden sollen: z. B. bei der Fehlersuche, bei einer
längeren Netzwerk-Sitzung auf einem entfernten Rechner oder beim Ausprobieren
eines chat-skripts für eine PPP-Verbindung. Man kann auch eine Kommandofolge interaktiv
ausprobieren und dann die richtigen Kommandozeilen aus der Protokolldatei
per Editor schnell in ein Shellskript umsetzen.
|
|
|