Startseite > RHCSA > eine BASH-Shell öffnen und Befehle mit der korrekten Syntax erteilen; Pipelines und Ein-Ausgabe-Umleitung verwenden

eine BASH-Shell öffnen und Befehle mit der korrekten Syntax erteilen; Pipelines und Ein-Ausgabe-Umleitung verwenden

2010/12/26

Ein-Ausgabeumleitung

Um erfolgreich anspruchsvollere Shellskripte schreiben zu können muß man verstehen wie die Ein- und Ausgabe bei Linux Befehlen funktioniert. Es gibt drei Datenkanäle:

0 Standardeingabe, oder STDIN

1 Standardausgabe, oder STDOUT

2 Standardfehlerausgabe, oder STDERR

Die Standardeingabe ist normalerweise mit der Tastatur verküpft. Ein Programm kann aber seine Eingabe auch aus einer Datei oder einem Gerät beziehen. Die Standardausgabe wird per Default-Einstellung direkt auf dem Monitor angezeigt, kann aber natürlich auch in eine Datei oder ein Gerät umgeleitet werden. Das selbe gilt für die Standardfehlerausgabe.

Standardfehlerausgabe umleiten

Command 2> /dev/null

Die Standardfehlerausgabe wird nach /dev/null umgeleitet. /dev/null ist das Äquivalent zum Windows-Papierkorb, die Daten verschwinden auf Nimmerwiedersehen. Es ist zur Fehleranalyse besonders nützlich die Standardfehlerausgabe von der Standardausgabe getrennt zur späteren Verwendung in eine eigene Datei umzuleiten.

Standardausgabe umleiten

Command > Ausgabe.txt

Die Standardausgabe wird damit in die Datei Ausgabe.txt umgeleitet.

Command >> Ausgabe.txt

Die Standardausgabe wird damit an die Datei Ausgabe.txt angehängt, bereits vorhandene Daten werden nicht überschrieben.

Standardeingabe umleiten

less < file.txt

Der Befehl less bekommt hiermit die Datei file.txt als Eingabe.

Standardausgabe UND Standardfehlerausgabe umleiten

Command &> file.txt
Command > file.txt 2>&1

Beim Ersten Befehl werden Standardausgabe und Standardfehlerausgabe in die Datei file.txt umgeleitet. Der zweite Befehl schreibt seine Standardausgabe in die Datei file.txt, die Standardfehlerausgabe wird dorthin umgeleitet, wo die Standardausgabe hinkommt – also ebenfalls in die Datei file.txt. Diese Variante eignet sich sehr gut zur Weiterverarbeitung mittels Piping.

Pipelines

ls | less

Die Standardausgabe des Befehls ls wird an less weitergegeben, um vom Benutzer betrachtet werden zu können. In anderen Worten: Die Ausgabe des Befehls ls dient less als Eingabe. Sehr nützlich bei mehrseitigen Ausgaben.

cat file.txt | sort | uniq > myfile.txt

Hier wird der Inhalt der Datei file.txt and den Befehl sort übermittelt, der diesen sortiert. Die nun sortierten Daten werden daraufhin von uniq von Duplikaten befreit und das Ergebnis in die Datei myfile.txt geschrieben.

Here-Dokument

mail –s “test mail von root” tux@example.com << EOM
Inhalt des Ordners /etc:
`ls /etc`
Freier Speicherplatz auf /var/data:
`df -h /var/data`
EOM

Hier wird eine Mail mit dem Titel „test mail von root“ an tux@example.com gesendet. Alles bis zum erneuten Auftreten der Zeichenkette „EOM“ wird in den Mail-Body aufgenommen. In diesem Fall wird ein Bericht über den Inhalt von /etc und eine Übersicht über den noch freien Speicherplatz auf /var/data übermittelt. Statt „EOM“ kann auch eine beliebige Zeichenkette verwendet werden, diese muss nur eindeutig sein. Sehr nützlich zum Aufruf aus Shellskripten.

Advertisements
Kategorien:RHCSA Schlagwörter: , , , , ,
%d Bloggern gefällt das: