各コマンドの関数optstring
への引数がどのように見えるかを知らない限り、コマンドラインで引数を並べ替える作業を行う汎用ツールを安全に作成することはできません。getopt()
検討:
make something -f makefile
cp something -f makefile
最初のコマンドでは、コマンドの呼び出しを正規化するために、 と の両方を前に-f
移動する必要があります。makefile
2 番目では、移動する必要があるのは-f
;のみです。次のファイル名も移動すると、コマンドが書き換えられ、データが破壊されます。
もちろん、getopt_long()
コマンドが長い形式--force
または--file=makefile
スタイルの引数を取る場合、引数文字列がどのように見えるかも知っておく必要があります。
率直に言って、Linux の環境で POSIXLY_CORRECT を使用し、それが提供する陰湿な柔軟性を忘れて、常に引数の前にオプションを記述することを学ぶ方がよいでしょう。そうすることで、コードはすべての Unix ライクなマシンでより適切に機能します。
/bin
GNU ソフトウェアをand以外のディレクトリにインストールすることもできます/usr/bin
(たとえば、システム ディレクトリの前に PATH/usr/gnu/bin
を置くようにします。 GNU からの類似物を持っていません. また、あなたが書いたシェルスクリプトが、あなたと同じセットアップを持っていない他の Mac に移植できないという「危険」があります./usr/gnu/bin
fink