无法使用 linux 删除 $ 符号命名的文件?

sal*_*lma 4 linux special-characters rm files

这是我的ls命令,它显示了我当前目录中的文件列表:

rper:  ls -l

$commandoutput[0]  
file.txt
Run Code Online (Sandbox Code Playgroud)

我试图$commandoutput[0]通过使用删除行rm -rf $commandoutput[0],但它显示以下错误。我怎样才能删除它?

rper: rm -rd $commandoutput[0]
commandoutput: Undefined variable.
Run Code Online (Sandbox Code Playgroud)

dr_*_*dr_ 27

除了@RomanPerekhrest 的答案,这也适用:

rm '$commandoutput[0]'  
Run Code Online (Sandbox Code Playgroud)

因为单引号将避免变量扩展。

另一种方法是开始打字rm $,然后点击Tab; shell 将自动完成文件名,根据需要转义字符。

  • `rm $<tab>` 尝试在 `bash` 和 `zsh` 中为我自动完成变量名。我需要先转义`$`,即`rm \$<tab>` 或`rm '$<tab>`。 (7认同)
  • 最好使用`Alt`+`/` 而不是`Tab` — 这样自动完成功能将_only_ 用于文件名。 (4认同)

Rom*_*est 20

转义$(最好是[, ])用反斜杠登录您的文件名\

rm -rf \$commandoutput\[0\]
Run Code Online (Sandbox Code Playgroud)

  • (此外,在许多 shell 中,选项卡完成会在您完成足够远的距离后为您转义,在这种情况下,这意味着至少超出了 `\$`。) (5认同)