Réponses:
Avec --color=auto
, grep mettra en évidence les chaînes correspondantes si (et seulement si) la sortie est écrite directement sur le terminal et ledit terminal est capable d'afficher une sortie colorée.
Normalement, --color=auto
c'est ce que vous voulez. Si, par exemple, vous utilisez grep pour faire correspondre une URL et la redirigez vers Wget, Wget verra à la \e[1;31mhttp://...
place de l'URL réelle (et s'étouffera dessus).
Les commandes suivantes devraient entraîner une sortie colorée:
echo Super User | grep --color=auto Super
echo Super User | grep --color=always Super | cat
Cependant, cette commande ne doit pas:
echo Super User | grep --color=auto Super | cat
Toute incohérence avec ce comportement doit être considérée comme un bogue.
Avec --color=auto
, la dernière version de Grep pour Windows (2.5.4) - ainsi que la version originale 2.5.4 sur laquelle elle est basée - coloriez la sortie si et seulement si la condition
isatty(STDOUT_FILENO) && getenv("TERM") && strcmp(getenv("TERM"), "dumb")
est vrai, c'est-à-dire que si et seulement si la sortie est écrite sur un terminal, la variable d'environnementTERM
est définie et le terminal n'est pas muet .
Cela ne produira pas le comportement souhaité sous Windows, car il TERM
n'est normalement pas défini. Une solution simple à ce problème consiste à configurer le TERM=windows
dans le panneau de configuration.
La dernière version de grep (2.14) corrige ce problème en colorant la sortie si et seulement si la condition
isatty(STDOUT_FILENO) && should_colorize()
est vrai, où should_colorize()
est défini différemment pour POSIX et Win32:
Pour les premiers, la condition est équivalente à celle de 2.5.4; pour ce dernier, la variable d'environnement TERM
n'a pas besoin d'être définie (elle ne peut tout simplement pas l'être dumb
).
sdgstd.h
, istty(stdout)
renvoie 0
si la sortie est redirigée vers un fichier.
grep
et less
depuis le projet GnuWin (gnuwin32.sourceforge.net). cmd.exe
est amélioré avec l' ansicon
utilité. less --color=auto
fonctionne comme prévu: utilise la couleur lorsqu'aucune redirection n'est appliquée et pas lorsque la sortie est redirigée. Mais grep --color=auto
n'imprime pas les séquences d'échappement dans les deux cas.