我创建了一个名为“$pattern”的目录,现在每当我尝试删除它时,它都会说
模式:未定义的变量。
我努力了:
$ rm -r $pattern
$ rm -rf $pattern
$ rm "$ option[value='2016']"
答案1
$
、空格'
和[
是大多数 shell 中的特殊字符。要删除它们的特殊含义,您必须使用 shell 的引用机制。
在我知道的所有 shell 中,您可以使用单引号来引用除单引号、反斜杠和换行符之外的所有字符(在类似 Bourne 的 shell 中,它也引用最后两个字符,除了\
某些中的反引号)。
rm -r '$pattern'
应该可以在大多数常见的 shell 中工作。
rm -r \$pattern
可以在除系列 shell 之外的所有 shell 中工作(除了类似于 Bourne 的内部反引号之外)rc
。
同样适用于:
rm "\$option[value='2016']"
在rc
-like shell 中,您可以使用:
rm '$option[value=''2016'']'
答案2
如果目录为空:
rmdir \$pattern
否则:
rm -r \$pattern
(它将递归删除该文件夹包含的任何文件)
答案3
当您需要对包含特殊字符的文件进行操作时,一个选项是使用 bash 自动完成功能:开始输入命令(在本例中rmdir
),然后点击Tab几次。这将循环当前目录中的所有文件/目录,自动转义所有特殊字符。
如果您操作的文件名很长,这也很有效。
答案4
您只需使用“\”转义该字符,这也是在 Web 应用程序中编写 SQL 查询的常见做法,以防止执行预期之外的数据库命令。