essayant de capturer la sortie de javac dans un shell bash
Question
J'essaie de rediriger la sortie du compilateur Java vers un fichier. Je pensais que c'était supposé être:
javac file.java > log.txt
ou quelque chose. Au lieu de cela, je vois toutes les sorties sur le terminal et rien dans log.txt!
De même, si je souhaite également consigner les erreurs, est-ce que je le fais
javac file.java 2>&1 > log.txt
?
La solution
javac file.java 2> log.txt
La raison en est que vous avez deux descripteurs de fichier de sortie au lieu d'un. Le port habituel est stdout, que vous pouvez rediriger avec > et il est censé être utilisé pour la sortie résultante. Le second, stderr, est destiné aux sorties lisibles par l’homme telles que les avertissements, les erreurs, l’état actuel, etc., celui-ci est redirigé avec 2 >.
Votre deuxième ligne, avec 2 > & amp; 1, redirige stderr vers stdout et enfin stdout dans log.txt.
Autres conseils
Avez-vous essayé
javac -Xstdout log.txt file.java
Ceci enverra les erreurs du compilateur dans un fichier journal au lieu de stderr.