我创建了一个名为\;的文件:$" \'测试我的软件。我最终得到一个错误,因为我无法删除文件属性。我试图通过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
(这最后一次尝试杀了我)
还有许多其他尝试。需要帮助!
答案 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)
任何这些都应该有效:
逃避其他答案已经提出的所有内容
rm \\\;\:\$\"\\\'
事实上,只需输入rm \
然后点击标签即可为您完成文件的名称,转义和所有。
引用
rm "\;:$\"\'"
请注意"
必须转义,因为它在双引号内。使用单引号可以避免这种情况,但bash不会允许嵌套的单引号并且无法逃避它们。所以,`rm' \;:$ \" \''会失败的。
愚蠢的黑客。因为,大概你没有很多有这么奇怪名字的文件,你可以这样做:
rm \\*
删除名称以\
或
rm *\'
删除名称以'
等结尾的所有文件