เสียงเหมือนคุณต้องการตรงข้ามของพวกเขาในการพิมพ์ตัวอักษรที่คุณต้องการเหล่านั้นตัวหนีแปลงเป็นรูปแบบพรรณนาพิมพ์เหมือน\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
หรืออักขระควบคุมอื่น ๆ