Befehl ohne Ausgabe ausführen Terminal?
Wie kann man einen Befehl wie
apt update
ohne Ausgabe ausführen?
Danke im Voraus
2 Antworten
Unter Unix gibt es sog. File-Deskriptoren. Darüber greift man auf eine Datei zu.
- 0 steht für Standard Input (stdin)
- 1 steht für Standard Output (stdout)
- 2 steht für Standard Error (stderr)
Insgesamt stehen laut POSIX zehn Deskriptoren (0-9) zur Verfügung.
apt update > /dev/null 2>&1
Das Zeichen > entspricht 1> (die 1 muss nicht geschrieben werden, da es der Standardfall ist). 1> bedeutet, dass stdout nach /dev/null umgeleitet wird.
/dev/null ist das sog. Null Device. Du kannst es dir wie ein Schwarzes Loch vorstellen. Was dort landet, ist für immer weg.
2>&1 bedeutet, dass stderr (File Descriptor 2) an die Ausgabe, die sich hinter File Descriptor 1 verbirgt, umgeleitet wird, also an stdout. Da stdout bereits nach /dev/null umgeleitet wird, landen am ende normale Ausgaben und Fehlerausgaben bei /dev/null.
apt update > /dev/null 2>&1
>> / dev / null leitet die Standardausgabe (stdout) nach / dev / null um, wodurch sie verworfen wird.
2> & 1 leitet den Standardfehler(standard error) (2) zur Standardausgabe (standard output)(1) um, die ihn dann ebenfalls verwirft, da die Standardausgabe bereits umgeleitet wurde.
Kannst du mir erklären warum dass funktioniert? Der Output wird in eine Datei umgeleitet... und dann?