Étant donné une commande qui change de comportement lorsque sa sortie va vers un terminal (par exemple, produire une sortie colorée), comment cette sortie peut-elle être redirigée dans un pipeline tout en préservant le comportement modifié ? Il doit y avoir un utilitaire pour cela, dont je ne suis pas au courant.
Certaines commandes, comme grep --color=always
, ont des indicateurs d'option pour forcer le comportement, mais la question est de savoir comment contourner les programmes qui reposent uniquement sur le test de leur descripteur de fichier de sortie.
Si c'est important, mon shell est bash
sous Linux.
Réponse acceptée :
Vous pourriez obtenir ce dont vous avez besoin en utilisant unbuffer
.
unbuffer
est un tcl
/ expect
scénario. Regardez la source si vous voulez. Notez également la section CAVEATS dans man.
Notez également qu'il n'exécute pas les alias tels que :
alias ls='ls --color=auto'
à moins d'ajouter une astuce comme le note Stéphane Chazelas :
Si vous faites un alias unbuffer='unbuffer '
(notez l'espace de fin), puis les alias seront développés après unbuffer
.