使用している場合rm
の両方で-i
と-f
オプション、最初のものが無視されます。これはPOSIX標準に文書化されています。
-f
Do not prompt for confirmation. Do not write diagnostic messages or modify
the exit status in the case of nonexistent operands. Any previous
occurrences of the -i option shall be ignored.
-i
Prompt for confirmation as described previously. Any previous occurrences
of the -f option shall be ignored.
また、GNU info
ページ:
‘-f’
‘--force’
Ignore nonexistent files and missing operands, and never prompt the user.
Ignore any previous --interactive (-i) option.
‘-i’
Prompt whether to remove each file. If the response is not affirmative, the
file is skipped. Ignore any previous --force (-f) option.
内部で何が起こるか見てみましょう:
rm
はgetopt(3)
、特にでオプションを処理しますgetopt_long
。この関数は、コマンドライン(**argv
)のオプション引数を出現順に処理します:
getopt()が繰り返し呼び出されると、各オプション要素から各オプション文字が連続して返されます。
この関数は通常、すべてのオプションが処理されるまでループで呼び出されます。この機能の観点から、オプションは順番に処理されます。 ただし、アプリケーションロジックは競合するオプションの検出、オーバーライド、またはエラーの表示を選択できるため、実際に起こることはアプリケーションに依存します。 以下の場合にはrm
及びi
及びf
オプション、彼ら完全に上書きお互い。からrm.c
:
234 case 'f':
235 x.interactive = RMI_NEVER;
236 x.ignore_missing_files = true;
237 prompt_once = false;
238 break;
239
240 case 'i':
241 x.interactive = RMI_ALWAYS;
242 x.ignore_missing_files = false;
243 prompt_once = false;
244 break;
両方のオプションは同じ変数を設定し、これらの変数の状態はコマンドラインの最後のオプションになります。これの効果は、POSIX標準とrm
ドキュメントに沿っています。