Non capisco bene come il computer legge questo comando.
cat file1 file2 1> file.txt 2>&1
Se ho capito, 2>&1
reindirizza semplicemente l'errore standard all'output standard.
Secondo quella logica, il comando mi legge come segue:
-
concatena i file
file1
efile2
. -
invia
stdout
da questa operazione afile.txt
. -
invia
stderr
astdout
. -
fine?
Non sono sicuro di cosa stia facendo il computer. Secondo la mia logica, il comando dovrebbe essere
cat file1 file2 2>&1 > file.txt
ma questo non è corretto.
Risposta accettata:
Trovo più facile pensare di usare i compiti.
>
è come=
&
è come$
Inizi con
1 = /dev/tty
2 = /dev/tty
quindi il tuo primo esempio, 1> file.txt 2>&1
, fa
1 = file.txt
2 = $1 # and currently $1 = file.txt
lasciandoti con
1 = file.txt
2 = file.txt
Se l'hai fatto nell'altro modo, ricomincia con
1 = /dev/tty
2 = /dev/tty
quindi 2>&1 > file.txt
fa
2 = $1 # and currently $1 = /dev/tty
1 = file.txt
quindi il risultato finale è
1 = file.txt
2 = /dev/tty
e hai solo reindirizzato stdout
, non stderr
.