J'ai défini la couleur rouge en utilisant tput
red=$(tput setaf 1)
pour coloriser les avertissements dans mon programme. Cela fonctionne bien:
printf '%sfail\n' "$red"
# prints 'fail' in red
Mais une fois, je voudrais imprimer la séquence d'échappement telle quelle, quelque chose comme:
\ E [31mfail
Comment pourrais-je faire ça? Je sais que printf a un %q
drapeau mais il échappe aux autres trucs que je ne veux pas.
shell
escape-characters
printf
méthode d'aide
la source
la source
\E
ou d'autres caractères de contrôle?Réponses:
On dirait que vous voulez le contraire de les imprimer littéralement, vous voulez que ces caractères d'échappement soient convertis en une forme descriptive imprimable comme
\E
ou\033
,^[
...Si c'est juste le caractère ESC (0x1b) que vous souhaitez convertir
\E
, puis avecksh93
,zsh
oubash
(généralement, les mêmes qui prennent également en charge ce non standard%q
), vous pouvez faire:Ou un tuyau vers
sed $'s/\e/\\\\E/g'
Pour une approche plus générique de conversion de caractères non graphiques, vous pouvez utiliser:
la source
Utilisez
od
,hexdump
,xxd
ou similaire à imprimer des données binaires sous forme lisible par l' homme. Par exemple:la source
Vous pouvez utiliser
printf
directement, par exemplela source