web-dev-qa-db-ja.com

シェルスクリプトと関数の一般的なフラグの指定と標準

シェルスクリプトとカスタム関数でGETOPTとGETOPTSを使用するように調整して、作成した関数をより柔軟に使用できるようにしています。多くのUNIX関数を使用した後、それらの多くがやや類似した構文を使用していることに気付きました。

例としては、詳細出力の場合は-v、再帰機能の場合は-R/-rがあります。

ユーティリティ規則のPOSIX標準ガイドCベースのユーティリティのGNUのオプションテーブル を見ました。これが仕様によるものかどうか、および従う必要のあるルールがあるかどうかを理解するために。

私の質問は:
1。指定された意味を持つ特定のオプションフラグはありますか?
2。オプションにはどのくらいの自由があり、どのルールを破るべきではありませんか?
3。 -t-Tのようなオプションに異なる意味を与えるのを避けるべきですか、それとも簡単にするためにそれらをグループ化するべきですか?
4。どのような状況で大文字または小文字を使用する必要がありますか?

6
Dodzi Dzakuma

迅速で確固とした規則はなく、一般的な慣習さえありません。せいぜい、いくつかの一般的なユーティリティで一貫して使用されるオプションがいくつかありますが、すべての一般的なユーティリティで使用されるわけではありません。

ここにいくつかの一般的な文字がありますが、これらは決して普遍的な慣習ではないことを忘れないでください。以下に説明する機能のいずれかがある場合は、対応するオプションを使用することをお勧めします。オプションの1つがユーティリティにとって意味をなさない場合は、他の目的で自由に使用してください。

  • -c COMMANDまたは-e COMMAND:コマンドを実行します。例:sh -cPerl -e
  • -dまたは-D:デバッグ。
  • -f:強制、危険な行動の確認を求めないでください。
  • -h:ヘルプ—ただし、多くのユーティリティは長いオプションのみを認識します--helpまたはまったくない。例:Linux getfaclmount。反例:GNU lsdudf(短いオプションなし、-hは人間のサイズです)、less-?は助けです、-hは別のものです)。
  • -i:確認のプロンプト(インタラクティブ)。
  • -n:行動せず、何が行われるかを印刷するだけです。例:make
  • -rまたは-R:再帰的。
  • -qまたは-s:静かまたは静か。例:grep -qは、出力を表示しないことを意味します。grep -sは、エラーメッセージを表示しないことを意味します。
  • -v:冗長。
  • -V:バージョン情報を表示します。

従来は小文字が使用されていましたが、小文字は26文字しかないため、大文字のみが使用されるようになりました。大文字は、対応する小文字と関係がある場合があります(例:GNU grep -h/-Hssh -x/-Xcp -r/-R)、時々そうではありません。