find命令中的反斜杠

问题描述 投票:0回答:2

我有一个ksh文件,我有以下代码行

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

我有兴趣知道这些反斜杠的目的。是逃避什么的吗?

linux find ksh backslash
2个回答
1
投票

改写成一行:

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

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


1
投票

反斜杠有两个目的:

  • 在行尾:让shell忽略换行符,即命令在下一行继续。没有它,shell会认为新命令在下一行开始。
  • 在一行内:转义下一个字符,以便shell不解析它。这些字符通常对shell有特殊含义。反斜杠删除了这个含义,以便将字符“原样”传递给find。在这里阅读更多相关信息:Which characters need to be escaped when using Bash?。这是关于Bash但是KSH是类似的。
© www.soinside.com 2019 - 2024. All rights reserved.