bash, savoir si stdout fait référence à un terminal

2012-10-12

Pour savoir si la sortie standard pointe sur un terminal, on peut utiliser l’opérateur “-t” en bash.

diffutil=diff
if [ -t 1 ]; then
        if which colordiff > /dev/null; then
                diffutil=colordiff
        fi
fi

Dans le cas présenté, on utilisera colordiff pour le rendu sinon diff.

En effet, un pipe avec less (sans l’option -R ou la variable LESS définie à -R) afficherait les caractères d’échappement servant à la colorisation des lignes

Cf une page intéressante : ici