Eu defini a cor vermelha usando tput
red=$(tput setaf 1)
para colorir avisos no meu programa. Isso funciona bem:
printf '%sfail\n' "$red"
# prints 'fail' in red
Mas, em uma ocasião, eu gostaria de imprimir a sequência de escape como está, algo como:
\ E [31mfail
Como eu faria isso? Eu sei que printf tem uma %q
bandeira, mas ela escapa de outras coisas que eu não quero.
shell
escape-characters
printf
helpermethod
fonte
fonte
\E
ou outros caracteres de controle?Respostas:
Parece que você quer o oposto de imprimi-los, literalmente, você quer que os caracteres de escape convertido a uma forma descritiva de impressão como
\E
ou\033
,^[
...Se é apenas o caráter ESC (0x1b) que deseja converter para
\E
, em seguida, comksh93
,zsh
oubash
(tipicamente, os mesmos que também suportam que não-padrão%q
), você pode fazer:Ou canalize para
sed $'s/\e/\\\\E/g'
Para uma abordagem mais genérica na conversão de caracteres não gráficos, você pode usar:
fonte
Use
od
,hexdump
,xxd
, ou similar para imprimir dados binários em formato legível. Por exemplo:fonte
Você pode usar
printf
diretamente, por exemplofonte