He definido el color rojo usando tput
red=$(tput setaf 1)
para colorear las advertencias en mi programa. Esto funciona bien:
printf '%sfail\n' "$red"
# prints 'fail' in red
Pero en una ocasión me gustaría imprimir la secuencia de escape tal como está, algo así como:
\ E [31mfail
¿Cómo haría esto? Sé que printf tiene una %qbandera pero escapa de otras cosas que no quiero.
shell
escape-characters
printf
método de ayuda
fuente
fuente

\Eu otros caracteres de control?Respuestas:
Parece que quiere lo contrario de imprimirlos literalmente, quiere que esos caracteres de escape se conviertan en una forma descriptiva imprimible como
\Eo\033,^[...Si es solo el carácter ESC (0x1b) al que desea convertir
\E, entonces conksh93,zshobash(típicamente, los mismos que también admiten ese no estándar%q), puede hacer:O canalizar a
sed $'s/\e/\\\\E/g'Para un enfoque más genérico en la conversión de caracteres no gráficos, puede usar:
fuente
Uso
od,hexdump,xxd, o similar a imprimir datos binarios en forma legible por humanos. Por ejemplo:fuente
Puede usar
printfdirectamente, por ejemplofuente