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?
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?
Réponses:
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> outputsi 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> outputdevient,command 2> error > output
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.logne pas être tout à fait légitime - l'esperluette dans cette syntaxe est utilisée pour le descripteur de fichier en tant que cible, par exemple command 1>&2rediriger stdout vers stderr.
Essaye ça:
your_command 2>stderr.log 1>stdout.log
Les chiffres à 0travers 9sont des descripteurs de fichier en bash.
0représente une entrée standard, 1une sortie standard, 2une erreur standard. 3à travers 9sont 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:
file_descriptor > filename
file_descriptor > &file_descriptor
S'il vous plaît se référer au Guide avancé d' écriture des scripts Bash: Chapitre 20. Réacheminement E / S .
Comme ça:
$ command >>output 2>>error
Ou si vous aimez mélanger les sorties (stdout et stderr) dans un seul fichier, vous pouvez utiliser:
command > merged-output.txt 2>&1
La sortie de plusieurs commandes peut être redirigée. Cela fonctionne pour la ligne de commande ou, plus utilement, dans un script bash. Le -sdirige l'invite de mot de passe à l'écran.
Hereblock cmds stdout / stderr sont envoyés à des fichiers séparés et rien à afficher.
sudo -s -u username <<'EOF' 2>err 1>out
ls; pwd;
EOF
Hereblock cmds stdout / stderr sont envoyés à un seul fichier et affiché.
sudo -s -u username <<'EOF' 2>&1 | tee out
ls; pwd;
EOF
Hereblock cmds stdout / stderr sont envoyés à des fichiers séparés et stdout à afficher.
sudo -s -u username <<'EOF' 2>err | tee out
ls; pwd;
EOF
Selon qui vous êtes (whoami) et votre nom d'utilisateur, un mot de passe peut ou non être requis.
1>peut être écrit comme>