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?

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

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


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'

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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.