Existe-t-il un moyen simple de consigner toutes les activités d’un script Shell dans un fichier?
J'ai un script Il produit des choses comme les "instructions" echo, ainsi que d'autres sorties du programme. Je connais les commandes:
command | tee -a "$log_file"
et
command >> logifle.log
Ce que je demande, c'est s'il existe un paramètre Shell pour la journalisation, ou une commande set que je peux utiliser ou quelque chose du genre. Je ne veux pas nécessairement ajouter des dizaines de redirections ou tee aux fichiers si je ne suis pas obligé. Je veux toujours obtenir une sortie std, je veux juste qu'elle soit également enregistrée.: Wq
si vous exécutez normalement votre script avec foo.sh
, essayez de l'exécuter (en supposant qu'il s'agisse d'un script bash) avec bash -x foo.sh
. Si vous souhaitez que tout soit redirigé vers un fichier, essayez bash -x foo.sh > file.log 2>&1
(remarque: je redirige également stderr, supprimez le 2>&1
si vous ne le souhaitez pas). Si vous voulez également voir ce qui se passe, bash -x foo.sh 2>&1 | tee log.file
.
Il existe un moyen très simple et pratique:
Utilisation de script
pour rendre TypeScript de la session de terminal
Lancer la commande script
name__
Si l'argument file
est donné, par exemple script ~/tmp/output
, script
enregistre le dialogue dans ce fichier. Si aucun nom de fichier n'est fourni, le dialogue est enregistré dans le fichier TypeScript
name__
Commencez votre script ou ce que vous voulez commencer
Si votre script est terminé, arrêtez script
via Ctrl-D
Vérifiez la sortie dans le fichier de sortie par défaut TypeScript
name__
Pour lancer votre commande en une étape avec script
name__, utilisez le paramètre -c
-c COMMAND
Run the COMMAND rather than an interactive
Shell. This makes it easy for a script to capture
the output of a program that behaves differently
when its stdout is not a tty.
L’utilisation de script
dans votre script n’a aucun sens car script
commande le shell ou démarre un nouveau shell.
Si la variable Shell existe, le shell créé par le script sera celui-ci. Si Shell n'est pas défini, le Bourne Shell est utilisé. (La plupart des coquillages définissent cette variable automatiquement).