Me gustaría crear una función / alias que colorea la salida de otro comando. Hay una manera de hacer esto?
Por ejemplo, tomemos el alias
cuyo resultado es algo parecido a esto:
En el bash/zsh estándar, todo esto está en el mismo color. Sin embargo, me gustaría ajustar la salida para que la parte anterior al propio alias (la parte anterior al =
) es de color verde, y el comando aliased (la parte que sigue a =
) es rojo, por ejemplo.
Obviamente, alias
es sólo un ejemplo, ya que me gustaría añadir colores a otros comandos.
Mi solución actual utiliza awk
:
alias | awk -F"=" '{print "\033[1;32m" $1 "\033[0m=\033[1;31m"$2"\033[0m "}'
No lo encuentro especialmente atractivo (sobre todo los códigos de colores). También parece que este enfoque será mucho más complicado para los comandos más complejos (por ejemplo, añadir la salida de color a top
o ps
) y tampoco parece muy sostenible a largo plazo.
¿Alguna idea sobre cómo hacer esto mejor / más fácil?
PD: Supongo que esta es una pregunta de terminal de Unix/Linux en general, pero como trabajo principalmente en OS X, he decidido empezar a preguntar aquí...
EDITAR : Ahora he encontrado este respuesta, que propone el uso de funciones para hacer awk
la salida se ve más bonita. Sin embargo, no estoy seguro de si quiero tener un montón de funciones de formato fantasma alrededor de mi terminal. Todavía espero algo más limpio...
Este es su ejemplo:
function red(s) {
printf "\033[1;31m" s "\033[0m "
}
function green(s) {
printf "\033[1;32m" s "\033[0m "
}
{
print red($1), green($2), blue($3)
}