我的系统:
- Ubuntu 22.04.3 LTS
- GNU bash,版本 5.1.16(1)-release (x86_64-pc-linux-gnu)
man ls
描述-b
如下:
-b, --escape
print C-style escapes for nongraphic characters
控制字符或非打印字符 (NPC) 是字符集中不代表书面字符或符号的代码点。所有其他字符主要是图形字符,也称为打印字符(或可打印字符),也许“空格”字符除外。
这是模棱两可的。
什么权威资源解释了非图形字符是什么,以及该术语与非打印字符有何不同?
图形字符将是
isgraph()
/iswgraph()
标准函数返回 true 的字符或与正则表达式匹配的字符,即语言环境中字符类[[:graph:]]
中的字符。graph
根据POSIX,该类必须是 , , , , , 和
print
的超集并且与、 、 、 、 和graph
分离cntrl
并且graph
必须是 、 、 、 和 的超集,并且不得包含空格 (U+0020) 字符(不提及其他空白字符)。upper
lower
alpha
digit
xdigit
punct
这个想法是,图形字符将是使用墨水绘制的字符,而可打印字符将是非控制字符。
实际上,在 GNU 系统(例如 Ubuntu)上至少
print
是graph
加上类中的非控制字符space
。这里使用 glibc 2.35(在 Ubuntu 22.04 上使用)和 UTF-8 语言环境,其中包括:虽然
space
班级有:此 Bash 脚本列出了与 ASCII 集中每个字符关联的字符类(根据 GNU/awk 定义)。