Linux rm -rf*删除命令?

mic*_*kof 7 linux shell command rm

我认为rm按字母顺序删除文件,但显然不是在我执行之后.

在此输入图像描述

那么,命令rm执行的顺序是什么?

pax*_*blo 8

rm本身并不提供排序的性质,它是shell扩展.如果您要键入rm *,shell会将其扩展为:

rm aaa bbb ccc
Run Code Online (Sandbox Code Playgroud)

rm就从来没有看到一个*说法.顺便说一下,我不确定所有 shell的排序行为都是有保证的,但bash根据手册页,它肯定是有效的:

...替换为按字母顺序排序的与模式匹配的文件名列表.

该命令rm -rf *是一个有点奇怪的混合大小写的情况,因为即使shell对*条目进行排序,它仍然仅用于第一级条目.

因此rm -rf *可能扩展到:

rm -rf aa_dir bb_dir cc_dir
Run Code Online (Sandbox Code Playgroud)

但这完全取决于rm内部如何处理这些目录的条目的处理顺序(尽管显然,可以安全地确定目录中的所有条目将在目录本身之前被删除).

很可能它只是使用readdir()或类似的东西,它将根据它们如何存储在目录文件中而不是按字母顺序排序来排序.

在任何情况下,它们被删除的顺序可能无关紧要 - 假设权限允许,它们最终都将被删除.