2012-01-21 14 views
35

これは、任意の言語やパーサよりも、プログラムの呼び出しに関するものです(ただし、パーサライブラリの選択はこれに依存することがあります)。 Linuxコマンドラインユーティリティをたくさん使いました。そして、いくつかの明白なパターンがあります。短いオプションのために単一の文字の前に ' - 'を付けると、引数を取らない複数のオプションを組み合わせることができます。オプションの長いバージョンの前には ' - 'が続きます。Linuxのコマンドラインスイッチと引数の標準はありますか?

ただし、場合によっては、大文字を使用してを反転し、オプションを使用します。したがって、 '-d'はデーモンとして実行することを意味するかもしれませんが、 '-D'はになりません。はデーモンとして実行されます。 (なぜそれが欲しくないのであれば、オプションを省略するだけではないのですか?それは決して明確ではありませんが、実際はむしろ一般的なので、なんらかの理由が必要であると思います)。 '-d'がデーモンとして実行されている場合、 '-D'はデバッグモードを有効にするかもしれません。この背後には何らかの重要な原則がありますか?それはどれを選ぶのがベストですか?あるいは、「何があっても」扱っているだけですか?

引数を持つオプションに加えて(またはその代わりに)孤立した引数を取るコマンドもあります。 cpはこれの良い例です。めったに使用されない2つのトグルとは別に、受信する最後の引数は宛先とみなされ、オプションリストと宛先の間の引数はすべてソースとみなされます。引数で明示的なオプションフラグを使用するのではなく、そのような命令に頼るのが「大丈夫」という経験則がありますか?

+2

コマンドラインオプションには一般的な標準はありませんが、 'getopt'の慣習は良い出発点です。反転オプションに関する質問に答えるために、デフォルトは通常設定ファイルで指定されているので、force-enableとforce-disableの両方のトグルが必要です。 – Borealid

答えて

24

で完全なリストを参照してください。

+0

私はおそらくgetoptを使用していますが、それはあまりにも標準的ではありません。しかし、そのIEEEリンクは非常に便利です。 – DigitalMan

+0

あなた自身でパーサーを実装しようとしている場合:可能性が高いですが、任意の言語についてパーザライブラリを見つけることができます。また、Java Python Cのパーサライブラリがあります。再考する必要はありません。車輪。 – ApriOri

+0

実際は、ホイールを再発明するのは私の仕事です:Pしかしオプションは一度しか解析されないので、それは馬鹿げたスピードで行う必要はありません。私はちょうどgetoptをドロップします。 – DigitalMan

15

ESRは彼の著書「The Art of UNIX Programming」でこれに関する多くの情報を収集しています。ここにはスニペットがあります。

-a
すべて(引数なし)。 GNU形式の--allオプションがある場合、-aオプションはGNUスタイルと同義ですが、これはまったく驚くべきことです。例:fuser(1)、fetchmail(1)。

tar(1)のように追加します。これはしばしば、削除のために-dと対になります。

-b
バッファまたはブロックサイズ(引数付き)。クリティカルなバッファサイズを設定するか、(ストレージのアーカイブまたは管理を行うプログラムで、 メディア)ブロックサイズを設定します。例:du(1)、df(1)、tar(1)。

バッチ。プログラムが自然にインタラクティブである場合、-bを使用して プロンプトを表示しないか、人間のオペレータではなくファイルから入力 を受け入れるのに適した他のオプションを設定することができます。例:flex(1)。

-c
コマンド(引数付き)。プログラムが通常は標準入力からコマンドを受け取るインタープリターである場合、-c引き数の オプションは、 入力の1行として渡されます。この慣習は、シェルとシェルのようなインタプリタのために特に強いです。例:sh(1)、ash(1)、bsh(1)、ksh(1)、 python(1)。以下を比較してください。

チェック(引数なし)。コマンドへのファイル の引数の正しさをチェックしますが、実際には通常の処理を実行しません。 コマンドファイルの解釈を行うプログラムでシンタックスチェックオプションとして頻繁に使用されます。例:getty(1)、perl(1)。

はい、一般http://catb.org/~esr/writings/taoup/html/ch10s05.html

9

のLinux/GNUのコマンドライン・インタフェースは、POSIX標準に従っています。これはGNUの標準ではhttp://www.gnu.org/prep/standards/html_node/Command_002dLine-Interfaces.htmlと書かれています。

--long-optionsはGNUイノベーションIIRCですが、コマンドライン構文もSingle Unix Specificationの一部です。

こちらをご覧ください:http://pubs.opengroup.org/onlinepubs/7908799/xbd/utilconv.html

しかし、はい、この規格はgetoptのように実装されます。

関連する問題