長いオプションをGNUオプションルールまたは他のルール/標準の一部としてランダムに短縮できますか、それとも特別なC関数によって提供されますか?
たとえば、行動python
とawk
行動はなぜ異なるのですか?
$ python --version
Python 2.7.12
$ python --versio
Unknown option: --
usage: python [option] ... [-c cmd | -m mod | file | -] [arg] ...
Try `python -h' for more information.
$ awk --version
GNU Awk 4.1.3, API: 1.1 (GNU MPFR 3.1.4, GNU MP 6.1.0)
$ awk --versi
GNU Awk 4.1.3, API: 1.1 (GNU MPFR 3.1.4, GNU MP 6.1.0)
ありがとうございます。
答え1
これはGNU libcの機能です。getopt_long マンページ:
略語が一意または定義されたいくつかのオプションと正確に一致する場合は、長いオプション名を略語として使用できます。
同様に、GNU libcのArgpインターフェースも略語オプションを受け入れます(プログラムが本当に興味を持っていればそれを拒否できますが)。
で述べたようにxclipコマンドラインの短縮された長いオプション、xlibは同じことをするので、xclock -dig -bri
同じですxclock -digital -brief
。
スクリプトでこれを行うことはお勧めできawk --ver
ませんawk --verbose
。
Pythonはおそらく独自の引数パーサーを作成したと推定されています。これはglibcを使用しないシステムに移植される可能性があります。彼らはGNU GPLライセンスを使用していないので、glibcを借りることはできません。