2010-07-01 5 views
1

Peut-être qu'il me manque quelque chose, mais quand je tape une commande verbose ditto (ditto [-v] [-V] 2>>some.log), il va envoyer une sortie régulière à stderr. Par conséquent, mon fichier some.log sera rempli avec des entrées comme copying file ....Pourquoi ditto envoie-t-il des erreurs à stdout et à stderr?

Cela ne me fait pas de sens logique, mais il est ce que le manuel dit ainsi:

-V   Print a line of output to stderr for every file, symbolic 
       link, and device copied. 

Je n'ai pas vérifié, mais je suppose que les erreurs d'E/S réelles sont envoyés au stdout. Mon souhait initial était d'afficher une sortie régulière, mais de consigner toutes les erreurs. Donc, en supposant que les erreurs sont envoyées à stdout, alors ce problème n'est pas vraiment un problème - c'est juste que la sémantique n'a pas de sens pour moi.

Donc, cela devrait me donner les sorties correctes:

ditto -V /some/path/ /some/other/path 1>>some.log 
+0

Appartient à superuser.com –

Répondre

0

En fait, ditto envoie les messages d'erreur et les messages d'état verbeux à stderr. La raison en est que si c'est en mode -c (create archive), et que le fichier de destination a été spécifié comme -, il écrit l'archive sur stdout. Avoir des messages d'état mélangés avec l'archive serait très très mauvais. BTW, tar -v fait la même chose, pour la même raison.

+0

J'ai déjà essayé ceci: 'ditto -V/some/chemin// un/autre/chemin 2 >> some.log' et dans mon terminal j'ai eu la sortie disant: I/O Erreur [...], mais dans mon journal, j'ai reçu toutes les copies, etc. Alors quelle est la meilleure façon d'obtenir le journal des erreurs - est-ce possible? –

+0

Lorsque j'ai essayé d'utiliser 'ditto' pour copier un fichier auquel je n'ai pas accès en lecture, il a imprimé l'erreur à stderr. Etes-vous sûr que le message d'erreur E/S provenait de 'ditto'? –

+0

Peut-être pas? J'ai juste essayé après avoir enlevé l'accès en lecture, et il est allé à stderr; Cependant, je tentais cela sur un système avec un mauvais disque dur plus tôt, et l'erreur d'E/S imprimée sur stdout (peut-être pas par idem). –

Questions connexes