rm コマンドの矛盾するオプション -i および -f

rm コマンドの矛盾するオプション -i および -f

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 フラグの両方を指定すると、指定された最後のフラグが適用されます。

関連情報