Je ne comprends pas très bien comment l'ordinateur lit cette commande.
cat file1 file2 1> file.txt 2>&1
Si j'ai bien compris, 2>&1
redirigez simplement l'erreur standard vers la sortie standard.
Selon cette logique, la commande me lit comme suit :
-
concaténer les fichiers
file1
etfile2
. -
envoyer
stdout
de cette opération versfile.txt
. -
envoyer
stderr
versstdout
. -
fin ?
Je ne sais pas ce que fait l'ordinateur. Selon ma logique, la commande devrait être
cat file1 file2 2>&1 > file.txt
mais ce n'est pas correct.
Réponse acceptée :
Je trouve plus facile de penser à utiliser les devoirs.
>
est comme=
&
est comme$
Vous commencez avec
1 = /dev/tty
2 = /dev/tty
puis votre premier exemple, 1> file.txt 2>&1
, fait
1 = file.txt
2 = $1 # and currently $1 = file.txt
vous laissant avec
1 = file.txt
2 = file.txt
Si vous l'avez fait dans l'autre sens, vous recommencez avec
1 = /dev/tty
2 = /dev/tty
puis 2>&1 > file.txt
fait
2 = $1 # and currently $1 = /dev/tty
1 = file.txt
donc le résultat final est
1 = file.txt
2 = /dev/tty
et vous avez seulement redirigé stdout
, pas stderr
.