Comment enregistrer le résultat d'une commande dans un fichier?
Existe-t-il un moyen d'utiliser aucun logiciel? J'aimerais savoir comment.
command-line
led-Zepp
la source
la source
someCommand 2> someFile.txt
etsomeCommand 2>> someFile.txt
redirige également versstterr
someFile.txtmake
commande dans un fichier, cette syntaxe requiert la syntaxe suivante:make > someFile.txt 2>&1
(source: linuxquestions.org/questions/linux-newbie-8/… )Pour écrire le résultat d’une commande dans un fichier, il existe 10 méthodes couramment utilisées.
Vue d'ensemble:
Liste:
command > output.txt
Le flux de sortie standard sera redirigé vers le fichier uniquement, il ne sera pas visible dans le terminal. Si le fichier existe déjà, il est écrasé.
command >> output.txt
Le flux de sortie standard sera redirigé vers le fichier uniquement, il ne sera pas visible dans le terminal. Si le fichier existe déjà, les nouvelles données seront ajoutées à la fin du fichier.
command 2> output.txt
Le flux d'erreur standard sera redirigé vers le fichier uniquement, il ne sera pas visible dans le terminal. Si le fichier existe déjà, il est écrasé.
command 2>> output.txt
Le flux d'erreur standard sera redirigé vers le fichier uniquement, il ne sera pas visible dans le terminal. Si le fichier existe déjà, les nouvelles données seront ajoutées à la fin du fichier.
command &> output.txt
La sortie standard et le flux d'erreur standard seront redirigés vers le fichier uniquement, rien ne sera visible dans le terminal. Si le fichier existe déjà, il est écrasé.
command &>> output.txt
La sortie standard et le flux d'erreur standard seront redirigés vers le fichier uniquement, rien ne sera visible dans le terminal. Si le fichier existe déjà, les nouvelles données seront ajoutées à la fin du fichier.
command | tee output.txt
Le flux de sortie standard sera copié dans le fichier, il sera toujours visible dans le terminal. Si le fichier existe déjà, il est écrasé.
command | tee -a output.txt
Le flux de sortie standard sera copié dans le fichier, il sera toujours visible dans le terminal. Si le fichier existe déjà, les nouvelles données seront ajoutées à la fin du fichier.
(*)
Bash n'a pas de syntaxe abrégée permettant de ne lier que StdErr à une deuxième commande, ce qui serait nécessaire ici en combinaison avec à
tee
nouveau pour compléter le tableau. Si vous avez vraiment besoin de quelque chose comme ça, regardez s'il vous plaît "Comment faire pour canaliser stderr, et pas stdout?" sur le dépassement de pile pour certaines raisons, par exemple en échangeant des flux ou en utilisant un processus de substitution.command |& tee output.txt
La sortie standard et les flux d'erreur standard seront copiés dans le fichier tout en restant visibles dans le terminal. Si le fichier existe déjà, il est écrasé.
command |& tee -a output.txt
La sortie standard et les flux d'erreur standard seront copiés dans le fichier tout en restant visibles dans le terminal. Si le fichier existe déjà, les nouvelles données seront ajoutées à la fin du fichier.
la source
2>&1
redirige STDERR vers STDOUT,1>&2
redirige STDOUT vers STDERR et3>&1
redirige le flux 3 vers STDERR.sh: 1: Syntax error: "&" unexpected
lorsque j'utilise|& tee
un script Python sur un serveur c9.io. Il semble qu'une coquille différente est utilisée.echo $SHELL
montre/bin/bash
et$SHELL --version
montre la version 4.3.11 (1) -release. J'ai essayé#!/bin/bash
dans mon script python mais je comprends toujourssh: 1: Syntax error
. J'ai eu ce dont j'avais besoin alors je renonce à trier l'étrangeté entresh
etbash
sur mon serveur. Merci.sh
et nonbash
(ou peut-êtrebash
ensh
mode ...). Vous pouvez vérifier ce que votre processus de shell actuel utilise exactementps -p $$ -o cmd=
, car ilecho $SHELL
est peu fiable et vous montrera votre shell de connexion, en ignorant si vous avez peut-être démarré un sous-shell différent.Vous pouvez également utiliser
tee
pour envoyer la sortie dans un fichier:Une légère modification attirera également stderr:
ou légèrement plus court et moins compliqué:
tee
est utile si vous voulez pouvoir capturer la sortie de la commande tout en la visualisant en direct .la source
2>&1
?Vous pouvez rediriger la sortie de la commande vers un fichier:
Pour ajouter le résultat de la commande à un fichier au lieu de l'écraser, utilisez:
la source
Une amélioration à considérer -
Divers scripts introduiront dans la sortie des codes de couleur que vous ne voudrez peut-être pas encombrer dans votre fichier journal.
Pour résoudre ce problème, vous pouvez utiliser le programme sed pour effacer ces codes. Exemple:
la source
ls
etgrep
, prennent en charge--color=auto
les codes de couleur uniquement si la sortie standard est un terminal.Pour les
cron
tâches, etc., vous voulez éviter les extensions Bash. Lessh
opérateurs de redirection POSIX équivalents sontVous remarquerez que l'utilitaire POSIX est en quelque sorte plus simple et plus simple. La
&>
syntaxe a été empruntée àcsh
laquelle devrait déjà vous convaincre que c'est une mauvaise idée.la source
some_command | tee command.log
etsome_command > command.log
le problème est qu'ils n'enregistrent pas la sortie de la commande dans lecommand.log
fichier en temps réel.Pour éviter ce problème et enregistrer le résultat de la commande en temps réel, vous pouvez ajouter
unbuffer
, fourni avec leexpect
package.Exemple:
En supposant que
log.py
contient:tu peux courir
unbuffer python log.py | tee command.log
ouunbuffer python log.py > command.log
Informations complémentaires : Comment enregistrer une sortie de commande dans un fichier en temps réel?
la source