如何在Bash脚本中打印含ANSI转义序列的变量内容?
打印Bash中存储终端控制字符的变量内容
当你把tput的输出(终端控制字符,即ANSI转义序列)存入变量后,直接echo会让终端执行这些控制码(比如设置粗体和红色),而不是显示变量的实际内容。以下几种方法可以帮你查看变量的真实内容:
使用
cat -v转义不可见字符:echo "$red" | cat -v输出会将转义序列显示为可见的脱字符形式,比如
^[[1m^[[38;5;196m,清晰展示控制字符的结构。使用Bash内置的
printf "%q"格式化输出:printf "%q\n" "$red"这个命令会把变量内容转义成可直接复用的Bash语法格式,输出类似
$'\E[1m\E[38;5;196m',直观体现转义序列的组成。使用
od以十六进制查看原始字节:echo "$red" | od -t x1输出每个字符的十六进制编码,比如
0000000 1b 5b 31 6d 1b 5b 33 38 3b 35 3b 31 39 36 6d,适合需要深入了解底层字节结构的场景。
内容的提问来源于stack exchange,提问作者Dilna
相关产品推荐
相关产品推荐

