¿Cómo se genera texto en negrita en Bash?

Resuelto JamesRat asked hace 14 años • 4 respuestas

Estoy escribiendo un script Bash que imprime texto en la pantalla:

echo "Some Text"

¿Puedo formatear el texto? Me gustaría ponerlo en negrita.

JamesRat avatar May 28 '10 03:05 JamesRat
Aceptado

La forma más compatible de hacer esto es usar tputpara descubrir las secuencias correctas para enviar al terminal:

bold=$(tput bold)
normal=$(tput sgr0)

entonces puedes usar las variables $boldy $normalformatear las cosas:

echo "this is ${bold}bold${normal} but this isn't"

da

esto es atrevido pero esto no lo es

psmears avatar May 27 '2010 20:05 psmears

Para aplicar un estilo a su cadena, puede usar un comando como:

echo -e '\033[1mYOUR_STRING\033[0m'

Explicación:

  • echo -e : la -eopción significa que las cadenas con escape (barra invertida) se interpretarán
  • \033 - la secuencia de escape representa el principio/final del estilo
  • m minúscula : indica el final de la secuencia
  • 1 - Atributo en negrita (consulte más abajo para obtener más información)
  • [0m : restablece todos los atributos, colores, formato, etc.

Los números enteros posibles son:

  • 0 - Estilo normal
  • 1 - Negrita
  • 2 - tenue
  • 3 - cursiva
  • 4 - Subrayado
  • 5 - Parpadeando
  • 7 - revertir
  • 8 -Invisibles

Todo esto es según ANSI , pero lo implementa la mayoría absoluta de emuladores de terminal que existen. Una forma alternativa de diseñar la salida es confiar en terminfo mediante el uso del tputcomando. Lo más probable es que este último genere secuencias de escape que son ANSI de todos modos, a menos que esté en un tipo de terminal realmente oscuro y/o exótico.

avivamg avatar Feb 24 '2017 23:02 avivamg

Supongo que bash se está ejecutando en un terminal compatible con vt100 en el que el usuario no desactivó explícitamente la compatibilidad con el formateo.

Primero, active la compatibilidad con caracteres especiales en echo, usando -ela opción. Luego, use la secuencia de escape ansi ESC[1m, como:

echo -e "\033[1mSome Text"

Más información sobre secuencias de escape ansi, por ejemplo, aquí: ascii-table.com/ansi-escape-sequences-vt-100.php

Michał Trybus avatar May 27 '2010 20:05 Michał Trybus

En teoría así:

# BOLD
$ echo -e "\033[1mThis is a BOLD line\033[0m"
This is a BOLD line

# Using tput
tput bold 
echo "This" #BOLD
tput sgr0 #Reset text attributes to normal without clear.
echo "This" #NORMAL

# UNDERLINE
$ echo -e "\033[4mThis is a underlined line.\033[0m"
This is a underlined line. 

Pero en la práctica puede interpretarse como un color de "alta intensidad".

(fuente: http://unstableme.blogspot.com/2008/01/ansi-escape-sequences-for-writing-text.html )

roufamatic avatar May 27 '2010 20:05 roufamatic