我创建了一个名为的文件\;:$"\'
来测试我的软件。最后出现了错误,因为我无法删除文件属性。我试图通过 找到一个精确的字符组合来删除它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
(最后一次尝试让我丧命)
还有许多其他尝试。需要帮助!
答案1
如果文件名称正好是\;:$"\'
,那么您应该能够使用以下命令将其删除:
rm \\\;\:\$\"\\\'
只需用一个 即可转义所有字符\
。
答案2
您可以尝试ls -li
在包含该文件的目录中删除该文件,方法是:find . -inum <inode-number> -exec rm -i {} \;
我将其添加到-i
find 命令中,以便在删除之前进行提示,以防 find 命令找到与您预期不同的另一个文件。
除了评论之外,我还尝试自己创建和删除该文件:
ls -l
total 0
-rw-r--r-- 1 test test 0 mrt 24 14:11 \;:$"\'
[test@testhost +1] /tmp/ff$ rm \\\;\:\$\"\\\'
[test@testhost +1] /tmp/ff$ ls -l
total 0
答案3
您可以使用单引号,然后只需要担心引用单引号本身。
rm '\;:$"\'\'
在交互式使用中,您可以简单地使用制表符补全,以'\
或开头\\
。制表符补全来自'\
收益'\;:$"\'\'''
,因为 bash 只是用 替换每个嵌入的单引号'\''
。制表符补全来自无或\\
收益\\\;\:\$\"\\\'
。
答案4
如果您不仅限于使用 bash 或其他 shell 脚本环境,那么删除此类文件的一种简单方法可能是编写一个简短的程序,只需调用unlink()
您喜欢的语言,或者使用文件管理器(如 Gnome Commander 或 Midnight Commander)手动删除该文件。后一种选项允许您选择相关文件并将其删除,而无需在任何地方输入文件名,这将消除元字符具有任何特殊含义的可能性。