GNU/Linux >> Tutoriels Linux >  >> Linux

Rediriger toutes les sorties vers un fichier dans Bash

Tous les systèmes d'exploitation POSIX ont 3 flux :stdin, stdout et stderr. stdin est l'entrée, qui peut accepter stdout ou stderr. stdout est la sortie principale, qui est redirigée avec > , >> , ou | . stderr est la sortie d'erreur, qui est gérée séparément afin que les exceptions ne soient pas transmises à une commande ou écrites dans un fichier susceptible de se casser ; normalement, cela est envoyé à un journal quelconque, ou vidé directement, même lorsque la sortie standard est redirigée. Pour rediriger les deux vers le même endroit, utilisez :

$command &> /some/file

MODIFIER  : merci à Zack d'avoir signalé que la solution ci-dessus n'est pas portable. Utilisez plutôt :

$command > file 2>&1 

Si vous voulez faire taire l'erreur, faites :

$command 2> /dev/null

Cette partie est écrite dans stderr, utilisez 2> pour le rediriger. Par exemple :

foo > stdout.txt 2> stderr.txt

ou si vous voulez dans le même fichier :

foo > allout.txt 2>&1

Remarque :cela fonctionne en (ba)sh, vérifiez votre shell pour la syntaxe appropriée


Linux
  1. Fichier équivalent ".bashrc" lu par tous les shells ?

  2. Manière de rediriger la sortie d'un programme et de l'avoir toujours sur Stdout ?

  3. Commande pour exporter le contenu du fichier vers Stdout ?

  4. Comment rediriger uniquement Stderr ?

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

Bash :Écrire dans un fichier

Comment rediriger stderr vers stdout dans Bash

Comment rediriger la sortie de la commande shell

Comment rediriger la sortie du service systemd vers un fichier

Déterminez si la sortie est stdout ou stderr

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