ADMIN-Tipp: Achtung, Umleitung

Jede Woche erscheint in unserem Newsletter ein neuer ADMIN-Tipp. Eine Sammlung aller Tipps finden Sie im Archiv der ADMIN-Tipps.

Unix-Shells wie beispielsweise die Bash können Ein- und Ausgabeströme umleiten. Die Syntax für dieses nützliche Feature wirkt zuweilen etwas kryptisch, weswegen dieser Tipp ein Beispiel seziert.

Eine mögliche Umleitung könnte beispielsweise lauten

jcb@hercules:~$ ps aux 2>&1 | grep init

Das würde bedeuten, dass sowohl die Standard- wie die Fehlerausgabe von ps auf die Standardeingabe von grep geleitet werden. Die Standard-Datenströme sind nämlich immer unter den folgenden Nummern zu erreichen:
0: stdin
1: stdout
2: sterr
Der Ausdruck 2>&1 bezeichnet also die Fehlerausgabe (2), die umgeleitet wird  (>) auf die Standardausgabe (1). Das Und-Zeichen (&) steht hier, um anzudeuten, dass nicht etwa in ein File namens "1" umgeleitet werden soll, sondern in den mit der Ziffer bezeichneten Kanal.
Nehmen wir an, wir wollten die gebündelte Standard- und Fehlerausgabe zum Schluss in ein File lenken. Man könnte annehmen, so sollte es gehen:

jcb@hercules:~$ ps aux 2>&1 > testfile

Aber das wäre falsch! Was würde hier passieren? Die Fehlerausgabe von ps würde auf die Standardausgabe umgeleitet, aber beide wären zu diesem Zeitpunkt noch mit dem Terminal verbunden. Das zweite Umleitungszeichen würde nun die Standardausgabe in das File leiten, die Fehlerausgabe bliebe davon unberührt und landete nicht in dem File.
Funktionieren würde dagegen:

jcb@hercules:~$ ps aux > testfile 2>&1

Das sieht auf den ersten Blick unlogisch aus. Tatsächlich ergibt sich aber das Folgende: Die Standardausgabe wird zunächst in das File umgeleitet. Dann folgt die Umleitung der Fehlerausgabe auf die Standardausgabe, die aber nun wegen der ersten Kommandohälfte bereits mit dem File verbunden ist. Deshalb gelangen jetzt Fehler- wie Standardausgabe in das File.
Der Trick dabei ist, dass es auf das letztendliche Ziel ankommt, zu dem ein Stream geschickt wird.

24.09.2013

Ähnliche Artikel

  • ADMIN-Tipp: Mehr mit Meta

    Spezielle Tastenkombination, oft mit dem Meta-Key - per Default ist das [Alt] - entlocken der Bash nützliche Funktionen.

  • ADMIN-Tipp: Überraschendes cd

    Manchmal verbergen sich hinter den unscheinbarsten Dingen, bei denen es keiner erwartet, noch überraschend praktische Tipps. Beispielsweise ist cd sicher eins der häufigsten Shell-Kommandos überhaupt, seine Funktion ist in einem Satz erklärt und damit scheint alles gesagt. Trotzdem kann man hier noch weniger bekannte, nützliche Tricks finden.

  • ADMIN-Tipp: Tipp-Ex für die Shell

    Die Bash kennt einige nette Tricks, die dem Kundigen die Arbeit erleichtern. So vertippt sich auch der größte Guru mal - aber er weiß sich danach elegant zu helfen.

  • ADMIN-Tipp: Neue Zeitrechnung

    "Weißt Du wieviel Sternlein stehen, an dem weiten Himmelszelt?" Es sind 2000 mit bloßem Auge sichtbare - unter guten Bedingungen. Wegen der Lichtverschmutzung besonders in Großstädten aber oft nur Hunderte. Gesetzt, man könnte einen pro Sekunde zählen - wie lange bräuchte man? Die Shell weiß es.

  • ADMIN-Tipp: Suchen in Texten

    Wenn man zu viel findet kommt man auch nicht weiter. Das kennt man aus dem Internet aber auch vom Unix-Kommando find . Dieser ADMIN-Tipp stellt einen doppelten Filter vor, der den anfallenden Datenmüll reduzieren kann.

comments powered by Disqus
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Konfigurationsmanagement

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit CFengine
  • mit dem Nix-System
  • mit Containern
  • mit anderer Konfigurationsmanagement-Software

Ausgabe /2023