Zsh中' - '的特殊含义是什么?

时间:2018-02-07 12:54:08

标签: zsh

在bash中我有

$ echo -e -
-
$

但是我在zsh中得到了这个:

$ echo '-'

$ print '-'

$

这似乎不像~等那样替换

此功能是否记录在某处?如果我想这样做,打印单个-字符的最简单方法是什么?

2 个答案:

答案 0 :(得分:1)

一般- zshzsh中没有特殊含义。但这是echo特有的,因为printzsh都是echo的内置函数(bash也是{{1}的内置函数但是,显然有些不同 - 显然)。

单个-表示其后面的任何参数都不作为选项处理。例如,这允许使用-E输出echo,而不是强制执行BSD样式echo行为:

% echo -E 'f\x6f\x6fbar'
f\x6f\x6fbar
% echo - -E 'f\x6f\x6fbar'
foobar

对于printzshbuiltins manpage中记录了这一点。不幸的是,echo似乎没有记录。

在此之后,输出单个-zsh)的最简单方法可能是将其中的两个传递给echoprint

% echo - -
-
% print - -
-

第一个-也会禁用解析任何进一步的-作为选项。

答案 1 :(得分:0)

使用printf更具可移植性,并且比echo更可靠。尝试

$ printf '%s\n' -
-