Im vergangenen Artikel ging es auch um das grep-Kommando. In diesem Artikel werden die Standardkanäle etwas genauer betrachtet und die Eingabe- und Ausgabeumlenkung…

Die Standardkanäle

Viele Linux-Kommandos – wie etwa grep – sind so gebaut, dass sie Eingabedaten lesen, diese dann irgendwie manipulieren und dann das Ergebis ausgeben.

  • grep xyz

Wird dieser Befehl im Terminal eingetippt, dann können anschließend Textzeilen im Terminal eingegeben werden und grep lässt nur noch die mit der vorgegebenen Zeichenkette durch. Enkennbar wird das daran, dass im Terminal die Zeichenfolge (hier xyz) zusätzlich farbig hervorgehoben dargestellt wird…

Mit Tastenkombination “STRG“ und “d“ wir die Eingabe beendet.

Die Standard-Eingabe ist die Tastatur.

Die Standard-Ausgabe ist der Bildschirm (Konsole/Terminal)

Der dritte Standardkanal ist die Fehlerausgabe.

Standardkanäle umleiten

Am Beispiel des Befehls “uname -a“ soll nun eine Umleitung in eine Datei realisiert werden.

Zur Erinnerung: uname -a zeigt uns die aktuelle Kernelversion und wird standardmäßig im Terminal ausgegeben…

  • uname -a > version.txt

Wenn alles funktioniert hat, sollte es in unserem home-Verzeichnis jetzt die Datei “version.txt“ geben und die Ausgabe wurde als Inhalt in die Datei geschrieben. Aufpassen sollte man nur, dass es den hier gewählten Dateinamen am Zielort noch nicht gibt, denn sonst würde der Inhalt überschrieben…

Wer sich die Textdatei jetzt auch im Terminal anschauen möchte, kann das mit dem less-Befehl machen…

  • less version.txt

Der Lesemodus wird mit “Q“ beendet.

Sollen jetzt Daten der bestehenden Datei zugefügt werden, bietet sich folgender Befehl an.

  • uname -a >> version.txt
  • uname -m >> version.txt

Kommandosubstitution

Eine andere Möglichkeit zur Umleitung der Standardausgabe eines Programms bieten die »verkehrten« Anführungszeichen…

Für die Experimente erzeugen wir die Datei “termine.txt“ mit folgendem Inhalt:

01.01 Hans Geburtstag

02.01 Klaus Geburtstag

21.01 Peter Geburtstag

Das letzte Datum sollte an das aktuelle Datum angepasst werden – nur dann funktioniert das Experiment…

Das aktuelle Datum wird mit folgendem Terminalbefehl ermittelt:

  • date +%d.%m.

Dieses Datum suchen wir nun in der Datei. Das Zeichen Zirkumflex sucht am Anfang der Zeile nach der angegeben Zeichenfolge. So wurde es auch im vorherigen Artikel beschrieben. Das Zirkumflex-Zeichen findet sich übrigens links neben der Eins und danach bitte auch einmal auf die Leertaste hauen. Die verkehrten Anführungszeichen liegen rechts neben dem Fragezeichen und auch hier hilft ein Schlag auf die Leertaste…

  • grep ^`date +%d.%m.` termine.txt

Die Standardausgabe eines Kommandos, das in verkehrten Anführungszeichen steht, wird anstelle des Kommandoaufrufs in die Befehlszeile eingebaut; ausgeführt wird dann das, was sich durch diese Ersetzung ergibt…

Standardeingabe umleiten

Für dieses Experiment brauchen wir wieder eine neue Textdatei “info.txt“ mit dem Inhalt:

Es war einmal eine Prinzessin

Nun lassen wir mal die Wörter zählen:

  • wc -w < info.txt

Das Experiment zeigt auch, dass Leerzeichen mitgezählt werden. Da unser Beispielsatz aus 5 Wörtern besteht, sollte auch 5 als Ergebnis im Terminal angezeigt werden. Wenn das nicht so ist, einfach die Leerzeichen am Dateiende entfernen…

Kommando-Pipelines

Das Pipe-Zeichen liegt zwischenShift-Taste und Y-Taste und wird über die Tastenkombination mit “AltGr“ aufgerufen.

  • ls -laF | less

Mit diesem Befehl wird ein Zwischenschritt eingespart. Es wird keine Datei erzeugt, sondern per Pipeline gleich die gewünschten Daten ausgegeben…

Von Torsten