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

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

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

rper:  ls -l

$commandoutput[0]  
file.txt

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

rper: rm -rd $commandoutput[0]
commandoutput: Undefined variable.

答案1

除了@RomanPerekhrest 的答案,这也可以工作:

rm '$commandoutput[0]'  

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

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

答案2

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

rm -rf \$commandoutput\[0\]

答案3

虽然其他人已经回答了这个问题,但另一种方法是查找文件的 inode 并使用 find 和 exec delete 来删除文件。

ls -il

示例输出:

781956 drwx------  3 viv viv 4096 2017-07-7 15:05 $commandoutput[0] 

第一列应该是 inode,在上面的示例中,运行:

find . -inum 781956 -exec rm -i {} \;

答案4

另一种简单的方法是使用通配符和 rm -i:

rm -i *command*

对于所有包含单词“command”的文件名,这将询问您是否要删除该文件。然后您可以在删除之前进行检查。

相关内容