Diese Frage wird in BashFAQ / 032 behandelt . In Ihrem Beispiel würden Sie:
{ time sleep 1; } 2> /dev/null
Der Grund warum
time sleep 1 2>/dev/null
nicht verhalten, wie Sie erwarten, weil mit dieser Syntax, werden Sie wollen time
den Befehl sleep 1 2>/dev/null
(ja, der Befehl sleep 1
mit stderr umgeleitet /dev/null
). Das eingebaute time
funktioniert so, dass dies tatsächlich möglich ist.
Das bash
Builtin kann dies tatsächlich, weil ... nun, es ist ein Builtin. Ein solches Verhalten wäre bei einem externen Befehl, der sich time
normalerweise in befindet, unmöglich /usr/bin
. Tatsächlich:
$ /usr/bin/time sleep 1 2>/dev/null $
Nun die Antwort auf deine Frage
Warum geht die Ausgabe einiger Linux-Programme weder an STDOUT noch an STDERR?
ist: die Ausgabe geht nach stdout oder stderr .
Hoffe das hilft!