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
file1efile2. -
invia
stdoutda questa operazione afile.txt. -
invia
stderrastdout. -
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 .