2010-12-10 86 views
20

He estado navegando por la web tratando de encontrar ejemplos de script Bash Unix que pueda manejar el estilo básico de texto (negrita/subrayado/cursiva), ¿pero no puede encontrar nada? ¿Es eso posible?Script Unix Bash para enarbolar/subrayar/cursiva texto específico

Por ejemplo:

  1. EMBOLDEN/Subrayado/cursiva todas las líneas que terminan en ":"?
  2. (Desactivar) Embolizar/subrayar/poner en cursiva todas las líneas que terminan en ":"?

Quiero configurarlo como un servicio a través de Automator; entonces usando /bin/bash y actuando en "texto seleccionado" (en un archivo de texto enriquecido, por supuesto).

Respuesta

20

Básicamente, usted quiere hacer declarar algunas variables con el código de estilo - algo como esto:

underline=`tput smul` 
nounderline=`tput rmul` 
bold=`tput bold` 
normal=`tput sgr0` 

entonces usted puede llamar a estos para su uso en su salida usando las variables, así:

echo "${bold}bold${normal} text stands out!" 
echo "${underline}underlined${nounderline} text does, too." 

En cuanto a la automatización para aplicar a todas las líneas que comiencen con un carácter específico, es mejor que solo use las variables como se muestra arriba. Además de usar este método simplemente siendo más fácil, también es más limpio y más útil. Por ejemplo, al usar este método, tiene la capacidad de marcar cualquier número de palabras en una cadena de salida determinada de manera diferente, a fin de enfatizar una palabra específica, no la oración completa (a menos que, por supuesto, ese sea su objetivo).

Para obtener más información, que debe salir http://tldp.org/HOWTO/Bash-Prompt-HOWTO/x405.html y/o hombre tput

+0

Además, cabe señalar que si bien ** ** tput sgr0 hace eliminará todo el estilo, no siempre funciona como se espera , por lo que es mejor utilizar el código de "salida" relacionado con el estilo que está usando (es decir, usar $ {subrayado} para iniciar el área de subrayado, y luego llamar a $ {nounderline} para finalizar el uso del estilo). –

+0

Cheers, Chris. Soy nuevo en Unix Bash y solo estoy muy familiarizado con el enfoque "one-liner", así que disculpe mi ignorancia, pero ¿puede usar el código que proporcionó (con variables, etc.) en bin/bash de Automator? Tampoco entiendo el uso de "echo", "$" ... Solo he visto echo usado en PHP. –

+0

¿Puedes mostrar un ejemplo de 'sgr0' que no funciona como se esperaba? –

Cuestiones relacionadas