¿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.