我了解到 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 标志,则最后指定的标志生效。