【问题标题】:Backslash in find command查找命令中的反斜杠
【发布时间】:2019-08-27 01:31:44
【问题描述】:

我有一个 ksh 文件,其中包含以下代码行

   find . \
    \( \
        -name \*.tar -o \
        -name \*.gz -o \
        -name log.\* -o \
        -name out.\*  \
\) \

我很想知道这些反斜杠的用途。 是为了逃避什么吗?

【问题讨论】:

    标签: linux find ksh backslash


    【解决方案1】:

    改写成一行:

    find . \( -name "*.tar" -o -name "*.gz" -o -name "log.*" -o -name "out.*" \)
    

    顺便说一句。最后 -o (必须后跟选项)和反斜杠在您的示例中是错误的

    【讨论】:

    • 每行末尾的反斜杠,是为了转义换行吗?
    【解决方案2】:

    反斜杠在这里有两个用途:

    • 在行尾:让 shell 忽略换行,即命令在下一行继续。没有它,shell 会认为新命令从下一行开始。

    • 在一行内:转义下一个字符,以便 shell 不解析它。这些字符通常对 shell 有特殊的含义。反斜杠删除了这个含义,以便将字符“按原样”传递给find。 在此处阅读有关此内容的更多信息:Which characters need to be escaped when using Bash?。这是关于 Bash 但 KSH 是相似的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-04
      • 1970-01-01
      • 2019-12-12
      • 2010-10-29
      • 2012-03-06
      • 1970-01-01
      • 2011-01-28
      • 1970-01-01
      相关资源
      最近更新 更多