为什么MacOS上的unexpand可以在没有“unexpand”的情况下更改内部空间-a「;论点
为什么MacOS上的unexpand可以在没有“unexpand”的情况下更改内部空间-a「;论点,macos,unix,expand,Macos,Unix,Expand,unexpand的手册页说明: 默认情况下,只有前导空格和制表符重新转换为最大制表符字符串 然而,它似乎也在转换内部空白: echo " HELLO THERE" | unexpand -t 2 | tr '\t' '_' 屈服 _HELLO_ THERE 而不是预期的 _HELLO THERE 如果我包含-a选项,这是我期望的输出,但无论是否包含该选项,输出都是相同的。来自,强调添加: 当指定了-t时,应忽略是否存在-a选项转换不应限于处理前导的字符。 GNU coreutils版
unexpand
的手册页说明:
默认情况下,只有前导空格和制表符重新转换为最大制表符字符串
然而,它似乎也在转换内部空白:
echo " HELLO THERE" | unexpand -t 2 | tr '\t' '_'
屈服
_HELLO_ THERE
而不是预期的
_HELLO THERE
如果我包含-a
选项,这是我期望的输出,但无论是否包含该选项,输出都是相同的。来自,强调添加:
当指定了-t
时,应忽略是否存在-a
选项转换不应限于处理前导的
字符。
GNU coreutils版本的
expand
(但不是苹果使用的BSD版本)有一个——仅限第一个选项,可以抵消这种行为。很有趣。我在GNU coreutilsunexpand
中看到了相同的行为(除非显式传递——仅第一个
),因此它似乎并不局限于MacOS one。啊!实际上,这在GNU版本中有明确的记录-t
表示-a
。我需要更仔细地阅读POSIX规范,以理解为什么这是允许的。谢谢编辑们!嗯,看起来像是一个文档错误。苹果的文档肯定没有提到这种行为。谢谢在posix tho中使用-t
应该可以避免-a
,这似乎很奇怪。有时posix编码并记录遗留行为,即使这是违反直觉的。