Ich verstehe nicht ganz, wie der Computer diesen Befehl liest.
cat file1 file2 1> file.txt 2>&1
Wenn ich das verstehe, 2>&1
leiten Sie Standardfehler einfach zur Standardausgabe um.
Nach dieser Logik liest sich der Befehl für mich wie folgt:
-
Dateien verketten
file1
undfile2
. -
stdout
senden von dieser Operation zufile.txt
. -
sende
stderr
zustdout
. -
Ende?
Ich bin mir nicht sicher, was der Computer macht. Nach meiner Logik sollte der Befehl
sein
cat file1 file2 2>&1 > file.txt
aber das ist nicht richtig.
Akzeptierte Antwort:
Ich finde es einfacher, an Zuweisungen zu denken.
>
ist wie=
&
ist wie$
Sie beginnen mit
1 = /dev/tty
2 = /dev/tty
dann Ihr erstes Beispiel, 1> file.txt 2>&1
, nicht
1 = file.txt
2 = $1 # and currently $1 = file.txt
Sie verlassen mit
1 = file.txt
2 = file.txt
Wenn Sie es anders gemacht haben, beginnen Sie wieder mit
1 = /dev/tty
2 = /dev/tty
dann 2>&1 > file.txt
tut
2 = $1 # and currently $1 = /dev/tty
1 = file.txt
das Endergebnis ist also
1 = file.txt
2 = /dev/tty
und Sie haben nur stdout
umgeleitet , nicht stderr
.