Ú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
file1afile2. -
odeslat
stdoutz této operace dofile.txt. -
odeslat
stderrnastdout. -
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 .