Rediriger toutes les sorties vers le fichier [dupliquer]

cette question a déjà une réponse ici:

je sais que sous Linux, pour rediriger la sortie de l'écran vers un fichier, je peux utiliser le > ou tee . Cependant, je suis pas sûr pourquoi une partie de la sortie est encore sortie à l'écran et pas écrit dans le fichier.

y a-t-il un moyen de rediriger toute la sortie vers le fichier?

637
demandé sur ROMANIA_engineer 2011-07-13 09:06:49
la source

10 ответов

cette partie est écrite à stderr, utilisez 2> pour la rediriger. Par exemple:

foo > stdout.txt 2> stderr.txt

ou si vous voulez dans le même fichier:

foo > allout.txt 2>&1

Note: cela fonctionne dans (ba)sh, vérifiez votre shell pour la bonne syntaxe

1020
répondu Op De Cirkel 2011-07-13 09:10:01
la source

Tous POSIX systèmes d'exploitation ont 3 flux : stdin, stdout, et stderr. stdin est l'entrée, qui peut accepter le stdout ou stderr. stdout est la sortie primaire, qui est redirigée avec > , >> , ou | . stderr est la sortie d'erreur, qui est traitée séparément de sorte que toutes les exceptions ne sont pas passées à une commande ou écrite à un fichier qu'il pourrait casser; normalement, ce est envoyé à un log d'une sorte, ou jeté directement, même lors de la sortie standard est redirigée. Pour rediriger les deux vers le même endroit, utilisez:

command &> /some/file

EDIT : merci à Zack de souligner que la solution ci-dessus n'est pas portable -- utiliser à la place:

*command* > file 2>&1 

si vous voulez réduire l'erreur au silence, faites:

*command* 2> /dev/null
135
répondu Bryan Agee 2014-10-23 13:48:35
la source

pour obtenir la sortie sur la console et dans un fichier file.txt par exemple.

make 2>&1 | tee file.txt

Note: & (dans 2>&1 ) précise que 1 n'est pas un nom de fichier mais un descripteur de fichier.

71
répondu Sagar Jain 2017-05-28 19:54:10
la source

utilisez ceci - "require command here" > log_file_name 2>&1

description détaillée de l'opérateur de redirection sous Unix/Linux.

l'opérateur > redirige habituellement la sortie vers un fichier, mais il peut s'agir d'un périphérique. Vous pouvez également utiliser >> pour ajouter.

si vous ne spécifiez pas de nombre, alors le flux de sortie standard est supposé, mais vous pouvez également rediriger les erreurs

> file redirects stdout to file
1> file redirects stdout to file
2> file redirects stderr to file
&> file redirects stdout and stderr to file

/dev/null, null dispositif prend toutes les entrées que tu veux et les jette. Il peut être utilisé pour supprimer toute sortie.

38
répondu Indrajeet Gour 2015-06-11 18:57:51
la source

crédits à osexp2003 et J. A. ...


au lieu de mettre

&>> your_file.log

derrière une ligne en

crontab -e

j'utilise

#!/bin/bash
exec &>> your_file.log
…

au début d'un script BASH.

Avantage: vous avez les définitions de log dans votre script. Bon pour Git etc.

23
répondu qräbnö 2016-03-19 17:26:20
la source

il pourrait s'agir de l'erreur type. Vous pouvez le rediriger:

... > out.txt 2>&1
15
répondu Petar Ivanov 2011-07-13 09:17:18
la source

commande:

foo >> output.txt 2>&1

ajoute à la sortie .txt fichier, sans remplacer le contenu.

14
répondu ellockie 2015-11-24 20:08:01
la source

vous pouvez utiliser la commande exec pour rediriger toutes les commandes stdout/stderr plus tard.

exemple de script:

exec 2> your_file2 > your_file1
your other commands.....
13
répondu osexp2003 2015-10-10 21:35:07
la source

utiliser >> pour ajouter:

command >> file

7
répondu khushi muhammad 2015-10-10 21:34:30
la source

dans Linux Mint, cette chaîne de commande routée exécutait le script et les erreurs dans un seul fichier txt. bash -x ./setup.sh > setup.txt 2>&1 . Nom du Script: setup.sh et la destination de la sortie était configurée.txt.

-3
répondu Jerry 2015-10-10 21:30:54
la source

Autres questions sur