Je le sais beaucoup:
$ command 2>> error
$ command 1>> output
Existe-t-il un moyen de sortir le stderr dans le fichier d'erreur et de sortir stdout dans le fichier de sortie dans la même ligne de bash?
Ajoutez-les simplement en une seule ligne command 2>> error 1>> output
Cependant, notez que >>
c'est à ajouter si le fichier contient déjà des données. Alors que, >
écrasera toutes les données existantes dans le fichier.
Donc, command 2> error 1> output
si vous ne souhaitez pas ajouter.
Juste pour le plaisir de terminer, vous pouvez écrire 1>
comme juste >
puisque le descripteur de fichier par défaut est la sortie. oui 1>
et >
c'est la même chose.
Alors, command 2> error 1> output
devient,command 2> error > output
1>
peut être écrit comme>
command &2>err.log
, je pense que je suis totalement déroutant pour les sintaxies. (Un lien vers une réponse appropriée de tous les pipe-ismes bash pourrait être en ordre)command &2>err.log
ne pas être tout à fait légitime - l'esperluette dans cette syntaxe est utilisée pour le descripteur de fichier en tant que cible, par exemplecommand 1>&2
rediriger stdout vers stderr.Essaye ça:
Plus d'information
Les chiffres à
0
travers9
sont des descripteurs de fichier en bash.0
représente une entrée standard,1
une sortie standard,2
une erreur standard.3
à travers9
sont disponibles pour toute autre utilisation temporaire.Tout descripteur de fichier peut être redirigé vers un fichier ou vers un autre descripteur de fichier à l'aide de l'opérateur
>
. Vous pouvez à la place utiliser l'opérateur>>
pour ajouter à un fichier au lieu d'en créer un vide.Usage:
S'il vous plaît se référer au Guide avancé d' écriture des scripts Bash: Chapitre 20. Réacheminement E / S .
la source
Comme ça:
la source
Ou si vous aimez mélanger les sorties (stdout et stderr) dans un seul fichier, vous pouvez utiliser:
la source
La sortie de plusieurs commandes peut être redirigée. Cela fonctionne pour la ligne de commande ou, plus utilement, dans un script bash. Le
-s
dirige l'invite de mot de passe à l'écran.Hereblock cmds stdout / stderr sont envoyés à des fichiers séparés et rien à afficher.
Hereblock cmds stdout / stderr sont envoyés à un seul fichier et affiché.
Hereblock cmds stdout / stderr sont envoyés à des fichiers séparés et stdout à afficher.
Selon qui vous êtes (whoami) et votre nom d'utilisateur, un mot de passe peut ou non être requis.
la source