42 votes

Pourquoi rediriger la sortie vers 2>&1 et 1>&2 ?

Je suis tombé sur plusieurs commandes qui utilisent 2>&1 et 1>&2, mais je n'arrive pas vraiment à comprendre l'utilité de les utiliser et quand je devrais les utiliser.

Ce que je comprends

Je sais que 1 représente la sortie standard et 2 représente l'erreur standard. Je comprends que 2>&1 combine la sortie de 2 à 1 et vice versa.

Ce que je ne comprends pas

  1. Quand devrais-je l'utiliser ?
  2. Quel est son but ?

0voto

Adobe Points 2331

J'utilise cela pour démarrer un travail détaché :

someProgram 2>&1 >& my.log &

ensuite, je peux me déconnecter et someProgram continuera de s'exécuter. Cette fonctionnalité est fournie par GNU Screen, tmux et d'autres programmes - mais ici elle est réalisée sans aucune dépendance externe.

0voto

Faiz Points 1

Imaginez qu'il y a un répertoire nommé try qui contient ces trois fichiers : file file1 et file2.

Exécutez maintenant cette commande :

cat file file1 file2 file3

Les trois premiers fichiers s'ouvrent mais cat génère une erreur en essayant d'ouvrir le quatrième car il n'existe pas.

Exécutez maintenant :

cat file file1 file2 file3 1>outfile 2>&1

Vous ne verrez aucune sortie à l'écran : Tout d'abord 1>outfile redirigera la sortie de la commande vers outfile puis elle redirigera (2>&1) l'erreur générée en essayant d'ouvrir file3 vers outfile.

1>&2 fonctionne de manière similaire et redirige le flux d'erreur vers la sortie standard.

J'espère que cela vous sera utile!

0voto

warrenm Points 10124

Scénario alternatif: les commandes terminales affichent la sortie dans une autre terminale

Utilisez la commande tty dans chaque terminal pour les identifier:

$ tty
/dev/pts/0

$ tty
/dev/pts/1

En supposant que ces TTYs, pour rediriger la sortie du premier vers le second, exécutez ceci dans le premier terminal:

exec 1>/dev/pts/1

Remarque: Maintenant chaque sortie de commande s'affichera sur pts/1

Pour restaurer le comportement par défaut de stdout de pts/0:

exec 1>/dev/pts/0

Consultez cette vidéo pour une démonstration.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X