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
file1etfile2. -
envoyer
stdoutde cette opération versfile.txt. -
envoyer
stderrversstdout. -
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 .