Pregunta Cómo cambiar el color de salida del eco en Linux


Estoy tratando de imprimir un texto en la terminal usando el comando echo.

Quiero imprimir el texto en un color rojo. ¿Cómo puedo hacer eso?


1145
2018-05-10 09:07


origen


Respuestas:


Puedes usar estos Códigos de escape ANSI:

Black        0;30     Dark Gray     1;30
Red          0;31     Light Red     1;31
Green        0;32     Light Green   1;32
Brown/Orange 0;33     Yellow        1;33
Blue         0;34     Light Blue    1;34
Purple       0;35     Light Purple  1;35
Cyan         0;36     Light Cyan    1;36
Light Gray   0;37     White         1;37

Y luego utilícelos así en su script:

#    .---------- constant part!
#    vvvv vvvv-- the code from above
RED='\033[0;31m'
NC='\033[0m' # No Color
printf "I ${RED}love${NC} Stack Overflow\n"

que imprime love en rojo.

Del comentario de @ james-lim, si estás usando el echo comando, asegúrese de usar el indicador -e para permitir escapes de barra invertida.

# Continued from above example
echo -e "I ${RED}love${NC} Stack Overflow"

(no agregar "\n" cuando usas echo a menos que quieras agregar una línea vacía adicional)


1563
2018-05-10 09:11



Puedes usar el impresionante tput comando (sugerido en La respuesta de Ignacio) para producir códigos de control de terminales para todo tipo de cosas.


Uso

Específico tput los subcomandos se discuten más adelante.

Directo

Llamada tput como parte de una secuencia de comandos:

tput setaf 1; echo "this is red text"

Utilizar ; en lugar de && Así que si tput errores que el texto todavía muestra.

Variables de Shell

Otra opción es usar variables de shell:

red=`tput setaf 1`
green=`tput setaf 2`
reset=`tput sgr0`
echo "${red}red text ${green}green text${reset}"

tput produce secuencias de caracteres que el terminal interpreta que tienen un significado especial. No se mostrarán ellos mismos. Tenga en cuenta que todavía se pueden guardar en archivos o procesados ​​como entrada por programas que no sean el terminal.

Sustitución de comando

Puede ser más conveniente insertar tputde salida directamente en su echo cadenas usando sustitución de comando:

echo "$(tput setaf 1)Red text $(tput setab 7)and white background$(tput sgr 0)"

Ejemplo

El comando anterior produce esto en Ubuntu:

Screenshot of colour terminal text


Comandos de color de primer plano y fondo

tput setab [1-7] # Set the background colour using ANSI escape
tput setaf [1-7] # Set the foreground colour using ANSI escape

Los colores son los siguientes:

Num  Colour    #define         R G B

0    black     COLOR_BLACK     0,0,0
1    red       COLOR_RED       1,0,0
2    green     COLOR_GREEN     0,1,0
3    yellow    COLOR_YELLOW    1,1,0
4    blue      COLOR_BLUE      0,0,1
5    magenta   COLOR_MAGENTA   1,0,1
6    cyan      COLOR_CYAN      0,1,1
7    white     COLOR_WHITE     1,1,1

También hay versiones que no son ANSI de las funciones de configuración de color (setb en lugar de setaby setf en lugar de setaf) que usan diferentes números, que no se dan aquí.

Comandos de modo de texto

tput bold    # Select bold mode
tput dim     # Select dim (half-bright) mode
tput smul    # Enable underline mode
tput rmul    # Disable underline mode
tput rev     # Turn on reverse video mode
tput smso    # Enter standout (bold) mode
tput rmso    # Exit standout mode

Comandos de movimiento del cursor

tput cup Y X # Move cursor to screen postion X,Y (top left is 0,0)
tput cuf N   # Move N characters forward (right)
tput cub N   # Move N characters back (left)
tput cuu N   # Move N lines up
tput ll      # Move to last line, first column (if no cup)
tput sc      # Save the cursor position
tput rc      # Restore the cursor position
tput lines   # Output the number of lines of the terminal
tput cols    # Output the number of columns of the terminal

Borrar e insertar comandos

tput ech N   # Erase N characters
tput clear   # Clear screen and move the cursor to 0,0
tput el 1    # Clear to beginning of line
tput el      # Clear to end of line
tput ed      # Clear to end of screen
tput ich N   # Insert N characters (moves rest of line forward!)
tput il N    # Insert N lines

Otros comandos

tput sgr0    # Reset text format to the terminal's default
tput bel     # Play a bell

Con compiz ventanas tambaleantes, el bel comando hace que el terminal se tambalee por un segundo para llamar la atención del usuario.


Guiones

tput acepta scripts que contienen un comando por línea, que se ejecutan en orden antes tput salidas.

Evite los archivos temporales haciendo eco de una cadena multilínea y conectándola a la tubería:

echo -e "setf 7\nsetb 1" | tput -S  # set fg white and bg red

Ver también

  • Ver man 1 tput
  • Ver man 5 terminfo para la lista completa de comandos y más detalles sobre estas opciones. (El correspondiente tput comando se enumera en el Cap-name columna de la gran mesa que comienza en la línea 81.)

646
2018-01-07 22:25



algunas variables que puedes usar:

# Reset
Color_Off='\033[0m'       # Text Reset

# Regular Colors
Black='\033[0;30m'        # Black
Red='\033[0;31m'          # Red
Green='\033[0;32m'        # Green
Yellow='\033[0;33m'       # Yellow
Blue='\033[0;34m'         # Blue
Purple='\033[0;35m'       # Purple
Cyan='\033[0;36m'         # Cyan
White='\033[0;37m'        # White

# Bold
BBlack='\033[1;30m'       # Black
BRed='\033[1;31m'         # Red
BGreen='\033[1;32m'       # Green
BYellow='\033[1;33m'      # Yellow
BBlue='\033[1;34m'        # Blue
BPurple='\033[1;35m'      # Purple
BCyan='\033[1;36m'        # Cyan
BWhite='\033[1;37m'       # White

# Underline
UBlack='\033[4;30m'       # Black
URed='\033[4;31m'         # Red
UGreen='\033[4;32m'       # Green
UYellow='\033[4;33m'      # Yellow
UBlue='\033[4;34m'        # Blue
UPurple='\033[4;35m'      # Purple
UCyan='\033[4;36m'        # Cyan
UWhite='\033[4;37m'       # White

# Background
On_Black='\033[40m'       # Black
On_Red='\033[41m'         # Red
On_Green='\033[42m'       # Green
On_Yellow='\033[43m'      # Yellow
On_Blue='\033[44m'        # Blue
On_Purple='\033[45m'      # Purple
On_Cyan='\033[46m'        # Cyan
On_White='\033[47m'       # White

# High Intensity
IBlack='\033[0;90m'       # Black
IRed='\033[0;91m'         # Red
IGreen='\033[0;92m'       # Green
IYellow='\033[0;93m'      # Yellow
IBlue='\033[0;94m'        # Blue
IPurple='\033[0;95m'      # Purple
ICyan='\033[0;96m'        # Cyan
IWhite='\033[0;97m'       # White

# Bold High Intensity
BIBlack='\033[1;90m'      # Black
BIRed='\033[1;91m'        # Red
BIGreen='\033[1;92m'      # Green
BIYellow='\033[1;93m'     # Yellow
BIBlue='\033[1;94m'       # Blue
BIPurple='\033[1;95m'     # Purple
BICyan='\033[1;96m'       # Cyan
BIWhite='\033[1;97m'      # White

# High Intensity backgrounds
On_IBlack='\033[0;100m'   # Black
On_IRed='\033[0;101m'     # Red
On_IGreen='\033[0;102m'   # Green
On_IYellow='\033[0;103m'  # Yellow
On_IBlue='\033[0;104m'    # Blue
On_IPurple='\033[0;105m'  # Purple
On_ICyan='\033[0;106m'    # Cyan
On_IWhite='\033[0;107m'   # White

 

el personaje de escape en intento, maleficio y octal respectivamente:

|       | bash  | hex    | octal   | NOTE                         |
|-------+-------+--------+---------+------------------------------|
| start | \e    | \x1b   | \033    |                              |
| start | \E    | \x1B   | -       | x cannot be capital          |
| end   | \e[0m | \x1m0m | \033[0m |                              |
| end   | \e[m  | \x1b[m | \033[m  | 0 is appended if you omit it |
|       |       |        |         |                              |

pequeño ejemplo:

| color       | bash         | hex            | octal          | NOTE                                  |
|-------------+--------------+----------------+----------------+---------------------------------------|
| start green | \e[32m<text> | \x1b[32m<text> | \033[32m<text> | m is NOT optional                     |
| reset       | <text>\e[0m  | <text>\1xb[0m  | <text>\033[om  | o is optional (do it as best practice |
|             |              |                |                |                                       |

excepción de bash:

Si va a usar estos códigos en su variables especiales bash 

  • PS0
  • PS1
  • PS2 (= esto es para preguntar)
  • PS4

debe agregar caracteres de escape adicionales para que  puede interpretarlos correctamente Sin esto, agregar caracteres de escape adicionales funciona pero te enfrentarás a problemas cuando uses Ctrl + r para buscar en tu historial.

regla de excepción para bash

Deberías agregar \[ antes de cualquier código ANSI inicial y agregar \] después de cualquier final.
Ejemplo:
en el uso regular: \033[32mThis is in green\033[0m
para PS0 / 1/2/4: \[\033[32m\]This is in green\[\033[m\] 

\[ es para el inicio de una secuencia de no imprimible caracteres
\] es para el final de una secuencia de no imprimible caracteres

Consejo: para memorizarlo primero puede agregar \[\] y luego ponga su código ANSI entre ellos:
  - \[start-ANSI-code\]
  - \[end-ANSI-code\] 

tipo de secuencia de color:

  1. 3/4 bit
  2. 8 bits
  3. 24 bits

Antes de sumergirte en estos colores, debes conocer 4 modos con estos códigos:

1. modo de color

Modifica el estilo del color NO el texto. Por ejemplo, haz que el color sea más claro o más oscuro.

  • 0  Reiniciar
  • 1;  Más ligero de lo normal
  • 2; más oscuro de lo normal

Este modo no es compatible ampliamente. Es totalmente compatible con Gnome-Terminal.

2. modo de texto

Este modo es para modificar el estilo del texto NO el color.

  • 3; itálico
  • 4; subrayar
  • 5; parpadeando (lento)
  • 6; parpadeando (rápido)
  • 7; marcha atrás
  • 8; esconder
  • 9; tachar

y son casi compatibles.
Por ejemplo, KDE-Konsole apoya 5; pero Gnome-Terminal no y Gnome apoya 8; pero KDE no.

3. modo de primer plano

Este modo es para colorear el primer plano.

4. modo de fondo

Este modo es para colorear el fondo.

 

La tabla a continuación muestra un resumen de 3/4 bit versión de ANSI-color

|------------+----------+---------+-------+------------------+------------------------------+--------------------------------------|
| color-mode | octal    | hex     | bash  | description      | example (= in octal)         | NOTE                                 |
|------------+----------+---------+-------+------------------+------------------------------+--------------------------------------|
|          0 | \033[0m  | \x1b[0m | \e[0m | reset any affect | echo -e "\033[0m"            | 0m equals to m                       |
|          1 | \033[1m  |         |       | light (= bright) | echo -e "\033[1m####\033[m"  | -                                    |
|          2 | \033[2m  |         |       | dark (= fade)    | echo -e "\033[2m####\033[m"  | -                                    |
|------------+----------+---------+-------+------------------+------------------------------+--------------------------------------|
|  text-mode | ~        |         |       | ~                | ~                            | ~                                    |
|------------+----------+---------+-------+------------------+------------------------------+--------------------------------------|
|          3 | \033[3m  |         |       | italic           | echo -e "\033[3m####\033[m"  |                                      |
|          4 | \033[4m  |         |       | underline        | echo -e "\033[4m####\033[m"  |                                      |
|          5 | \033[5m  |         |       | blink (slow)     | echo -e "\033[3m####\033[m"  |                                      |
|          6 | \033[6m  |         |       | blink (fast)     | ?                            | not wildly support                   |
|          7 | \003[7m  |         |       | reverse          | echo -e "\033[7m####\033[m"  | it affects the background/foreground |
|          8 | \033[8m  |         |       | hide             | echo -e "\033[8m####\033[m"  | it affects the background/foreground |
|          9 | \033[9m  |         |       | cross            | echo -e "\033[9m####\033[m"  |                                      |
|------------+----------+---------+-------+------------------+------------------------------+--------------------------------------|
| foreground | ~        |         |       | ~                | ~                            | ~                                    |
|------------+----------+---------+-------+------------------+------------------------------+--------------------------------------|
|         30 | \033[30m |         |       | black            | echo -e "\033[30m####\033[m" |                                      |
|         31 | \033[31m |         |       | red              | echo -e "\033[31m####\033[m" |                                      |
|         32 | \033[32m |         |       | green            | echo -e "\033[32m####\033[m" |                                      |
|         33 | \033[32m |         |       | yellow           | echo -e "\033[33m####\033[m" |                                      |
|         34 | \033[32m |         |       | blue             | echo -e "\033[34m####\033[m" |                                      |
|         35 | \033[32m |         |       | purple           | echo -e "\033[35m####\033[m" | real name: magenta = reddish-purple  |
|         36 | \033[32m |         |       | cyan             | echo -e "\033[36m####\033[m" |                                      |
|         37 | \033[32m |         |       | white            | echo -e "\033[37m####\033[m" |                                      |
|------------+----------+---------+-------+------------------+------------------------------+--------------------------------------|
|         38 | 8/24     |                    This is for special use of 8-bit or 24-bit                                            |
|------------+----------+---------+-------+------------------+------------------------------+--------------------------------------|
| background | ~        |         |       | ~                | ~                            | ~                                    |
|------------+----------+---------+-------+------------------+------------------------------+--------------------------------------|
|         40 | \033[40m |         |       | black            | echo -e "\033[40m####\033[m" |                                      |
|         41 | \033[41m |         |       | red              | echo -e "\033[41m####\033[m" |                                      |
|         42 | \033[42m |         |       | green            | echo -e "\033[42m####\033[m" |                                      |
|         43 | \033[43m |         |       | yellow           | echo -e "\033[43m####\033[m" |                                      |
|         44 | \033[44m |         |       | blue             | echo -e "\033[44m####\033[m" |                                      |
|         45 | \033[45m |         |       | purple           | echo -e "\033[45m####\033[m" | real name: magenta = reddish-purple  |
|         46 | \033[46m |         |       | cyan             | echo -e "\033[46m####\033[m" |                                      |
|         47 | \033[47m |         |       | white            | echo -e "\033[47m####\033[m" |                                      |
|------------+----------+---------+-------+------------------+------------------------------+--------------------------------------|
|         48 | 8/24     |                    This is for special use of 8-bit or 24-bit                                            |                                                                                       |
|------------+----------+---------+-------+------------------+------------------------------+--------------------------------------|

 

La tabla a continuación muestra un resumen de 8 bits versión de ANSI-color

|------------+-----------+-----------+---------+------------------+------------------------------------+-------------------------|
| foreground | octal     | hex       | bash    | description      | example                            | NOTE                    |
|------------+-----------+-----------+---------+------------------+------------------------------------+-------------------------|
|        0-7 | \033[38;5 | \x1b[38;5 | \e[38;5 | standard. normal | echo -e '\033[38;5;1m####\033[m'   |                         |
|       8-15 |           |           |         | standard. light  | echo -e '\033[38;5;9m####\033[m'   |                         |
|     16-231 |           |           |         | more resolution  | echo -e '\033[38;5;45m####\033[m'  | has no specific pattern |
|    232-255 |           |           |         |                  | echo -e '\033[38;5;242m####\033[m' | from black to white     |
|------------+-----------+-----------+---------+------------------+------------------------------------+-------------------------|
| foreground | octal     | hex       | bash    | description      | example                            | NOTE                    |
|------------+-----------+-----------+---------+------------------+------------------------------------+-------------------------|
|        0-7 |           |           |         | standard. normal | echo -e '\033[48;5;1m####\033[m'   |                         |
|       8-15 |           |           |         | standard. light  | echo -e '\033[48;5;9m####\033[m'   |                         |
|     16-231 |           |           |         | more resolution  | echo -e '\033[48;5;45m####\033[m'  |                         |
|    232-255 |           |           |         |                  | echo -e '\033[48;5;242m####\033[m' | from black to white     |
|------------+-----------+-----------+---------+------------------+------------------------------------+-------------------------|

La prueba rápida de 8 bits:
for code in {0..255}; do echo -e "\e[38;05;${code}m $code: Test"; done 

 

La tabla a continuación muestra un resumen de 24 bits versión de ANSI-color

|------------+-----------+-----------+---------+-------------+------------------------------------------+-----------------|
| foreground | octal     | hex       | bash    | description | example                                  | NOTE            |
|------------+-----------+-----------+---------+-------------+------------------------------------------+-----------------|
|      0-255 | \033[38;2 | \x1b[38;2 | \e[38;2 | R = red     | echo -e '\033[38;2;255;0;02m####\033[m'  | R=255, G=0, B=0 |
|      0-255 | \033[38;2 | \x1b[38;2 | \e[38;2 | G = green   | echo -e '\033[38;2;;0;255;02m####\033[m' | R=0, G=255, B=0 |
|      0-255 | \033[38;2 | \x1b[38;2 | \e[38;2 | B = blue    | echo -e '\033[38;2;0;0;2552m####\033[m'  | R=0, G=0, B=255 |
|------------+-----------+-----------+---------+-------------+------------------------------------------+-----------------|
| background | octal     | hex       | bash    | description | example                                  | NOTE            |
|------------+-----------+-----------+---------+-------------+------------------------------------------+-----------------|
|      0-255 | \033[48;2 | \x1b[48;2 | \e[48;2 | R = red     | echo -e '\033[48;2;255;0;02m####\033[m'  | R=255, G=0, B=0 |
|      0-255 | \033[48;2 | \x1b[48;2 | \e[48;2 | G = green   | echo -e '\033[48;2;;0;255;02m####\033[m' | R=0, G=255, B=0 |
|      0-255 | \033[48;2 | \x1b[48;2 | \e[48;2 | B = blue    | echo -e '\033[48;2;0;0;2552m####\033[m'  | R=0, G=0, B=255 |
|------------+-----------+-----------+---------+-------------+------------------------------------------+-----------------|

 

algunas capturas de pantalla

primer plano resumen de 8 bits en una .gif 

foreground.gif

resumen de 8 bits de fondo en una .gif 

background.gif

resumen de color con sus valores

enter image description here enter image description here enter image description here enter image description here

blinking en KDE-Terminal

KDE-blinking

 un simple C código que te muestra más

cecho_screenshot

 una herramienta más avanzada que desarrollé para tratar estos colores:
bline 


modo de color disparo

fade-normal-bright

modo de texto disparado

only-text-mode

la combinación está bien

combine

más disparos


Consejos y trucos para usuarios avanzados y programadores:

¿Podemos usar estos códigos en un lenguaje de programación?

Sí tu puedes. Yo experimenté en , , ,   ,

¿Reducen la velocidad de un programa?

Creo que no.

¿Podemos usar estos en Windows?

3/4-bit Sí, si compila el código con gcc
algunas capturas de pantalla en Win-7 

Cómo calcular la longitud del código?

\033[ = 2, otras partes 1

¿Dónde podemos usar estos códigos?

Donde sea que tenga un tty Interprete
xterm, gnome-terminal, kde-terminal, mysql-client-CLI y así.
Por ejemplo, si desea colorear su salida con mysql, puede usar Perl 

#!/usr/bin/perl -n
print "\033[1m\033[31m$1\033[36m$2\033[32m$3\033[33m$4\033[m" while /([|+-]+)|([0-9]+)|([a-zA-Z_]+)|([^\w])/g;

almacenar este código en un nombre de archivo: pcc (= Perl Colorize Character) y luego poner el archivo a en válido PATH luego úsala donde quieras.

ls | pcc
df | pcc 

dentro mysql primero registrarlo para pager y luego prueba:

[user2:db2] pager pcc
PAGER set to 'pcc'
[user2:db2] select * from table-name;

pcc

Lo hace NO manejar Unicode.

¿Estos códigos solo colorean?

No, pueden hacer muchas cosas interesantes. Tratar:

echo -e '\033[2K'  # clear the screen and do not move the position

o:

echo -e '\033[2J\033[u' # clear the screen and reset the position

Hay muchos principiantes que quieren limpiar la pantalla con system( "clear" ) para que pueda usar esto en lugar de system(3) llamada

¿Están disponibles en Unicode?

Sí. \u001b 

¿Qué versión de estos colores es preferible?

Es fácil de usar 3/4-bit, pero es mucho más preciso y hermoso de usar 24-bit.
Si no tienes experiencia con  así que aquí hay un tutorial rápido:
24 bits significa: 00000000 y 00000000 y 00000000. Cada 8 bits es para un color específico.
24..17 es para  y 16..9 para  y 8..1 para
Entonces en   #FF0000 medio  Y aquí está: 255;0;0
en   #00FF00 medio  que aquí está: 0;255;0
¿Tiene sentido? de qué color quieres combinarlo con estos tres valores de 8 bits.


referencia:
Wikipedia
Secuencias de escape ANSI
tldp.org
tldp.org
misc.flogisoft.com
algunos blogs / páginas web que no recuerdo

insignias:


463
2018-03-09 09:02



Utilizar tput con el setaf capacidad y un parámetro de 1.

echo "$(tput setaf 1)Hello, world$(tput sgr0)"

158
2018-05-10 09:10



echo -e "\033[31m Hello World"

los [31m controla el color del texto:

  • 30-37 conjuntos primer plano color
  • 40-47 conjuntos fondo color

Una lista más completa de códigos de color se puede encontrar aquí.

Es una buena práctica restablecer el color del texto de nuevo a \033[0m al final de la cadena.


96
2018-05-10 09:10



Este es el interruptor de color  \033[. Ver historia.

Color códigos son como 1;32 (Verde claro), 0;34 (Azul), 1;34 (Azul claro), etc.

Terminamos las secuencias de color con un interruptor de color \033[ y 0m, el no-Codigo de color. Al igual que abrir y cerrar pestañas en un lenguaje de marcado.

  SWITCH="\033["
  NORMAL="${SWITCH}0m"
  YELLOW="${SWITCH}1;33m"
  echo "${YELLOW}hello, yellow${NORMAL}"

Color simple echo solución de función:

cecho() {
  local code="\033["
  case "$1" in
    black  | bk) color="${code}0;30m";;
    red    |  r) color="${code}1;31m";;
    green  |  g) color="${code}1;32m";;
    yellow |  y) color="${code}1;33m";;
    blue   |  b) color="${code}1;34m";;
    purple |  p) color="${code}1;35m";;
    cyan   |  c) color="${code}1;36m";;
    gray   | gr) color="${code}0;37m";;
    *) local text="$1"
  esac
  [ -z "$text" ] && local text="$color$2${code}0m"
  echo "$text"
}

cecho "Normal"
cecho y "Yellow!"

29
2018-02-25 01:38



Una buena manera de cambiar el color solo para uno echo es definir tal función:

function coloredEcho(){
    local exp=$1;
    local color=$2;
    if ! [[ $color =~ '^[0-9]$' ]] ; then
       case $(echo $color | tr '[:upper:]' '[:lower:]') in
        black) color=0 ;;
        red) color=1 ;;
        green) color=2 ;;
        yellow) color=3 ;;
        blue) color=4 ;;
        magenta) color=5 ;;
        cyan) color=6 ;;
        white|*) color=7 ;; # white or invalid color
       esac
    fi
    tput setaf $color;
    echo $exp;
    tput sgr0;
}

Uso:

coloredEcho "This text is green" green

O puede usar directamente los códigos de color mencionados en La respuesta de Drew:

coloredEcho "This text is green" 2

25
2018-04-11 07:36



Utilizar tput para calcular los códigos de color. Evite usar el código de escape ANSI (p. \E[31;1m para rojo) porque es menos portátil. Bash en OS X, por ejemplo, no lo admite.

BLACK=`tput setaf 0`
RED=`tput setaf 1`
GREEN=`tput setaf 2`
YELLOW=`tput setaf 3`
BLUE=`tput setaf 4`
MAGENTA=`tput setaf 5`
CYAN=`tput setaf 6`
WHITE=`tput setaf 7`

BOLD=`tput bold`
RESET=`tput sgr0`

echo -e "hello ${RED}some red text${RESET} world"

18
2018-04-04 10:37



Esta pregunta ha sido respondida una y otra vez :-) pero ¿por qué no?

Primero usando tput es más portátil en entornos modernos que la inyección manual de códigos ASCII a través de echo -E 

Aquí hay una función rápida de bash:

 say() {
     echo "$@" | sed \
             -e "s/\(\(@\(red\|green\|yellow\|blue\|magenta\|cyan\|white\|reset\|b\|u\)\)\+\)[[]\{2\}\(.*\)[]]\{2\}/\1\4@reset/g" \
             -e "s/@red/$(tput setaf 1)/g" \
             -e "s/@green/$(tput setaf 2)/g" \
             -e "s/@yellow/$(tput setaf 3)/g" \
             -e "s/@blue/$(tput setaf 4)/g" \
             -e "s/@magenta/$(tput setaf 5)/g" \
             -e "s/@cyan/$(tput setaf 6)/g" \
             -e "s/@white/$(tput setaf 7)/g" \
             -e "s/@reset/$(tput sgr0)/g" \
             -e "s/@b/$(tput bold)/g" \
             -e "s/@u/$(tput sgr 0 1)/g"
  }

Ahora puedes usar:

 say @b@green[[Success]] 

Llegar:

Bold-Green Success

Notas sobre la portabilidad de tput

Primera vez tput(1) el código fuente fue cargado en septiembre de 1986

tput(1) ha estado disponible en semántica X / Open curses en 1990 (el estándar de 1997 tiene la semántica mencionada a continuación).

Entonces, es (bastante) omnipresente


13
2017-09-20 21:02



Estos códigos funcionan en mi caja de Ubuntu:

enter image description here

echo -e "\x1B[31m foobar \x1B[0m"
echo -e "\x1B[32m foobar \x1B[0m"
echo -e "\x1B[96m foobar \x1B[0m"
echo -e "\x1B[01;96m foobar \x1B[0m"
echo -e "\x1B[01;95m foobar \x1B[0m"
echo -e "\x1B[01;94m foobar \x1B[0m"
echo -e "\x1B[01;93m foobar \x1B[0m"
echo -e "\x1B[01;91m foobar \x1B[0m"
echo -e "\x1B[01;90m foobar \x1B[0m"
echo -e "\x1B[01;89m foobar \x1B[0m"
echo -e "\x1B[01;36m foobar \x1B[0m"

Esto imprime las letras a b c d all en diferentes colores:

echo -e "\x1B[0;93m a \x1B[0m b \x1B[0;92m c \x1B[0;93m d \x1B[0;94m"

En bucle:

for (( i = 0; i < 17; i++ )); 
do echo "$(tput setaf $i)This is ($i) $(tput sgr0)"; 
done

enter image description here


10
2017-09-05 18:40



Gracias a @ k-five por esta respuesta

declare -A colors
#curl www.bunlongheng.com/code/colors.png

# Reset
colors[Color_Off]='\033[0m'       # Text Reset

# Regular Colors
colors[Black]='\033[0;30m'        # Black
colors[Red]='\033[0;31m'          # Red
colors[Green]='\033[0;32m'        # Green
colors[Yellow]='\033[0;33m'       # Yellow
colors[Blue]='\033[0;34m'         # Blue
colors[Purple]='\033[0;35m'       # Purple
colors[Cyan]='\033[0;36m'         # Cyan
colors[White]='\033[0;37m'        # White

# Bold
colors[BBlack]='\033[1;30m'       # Black
colors[BRed]='\033[1;31m'         # Red
colors[BGreen]='\033[1;32m'       # Green
colors[BYellow]='\033[1;33m'      # Yellow
colors[BBlue]='\033[1;34m'        # Blue
colors[BPurple]='\033[1;35m'      # Purple
colors[BCyan]='\033[1;36m'        # Cyan
colors[BWhite]='\033[1;37m'       # White

# Underline
colors[UBlack]='\033[4;30m'       # Black
colors[URed]='\033[4;31m'         # Red
colors[UGreen]='\033[4;32m'       # Green
colors[UYellow]='\033[4;33m'      # Yellow
colors[UBlue]='\033[4;34m'        # Blue
colors[UPurple]='\033[4;35m'      # Purple
colors[UCyan]='\033[4;36m'        # Cyan
colors[UWhite]='\033[4;37m'       # White

# Background
colors[On_Black]='\033[40m'       # Black
colors[On_Red]='\033[41m'         # Red
colors[On_Green]='\033[42m'       # Green
colors[On_Yellow]='\033[43m'      # Yellow
colors[On_Blue]='\033[44m'        # Blue
colors[On_Purple]='\033[45m'      # Purple
colors[On_Cyan]='\033[46m'        # Cyan
colors[On_White]='\033[47m'       # White

# High Intensity
colors[IBlack]='\033[0;90m'       # Black
colors[IRed]='\033[0;91m'         # Red
colors[IGreen]='\033[0;92m'       # Green
colors[IYellow]='\033[0;93m'      # Yellow
colors[IBlue]='\033[0;94m'        # Blue
colors[IPurple]='\033[0;95m'      # Purple
colors[ICyan]='\033[0;96m'        # Cyan
colors[IWhite]='\033[0;97m'       # White

# Bold High Intensity
colors[BIBlack]='\033[1;90m'      # Black
colors[BIRed]='\033[1;91m'        # Red
colors[BIGreen]='\033[1;92m'      # Green
colors[BIYellow]='\033[1;93m'     # Yellow
colors[BIBlue]='\033[1;94m'       # Blue
colors[BIPurple]='\033[1;95m'     # Purple
colors[BICyan]='\033[1;96m'       # Cyan
colors[BIWhite]='\033[1;97m'      # White

# High Intensity backgrounds
colors[On_IBlack]='\033[0;100m'   # Black
colors[On_IRed]='\033[0;101m'     # Red
colors[On_IGreen]='\033[0;102m'   # Green
colors[On_IYellow]='\033[0;103m'  # Yellow
colors[On_IBlue]='\033[0;104m'    # Blue
colors[On_IPurple]='\033[0;105m'  # Purple
colors[On_ICyan]='\033[0;106m'    # Cyan
colors[On_IWhite]='\033[0;107m'   # White


color=${colors[$input_color]}
white=${colors[White]}
# echo $white



for i in "${!colors[@]}"
do
  echo -e "$i = ${colors[$i]}I love you$white"
done

Resultado

enter image description here

Espero esto imagen te ayuda a elegir tu color para tu fiesta: D


9
2018-04-28 00:50