rm -f file1
は、プロンプトを表示せずにfile1
を強制的に削除することを知っています。
また、rm -i file1
を削除する前にfile1
が最初にメッセージを表示することも知っています
rm -if file1
を実行すると、プロンプトも表示されずにfile1
も強制的に削除されます。
ただし、rm -fi file1
を実行すると、file1
を削除する前にメッセージが表示されます。
それで、コマンドオプションを組み合わせるとき、最後のものが優先されるというのは本当ですか? rm -if
のように、-f
が優先されますが、rm -fi
の場合は-i
が優先されます。
たとえば、ls
コマンドは、ls -latR
とls -Rtal
のどちらを言ってもかまいません。
ですから、rm -if
のような矛盾するコマンドオプションがある場合にのみ問題になると思いますが、それは正しいですか。
フラグには「優先順位」はありません。各プログラムはフラグを希望どおりに処理します。ほとんどの場合、すべてのフラグを収集して競合をチェックするために何らかの努力をします。標準ツール(参照されたrm(1)
など)の場合、関連する標準が何かを義務付けている場合があります(ただし、特定のバージョンは、標準/それらのために特別にテストされません)。
プログラムを作成するプログラマにとって、引数(フラグなど)を左から右に厳密に検討するのが最も簡単です。ライブラリを使用してフラグを処理する場合(getopt(3)
のように、いくつかのバージョンが浮かんでいます)、プログラマはおそらく最も簡単で自然なことを行います。プログラマーは人間であり、人々は怠惰です(または、少なくとも組み合わせの爆発を通して考えるのが好きではありません)。