¿Cómo obtener resultados coloreados del script bash?


9

Cuando ejecuto grepdesde gnome-terminal, obtengo resultados en color: coincidencias fácilmente notables, números de línea (-n) con diferentes colores, etc.

Pero cuando ejecuto exactamente el mismo grepcomando a través del script bash obtengo una salida plana, sin colorear

¿Hay alguna manera de obtener resultados en color usando el script bash?

Respuestas:


9

Usar la --coloropción me funciona cuando ejecuto grep dentro de los scripts de shell.

Aquí hay un ejemplo de lo que quieres.

grep -n --color=auto "PATTERN" FILE

De hecho gracias. Hojeé la página de manual de grep pero --color[=WHEN], --colour[=WHEN]me confundí, aunque se explica bien
— zetah

3

Aquí hay un pequeño script que lo ayuda a comprender cómo funciona tput con 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;

Esto imprimirá la siguiente salida con formatos como BOLD , UNDERLINE, Highlighting y colores.

BASH Script imprime con formato de texto y COLORES


0

¿Intentaste agregar estos alias a tu ~/.bashrc?

alias grep='grep --color=auto'
alias fgrep='fgrep --color=auto'
alias egrep='egrep --color=auto'

Sí, esas líneas están presentes, pero desafortunadamente la salida es la misma (sin color) cuando grep se ejecuta desde el script bash.
— zetah

Los alias de shell solo tienen efecto en las sesiones de shell interactivas de forma predeterminada. Debe 1) agregar la --coloropción al grepcomando explícitamente (seguro) o 2) habilitar la expand_aliasesopción de shell y source ~/.bashrc(propenso a problemas debido a otros posibles alias). Puede refinar 1) y definir una variable GREP="grep --color=auto"y luego usarla en $GREPlugar de grepen todas partes en su secuencia de comandos.
— David Foerster
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.