56409


# 背景

PythonでCLIツールを作成しています。  
コマンドライン引数のパースは、argparseモジュールで行っています。

# 考えていること

ロングオプションからショートオプション名を考えています。

# 質問

ショートオプションで大文字/小文字は、どう使い分ければよいですか？

[Command-Line Options - The Art of Unix
Programming](http://catb.org/~esr/writings/taoup/html/ch10s05.html)に載っているショートオプションには、`-d`も`-D`もありました。

上記サイトには、ショートオプションに関して、次のように述べています。

  * 大文字よりは小文字がよい
  * 大文字は、小文字オプションの特別な変形として使うのがよい

> In this style, lowercase options are preferred to uppercase. When you use
> uppercase options, it's good form for them to be special variants of the
> lowercase option.

「特別な変形」とは具体的に、どのようなことを指しているのでしょうか？

# 参考にしたサイト

  * [Are there standards for Linux command line switches and arguments?](https://stackoverflow.com/questions/8957222/are-there-standards-for-linux-command-line-switches-and-arguments)
  * [Table of Long Options - GNU Coding Standards](https://www.gnu.org/prep/standards/html_node/Option-Table.html#Option-Table)
  * [コマンドラインツールのショートオプションをどの用途で使うべきか](https://qiita.com/key-amb/items/9e53cf363407a379d17b)


CC BY-SA 4.0
2019-07-05T02:15:30.387
56408
2019-07-06T02:28:49.543
19524
question
command-line
コマンドラインのショートオプションの大文字小文字の使い分け


> 「特別な変形」とは具体的に、どのようなことを指しているのでしょうか？

Gitの`branch`コマンドを例にすると、

  * `-d`は「ブランチの削除」で、予めマージをしていないと削除ができません。
  * `-D`は「ブランチの **強制** 削除」で、マージをしていなくても削除が出来ます (`-d --force`相当)。

通常の小文字オプションなら警告などが表示されるけど、大文字の入力で手間をかけさせる分その警告を無視させるようなイメージです。


CC BY-SA 4.0
2019-07-05T02:24:22.097
56409
2019-07-05T02:24:22.097
3060
56408
answer


私の場合、通常は小文字を、無効化したり否定系のオプション (例えばロングオプション名 `--no-foo-bar` や `--disable-qux`
に対応するショートオプション名) に大文字を使うことがあります。ご参考まで。


CC BY-SA 4.0
2019-07-06T02:28:49.543
56440
2019-07-06T02:28:49.543
3061
56408
answer