Úplně nerozumím tomu, jak počítač čte tento příkaz.
cat file1 file2 1> file.txt 2>&1
Pokud rozumím, 2>&1
jednoduše přesměrujte standardní chybu na standardní výstup.
Podle této logiky mi příkaz zní takto:
-
zřetězit soubory
file1
afile2
. -
odeslat
stdout
z této operace dofile.txt
. -
odeslat
stderr
nastdout
. -
konec?
Nejsem si jistý, co počítač dělá. Podle mé logiky by příkaz měl být
cat file1 file2 2>&1 > file.txt
ale to není správné.
Přijatá odpověď:
Připadá mi jednodušší vymýšlet používání úkolů.
>
je jako=
&
je jako$
Začněte s
1 = /dev/tty
2 = /dev/tty
pak váš první příklad, 1> file.txt 2>&1
, dělá
1 = file.txt
2 = $1 # and currently $1 = file.txt
opustí vás
1 = file.txt
2 = file.txt
Pokud jste to udělali jinak, znovu začnete s
1 = /dev/tty
2 = /dev/tty
pak 2>&1 > file.txt
ano
2 = $1 # and currently $1 = /dev/tty
1 = file.txt
takže konečný výsledek je
1 = file.txt
2 = /dev/tty
a vy jste pouze přesměrovali stdout
, nikoli stderr
.