rm 命令矛盾的选项 -i 和 -f

rm 命令矛盾的选项 -i 和 -f

我了解到 rm 命令中 -i 选项是交互模式,-f 选项是强制模式。

当我尝试这两个选项时

rm -if test.txt

它没有问我,只是删除了它,这意味着 -f 选项覆盖了 -i 选项。

当然,在现实生活中我不会同时使用选项 -i 和 -f。但我想知道如果同时使用两个相互矛盾的选项是否有优先权。

我在 Ubuntu 22.04 中尝试过这个。

答案1

一般来说:不,Unix 命令没有标志优先级的概念。

来自打开有关实用程序参数的组基本规范部分

除非实用程序描述另有指定,否则使用冲突的互斥参数会产生未定义的结果。

由命令隐式决定哪一个具有优先级,或者如果给出冲突的标志,则可能发出警告或错误。

如前所述,在 的情况下rm-f将覆盖任何先前的-i

另一个例子,如果你要求tar创建、归档-c并提取一个 archive -x,它会抱怨你没有意义:

$ tar cxf test
tar: You may not specify more than one '-Acdtrux', '--delete' or  '--test-label' option

答案2

除了 @ckhan 的回答之外:rm我使用的实现始终将最后给定的参数视为最终参数。这意味着:

rm -fi# 将交互工作
rm -if# 将非交互工作
rm -ffifi# 将交互工作

等等。例如,AIX 联机帮助页 (AIX 7.2) 指出:

如果同时指定了 -f 和 -i 标志,则最后指定的标志生效。

相关内容