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

Vip*_*ula 11 shell filenames quoting

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

模式:未定义的变量。

我试过了:

$ rm -r $pattern
$ rm -rf $pattern
$ rm "$ option[value='2016']"
Run Code Online (Sandbox Code Playgroud)

Sté*_*las 21

$、空格'[在大多数 shell 中都是特殊字符。要去除它们的特殊含义,您必须使用 shell 的引用机制。

引用语法与外壳变化非常多

在我知道的所有 shell 中,您可以使用单引号来引用除单引号、反斜杠和换行符之外的所有字符(在类似 Bourne 的 shell 中,它也引用最后两个,除了\某些反引号)。

rm -r '$pattern'
Run Code Online (Sandbox Code Playgroud)

应该在最常见的 shell 中工作。

rm -r \$pattern
Run Code Online (Sandbox Code Playgroud)

可以在所有壳中工作(除了类似 Bourne 的内部反引号),但rc家庭的壳除外。

同样适用于:

rm "\$option[value='2016']"
Run Code Online (Sandbox Code Playgroud)

rc-like shell 中,您将使用:

rm '$option[value=''2016'']'
Run Code Online (Sandbox Code Playgroud)


Mc *_*nel 16

如果目录为空:

rmdir \$pattern
Run Code Online (Sandbox Code Playgroud)

除此以外:

rm -r \$pattern
Run Code Online (Sandbox Code Playgroud)

(它将递归删除文件夹包含的任何文件)

  • 您也可以单引号以避免转义:`rm '$pattern'` (19认同)