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 %q
bandera pero escapa de otras cosas que no quiero.
shell
escape-characters
printf
método de ayuda
fuente
fuente
\E
u 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
\E
o\033
,^[
...Si es solo el carácter ESC (0x1b) al que desea convertir
\E
, entonces conksh93
,zsh
obash
(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
printf
directamente, por ejemplofuente