Befehl ohne Ausgabe ausführen Terminal?

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

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.

MRMINEDE 
Fragesteller
 03.08.2020, 18:22

Danke, da wird es noch etwas klarer :)

1
apt update > /dev/null 2>&1
Woher ich das weiß:Studium / Ausbildung – Informatikstudent
MRMINEDE 
Fragesteller
 02.08.2020, 18:37

Kannst du mir erklären warum dass funktioniert? Der Output wird in eine Datei umgeleitet... und dann?

1
whgoffline  02.08.2020, 18:41
@MRMINEDE

>> / 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.

7