Me preguntaba si es posible cambiar el color de la salida de un comando en Linux a un color diferente al de la línea de comando donde escribo. Es monótono y difícil de encontrar dónde comienza la salida. me gusta,
@USER/Destop$ ----> blue
/*
--------------
output file in white
-----------
*/
Gracias
preexec () { echo -n "\\e[40;34m" }
; laprecmd
función es en mi humilde opinión no es necesario, parece zsh restablece el color en sí antes de mostrar el mensaje. Pero eso funciona solo para aquellos comandos que no alterarán el color en sí (el ejemplo más destacado esls
) como lo señaló Aaron. Concat
,bc
, incorporado comandos shell, etc. (inclusoalpine
) esto funciona bien."\\e[40;34m"
al final de miPROMPT
var y lopreexec () { echo -n "\\e[40;37m" }
zle_highlight=(default:fg=cyan)
con una versión reciente de zsh. Zsh también ofrece coloración dinámica, comofish
; vea la sección DESTACADO DE CARÁCTER en man zshzle.Respuestas:
Realmente no; El color de la salida de un programa determinado es controlado por el comando, no por el terminal.
Dicho esto, suponiendo que su terminal entienda los códigos de escape ANSI para el color (la mayoría lo hace), puede usar los códigos de escape para establecer el color de aviso deseado al comienzo del aviso y el color de salida deseado al final; esto daría como resultado que sus líneas de comando también estén en el color que establezca para la salida, pero probablemente sea lo más cerca que esté de lo que está buscando. Por ejemplo, lo siguiente:
le dará un aviso que se verá así:
con 'user' y 'host' en morado, 'wd' (su cwd) en marrón (amarillo oscuro), y todo después de '$' en lo que su terminal use para azul claro. (Un xterm predeterminado lo mostrará en cian; gnome-terminal parece tener un tono bastante agradable de azul aciano).
El código de color real, como se especifica en el formato necesario para bash, es, por ejemplo
\[\033[00;35m\]
, dónde00;35
está la especificación de color real; el líder00
rara vez cambia, pero puede producir efectos IIRC en negrita (01), subrayado (??) y video inverso (??), mientras que el '35' final es el color real, que en este caso es el púrpura.Es sorprendentemente difícil encontrar una lista decente de códigos de color ANSI, pero los colores de primer plano van del 30 al 37 y los de fondo del 40 al 47, de la siguiente manera:
Tenga en cuenta que, dado que está configurando un color predeterminado para todo lo que sigue a su solicitud, los programas que ejecuta que no establecen sus propios colores a través de códigos de escape tomarán ese color, por ejemplo, si ejecuta un localizador, es probable que vea su salida en el mismo color que ha configurado para otros comandos. Mientras tanto, los comandos, que no establecen sus propios colores a través de códigos de escape ignorarán sus esfuerzos por completo.
fuente
tput
es mucho más legible para colorear. Por ejemplo, mi mensaje (en bash) es elexport PS1="[\t \[$(tput setaf 9)\]\u\[$(tput setaf 15)\]@\[$(tput setaf 12)\]\h \[$(tput sgr0)\]\w ] \$ "
que muestra la hora, luego el nombre de usuario en un color,@
en otro y el nombre de host en un tercero (rojo, blanco y azul en este momento), luego imprime el PWD y$
. Es muy fácil ver de un vistazo dónde están las líneas de aviso cuando se retrocede por el historial.~/.bashrc
; encuentre la línea donde establece PS1, que es su cadena de solicitud, y modifíquela como se describe en la respuesta. Lo que debe cambiar depende de cómo esté configurada su cadena de solicitud, pero la mayoría de los detalles más destacados están en mi respuesta, y el resto se puede encontrar buscando en Google. No estoy seguro de lo que quieres decir con "¿hay alguna manera de mantener el último igual que el color anterior?"Puede pasar la salida a un programa que hace el coloreado. Por ejemplo, hay programas como
pycolor
:Para construir el tuyo:
Más sobre salida de color.
fuente
Sí, tengo esto funcionando para bash, en linux y mac OS al menos.
Primero, configure algunas variables de atributo, y la solicitud de PS1 para dejar el terminal configurado con los atributos de línea de comandos deseados, por ejemplo:
Luego, use la trampa bash DEBUG, que se ejecuta justo antes de cada comando, para cambiar los atributos de texto para la salida del comando:
fuente
Otra alternativa (comando por comando) es grc - colorizer genérico. Se necesita un poco de trabajo para configurar las expresiones regulares que usa para colorear las cosas. Lo descubrí aquí:
/unix/8414/how-to-have-tail-f-show-colored-output?newsletter=1&nlcode=17737|321c
y aquí:
/unix/26313/colored-find-output
No soy un flash con expresiones regulares, así que no he trabajado mucho con estos comandos.
fuente
Tírelos en su archivo .bashrc y luego obtenga el archivo después de guardarlo.
Una vez hecho esto, puede usar cualquiera de estos en su terminal de forma permanente o hasta que comente las variables o las elimine por completo. Puede usarlos en scripts en su máquina o con sustitución de comandos o lo que sea. Aquí hay un siguiente ejemplo de cómo los uso personalmente:
Usualmente los uso con comandos individuales
echo
y / oprintf
comandos, pero puede usarlos para colorear otros comandos, como elping
comando. Agregue lo siguiente.bashrc
para obtener los efectos. Luego busca tu.bashrc
archivo y ejecuta elcping
comando para usarping
con texto morado. Puede configurar cada función de comando para usar cualquier color que admita su terminal.Entonces intenta:
Su salida para
cping
será púrpura. Si desea utilizar varios colores en la misma salida, puede agregarlos de formas únicas. Cómo lo haces depende completamente de ti. Por ejemplo:fuente
Debe echar un vistazo al comando hl disponible en git hub:
github: git clone http://github.com/mbornet-hl/hl
y en:
http://www.flashnux.com/notes/page_000022_US.html
hl es un comando de Linux escrito en C, especialmente diseñado para colorear un archivo de texto o la salida de un comando. Puede usar hasta 42 colores simultáneamente y usar un archivo de configuración para simplificar las líneas de comando. Puede colorear la salida de cada comando que se puede canalizar a otro. Y si sabe qué son las expresiones regulares, será muy fácil de usar. Puede usar la página de manual para comprender cómo usarla.
fuente