#de-101-500-0009
Frage:
Um die Ausgabe, Fehlerausgabe (stderr) oder der Ausgabe (stdout), auf der Konsole oder zum Gerät vorzubeugen, wenn ein Kommando als root-Benutzer ausgeführt wird, sollte dieser String an das Kommando angehängt werden
Auswahlmöglichkeiten:
1) >/dev/null
2) >/dev/null 1>&2
3) >/dev/null 2>&1
4) 1>&2 >/dev/null
5) 2>&1 > /dev/null
Tipps:
Linux Operatoren:
> : Leitet von Links nach Rechts die Ausgabe weiter.
1 : Ist der Standard-Ausgabe-Datenstrom bzw. die Standard-Ausgabe / „I/O Stream“ (stdout)
2 : Ist der Fehler-Datenstrom bzw. die Fehlerausgabe / „I/O Stream“ (stderr), falls ein Programm z.B. unordentlich beendet wurde (beim Rückgabewert größer 0) oder beim loggen der Fehler sollten eigene Datei zur Fehlerausgabe des Programms benutzt werden.
& : Wird Benutzt um den ersten Befehl im Hintergrund auszuführen. Z.B. „Befehl1 & Befehl2“ wird die zwei programme gleichzeitig starten.
1>&2 : Leitet den stdout(1) in den stderr(2) um. Es wird „&2“ Benutzt weil sonst die Ausgabe in der Datei Namens „2“ Landen würde und nicht in dem Fehler-Stream.
2>&1 : Leitet den stderr(2) in den stdout(1) Stream um, so kann man die Fehlerausgaben und Normale-Ausgaben zusammen in eine Datei speichern : z.B. : „befehl1 2>&1 ./befehl1_logfile.txt“Linux-Dateien:
/dev/null ist ein Virtuelles Gerät welches die Ausgabe verschwinden Läst.
/dev/stderr ist die Standard Fehler Ausgabe. Als symlink zu /proc/self/fd/0
Beispiele :
┌──(user㉿disp2872)-[~]
└─$ cat ./script.sh
# /bin/sh
ls
dnf update┌──(user㉿disp2872)-[~]
└─$ chmod +x script.sh┌──(user㉿disp2872)-[~]
└─$ ./script.sh 1> /dev/null
Error: This command has to be run with superuser privileges (under the root user on most systems).
# OK ! Es wurde ja nur die normale Ausgabe an das /dev/null weitergeleitet, und die zu sehende Ausgabe ist die Fehlerausgabe.┌──(user㉿disp2872)-[~]
└─$ ./script.sh 2> /dev/null
Desktop Downloads Pictures QubesIncoming Videos script.sh
Documents Music Public Templates office.AppImage
# OK die Fehler wurden ausgeblendet.Links:
https://linuxconfig.org/list-of-exit-codes-on-linux
https://stackoverflow.com/questions/3385201/confused-about-stdin-stdout-and-stderr
https://wiki.ubuntuusers.de/Shell/Operatoren/
https://linuxsimply.com/bash-scripting-tutorial/redirection-and-piping/redirection/echo-to-stderr/
Lösung:
3) >/dev/null 2>&1