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

Ale*_*lex 7 linux bash shell sh parsing

我创建了一个名为\;:$"\'测试我的软件的文件。我最终出现错误,因为我无法删除文件属性。我试图找到一个精确的字符组合来通过 删除它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
Run Code Online (Sandbox Code Playgroud)

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

以及许多其他尝试。需要伸出援助之手!

cha*_*aos 12

如果文件名正好是\;:$"\',那么您应该可以使用以下命令将其删除:

rm \\\;\:\$\"\\\'
Run Code Online (Sandbox Code Playgroud)

只需用一个 .ecap 即可转义所有字符\

  • @Alex 如果你的程序环境有一个库函数来转义字符串,你应该使用它。如果您处于具有制表符完成功能的交互式 shell 环境中,我发现这对于操作具有奇怪名称的文件非常方便! (4认同)

Lam*_*ert 5

您可以尝试ls -li在包含文件的目录中删除文件,并通过发出返回的 inodefind . -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
Run Code Online (Sandbox Code Playgroud)