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
file1undfile2. -
stdoutsenden von dieser Operation zufile.txt. -
sende
stderrzustdout. -
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 .