Mein Befehl ist:
exec &>/dev/null
Was macht dieser & und der vollständige Befehl hier? Ich weiß, dass es in den Bit-Bucket umgeleitet wird.
Mein Befehl ist:
exec &>/dev/null
Was macht dieser & und der vollständige Befehl hier? Ich weiß, dass es in den Bit-Bucket umgeleitet wird.
Antworten:
Es ist &>
nicht nur so &
.
In bash
, &>
leitet sowohl die Standardausgabe und die Standardfehlerstrom irgendwo.
Daher utility &>/dev/null
ist das gleiche wie utility >/dev/null 2>&1
.
Der Befehl exec &>/dev/null
leitet beide Ausgabestreams der aktuellen Shell um /dev/null
(dh er verwirft alle Ausgaben des Skripts ab diesem Zeitpunkt, fehlerhaft oder auf andere Weise).
Der relevante Teil des bash
Handbuchs:
Redirecting Standard Output and Standard Error
This construct allows both the standard output (file descriptor 1) and
the standard error output (file descriptor 2) to be redirected to the
file whose name is the expansion of word.
There are two formats for redirecting standard output and standard
error:
&>word
and
>&word
Of the two forms, the first is preferred. This is semantically
equivalent to
>word 2>&1
When using the second form, word may not expand to a number or -. If
it does, other redirection operators apply (see Duplicating File
Descriptors below) for compatibility reasons.
exec 2>&1 > /dev/null
/dev/null
(aber nicht den Standardfehler). Was es entspricht, ist exec >/dev/null 2>&1
. Die Reihenfolge der Weiterleitungen ist wichtig.