这是我的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”的文件名,这将询问您是否要删除该文件。然后您可以在删除之前进行检查。