Une commande tar normale
tar cvf foo.tar ./foo >foo.out 2>foo.err
a trois flux d'E / S de sortie
- archiver les données dans foo.tar
- liste des noms de fichiers vers STDOUT (redirigé vers foo.out)
- messages d'erreur vers STDERR (redirigé vers foo.err)
Je peux ensuite inspecter foo.err pour les messages d'erreur sans avoir à lire la liste des noms de fichiers.
si je veux faire quelque chose avec les données d'archive (les diriger via netcat ou un programme de compression spécial), je peux utiliser l' -f -
option de tar ainsi
tar cvf - ./foo 2>foo.err | squish > foo.tar.S
Mais maintenant, ma liste de noms de fichiers est mélangée à mes messages d'erreur parce que la -v
sortie de tar ne peut évidemment pas aller vers STDOUT (c'est là que les données d'archives circulent), donc tar écrit intelligemment cela dans STDERR à la place.
En utilisant le shell Korn, existe-t-il un moyen de construire une commande qui redirige le flux d'archive vers une autre commande tout en capturant la -v
sortie séparément des messages d'erreur.
tee
? Cela semble être un cas d'utilisation assez valable pour cela.