在bash中我有
$ echo -e -
-
$
但是我在zsh中得到了这个:
$ echo '-'
$ print '-'
$
这似乎不像~
等那样替换
此功能是否记录在某处?如果我想这样做,打印单个-
字符的最简单方法是什么?
答案 0 :(得分:1)
一般-
zsh
在zsh
中没有特殊含义。但这是echo
特有的,因为print
和zsh
都是echo
的内置函数(bash
也是{{1}的内置函数但是,显然有些不同 - 显然)。
单个-
表示其后面的任何参数都不作为选项处理。例如,这允许使用-E
输出echo
,而不是强制执行BSD样式echo
行为:
% echo -E 'f\x6f\x6fbar'
f\x6f\x6fbar
% echo - -E 'f\x6f\x6fbar'
foobar
对于print
,zshbuiltins
manpage中记录了这一点。不幸的是,echo
似乎没有记录。
在此之后,输出单个-
(zsh
)的最简单方法可能是将其中的两个传递给echo
或print
:
% echo - -
-
% print - -
-
第一个-
也会禁用解析任何进一步的-
作为选项。
答案 1 :(得分:0)
使用printf
更具可移植性,并且比echo
更可靠。尝试
$ printf '%s\n' -
-