Hay una serie de tutoriales / publicaciones en línea (por ejemplo, http://www.cyberciti.biz/faq/bash-shell-change-the-color-of-my-shell-prompt-under-linux-or-unix/ ) sobre cómo personalizar su solicitud en bash mediante la configuración PS1
. ¿Hay alguna manera de personalizar el color / negrita del comando que escribo?
En otras palabras, como ejemplo, digamos que quería un indicador verde, un comando azul en negrita, y luego mostrar los colores predeterminados. En el siguiente ejemplo, ya sé cómo hacer que " joe>
" se muestre como verde, azul, negrita, lo que sea mediante la configuración PS1
. Pero, ¿hay alguna forma en que pueda hacer que se git status
muestre tan audaz, por ejemplo?
joe> git status
# On branch master
# Your branch is ahead of 'origin/master' by 2 commits.
#
...
preexec() { printf '\e[0m' }
Respuestas:
Tendría que dejar un color detrás de la PS1 (comience después
>
en su ejemplo), y luego use laDEBUG
trampa bash para borrar el color antes de ejecutar su comando (pero después de presionar enter en su shell. Pruebe algo como esto :fuente
ls --color=always
sería coloreado)?^[(B^[[m
). Sin embargo, solo ocurre en algunos sistemas: probé esto en dos sistemas, ambos con Ubuntu 12.04 LTS, y solo uno de ellos tuvo la interferencia.Para completar, he aquí cómo configurar un color de solicitud y el color de entrada de la línea de comando en bash. Pon estas líneas en tu
.bashrc
.La trampa DEBUG, como lo sugiere Chris Down , se usa para restablecer los atributos de texto. Está destinado a la depuración, pero también es útil ejecutar código antes de ejecutar el comando escrito por el usuario .
En la configuración del indicador:
\[…\]
se usa alrededor de secuencias de escape para decirle a bash que no usan ningún espacio de la pantalla (sin ellos, la pantalla se volvería confusa cuando bash necesite volver a dibujar el indicador).\e[…m
donde…
es un número, o más generalmente una secuencia de números separados por punto y coma, es una secuencia de escape enviada al terminal para afectar el color y otros atributos del siguiente texto. Por ejemplo,1;34
establece negrita azul;0;32
restablece todos los atributos y luego cambia el color a verde. Ajustar al gusto.\w\$
imprimir el directorio actual y$
o#
. Por supuesto, puede cambiar esto a lo que quiera e insertar cambios de atributos de texto en el medio si lo desea.fuente
Estoy aprendiendo acerca de los comandos BASH y he estado sentado aquí jugando con los comandos de color en mi versión. Descubrí esta solución:
Usando este comando:
Deconstruir: PS1 =: inicia el comando PS1
'': contiene el comando entre comillas simples (por lo que BASH no cree que sea un comando para él)
\: cada comando individual comienza con esto
[]: contiene cada comando
\ e (también podría ser \ 033 un carácter de escape ASCII): inicia un comando de color
El comando de color precede a lo que se aplica.
[\ e [0; 36m]: cian
\ h: nombre de host
'>': impreso después del nombre del host
[\ e [0; 31m]: rojo
Aparentemente, el comando rojo al final hace que la entrada sea roja. Simplemente cambie los colores a su gusto y eso es lo que está buscando.
Además, este sitio me ayudó un poco:
https://www.linuxnix.com/linuxunix-shell-ps1-prompt-explained-in-detail/
Mi versión: GNU bash, v. 4.2.46
Cuídate,
Comadreja
fuente