Em vez de
name="Hello"
name=$name"\e[36m\(Test\)\e[0m"
echo $name
printf $name
você pode simplificar um pouco a seguir com
name="Hello"
name=$name"$(tput setaf 6)(Test)$(tput sgr0)"
echo $name
printf $name
Essa abordagem tornaria mais simples do que lembrar as strings apropriadas para cores estendidas (além de 8). Por exemplo, executando este script:
#!/bin/sh
[ $# = 0 ] && exec $0 6
name="Hello"
name=$name"$(tput setaf $1)(Test)$(tput sgr0)"
echo $name
printf $name
com o parâmetro 6, 12, 24 e TERM
definido como xterm-256color
, o correspondente $name
com \E
como escape seria
Hello\E[36m(Test)\E(B\E[m
Hello\E[94m(Test)\E(B\E[m
Hello\E[38;5;24m(Test)\E(B\E[m
Para referência:
- tput (1)
- POSIX echo e printf (sem
\e
em ambos) - OSX echo (1) e < href="https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/printf.1.html#//apple_ref/doc/man/1/printf"> printf (1 ) (mesmo comentário)
- Linux echo (1) e printf(1) (fornece
\e
) - Bash referência (seu builtin
echo
pode diferir de/bin/echo
, mesmo paraprintf
)