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> 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
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 exemple command 1>&2
rediriger stdout vers stderr.
Essaye ça:
your_command 2>stderr.log 1>stdout.log
Les chiffres à 0
travers 9
sont des descripteurs de fichier en bash.
0
représente une entrée standard, 1
une sortie standard, 2
une erreur standard. 3
à travers 9
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:
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 -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.
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>