GNU/Linux >> Tutoriels Linux >  >> Linux

Ordre des redirections ?

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 :

  1. concaténer les fichiers file1 et file2 .

  2. envoyer stdout de cette opération vers file.txt .

  3. envoyer stderr vers stdout .

  4. 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 .


Linux
  1. Filtrage de tcpdump :Créer de l'ordre à partir du chaos

  2. Linux - Tout est un fichier ?

  3. Trier une partie d'un fichier ?

  4. Fichiers Cat dans un ordre spécifique basé sur le numéro dans le nom de fichier ?

  5. Écrire dans le fichier .txt ?

Comprendre les autorisations de fichiers Linux

Bash :Écrire dans un fichier

Commande Tail Linux

Commande tactile Linux

Éditeur VIM

Qu'est-ce qu'un fichier .sh ?