Disons que j'ai un script Zsh et que je voudrais le laisser imprimer la sortie STDOUT
, mais aussi copier (vider) sa sortie dans un fichier sur le disque.
De plus, le script démarre avec l'option suivante
set -o xtrace
ce qui l'oblige à être verbeux et à afficher les commandes qu'il exécute. Je voudrais également capturer cette sortie dans un fichier sur le disque.
Ma compréhension est que si je le fais
./my_script.sh > log.txt
il sera simplement envoyé STDOUT
à log.txt
, mais que se passe-t-il si je veux également voir la sortie dans le terminal?
J'ai lu tee
et l' MULTIOS
option dans Zsh, mais je ne sais pas comment les utiliser.
Quand je fais:
./my_script | tee log.txt
Je peux voir la sortie sur le terminal, mais le fichier ne log.txt
semble pas tout capturer (en fait, il ne capture pratiquement rien).
shell-script
zsh
io-redirection
pipe
output
Amelio Vazquez-Reina
la source
la source
./my_script.sh > log.txt 2>&1
script
commande. Ou peutmyscript >&1 > log.txt 2>&1
Réponses:
Il se peut que votre script génère une sortie vers
stdout
etstderr
, et que vous n'obteniez qu'un seul de ces flux dans votre fichier journal../my_script.sh | tee log.txt
va en effet tout afficher sur le terminal, mais ne fera que viderstdout
le fichier journal../my_script.sh > log.txt 2>&1
fera le contraire, en déposant tout dans le fichier journal, mais sans rien afficher à l'écran.L'astuce consiste à combiner les deux avec
tee
:Cela redirige
stderr
(2
) versstdout
(1
), puis redirigestdout
verstee
, qui le copie dans le terminal et dans le fichier journal.L'
zsh
équivalent multios serait:Autrement dit, redirigez stdout à la fois vers la stdout d'origine et log.txt (en interne via un canal vers quelque chose qui fonctionne comme
tee
), puis redirigez stderr vers cela également (vers le canal vers letee
processus de type interne ).la source
./myscript.sh >&1 2>&1 > log.txt
? (ie changer l'ordre des deux dernières redirections). Y aurait-il une différence entre eux?stdout
, juste pourlog.txt
. La dernière ligne de la réponse (ajoutée par @ StéphaneChazelas et pas moi-même) sort dans les deux.nohup permet à un travail de continuer même si la console meurt ou est fermée, utile pour de longues sauvegardes, etc., mais ici nous utilisons sa journalisation automatique.
la source