ऐसा लगता है कि आप उन्हें वास्तव में छापने के विपरीत चाहते हैं, आप चाहते हैं कि उन वर्णों को एक मुद्रण योग्य वर्णनात्मक रूप में परिवर्तित किया जाए जैसे , \E
या ...\033
^[
यदि यह केवल ESC (0x1b) वर्ण है जिसे आप में बदलना चाहते हैं \E
, तो ksh93
, zsh
या bash
(आम तौर पर, वही जो उस गैर-मानक का समर्थन करते हैं %q
), आप कर सकते हैं:
printf '%s\n' "${red//$'\e'/\\E}"
या करने के लिए पाइप sed $'s/\e/\\\\E/g'
गैर-ग्राफ़िकल वर्णों को परिवर्तित करने में अधिक सामान्य दृष्टिकोण के लिए, आप इसका उपयोग कर सकते हैं:
$ printf %s "$red" | od -A n -vt c # POSIX
033 [ 3 1 m
$ printf %s "$red" | sed -n l # POSIX
\033[31m$
$ printf '%s\n' "${(qqqq)red}" # zsh
$'\033[31m'
$ printf '%s\n' "$red" | cat -vt # some cat implementations
^[[31m
$ printf %s "$red" | uconv -x ':: [:Cc:]; ::Hex;' # ICU tools
\u001B[31m
$ printf %s "$red" | uconv -x ':: [:Cc:]; ::Name;' # ICU tools
\N{<control-001B>}[31m
\E
, या अन्य नियंत्रण वर्ण?