echo codifica colori ha smesso di funzionare in leoni di montagna

6

Il seguente testo prodotto con colore diverso sul terminale in Lion, ma non in Mountain Lion. Perché? Cosa si può fare per echeggiare a colori su Mountain Lion?

echo -e "Some text \e[0;32m in color \e[0m no more color";

In Mountain Lion stampa semplicemente come se -e non fosse dato come argomento per echo.

    
posta Hugo 13.12.2012 - 17:29
fonte

3 risposte

13

Come descritto nella sezione Uso dell'applicazione del POSIX descrizione del comando echo , l'opzione -n e le sequenze di escape non sono molto portabili (a causa del diverso supporto nei vari rami dell'albero genealogico Unix).

Il comando printf (che, come echo , è anche incorporato nella maggior parte delle shell e disponibile come comando esterno) è standardizzato in modo più affidabile (sebbene la sintassi non sia la stessa, ad es. devi cercare % nel primo argomento e più argomenti non vengono automaticamente uniti a uno spazio):

printf 'Some text \e[0;32m in color \e[0m no more color\n'

printf '%s \e[0;32m%s\e[0m %s\n' 'Some text' 'in color' 'no more color'
    
risposta data 14.12.2012 - 06:27
fonte
14

Il problema era che il codice di escape \ e è stato rimosso nella versione di eco di Mountain Lion. Cambia \ e in \ 033 e funzionerà.

    
risposta data 13.12.2012 - 17:49
fonte
2

Un modo affidabile per farlo è attraverso tput:

RED='tput setaf 1'
GREEN='tput setaf 2'
NOCOLOR='tput sgr0'

echo "Some text ${RED}in red color${NOCOLOR} no more color"
    
risposta data 17.09.2016 - 11:22
fonte

Leggi altre domande sui tag