Grep generalmente muestra texto resaltado en rojo, que es lo que quería, pero esta vez no parece hacer eso sin importar lo que haga. Estoy haciendo esto desde un contenedor Docker ( nginx:1.19-alpine más específicamente) e instalé Bash 5.1 usando RUN apk add bash . Luego agregué un archivo de configuración ~/.bashrc con este contenido:
# set a fancy prompt (non-color, unless we know we "want" color) case "$TERM" in xterm-color|*-256color) color_prompt=yes;; esac force_color_prompt=yes color_prompt=yes if [ "$color_prompt" = yes ]; then PS1='🐳 ${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@server-nginx\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ ' else PS1='🐳 ${debian_chroot:+($debian_chroot)}\u@server-nginx:\w\$ ' fi unset color_prompt force_color_prompt # If this is an xterm set the title to user@host:dir case "$TERM" in xterm*|rxvt*) PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@server-nginx: \w\a\]$PS1" ;; *) ;; esac # enable color support of ls and also add handy aliases alias ls='ls --color=auto' alias grep='grep --color=auto' alias fgrep='fgrep --color=auto' alias egrep='egrep --color=auto' # colored GCC warnings and errors #export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01' # some more ls aliases alias ll='ls -alF' alias la='ls -A' alias l='ls -CF' La cuestión es que $ ls muestra una salida coloreada. Pero cuando trato de canalizarlo a través de grep, todavía es blanco y negro.
// Directories have colors!! $ ls // No color highlighting here $ echo "baba" | grep --color=always ba // No colors here either $ ls | grep bin La misma configuración exacta en una imagen de Docker diferente funcionó perfectamente ( php:7.4-fpm y node:14 ), por lo que tal vez haya algo específico sobre la imagen nginx:1.19-alpine que no muestra colores para grep.
PS printf '%q\n' "$GREP_COLORS" "$GREP_COLOR" imprime este resultado:
$ printf '%q\n' "$GREP_COLORS" "$GREP_COLOR" ms=01\;33 ''Después de mucho investigar, finalmente encontré la solución. La versión de grep que vino con esta imagen de Docker en particular ( nginx:1.19-alpine ) era una especie de "versión de grep de caja ocupada". De todos modos, actualizar grep funcionó:
// Inside of Dockerfile added this RUN apk add --no-cache --upgrade grepAhora grep muestra una salida coloreada. ¡Uf! Espero que esto ayude a otros que puedan encontrarse con este mismo problema.