日本語 man コマンド類 (ja-man-1.1j_5) と日本語 man ドキュメント (ja-man-doc-5.4 (5.4-RELEASE 用) など) をインストールすると、以下のような man コマンド閲覧、キーワード検索が コンソールからできるようになります。
4.11-RELEASE-K, 5.4-RELEASE-K, 5.5-RELEASE-K, 6.0-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K, 12.1-RELEASE-K は、 プライベート版 (小金丸が編集してまとめたもの) ですが、 より多くの翻訳したファイルが含まれています。 (5.4-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K から 12.4-RELEASE-K, 13.0-RELEASE-K から 13.3-RELEASE-K, 14.0-RELEASE-K から 14.1-RELEASE-K は、全翻訳済み)
13.3-STABLE-K, 15.0-CURRENT-K は現在、作成中で日々更新されています。
Table of Contents
GETOPT(3) FreeBSD ライブラリ関数マニュアル GETOPT(3) 名称 getopt -- コマンド行の引数リストからのオプション文字を取得する ライブラリ 標準 C ライブラリ (libc, -lc) 書式 #include <unistd.h> extern char *optarg; extern int optind; extern int optopt; extern int opterr; extern int optreset; int getopt(int argc, char * const argv[], const char *optstring); 解説 getopt() 関数は、コマンド行の引数リスト argv を増加させて解析し、次の既知 のオプション文字を返します。受け付けられたオプション文字 optstring の文字 列で指定されているなら、そのオプション文字は、既知です。 オプション文字列 optstring は、次の要素を含んでいます: 個々の文字とオプ ション引数を示すためにコロンが後続する文字は、後に続きます。個別の文字に 2 つのコロンが後続するなら、オプション引数は、省略可能です。optarg は、現 在の argv 単語の残りに設定され、または現在の単語にこれ以上文字がなかった なら、NULL に設定されます。これは、GNU の拡張です。例えば、オプション文字 列 "x" は、オプション ``-x'' を認識し、オプション文字列 "x:" は、オプショ ンと引数 ``-x argument'' を認識します。それは、続く引数に先導する空白類が あるなら、getopt() に重要ではありません。 getopt() からの返り時に、optarg は、それが予想されるなら、オプション引数 を指し、変数 optind は、getopt() への続く呼び出しのために次の argv 引数へ のインデックスを含んでいます。変数 optopt は、getopt() によって返された最 後の既知のオプション文字を保存します。 変数 opterr と optind は、両方とも 1 に初期化されます。optind 変数は、多 かれ少なかれ argv エントリをスキップするために getopt() への一連の呼び出 しの前に、別の値に設定されます。 引数の複数の組を評価するか、または引数の単一の組を複数回評価するために getopt() を使用するために、変数 optreset は、2 番目と getopt() への呼び出 しの各追加の組の前に、1 に設定されなければなりません、そして変数 optind は、再初期化されなければなりません。 getopt() 関数は、引数リストが使い果たされるとき、-1 を返します。引数リス ト中のオプションの解釈は、オプション `--' (2 つのダッシュ) によって取り消 され、これは、getopt() の引数処理の終りの合図となり、-1 を返します。すべ てのオプションが処理されていたとき、(すなわち、最初のオプションでない引数 まで) getopt() は、-1 を返します。 戻り値 getopt() 関数は、optstring 中の次の既知のオプション文字を返します。 getopt() が optstring で見つけられなかった文字に遭遇するか、または欠けて いるオプション引数を検出するなら、`?' (疑問符) を返します。optstring に先 導する `:' があるなら、欠けているオプション引数によって、`:' は、`?' の代 わりに返されます。どちらの場合でも、変数 optopt は、エラーを引き起こした 文字に設定されます。getopt() 関数は、引数リストが使い果たされるとき、-1 を返します。 使用例 #include <unistd.h> int bflag, ch, fd; bflag = 0; while ((ch = getopt(argc, argv, "bf:")) != -1) { switch (ch) { case 'b': bflag = 1; break; case 'f': if ((fd = open(optarg, O_RDONLY, 0)) < 0) { (void)fprintf(stderr, "myname: %s: %s\n", optarg, strerror(errno)); exit(1); } break; case '?': default: usage(); } } argc -= optind; argv += optind; 診断 getopt() 関数が文字列 optstring で見つからない文字に遭遇するか、欠けてい るオプション引数を検出するなら、それは、stderr にエラーメッセージを書き込 み、`?' を返します。opterr を 0 に設定することは、これらのエラーメッセー ジを無効にします。optstring に先導する `:' があるなら、失われたオプション 引数によって、`:' は、あらゆるエラーメッセージを抑制することに加えて返さ れます。 オプション引数は、``-'' で始まることを許可されます。これは、合理的です が、可能なエラーチェックの量を減らします。 関連項目 getopt(1), getopt_long(3), getsubopt(3) 規格 optreset 変数は、複数回 getopt() 関数を呼び出すことができるように追加され ました。これは、IEEE Std 1003.2 (``POSIX.2'') 規格の拡張です。 歴史 getopt() 関数は、4.3BSD で登場しました。 バグ getopt() 関数は、以前に、-1 の代わりに EOF を返すと明示されていました。 <stdio.h> からの getopt() を分断するために、これは、<stdio.h> から getopt() を切り離すために IEEE Std 1003.2-1992 (``POSIX.2'') によって変更 されました。 単一のダッシュ ``-'' は、optstring の文字として指定されますが、それは、決 してそれに関係している引数があるべきではありません。これによって、 getopt() は、オプションのフラグとして ``-'' を期待するプログラムで使用す ることができます。このやり方は、間違っていて、あらゆる現在の開発で使用さ れるべきではありません。それは、後方互換性のためだけに提供されています。 `-' で始まる optstring に異なる意味を割り当てる、GNU getopt() との意味的 な衝突を避けるために optstring の最初の文字として、`-' を使用しないように 注意するべきです。デフォルトで、単一のダッシュによって、getopt() は、-1 を返します。 また、それは、オプション文字として数字を扱うことも可能です。これによっ て、getopt() は、オプションとして数値 (``-3'') を期待するプログラムで使用 することができます。このやり方は、間違っていて、あらゆる現在の開発で使用 されるべきではありません。それは、後方互換性のためだけに提供されていま す。次のコードの断片は、ほとんどの場合動作します。 int ch; long length; char *p, *ep; while ((ch = getopt(argc, argv, "0123456789")) != -1) switch (ch) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': p = argv[optind - 1]; if (p[0] == '-' && p[1] == ch && !p[2]) { length = ch - '0'; ep = ""; } else if (argv[optind] && argv[optind][1] == ch) { length = strtol((p = argv[optind] + 1), &ep, 10); optind++; optreset = 1; } else usage(); if (*ep != '\0') errx(EX_USAGE, "illegal number -- %s", p); break; } FreeBSD 11.2 June 5, 2014 FreeBSD 11.2