删除以shell响应字符集命名的linux文件

时间:2015-03-24 12:44:16

标签: bash shell parsing sh

我创建了一个名为\;的文件:$" \'测试我的软件。我最终得到一个错误,因为我无法删除文件属性。我试图通过rm找到一个精确的字符组合,但我找不到方法。

rm \\;:$\"\\\'
rm: cannot remove `\\': No such file or directory

rm "\\"\;:$\"\\\'
rm: cannot remove `\\;:$"\\\'': No such file or directory

rm '\;:$"\'''
rm: cannot remove `\\;:$"\\': No such file or directory

(这最后一次尝试杀了我)

还有许多其他尝试。需要帮助!

4 个答案:

答案 0 :(得分:1)

我只需输入命令" rm"在终端中点击按钮" Tab"并删除文件:

roman@ubuntu:~/test12345$ ls
\;:$"\'
roman@ubuntu:~/test12345$ rm \\\;\:\$\"\\\' 
roman@ubuntu:~/test12345$ ls
roman@ubuntu:~/test12345$ 

答案 1 :(得分:1)

你问了一个bash解决方案:

# Create the file
touch \\\;:$\"\\\'

# Remove the file
rm \\\;:$\"\\\'

让我解释一下:文件名是\;:$"\'。你需要使用反斜杠和反斜杠本身来转义将在bash中扩展的每个char。可以通过bash扩展的字符是;$"'

答案 2 :(得分:0)

回答自己:

rm \\\;:$\"\\\'

答案 3 :(得分:0)

任何这些都应该有效:

  1. 逃避其他答案已经提出的所有内容

    rm \\\;\:\$\"\\\'
    

    事实上,只需输入rm \然后点击标签即可为您完成文件的名称,转义和所有。

  2. 引用

    rm "\;:$\"\'"
    

    请注意"必须转义,因为它在双引号内。使用单引号可以避免这种情况,但bash不会允许嵌套的单引号并且无法逃避它们。所以,`rm' \;:$ \" \''会失败的。

  3. 愚蠢的黑客。因为,大概你没有很多有这么奇怪名字的文件,你可以这样做:

    rm \\*
    

    删除名称以\

    开头的所有文件
    rm *\'
    

    删除名称以'等结尾的所有文件