Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么MacOS上的unexpand可以在没有“unexpand”的情况下更改内部空间-a「;论点_Macos_Unix_Expand - Fatal编程技术网

为什么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 coreutils
unexpand
中看到了相同的行为(除非显式传递
——仅第一个
),因此它似乎并不局限于MacOS one。啊!实际上,这在GNU版本中有明确的记录
-t
表示
-a
。我需要更仔细地阅读POSIX规范,以理解为什么这是允许的。谢谢编辑们!嗯,看起来像是一个文档错误。苹果的文档肯定没有提到这种行为。谢谢在posix tho中使用
-t
应该可以避免
-a
,这似乎很奇怪。有时posix编码并记录遗留行为,即使这是违反直觉的。