resueltos - ¿Por qué grep pierde color de salida cuando se ejecuta desde un script bash?
scripts bash ejemplos (2)
Posible duplicado:
grep pierde coloración cuando se ejecuta desde script bash
Tengo un script bash simple para imprimir un encabezado en la parte superior de mis resultados grep
:
#!/bin/bash
for var in "$@"
do
if [[ $var != -* ]];
then
break
fi
done
echo
echo -en "/e[1;31m ====== GREP $var ======/e[0m/n"
echo
grep $@
Pero el comando final de alguna manera no es lo mismo que ejecutar grep
directamente desde el indicador, porque los colores no aparecen en los resultados. Al ejecutar grep
directamente, los resultados muestran los nombres de archivo en morado y los partidos en rojo, pero ahora todo el resultado es el color de texto del terminal normal. ¿Puede alguien decirme cómo obtener la versión en color de mi script?
Grep tiene 3 modos de color, Auto, Siempre y Apagado.
Auto elimina los códigos cuando está conectado a una salida no interactiva, como una tubería (si quiere ver por qué, intente redirigir la salida de grep --color=always
en un archivo y luego mire el archivo ... códigos de control en todos lados)
Parece que grep no produce colores cuando no está en modo interactivo. Puede obligarlo a producir resultados coloreados:
grep --color=always $@