代码之家  ›  专栏  ›  技术社区  ›  Hielke Walinga

zsh中的双反斜杠被解释为单反斜杠('/'->/)

  •  0
  • Hielke Walinga  · 技术社区  · 7 年前

    在zsh中:

    >> echo '\\'
    \
    

    我希望单引号之间的字符串根本不会被解释(bash将显示//)。所以我想知道为什么zsh把这里的双反斜杠变成了单反斜杠。

    也许这是我可以设置的选项?

    2 回复  |  直到 6 年前
        1
  •  2
  •   vookimedlo    7 年前
    ➜  ~ echo $SHELL
    /bin/zsh
    ➜  ~ echo "//"
    //
    ➜  ~ echo '//'
    //
    ➜  ~ echo //
    //
    ➜  ~ echo "\/"
    \/
    ➜  ~ echo '\/'
    \/
    ➜  ~ echo \/
    /
    ➜  ~ which echo
    echo: shell built-in command
    ➜  ~
    

    您可能注意到zsh有自己的内置echo,因此您可以通过-e/-e选项控制预期的行为。看到了吗 http://zsh.sourceforge.net/Doc/Release/Shell-Builtin-Commands.html

    ➜  ~ echo -E '\\'
    \\
    ➜  ~ echo -e '\\'
    \
    ➜  ~ echo -e '//'
    //
    ➜  ~ echo -E '//'
    //
    ➜  ~ 
    
        2
  •  0
  •   chepner    7 年前

    echo 默认情况下,在 zsh ,也就是说 \

    % echo '\'
    \
    

    两个反斜杠也可以传递给 回声 使用 '\\' . 然而,现在 它本身 对待 \\ 作为一对表示一个反斜杠,因为某些其他对被特殊处理。举两个例子, \t

    % echo 'a\tb'
    a   b
    

    虽然 \n 表示换行符

    % echo 'a\nb'
    a
    b
    

    这意味着能够打印这两个字符 \ n 例如,您需要某种方法来指定反斜杠,而不必转义以下内容 n \\ :

    % echo '\\n'
    \n