【发布时间】:2019-08-27 01:31:44
【问题描述】:
我有一个 ksh 文件,其中包含以下代码行
find . \
\( \
-name \*.tar -o \
-name \*.gz -o \
-name log.\* -o \
-name out.\* \
\) \
我很想知道这些反斜杠的用途。 是为了逃避什么吗?
【问题讨论】:
我有一个 ksh 文件,其中包含以下代码行
find . \
\( \
-name \*.tar -o \
-name \*.gz -o \
-name log.\* -o \
-name out.\* \
\) \
我很想知道这些反斜杠的用途。 是为了逃避什么吗?
【问题讨论】:
改写成一行:
find . \( -name "*.tar" -o -name "*.gz" -o -name "log.*" -o -name "out.*" \)
顺便说一句。最后 -o (必须后跟选项)和反斜杠在您的示例中是错误的
【讨论】:
反斜杠在这里有两个用途:
在行尾:让 shell 忽略换行,即命令在下一行继续。没有它,shell 会认为新命令从下一行开始。
在一行内:转义下一个字符,以便 shell 不解析它。这些字符通常对 shell 有特殊的含义。反斜杠删除了这个含义,以便将字符“按原样”传递给find。
在此处阅读有关此内容的更多信息:Which characters need to be escaped when using Bash?。这是关于 Bash 但 KSH 是相似的。
【讨论】: