GNU/Linux >> Tutoriels Linux >  >> Linux

Afficher uniquement Stderr à l'écran, mais écrire à la fois Stdout et Stderr dans un fichier ?

Comment puis-je utiliser la magie BASH pour y parvenir ?
Je veux uniquement voir la sortie stderr à l'écran,
mais je veux que stdout et stderr soient écrits dans un fichier.

Clarification :
Je veux que stdout et stderr se retrouvent dans le même fichier. Dans l'ordre où ils se produisent.
Malheureusement, aucune des réponses ci-dessous ne le fait.

Réponse acceptée :

Même sans aucune redirection, ou avec rien d'autre que >logfile 2>&1 , vous n'êtes pas assuré de voir la sortie dans l'ordre de génération.

Pour commencer, la sortie standard de l'application sera mise en mémoire tampon (vers tty) ou mise en mémoire tampon (vers un pipeline), mais stderr n'est pas mise en mémoire tampon, de sorte que les relations entre l'ordre de sortie sont rompues en ce qui concerne un lecteur. Les étapes suivantes de tout pipeline que vous pourriez concocter n'obtiendront pas un accès ordonné de manière déterministe aux deux flux (ce sont conceptuellement des choses qui se passent en parallèle, et vous êtes toujours soumis au planificateur - si au moment où votre lecteur obtient une tranche, l'écrivain a déjà écrit dans les deux canaux, vous ne pouvez pas dire lequel est venu en premier).

"[L]'ordre dans lequel ils se produisent" n'est vraiment connu que de l'application. L'ordre de sortie sur stdout/stderr est un problème bien connu - classique, peut-être -.


Linux
  1. Comment rediriger uniquement Stderr ?

  2. Comment rediriger la sortie vers un fichier et stdout

  3. Comment rediriger stderr et stdout vers différents fichiers dans la même ligne de script ?

  4. Est-il possible que le descripteur de fichier Linux 0 1 2 ne soit pas pour stdin, stdout et stderr ?

  5. Déterminez si la sortie est stdout ou stderr

Bash :Écrire dans un fichier

Comment rediriger stderr vers stdout dans Bash

Confus à propos de stdin, stdout et stderr ?

Comment limiter la sortie de ls pour afficher uniquement le nom de fichier, la date et la taille ?

bash :redirige stderr vers le fichier et stdout + stderr vers l'écran

Capture de STDERR et STDOUT dans un fichier à l'aide de tee