Comment obtenir une sortie colorée à partir du script bash?

9

Lorsque j'exécute à greppartir de gnome-terminal, j'obtiens une sortie colorée - correspondance facilement perceptible, numéros de ligne (-n) avec différentes couleurs, etc.

Mais quand j'exécute exactement la même grepcommande via le script bash, j'obtiens une sortie d'avion, sans coloration

Existe-t-il un moyen d'obtenir une sortie colorée en utilisant le script bash?

zetah
la source

Réponses:

9

L'utilisation de l' --coloroption fonctionne pour moi lorsque j'exécute grep à l'intérieur des scripts shell.

Voici un exemple de ce que vous voulez.

grep -n --color=auto "PATTERN" FILE
Octavian A. Damiean
la source
En effet merci. J'ai parcouru la page de manuel de grep mais --color[=WHEN], --colour[=WHEN]je suis confus, bien que cela soit bien expliqué
zetah
3

Voici un petit script qui vous aide à comprendre comment tput fonctionne avec bash

#!/bin/bash
#@auth kesavan.muthuvel
#@desc - bash with colors :)

B=`tput bold`           #BOLD
D=`tput dim`            #DIM
U=`tput sgr 0 1`        #UNDERLINE
U2=`tput smul`          #UNDERLINE2
NOU=`tput rmul`         #NO UNDERLINE
H=`tput smso`           #HIGHLIGHT
X=`tput sgr0`           #RESET
C='tput setaf '         #COLOR


for i in 0 1 2 3 4 5 6 7 ; do
        c=`$C$i` && echo $c${B}I${U}always$NOU $D love \
           ${U2}colors$NOU \& $c${H}GNU/Linux$X
done;

Cela imprimera la sortie suivante avec des formats tels que BOLD , UNDERLINE, Highlighting et colours.

BASH Script imprime avec formatage de texte et COULEURS

Kesavan Muthuvel
la source
0

Avez-vous essayé d'ajouter cet alias à votre ~/.bashrc?

alias grep='grep --color=auto'
alias fgrep='fgrep --color=auto'
alias egrep='egrep --color=auto'
Carlos Ricardo
la source
Oui, ces lignes sont présentes, mais la sortie est malheureusement la même (sans coloration) lorsque grep est exécuté à partir du script bash.
zetah
Par défaut, les alias de shell ont un effet sur les sessions de shell interactives. Vous devez soit 1) ajouter l' --coloroption à la grepcommande explicitement (sûr) ou 2) activer l' expand_aliasesoption shell et source ~/.bashrc(sujet à des problèmes en raison d'autres alias possibles). Vous pouvez affiner 1) et définir une variable GREP="grep --color=auto"et une utilisation ultérieure $GREPau lieu de greppartout dans votre script.
David Foerster