如何删除以“$”开头的文件夹?

如何删除以“$”开头的文件夹?

我创建了一个名为“$pattern”的目录,现在每当我尝试删除它时,它都会说

模式:未定义的变量。

我努力了:

$ rm -r $pattern
$ rm -rf $pattern
$ rm "$ option[value='2016']"

答案1

$、空格'[是大多数 shell 中的特殊字符。要删除它们的特殊含义,您必须使用 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 查询的常见做法,以防止执行预期之外的数据库命令。

相关内容