GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie kann man feststellen, ob die Ausgabe eines Befehls oder Shell-Skripts Stdout oder Stderr ist?

Nehmen wir an, ich führe einen Befehl oder ein Shell-Skript aus, und es gibt mir eine Ausgabe. Ohne die Interna dieses Befehls oder Shell-Skripts zu kennen, wie kann man feststellen, ob die Ausgabe von stderr stammt oder stdout ?

Zum Beispiel,

$ ls -ld /
drwxrwxr-t  35 root  admin  1258 Dec 11 19:16 /

gegen

ls -ld /test
ls: /test: No such file or directory

Wie stelle ich fest, dass der erste Befehl auf stdout gedruckt wurde und die zweite an stderr (hat es?)?

Akzeptierte Antwort:

Es gibt keine Möglichkeit zu sagen, wann die Ausgabe bereits gedruckt wurde. In diesem Fall sind sowohl stdout und stderr mit dem Terminal verbunden sind, so dass die Information, in welchen Stream geschrieben wurde, bereits verloren war, als der Text auf Ihrem Terminal erschien; Sie wurden vom Programm kombiniert, bevor sie es jemals zum Terminal geschafft haben.

Was Sie in einem Fall wie dem obigen tun können, wäre, den Befehl mit stdout auszuführen und stderr an verschiedene Orte umgeleitet und sehen, was passiert. Oder führen Sie es zweimal aus, einmal mit stdout nach /dev/null umgeleitet und einmal mit stderr nach /dev/null umgeleitet , und sehen Sie, in welchen dieser Fälle der Text angezeigt wird.

Sie können stdout umleiten nach /dev/null durch Anheften von >/dev/null am Ende der Befehlszeile, und Sie können stderr umleiten nach /dev/null durch Hinzufügen von 2>/dev/null .


Linux
  1. So erstellen Sie ein Skript eines Linux-Befehls

  2. So drucken Sie Stdout eines Befehls in umgekehrter Reihenfolge auf einer Linux-Shell

  3. Wie lösche ich die ersten/letzten 'n' Zeilen aus der Befehlsausgabe in der Shell?

  4. Wie speichert man einen Befehl in einer Variablen in einem Shell-Skript?

  5. Wie kann ich die Ausgabe eines Shell-Befehls durchlaufen?

So speichern Sie die Befehlsausgabe in einer Datei unter Linux

So führen Sie einen Linux-Shell-Befehl / ein Skript im Hintergrund aus

So führen Sie Shell-Befehle über einen HTTP-Server aus

So leiten Sie die Shell-Befehlsausgabe um

So speichern Sie einen Linux-Befehl als Variable im Shell-Skript

Wie führe ich einen Befehl in einem Shell-Skript aus?