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.