コマンドラインオプションのusageの書式

一般に、UNIX系コマンドラインツールは-hや–helpオプションをつけると使い方が表示されます。 Cで言うgetoptが標準的で、さまざまな言語でサポートされています。

今時、オプション引数の一覧はライブラリが生成してくれることが多いですが、usageの内容までは生成してくれないようなのでちょっと調べてみました。

基本は、

  • Usage: で書き始める
  • 必須のものは名前のみ
  • 必須でないものは[arg]のように名前を括弧で囲む
  • 複数指定可能な場合は … を付ける
  • 引数付きオプションには分かりやすい引数名を付ける

というのが大まかなルールになっています。

以下、有名なコマンドのusageだけ抜粋してみました。

$ bash --help
Usage:  bash [GNU long option] [option] ...
        bash [GNU long option] [option] script-file ...

$ man --help
usage: man [-adfhktwW] [section] [-M path] [-P pager] [-S list]
        [-m system] [-p string] name ...

$ ls --help
Usage: ls [OPTION]... [FILE]...

$ sort --help
Usage: sort [OPTION]... [FILE]...
  or:  sort [OPTION]... --files0-from=F

$ uniq --help
Usage: uniq [OPTION]... [INPUT [OUTPUT]]

$ sed --help
Usage: sed [OPTION]... {script-only-if-no-other-script} [input-file]...

$ awk --help
Usage: awk [POSIX or GNU style options] -f progfile [--] file ...
Usage: awk [POSIX or GNU style options] [--] 'program' file ...

$ find --help
Usage: find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression]

$ grep --help
Usage: grep [OPTION]... PATTERN [FILE]...

興味深いのは、

  • オプションのネスト(uniq) [INPUT [OUTPUT]]
  • オプション引数の列挙(find) [-D help|tree|search|stat|rates|opt|exec]
  • 複数オプションを括弧の中に記述(find) [path…]
  • 引数の単語はハイフンでつなぐ(bash) script-file

など。 大文字小文字やスペースの数など多少のバラつきはあるようです。

オプションの有無で指定が大きく変わるものは、複数usageを表示することで分かりやすくしているようです。

参照