rm コマンドの -i オプションが対話型モードであり、-f オプションが強制モードであることがわかりました。
これら2つのオプションを試してみると
rm -if test.txt
それは私に尋ねずにちょうど削除しました。これは、-fオプションが-iオプションよりも優先されることを意味します。
もちろん、実生活では-iと-fオプションを同時に使用しません。しかし、2つの矛盾するオプションを同時に使用する場合は、優先順位があるかどうかを知りたいです。
Ubuntu 22.04でこれを試しました。
答え1
通常、いいえ、Unix コマンドにはフラグ優先順位の概念はありません。
~からユーティリティパラメータのグループ基本仕様セクションを開きます。
ユーティリティーの説明で特に指定しない限り、相互排他的なパラメーター競合を使用すると、未定義の結果が生成されます。
優先順位が何であるかはコマンドによって暗黙的に決定され、競合するフラグが指定された場合は警告またはエラーが発生する可能性があります。
rm
前述のように、その場合は-f
前の項目が上書きされます-i
。
別の例として、アーカイブをtar
作成、アーカイブ、および抽出するように要求すると、言葉がないと文句を言うでしょう。-c
-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 フラグの両方を指定すると、指定された最後のフラグが適用されます。