「標準」を探している場合は、GNU の Standards for Command Line Interfaces を見るよりも悪いことができます。他の規格が利用可能です。
これに関するコーディングについては、 をご覧くださいboost::program_options
。これにより、独自のコードを大量に作成する手間が省けるだけでなく、ユーザーに提示するためのオプションを適切にフォーマットすることができます (原型的な「正しい使用法」というメッセージが要求されました)。
具体的な質問への回答:
- 入力ファイルは通常、コマンドのリストのどこに移動しますか?それとも、プログラムに < 入力する方がよいでしょうか?
これらはコマンドラインの最後に来ると思います。GNU のようにgrep
。1 つのファイルのみを処理してstdin
いて、入力ソースとして使用できるようにしたい場合、ほとんどのユーザーは驚かないでしょう。
コマンドが多くのファイルを処理する場合、ファイル名の前にスイッチを指定する必要があるのは珍しいことです。考えてみてくださいcat
。
-o
or--output
オプションはかなり一般的です。ファイルが正確に 1 つの入力と 1 つの出力を受け取る場合、program inputfile outputfile
多くのユーザーは驚かないでしょう。出力ファイルが指定されていない場合は、おそらくstdout
;に出力します。これは異常な動作ではなく、ユーザーが他のコマンド ( 、 など) を介して出力をパイプできるようにgrep
しますless
。また、 を使用して stdout をファイルにリダイレクトすることもできます。>
- 出力形式のファイル拡張子を指定する必要がありますか、それともプログラムに自動的に正しい拡張子を付ける必要がありますか?
これはおそらく議論の余地があります。出力ファイル名を指定した場合、プログラムが名前を変更することなく、そのファイルが作成された (または、プロンプトの後に置き換えられた) ことを期待できます。
- ユーザーが無効なコマンドを入力したときに、典型的な「正しい使用法」のメッセージが表示されますか?
再びGNUgrep
を例として使用します。
grep: unrecognized option '--incorrect'
Usage: grep [OPTION]... PATTERN [FILE]...
Try 'grep --help' for more information.
これはあまり多くのユーザーを驚かせず、情報で圧倒されずにタイプミスを犯した場合、正しい方向に向けます.
- "
--help
" または " -h
" は必須ですか?
それはお客様次第!このオプションが利用できないとイライラします。