“ls -b”在 macOS 上不起作用

“ls -b”在 macOS 上不起作用

ls -b应该打印带有不可打印字符的文件名,例如ex ex.txt应该显示为ex\ ex.txt,但这在 macOS 上不起作用,它仍然是ex ex.txt.有谁知道原因吗?

答案1

-b选项不是标准化,所以它的行为依赖于实现。

许多Linux系统默认使用GNU ls;它将-b选项定义为

打印非图形字符的 C 风格转义符

并使用一个详细的引用实现。空格字符是非图形字符,因此最终会被转义。

在 macOS 上的定义-b是不同的:

-B 强制打印不可打印的字符(由ctype(3)和当前区域设置)在文件名中为\xxx, 其中xxx是八进制字符的数值。

-b 作为-B,但尽可能使用 C 转义码。

函数ctype(或宏)认为空格字符是可打印的,因此不会对其进行转义。

相关内容