té vers un fichier compressé

tee lit à partir de l’entrée standard et écrit sur la sortie standard et un fichier.

some_command |& tee log 

Est-ce possible que le té écrive dans un fichier compressé?

 some_command |& tee -some_option log.bz2 

Si le tee ne peut pas faire ça, y a-t-il une autre commande?

Je peux redirect la sortie vers un fichier compressé avec

 some_command |& bzip2 > log.bz2 

Mais avec cette commande, la sortie vers la sortie standard est manquante.

Si vous avez votre sortie sur stderr, vous pouvez la redirect:

 some_command | tee /dev/stderr | bzip2 > log.bz2 

Cela donne la sortie à la fois à stdout et à stderr ( | tee /dev/stderr ). Ensuite, il | bzip2 > log.bz2 standard vers bzip2 ( | bzip2 > log.bz2 )

Si votre shell est bash (version 4.x), vous avez la «substitution de processus» et vous pouvez utiliser:

 some_command 2>&1 | tee >(bzip2 -c > log.bz2) 

Ceci redirige l’erreur standard et la sortie standard vers tee (comme |& fait, mais je préfère la notation classique). La copie de la sortie du tee est envoyée à un processus au lieu d’un fichier; Le processus est bzip2 -c > log.bz2 qui écrit son entrée standard au format compressé sur sa sortie standard. L’autre copie (non compressée) de la sortie va bien sûr directement à la sortie standard.