2010-12-10 10 views
20

Sto esplorando il Web cercando di trovare esempi di script Unix Bash in grado di gestire lo stile di base del testo (grassetto/sottolineato/corsivo), ma non riesco a trovare nulla? È possibile fare una cosa del genere?Script Unix Bash per valorizzare/sottolineare/scrivere in corsivo il testo specifico

Ad esempio:

  1. incoraggiare/Sottolineato/corsivo tutte le linee che terminano in ":"?
  2. (Disattiva) Embolden/Underline/Italicize tutte le righe che terminano in ":"?

Desidero configurarlo come servizio via Automator; quindi usando /bin/bash e intervenendo su "testo selezionato" (ovviamente in un file compatibile con rich text).

risposta

20

In sostanza, si vuole fare dichiarare alcune variabili con il codice di stile - qualcosa di simile:

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

allora è possibile chiamare questi per l'uso in uscita utilizzando le variabili, in questo modo:

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

Per quanto riguarda l'automazione da applicare a tutte le righe che iniziano con un carattere specifico, è meglio usare solo le variabili come mostrato sopra. Oltre a utilizzare questo metodo solo per essere più semplice, è anche più pulito e più utilizzabile. Ad esempio, quando si utilizza questo metodo si ha la possibilità di assegnare un numero qualsiasi di parole in una determinata stringa di output in modo diverso, in modo da enfatizzare una parola specifica, non l'intera frase (a meno che, ovviamente, questo sia il tuo obiettivo).

Per ulteriori informazioni, si dovrebbe verificare http://tldp.org/HOWTO/Bash-Prompt-HOWTO/x405.html e/o uomo tput

+0

Inoltre, va notato che, sebbene ** ** tput sgr0 fa rimuovere TUTTI styling, non sempre funziona come previsto , quindi è meglio usare il codice "exit" relativo allo stile che si sta utilizzando (ad esempio, usando $ {underline} per avviare l'area di sottolineatura, quindi chiamare $ {nounderline} per terminare l'utilizzo dello stile). –

+0

Cheers, Chris. Sono nuovo di Unix Bash e conosco solo l'approccio "one-liner", quindi scusami la mia ignoranza, ma il codice che hai fornito (con variabili, ecc.) Può essere utilizzato in Automator bin/bash? Inoltre non capisco l'uso di "echo", "$" ... Ho sempre visto solo echo usato in PHP. –

+0

Puoi mostrare un esempio di 'sgr0' che non si comporta come previsto? –