diff --git a/ja_JP.eucJP/man/man1/c89.1 b/ja_JP.eucJP/man/man1/c89.1 index f4143e787c..8574bd6d6e 100644 --- a/ja_JP.eucJP/man/man1/c89.1 +++ b/ja_JP.eucJP/man/man1/c89.1 @@ -1,170 +1,174 @@ .\" .\" Copyright (c) 1997 Joerg Wunsch .\" .\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" .\" THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY EXPRESS OR .\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES .\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. .\" IN NO EVENT SHALL THE DEVELOPERS BE LIABLE FOR ANY DIRECT, INDIRECT, .\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT .\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, .\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY .\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .\" -.\" %FreeBSD: src/usr.bin/c89/c89.1,v 1.4.2.2 2000/12/19 16:22:06 ru Exp % +.\" %FreeBSD: src/usr.bin/c89/c89.1,v 1.4.2.3 2001/05/22 19:05:01 schweikh Exp % .\" " -.\" $FreeBSD$ +.\" $FreeBSD: doc/ja_JP.eucJP/man/man1/c89.1,v 1.8 2001/05/14 01:07:21 horikawa Exp $ .Dd September 17, 1997 .Os .Dt C89 1 .Sh 名称 .Nm c89 .Nd Posix.2 対応 C 言語コンパイラ .Sh 書式 .Nm c89 .Op Fl c -.Op Fl D Ar name Ns Op Ar =value -.Op ...\& +.Op Fl D Ar name Ns Op Ar =value +.Ar ...\& .Op Fl E .Op Fl g .Op Fl I Ar directory ...\& .Op Fl L Ar directory ...\& .Op Fl o Ar outfile .Op Fl O .Op Fl s .Op Fl U Ar name ...\& .Ar operand ...\& .Sh 解説 これは .St -p1003.2 標準にて要求されている、C 言語コンパイラの名称です。 .Pp .Nm コンパイラは以下のオプションを受け付けます: .Bl -tag -width indent .It Fl c コンパイル時にリンクエディットフェーズを実行しません。 生成されたオブジェクトファイルを一切削除しません。 .It Fl D Ar name Ns Op Ar =value C 言語の .Ql #define ディレクティブ(前処理指令)で指定したかのように名前を定義します。 .Ar =value が与えられない場合、値 1 が使用されます。 +.St -p1003.2 +に指定されているように変換するためには、ソース中または本オプションを使用して +.Dv _POSIX_SOURCE +を定義する必要があります。 .Fl D オプションは .Fl U オプションより低い優先度を持ちます。 すなわち .Ar name が .Fl U と .Fl D の両方で使用された場合、オプションの順序によらず、 .Ar name は未定義になります。 .Fl D オプションは複数回指定可能です。 .It Fl E 全プリプロセッサディレクティブを展開し、 C 言語ソースファイルを標準出力へコピーします。 コンパイルは行いません。 .It Fl g オブジェクトや実行ファイル中にシンボル情報を生成します。 .It Fl I Ar directory 絶対パス名ではないヘッダを検索するアルゴリズムを、 通常の場所を検索する前に .Ar directory で指定されるディレクトリを探すという方法に変更します。 ダブルクォート (\&"\&") で括られた名前のヘッダは、 .Ql #include 行を指定したファイルのディレクトリ、 次に .Fl I オプションで指定したディレクトリ、 最後に通常の場所で探します。 アングルブラケット (<>) で括られた名前のヘッダは、 .Fl I オプションで指定したディレクトリと 通常の場所のみで探します。 .Fl I オプションで指定したディレクトリは指定した順番で探します。 .Fl I オプションは複数回指定可能です。 .It Fl L Ar directory .Fl l で指定されるライブラリを検索するアルゴリズムを、 通常の場所を検索する前に .Ar directory で指定されるディレクトリを探すという方法に変更します。 .Fl L オプションで指定したディレクトリは指定した順番で探します。 .Fl L は複数回指定可能です。 .It Fl o Ar outfile パス名 .Ar outfile をデフォルトの .Pa a.out の代りに使用し、実行可能ファイルを生成します。 .It Fl O コンパイル時に最適化を行います。 .It Fl s オブジェクトや実行ファイルを生成する時、 実行に不要な、シンボルおよびその他の情報を取り除きます (ストリップします)。 .It Fl U Ar name .Ar name の初期定義を取り除きます。 .Fl U オプションは複数回指定可能です。 .El .Pp オペランドは、パス名、もしくは .Fl l ライブラリの形式です。 パス名オペランドが少なくとも一つは指定されなければなりません。 サポートされているオペランドの形式を以下に示します: .Bl -tag -offset indent -width "-l library" .It Pa file Ns \&.c C 言語ソースファイルであり、コンパイルされます。場合によっては リンクされます。 .Fl c オプション使用時には、オペランドはこの形式でなければなりません。 .It Pa file Ns \&.a オブジェクトファイルのライブラリであり、 .Xr ar 1 によって生成され、直接リンクエディタに渡されます。 .It Pa file Ns \&.o オブジェクトファイルであり、 .Nm .Fl c によって生成され、直接リンクエディタに渡されます。 .It Fl l Pa library .Dl lib Ns Em library Ns \&.a という名前のライブラリを探します。 ライブラリの名前が出てきた時点でそのライブラリ内部が検索されるので、 .Fl l オペランドの位置は重要です。 .El .Sh 関連項目 .Xr ar 1 , .Xr cc 1 .Sh 規格 .Nm コマンドは .St -p1003.2 に準拠していると確信しております。 diff --git a/ja_JP.eucJP/man/man1/crunchgen.1 b/ja_JP.eucJP/man/man1/crunchgen.1 index 122556cb00..b505752ebf 100644 --- a/ja_JP.eucJP/man/man1/crunchgen.1 +++ b/ja_JP.eucJP/man/man1/crunchgen.1 @@ -1,445 +1,462 @@ .\" .\" Copyright (c) 1994 University of Maryland .\" All Rights Reserved. .\" .\" Permission to use, copy, modify, distribute, and sell this software and its .\" documentation for any purpose is hereby granted without fee, provided that .\" the above copyright notice appear in all copies and that both that .\" copyright notice and this permission notice appear in supporting .\" documentation, and that the name of U.M. not be used in advertising or .\" publicity pertaining to distribution of the software without specific, .\" written prior permission. U.M. makes no representations about the .\" suitability of this software for any purpose. It is provided "as is" .\" without express or implied warranty. .\" .\" U.M. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL U.M. .\" BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES .\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR .\" IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. .\" .\" Author: James da Silva, Systems Design and Analysis Group .\" Computer Science Department .\" University of Maryland at College Park -.\" %FreeBSD: src/usr.sbin/crunch/crunchgen/crunchgen.1,v 1.11.2.6 2000/12/08 15:28:02 ru Exp % +.\" %FreeBSD: src/usr.sbin/crunch/crunchgen/crunchgen.1,v 1.11.2.7 2001/05/18 14:06:21 joe Exp % .\" -.\" $FreeBSD$ +.\" $FreeBSD: doc/ja_JP.eucJP/man/man1/crunchgen.1,v 1.8 2001/05/14 01:07:22 horikawa Exp $ .Dd November 16, 2000 .Dt CRUNCHGEN 1 .Os BSD 4 .Sh 名称 .Nm crunchgen .Nd クランチバイナリ構築環境を作成する .Sh 書式 .Bk -words .Nm .Op Fl foql .Op Fl h Ar makefile-header-name .Op Fl m Ar makefile-name .Op Fl c Ar c-file-name .Op Fl e Ar exec-file-name .Op Ar conf-file .Ek .Sh 解説 クランチバイナリ (crunched binary) は、 たくさんの別々のプログラムをひとつにまとめて 単一の実行形式にしたプログラムです。 クランチバイナリの .Fn main 関数は、 .Va argv[0] の値をみて、 どのコンポーネントプログラムが実行されるべきかを決定します。 複数プログラムをクランチしてひとつにまとめる主たる理由は、 インストールフロッピあるいはシステム回復フロッピ上に、 できるだけ多くのプログラムを収納するためです。 .Pp .Nm は .Ar conf-file に記述されたクランチバイナリのための設定項目を読み込み、 .Pa Makefile とそれに付随するトップレベルの C ソースファイルを生成します。 これらはビルド時に各コンポーネントプログラムからクランチした実行形式を 作成します。 オプションにより、 .Nm は、各コンポーネントプログラムに対して、 そのソースディレクトリの .Pa Makefile から プログラムを構成するオブジェクトファイル (.o) を決定することも試みます。 この情報は実行のたびにキャッシュされます。 .Nm は関連するもうひとつのプログラム .Xr crunchide 1 を用い、全ての不要なシンボルを隠すことで コンポーネントプログラム間のリンク時のシンボル競合を防ぎます。 .Pp .Nm は特殊な要件をパッケージの .Pa Makefile に課しており、このことが原因で .Pa Makefile が非 BSD ソース用に使えなくなっています。 特に、 .Pa Makefile はターゲット .Ic depend を含むことが必要であり、全オブジェクトファイルを変数 .Va OBJS で定義することが必要です。 場合によっては、偽の .Pa Makefile を使えるでしょう。 .Nm は、ソースディレクトリ .Pa foo 中の .Pa Makefile を見る前に、現在のディレクトリ中の .Pa Makefile.foo を見ます。 .Pp .Nm 実行後、 .Dq Li make -f .mk を実行することで クランチバイナリを作成できます。 コンポーネントプログラムのオブジェクトファイルは既に作成されている 必要があります。 出力される makefile に含まれる .Ic objs ターゲットは、 各コンポーネントプログラムのソースディレクトリで .Xr make 1 を実行し、ユーザのためにオブジェクトファイルを作成してくれます。 しかしこのターゲットは自動的には実行されません。 リリースエンジニアリング環境では、オブジェクトを他のディレクトリで 修正するのは一般に望ましくないからです。 .Pp オプションは以下の通りです: .Bl -tag -width indent .It Fl c Ar c-file-name 出力する C のファイル名を .Ar c-file-name とします。デフォルトの名前は .Pa .c です。 .It Fl e Ar exec-file-name クランチバイナリの実行形式ファイルの名前を .Ar exec-file-name とします。デフォルトの名前は .Pa です。 .It Fl f キャッシュを消去し、キャッシュされていたパラメータを強制的に再計算します。 .It Fl l 名前の表示。このバイナリが対応する名前を一覧表示します。 .It Fl h Ar makefile-header-name .Nm が生成する .Pa Makefile の先頭に含めるファイルの名前を設定します。 make の変数を定義するのに便利です。 これには、 .Xr make 1 の動作に影響を与え、環境変数を介してでは面倒である、 .Va RELEASE_CRUNCH が含まれます。 .It Fl m Ar makefile-name 出力する .Pa Makefile の名前を .Ar makefile-name とします。デフォルトの名前は .Pa .mk です。 .It Fl o 各プログラムの make ターゲットに対し、 .Dq Li make obj ルールを追加します。 .It Fl p Ar obj-prefix .Ic objdir を計算するときに、 .Ic srcdir の前に付けるパス名を設定します。 このオプションが存在しない場合、使用するプレフィックスは .Ev MAKEOBJDIRPREFIX 環境変数の内容か、または .Pa /usr/obj です。 .It Fl q 静粛処理モード。状況報告メッセージを抑制します。 .El .Sh CRUNCHGEN コンフィギュレーションファイルコマンド .Nm は、クランチバイナリのコンポーネントについて記述した設定項目を .Ar conf-file から読み取ります。 最も単純な場合は、各コンポーネントプログラム名を、 そのソースファイルが置かれたトップレベルのディレクトリ名とともに、 単に列挙するだけです。 次に .Nm は (ソースの makefile によって) オブジェクトファイルリストと その位置を求め、それをキャッシュします。 もっと特殊な場合には、 .Nm が必要とするあらゆるパラメータを、ユーザが手動で指定することができます。 .Pp .Ar conf-file のコマンドは以下の通りです: .Bl -tag -width indent .It Ic srcdirs Ar dirname ... コンポーネントプログラムのソースディレクトリがあるソースツリーのリスト。 これらのディレクトリは .Bx の .Dq Pa // 方式を用いて検索されます。 .Ic srcdirs 行は複数あってもよく、ディレクトリは記述された順に検索されます。 .It Ic progs Ar progname ... クランチバイナリを構成するプログラムのリスト。 .Ic progs 行は複数あっても構いません。 .It Ic libs Ar libspec ... クランチバイナリのリンク時に含めるライブラリ指定のリスト。 .Ic libs 行は複数あっても構いません。 .It Ic buildopts Ar buildopts ... 各 make ターゲットに追加追加される、ビルドオプションのリスト。 .It Nm ln Ar progname linkname .Va argv[0] に .Ar linkname が現われたときはいつも .Ar progname を起動するよう、クランチバイナリに要請します。 これにより、起動時の名前によって振る舞いを変えるようなプログラムも 正しく動作するようにできます。 .El .Pp 特別な状況、例えば ソースファイルがないとか、 従来の .Pa Makefile によらないビルドを行うといった場合に対応するため、以下に述べる .Ic special コマンドを用いてコンポーネントプログラムの .Nm パラメータを指定できます。 .Bl -tag -width indent .It Ic special Ar progname Ic srcdir Ar pathname プログラム用 .Ar progname のオブジェクトファイル一覧を保持する make 変数の名前を設定します。 これは通常 .Nm OBJS ですが、Makefile によっては、他の約束が好ましい場合や、 .Nm SSHD_OBJS のようにプログラム名が前に付くものがあります。 .It Nm special Ar progname Nm srcdir Ar pathname プログラム .Ar progname のソースディレクトリを指定します。 通常は指定されたディレクトリ .Ic srcdirs 内の .Ar progname ディレクトリを検索して決定されます。 .It Ic special Ar progname Ic objdir Ar pathname プログラム .Ar progname の .Pa obj ディレクトリを指定します。 通常、 .Pa obj ディレクトリは、 ソースディレクトリ名の前に次のいずれかのコンポーネントを付けたものとして 計算され、コンポーネントには次の順番で優先度があります: コマンドラインにおける .Fl p の引数、環境変数 .Ev MAKEOBJDIRPREFIX の値、または .Pa /usr/obj です。 もしディレクトリが見つからなければ、ディレクトリ .Ic srcdir 自身が .Ic objdir となります。 .It Ic special Ar progname Ic buildopts Ar buildopts ビルドオプション集合を定義します。 .Ar progname 処理時には、 .Nm buildopts で指定されたものに加え、これらが追加されて .Xr make 1 のターゲットが作成されます。 .It Ic special Ar progname Ic objs Ar object-file-name ... プログラム .Ar progname のオブジェクトファイルのリストを指定します。 通常は、 .Dq Ic srcdir Ns / Ns Pa Makefile をインクルードし .Va $(OBJS) の値を出力するような一時 makefile を構築する ことで決定されます。 .It Ic special Ar progname Ic objpaths Ar full-pathname-to-object-file ... プログラム .Ar progname のオブジェクトファイルのパス名を指定します。 通常は .Ic objs リスト中の各ファイルのパス名の先頭に .Ic objdir を付加することで決定されます。 .It Ic special Ar progname Ic objvar Ar variable_name プログラム .Ar progname 用のオブジェクトファイルリストを保持する .Xr make 1 変数名を設定します。 これは通常 .Va OBJS ですが、 .Pa Makefile によっては別の規約を使用したいかもしれませんし、 変数名の前にプログラム名を付けたいかもしれません。例えば .Va SSHD_OBJS など。 .It Ic special Ar progname Ic keep Ar symbol-name ... プログラム .Ar progname の保持リストに、指定するシンボルのリストを追加します。 各シンボルの前にはアンダスコア .Pq Ql _ が付加され、 .Xr crunchide 1 フェーズでは .Fl k オプションの引数となります このオプションはシンボルが衝突するときの最後の拠所ですが、 シンボル解決の唯一の方法である場合もあります。 +.It Ic special Ar progname Ic ident Ar identifier +.Ar progname +に対する +.Pa Makefile Ns / Ns Tn C +識別子を設定します。 +これは通常、 +.Ar progname +を元に、 +.Ql - +を +.Ql _ +にマップし、他のすべての非識別子文字を無視することにより、生成されます。 +この結果、 +.Qq Li foo.bar +と +.Qq Li foobar +は、同一の識別子にマップされてしまいます。 .El .Pp 実際に .Nm が必要とするのは .Ic objpaths だけですが、 これは .Ic objdir と .Ic objs から求められ、これらも .Ic srcdir から求められます。 ですから、もし可能なら、初期のパラメータを指定し、あとは .Nm に求めさせたほうが便利な場合もあります。 .Pp .Nm が生成する makefile はオプションのターゲット .Ic objs を含みます。 これは、各コンポーネントプログラムのソースディレクトリ内で .Xr make 1 を実行してオブジェクトファイルを作成するターゲットです。 これがうまく動作するためには .Ic srcdir および .Ic objs パラメータが正しいものでなくてはなりません。 もしこれらの値があるプログラムに対して不正なものであると、 .Ic objs ターゲットではそのプログラムはスキップされてしまいます。 .Sh 実行例 .Nm の入力コンフィギュレーションファイルの例として .Dq Pa kcopy.conf の内容を示します。 .Pp .Bd -literal -offset indent srcdirs /usr/src/bin /usr/src/sbin progs test cp echo sh fsck halt init mount umount myinstall progs anotherprog ln test [ # test は [ として起動することもできる ln sh -sh # init は argv[0] を "-sh" としてシェルを起動する special myprog objpaths /homes/leroy/src/myinstall.o # ソースなし special anotherprog -DNO_FOO WITHOUT_BAR=YES libs -lutil -lcrypt .Ed .Pp このコンフィギュレーションファイルでは、 いくつかの基本的なシステムユーティリティと 自家製のインストールプログラム .Dq Pq myinstall から成る 小さなクランチバイナリを記述しています。 ソースディレクトリは全く指定されていませんが、 オブジェクトファイルは .Nm special 行で直接指定されています。 .Pp さらに、 .Dq Pa anotherprog 構築時には、引数 .Pp .Dl -DNO_FOO WITHOUT_BAR=YES .Pp がすべてのビルドターゲットに対して追加されます。 .Pp クランチバイナリ .Dq Pa kcopy は以下のようにして作成できます: .Pp .Bd -literal -offset indent % crunchgen -m Makefile kcopy.conf # Makefile と kcopy.c 作成 % make objs # コンポーネントプログラムの *.o 作成 % make # クランチバイナリ kcopy の作成 % kcopy sh # シェル sh を起動できるかどうか試すと.. $ # うまくいった! .Ed .Pp ここまでくれば、バイナリ .Dq Pa kcopy をインストールフロッピにコピーし、 各コンポーネントプログラムの名前でハードリンクを設けることができます。 .Sh 関連項目 .Xr crunchide 1 .Xr make 1 .Sh 警告 .Nm はクランチバイナリ中の各コンポーネントプログラム間のリンク競合を 除去するのに気を配っていますが、依然としてリンクされたライブラリ間で 競合が発生する可能性が残っています。 ライブラリ順の入れ換えが必要な場合もありますし、 二つのライブラリ間にどうしても解消できない競合が発生し、 結局ひとつにまとめられない場合も稀にあります。 .Pp BSD のバージョンによっては、デフォルトのビルド環境では 単一ソースファイルのプログラムに対して 中間オブジェクトファイルを作成しないことがあります。 その場合は .Dq Li make objs ターゲットを用いてオブジェクトファイルを 作成するか、他の調整を施す必要があります。 .Sh 作者 .Nm は .An James da Silva Aq jds@cs.umd.edu によって作成されました。 .Pp Copyright (c) 1994 University of Maryland. All Rights Reserved. diff --git a/ja_JP.eucJP/man/man1/find.1 b/ja_JP.eucJP/man/man1/find.1 index b9762c3c73..d52603f4d1 100644 --- a/ja_JP.eucJP/man/man1/find.1 +++ b/ja_JP.eucJP/man/man1/find.1 @@ -1,630 +1,762 @@ .\" The Regents of the University of California. All rights reserved. .\" .\" This code is derived from software contributed to Berkeley by .\" the Institute of Electrical and Electronics Engineers, Inc. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" 3. All advertising materials mentioning features or use of this software .\" must display the following acknowledgement: .\" This product includes software developed by the University of .\" California, Berkeley and its contributors. .\" 4. Neither the name of the University nor the names of its contributors .\" may be used to endorse or promote products derived from this software .\" without specific prior written permission. .\" .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" .\" @(#)find.1 8.7 (Berkeley) 5/9/95 -.\" %FreeBSD: src/usr.bin/find/find.1,v 1.23.2.8 2001/03/06 12:52:41 ru Exp % +.\" %FreeBSD: src/usr.bin/find/find.1,v 1.23.2.10 2001/05/16 13:56:39 ru Exp % .\" -.\" $FreeBSD: doc/ja_JP.eucJP/man/man1/find.1,v 1.21 2001/05/14 01:07:23 horikawa Exp $ -.Dd May 9, 1995 +.\" $FreeBSD: doc/ja_JP.eucJP/man/man1/find.1,v 1.22 2001/05/19 19:18:11 horikawa Exp $ +.Dd May 3, 2001 .Dt FIND 1 .Os .Sh 名称 .Nm find .Nd ディレクトリツリーを再帰的に下ってファイルを捜す .Sh 書式 .Nm find .Op Fl H | Fl L | Fl P .Op Fl EXdsx .Op Fl f Ar pathname -.Op Ar pathname ...\& +.Op Ar pathname ... .Ar expression .Sh 解説 .Nm は、 .Ar pathname に対してディレクトリツリーを再帰的に下って、 ツリー上の各ファイルについて .Ar expression -(後に示す ``プライマリ'' と ``演算子'' から構成されます) +(後に示す +.Dq プライマリ +と +.Dq 演算子 +から構成されます) で指定された処理を実行します。 .Pp オプションとしては以下のものがあります: -.Pp -.Bl -tag -width Ds +.Bl -tag -width indent .It Fl E .Ic -regex および .Ic -iregex のオプションの後の正規表現を、 基本正規表現 (BRE) の代りに拡張 (最近の) 正規表現として解釈します。 .Xr re_format 7 マニュアルページは、両方のフォーマットを完全に解説しています。 .It Fl H .Ar file で指定したファイルがシンボリックリンクファイルだった場合、シンボリックリンク 自体ではなく、リンク先のファイルに関してファイル情報とファイルタイプ ( .Xr stat 2 参照) を使って .Ar expression の処理をするように指定します。 もしリンク先のファイルがなければ、 シンボリックリンク自体を処理の対象とします。 コマンドラインからの .Ar file で直接指定されたのではなく、 ディレクトリツリー上で見つかったシンボリックリンクファイルに関しては、 シンボリックリンク自体を処理の対象とします。 .It Fl L .Ar file で指定したファイルがシンボリックリンクファイルだった場合、シンボリックリンク 自体ではなく、リンク先のファイルに関してファイル情報とファイルタイプ ( .Xr stat 2 参照) を使って .Ar expression の処理をするように指定します。もしリンク先のファイルがな ければ、シンボリックリンク自体を処理の対象とします。 .It Fl P シンボリックリンク自体に関して ファイル情報とファイルタイプ ( .Xr stat 2 参照) を使って .Ar expression の処理をするように指定します。 これがデフォルトです。 .It Fl X .Xr xargs 1 と組み合わせて使うときのため、より安全に動作するようにします。もし -.Xr xargs -によりデリミタ文字 (single quote -.Pq Dq \&' , -double quotes -.Pq Dq \&" , -backslash -.Pq Dq \e , -space, tab, newline) +.Xr xargs 1 +によりデリミタ文字 (シングルクォート +.Pq Dq Li " ' " +、ダブルクォート +.Pq Dq Li " \*q " +、バックスラッシュ +.Pq Dq Li \e +、スペース、タブ、改行) が含まれるファイル名 が使われた場合、診断メッセージを標準エラー出力に表示して、 そのファイル名をスキップします。 .It Fl d ファイルに対する処理順序を深さ優先の探索方式にします。 すなわち、ディレクトリ自体に 対する処理を行う前に、ディレクトリ内の個々のファイルに対して処理を 実行します。デフォルトでは、ディレクトリは最初に処理されます。 -(デフォルトの方式は幅優先探索方式ではないです。) +(デフォルトの方式は幅優先探索方式では +.Em ない +です。) .It Fl f Ar file 明示的にファイルを指定します。ファイル名の先頭が .Dq \- で始まっていたり、 あとで述べる .Ar expression の指定と混同してしまうようなファイル名を指定したりするときに使用します。 (ファイルはオプション直後のオペランドとしても指定可能です。) .It Fl s .Fl s オプションは、辞書編集上の順に、 すなわち各ディレクトリ内においてアルファベット順に、 ファイル階層を .Nm に辿らせます。 注: -.Sq find -s +.Ql find -s と -.So -find | sort -.Sc +.Ql "find | sort" は異なった結果となる場合があります。 .It Fl x ディレクトリツリーを下って行くとき、最初に file のあったファイルシステムとは 異なるファイルシステム上のファイルに対する処理になる場合は、実行しないように します。 .El .Sh プライマリ -.Bl -tag -width Ds -.It Ic -amin Ar n +.Bl -tag -width indent +.It Ic -amin Ar n 最後にファイルがアクセスされた時刻と、 .Nm を起動した時刻との差 (1 分単位で切り上げます) が .Ar n 分であれば、真とします。 -.It Ic -atime Ar n +.It Ic -anewer Ar file +.Ic -neweram +と同じです。 +.It Ic -atime Ar n 最後にファイルがアクセスされた時刻と、 .Nm を起動した時刻との差 (24 時間単位で切り上げます) が .Ar n 日であれば、真とします。 -.It Ic -ctime Ar n +.It Ic -cnewer Ar file +.Ic -newercm +と同じです。 +.It Ic -ctime Ar n 最後にファイルのステータスが変更された時刻と、 .Nm を起動した時刻の差 (24 時間単位で切り上げます) が .Ar n 日であれば、真とします。 .It Ic -delete 見付けたファイルやディレクトリを消去します。常に真を返します。 現在の作業ディレクトリから .Nm は再帰的にディレクトリツリーを下ります。 セキュリティ上の理由から、 -\&"." からの相対パス名に -.Dq / +.Dq Pa \&. +からの相対パス名に +.Dq Pa / 文字を含むファイル名のファイルを 消去しようとはしません。 このオプションにより暗示的に深さ優先の処理が指定されます。 .It Ic -empty 現在のファイルまたはディレクトリが空の場合、真となります。 -.It Ic -exec Ar utility Op argument ... ; +.It Ic -exec Ar utility Op Ar argument ... ; .Ar utility で指定した名前のプログラムを実行し、終了コードが 0 -の場合、真とします。argument は、utility への引数として渡されます。この -指定は、最後に必ずセミコロン -.Pq Dq \&; +の場合、真とします。 +.Ar argument +は、utility への引数として渡されます。 +この指定は、最後に必ずセミコロン +.Pq Dq Li \&; をつけてください。 utility もしくは argument の指定 -のなかで ``{}'' が使われていた場合は、その部分が、現在 +のなかで +.Dq Li {} +が使われていた場合は、その部分が、現在 .Nm が対象としているファイルのパス名に置き換えられます。ただし、 .Ar utility が実行されるときのカレントディレクトリは、 .Nm が起動されたディレクトリのままです。 -.It Ic -execdir Ar utility Op argument ... ; -.Ic \&-execdir +.It Ic -execdir Ar utility Op Ar argument ... ; +.Ic -execdir プライマリは .Ic -exec プライマリと同様ですが、 .Ar utility が現在のファイルを持つディレクトリにおいて実行される点が異なります。 -文字列 ``{}'' に対して置換されるファイル名は適切ではありません。 -.It Ic -fstype Ar type +文字列 +.Dq Li {} +に対して置換されるファイル名は適切ではありません。 +.It Ic -fstype Ar type 対象ファイルが格納されているファイルシステムのタイプが、 .Ar type で指定されたものである場合に真となります。 .Xr sysctl 8 コマンドを使用して、 システム上で利用可能なファイルシステムタイプを調べることができます: -.Bd -literal -offset indent -sysctl vfs -.Ed -さらに、2 つの 擬似タイプ ``local'' と ``rdonly'' があります。 -``local'' は、 +.Pp +.Dl "sysctl vfs" +.Pp +さらに、2 つの 擬似タイプ +.Dq Li local +と +.Dq Li rdonly +があります。 +前者は、 .Nm -を実行しているシステム上に物理的 -にマウントされているファイルシステムです。``rdonly'' は、リードオンリーで -マウントされているファイルシステムです。 -.It Ic -group Ar gname +を実行しているシステム上に物理的にマウントされているファイルシステムです。 +後者は、読み取り専用でマウントされているファイルシステムです。 +.It Ic -group Ar gname ファイルが .Ar gname で指定したグループに属している場合、真になります。 .Ar gname が数字で、そのようなグループ名がない場合は、 .Ar gname をグループ ID として扱います。 -.It Ic -inum Ar n +.It Ic -inum Ar n ファイルの i ノード番号が .Ar n なら、真になります。 -.It Ic -links Ar n +.It Ic -links Ar n ファイルのリンク数が .Ar n なら、真になります。 .It Ic -ls このプライマリは常に真になります。対象となっているファイルの情報を 標準出力に出力します。出力する内容は i ノード番号、 512 バイトブロックでのファイルの大きさ、 ファイルのパーミッション、ハードリンクの数、所有者、グループ、 バイトで表したファイルの大きさ、最後にファイルが修正された時刻、パス名です。 ファイルがブロック型もしくはキャラクタ型の特殊ファイルならば、 バイトで表したファイルの大きさの代わりにメジャー番号とマイナー番号を 出力します。ファイルがシンボリックリンクならば、 -``->'' の後にリンク先のファイルのパス名を表示します。 +.Dq Li -> +の後にリンク先のファイルのパス名を表示します。 フォーマットは -``ls -dgils'' の出力結果と同じです。 +.Bk -words +.Nm ls Fl dgils +.Ek +の出力結果と同じです。 .It Ic -maxdepth Ar n 現在のファイルのツリーにおける深さが .Ar n 以下である場合、真になります。 .It Ic -mindepth Ar n 現在のファイルのツリーにおける深さが .Ar n 以上である場合、真になります。 -.It Ic -mmin Ar n +.It Ic -mmin Ar n 最後にファイルが修正された時刻と、 .Nm を起動した時刻との差 (1 分単位で切り上げます) が .Ar n 分であれば、真とします。 -.It Ic -mtime Ar n +.It Ic -mtime Ar n 最後にファイルが修正された時刻と、 .Nm を起動した時刻との差(24 時間単位で切り上げます)が .Ar n 日であれば、真とします。 -.It Ic \&-ok Ar utility Op argument ... ; +.It Ic -ok Ar utility Op Ar argument ... ; +.Ic -ok +プライマリは .Ic exec とほぼ同じですが、 .Ar utility を実行するかどうかの確認をユーザに求め、端末にメッセージを出力します。 -``y'' 以外の返答をした場合は、 +.Dq Li y +以外の返答をした場合は、 コマンドは実行されず、 -このプライマリの値は偽になります。 -.It Ic -name Ar pattern +.Ic -ok +式の値は偽になります。 +.It Ic -okdir Ar utility Op Ar argument ... ; +.Ic -okdir +プライマリは、 +.Ic -execdir +プライマリと同様ですが、 +.Ic -ok +プライマリの解説に該当する部分が異なります。 +.It Ic -name Ar pattern 対象ファイルのパス名の最後のファイル名部分が .Ar pattern で指定したものとマッチするかどうかを調べ、マッチした場合は真になります。 .Ar pattern としては、シェルで使われるパターンマッチ -指定 (``['', ``]'', ``*'', ``?'') を使用することができます。これらの文字は -バックスラッシュ (``\e'') を前において、パターンマッチ指定ではなく文字として +指定 ( +.Dq Li \&[ , +.Dq Li \&] , +.Dq Li * , +.Dq Li \&? ) +を使用することができます。これらの文字は +バックスラッシュ +.Pq Dq Li \e +を前において、パターンマッチ指定ではなく文字として 扱う事を明示することができます。 -.It Ic -iname Ar pattern +.It Ic -iname Ar pattern .Ic -name に似ていますが、大文字小文字を区別せずにマッチします。 -.It Ic -regex Ar pattern +.It Ic -regex Ar pattern ファイルのパス全体が、正規表現 .Ar pattern にマッチする場合、真になります。 -ファイル名 ``./foo/xyzzy'' にマッチさせるには、 -正規表現 ``.*/[xyz]*'' や ``.*/foo/.*'' が使えますが、 -``xyzzy'' や ``/foo/'' は使えません。 -.It Ic -iregex Ar pattern +ファイル名 +.Dq Pa ./foo/xyzzy +にマッチさせるには、 +正規表現 +.Dq Li ".*/[xyz]*" +や +.Dq Li ".*/foo/.*" +が使えますが、 +.Dq Li xyzzy +や +.Dq Li /foo/ +は使えません。 +.It Ic -iregex Ar pattern .Ic -regex に似ていますが、大文字小文字を区別せずにマッチします。 -.It Ic -newer Ar file +.It Ic -newer Ar file 対象ファイルの修正日付が、 .Ar file で指定したファイルのものより新しい場合は、真になります。 +.It Ic -newer Ns Ar X Ns Ar Y Ar file +現在のファイルの最終アクセス時刻 +.Ar ( X Ns = Ns Cm a ) +・ステータス修正時刻 +.Ar ( X Ns = Ns Cm c ) +・内容修正時刻 +.Ar ( X Ns = Ns Cm m ) +が、 +.Ar file +の最終アクセス時刻 +.Ar ( Y Ns = Ns Cm a ) +・ステータス修正時刻 +.Ar ( Y Ns = Ns Cm c ) +・内容修正時刻 +.Ar ( Y Ns = Ns Cm m ) +より新しい場合は、真となります。 +さらに +.Ar Y Ns = Ns Cm t +の場合、 +.Ar file +は代りに、 +.Xr cvs 1 +が理解する直接的な時刻指定として解釈されます。 +.Ic -newermm +は +.Ic -newer +と同じであることに注意してください。 .It Ic -nouser 対象ファイルの所有者が unknown の場合、真になります。 .It Ic -nogroup 対象ファイルのグループが unknown の場合、真になります。 -.It Ic -path Ar pattern +.It Ic -path Ar pattern 対象ファイルのパス名が、 .Ar pattern で指定したものとマッチす るかどうかを調べます、マッチした場合は真になります。 .Ar pattern -としては、シェルで使われるパターンマッチ -指定 (``['', ``]'', ``*'', ``?'') を使用することができます。これらの文字は -バックスラッシュ (``\e'') を前において、パターンマッチ指定ではなく文字として +としては、シェルで使われるパターンマッチ指定 ( +.Dq Li \&[ , +.Dq Li \&] , +.Dq Li * , +.Dq Li \&? ) +を使用することができます。これらの文字は +バックスラッシュ +.Pq Dq Li \e +を前において、パターンマッチ指定ではなく文字として 扱う事を明示することができます。 -``/'' は、そのままパスのディレクトリの区切りにマッチします。 -.It Ic -ipath Ar pattern +.Pq Dq Li / +は、そのままパスのディレクトリの区切りにマッチします。 +.It Ic -ipath Ar pattern .Ic -path に似ていますが、大文字小文字を区別せずにマッチします。 +.\" .It Ic -perm Oo Fl Oc Ns Ar mode +.\" ja-groff-0.100_3 で整形できないためマクロ使用方法を変えています +.\" 2001/05/25 horikawa@jp.FreeBSD.org .It Xo .Ic -perm .Oo Fl Oc Ns Ar mode .Xc ファイルのモードを、 .Ar mode と比較します。 .Ar mode は、シンボル 形式 ( .Xr chmod 1 参照) もしくは 8 進数形式で指定します。シンボル形式の場合は、 00000 から開始してパーミッションのセットとクリアを行います。 (プロセスのファイル生成マスクとは無関係です。) 8 進数形式の場合は、 ファイルのモードビットのうち、07777 +.\" .Pq Dv S_ISUID | S_ISGID | S_ISTXT | S_IRWXU | S_IRWXG | S_IRWXO +.\" ja-groff-0.100_3 で整形できないためマクロ使用方法を変えています +.\" 2001/05/25 horikawa@jp.FreeBSD.org .Pf ( Dv S_ISUID | .Dv S_ISGID | .Dv S_ISTXT | .Dv S_IRWXU | .Dv S_IRWXG | .Dv S_IRWXO ) の部分が比較対象になります。 .Ar mode の最初にダッシュ -.Dq \- +.Pq Dq Li - を指定した場合は、 .Ar mode でセットされているすべてのビットが ファイルのモードでもセットされていれば、このプライマリは真となります。 .Ar mode の最初にプラス -.Pq Dq + +.Pq Dq Li + を指定した場合は、 .Ar mode でセットされているビットのどれかがファイルのモードでもセットされていれば、 このプライマリは真となります。 どちらでもない場合、ファイルのモードと .Ar mode が完全に一致した場合にのみ真となります。 なお、 -シンボル形式でモード指定をする場合は、少なくとも最初が -.Dq \- +シンボル形式でモード指定をする場合は、少なくとも最初がダッシュ +.Pq Dq Li - にならない ようにする必要があります。 .It Ic -flags Op Fl Ns Ar flags このプライマリは、ファイルのフラグが指定された .Ar flags と完全に同じに設定されている場合 (ダッシュ -.Pq Dq \- +.Pq Dq Li - が前に付かない場合) か、 指定されたフラグにマッチする場合 (ダッシュが前に付く場合) に真になります。 .Ar flags はシンボル名 ( .Xr chflags 1 参照) で指定可能です。 これは、設定されたフラグの指定のみを許す .Ic -perm とは違うことに注意してください。 .It Ic -print このプライマリは常に真になります。 対象となっているファイルのパス名を標準出力に出力して改行します。 -.Ic -exec , -.Ic -ls , -.Ic -ok , -.Ic -print0 +.Ic -exec , -ls , -print0 , +.Ic -ok のどのプライマリも指定されなかった場合は、 与えられた式 given expression は -.Cm \&( Ns Ar given\& expression Ns Cm \&) -.Ic -print +.Cm \&( Ar "given expression" Cm \&) Ic -print で置き換えられます。 .It Ic -print0 .Ic -print とほぼ同じですが、標準出力に対象となっているファイルのパス名を出力 したあと、改行ではなく、 -.Tn ASCII -.Tn NUL +.Tn ASCII NUL 文字 (文字コード 0) を出力します。 .It Ic -prune このプライマリは常に真になります。 対象となっているファイル配下のディレクトリに下りないようにします。 .Fl d オプションが指定されている場合は、 .Ic -prune の指定は無効になります。 -.It Ic -size Ar n Ns Op Cm c +.It Ic -size Ar n Ns Op Cm c ファイルサイズを 512 バイトのブロック単位で数えたとき (端数は切り上げ)、 .Ar n ブロックであれば真になります。 .Ar n -のあとに ``c'' が指定されていた場合は、ファイルサイズが +のあとに +.Cm c +が指定されていた場合は、ファイルサイズが .Ar n -バイトであれば真になります。 -.It Ic -type Ar t +バイト (文字) であれば真になります。 +.It Ic -type Ar t ファイルタイプが .Ar t で指定されたタイプに一致すれば真になります。 タイプとして、次のような指定が可能です: .Pp -.Bl -tag -width flag -offset indent -compact +.Bl -tag -width indent -compact .\" jpman project では special file を「特殊ファイル」と訳している。 .\" これにあわせて block special を「ブロックスペシャル」ではなく .\" 「ブロック特殊」とするのは違和感があるので、「ファイル」を補った。 .\" Kazuo Horikawa 1999/03/10 .It Cm b ブロック型特殊ファイル .It Cm c キャラクタ型特殊ファイル .It Cm d ディレクトリ .It Cm f 普通のファイル .It Cm l シンボリックリンク .It Cm p FIFO .It Cm s ソケット .El -.Pp -.It Ic -user Ar uname +.It Ic -user Ar uname ファイルの所有者が、 .Ar uname で指定されたユーザと一致すれば真になります。もし .Ar uname が数字で、そのようなユーザ名がなければ、 ユーザ ID が指定されたものとして扱います。 .El .Pp なお、数字を引数にとるプライマリは、 数字の前にプラス -.Pq Dq + +.Pq Dq Li + およびマイナス -.Pq Dq \- +.Pq Dq Li \- をつけることができます。 -それぞれ ``n より大'' および ``n より小'' の意味になり、 -``正確に n''という意味ではなくなります。 +それぞれ +.Dq n より大 +および +.Dq n より小 +の意味になり、 +.Dq 正確に n +という意味ではなくなります。 .Sh 演算子 -.Pp 以下の演算子を使って、プライマリを組み合わせることができます。 演算子は優先度が下がる順番で示されています。 -.Bl -tag -width (expression) -.It Cm \&( Ar expression Cm \&) -もし、括弧内の +.Pp +.Bl -tag -width "( expression )" -compact +.It Cm \&( Ar expression Cm \&) +もし、括弧内の .Ar expression が真なら、真になります。 .Pp -.It Cm \&! Ar expression +.It Cm \&! Ar expression 単項否定演算子 ( .Tn NOT ) です。 .Ar expression が偽なら、真となります。 .Pp .It Ar expression1 Cm -and Ar expression2 .It Ar expression1 expression2 論理積 ( .Tn AND ) 演算子です。 .Ar expression1 と .Ar expression2 の両方とも真のとき、真になります。 -もし +もし .Ar expression1 が偽なら、 -.Ar expression2 +.Ar expression2 は実行されません。 .Ic -and を書かずに、単に 2 つの expression を並べて .Pp .Ar expression1 expression2 .Pp と書いても同じです。 .Pp .It Ar expression1 Cm -or Ar expression2 論理和 ( .Tn OR ) 演算子です。 .Ar expression1 か .Ar expression2 -のどちらか一方でも真であれば、真になります。もし -.Ar expression1 +のどちらか一方でも真であれば、真になります。もし +.Ar expression1 が真なら、 -.Ar expression2 +.Ar expression2 は実行されません。 .El .Sh 使用例 -.Pp コマンドラインからのタイプ例です。 -.Nm -の演算子がシェルの特殊文字と間違われないように、 -エスケープ文字 ``\e'' を使用しています。 -.Bl -tag -width findx -.It Li "find / \e! -name \*q*.c\*q -print" -探索をルートディレクトリから開始し、ファイル名の終わりが -``.c'' でないものを表示します。 -.It Li "find / -newer ttt -user wnj -print" -探索をルートディレクトリから開始し、 -ファイルが ``ttt'' というファイルより新しく、 -所有者が ``wnj'' であるようなものを表示します。 -.It Li "find / \e! \e( -newer ttt -user wnj \e) -print" -探索をルートディレクトリから開始し、 -``ttt'' というファイルより古いか、 -所有者が ``wnj'' 以外のファイルを表示します。 -.It Li "find / \e( -newer ttt -or -user wnj \e) -print" -探索をルートディレクトリから開始し、 -ファイルが ``ttt'' というファイルより新しいか、 -所有者が ``wnj'' であるようなものを表示します。 +.Bl -tag -width indent +.It Li "find / \e! -name \*q*.c\*q -print" +ファイル名の終わりが +.Pa \&.c +でない全ファイルを表示します。 +.It Li "find / -newer ttt -user wnj -print" +.Pa ttt +というファイルより新しく +所有者が +.Dq wnj +である全ファイルを表示します。 +.It Li "find / \e! \e( -newer ttt -user wnj \e) -print" +.Pa ttt +というファイルより古く所有者が +.Dq wnj +であるという条件が成立しない、全ファイルを表示します。 +.It Li "find / \e( -newer ttt -or -user wnj \e) -print" +.Pa ttt +というファイルより新しいか、 +所有者が +.Dq wnj +である、全ファイルを表示します。 +.It Li "find . -newerct '1 minute ago' -print" +inode 修正時刻が現在から 1 分以内の全ファイルを表示します。 .El .Sh 関連項目 .Xr chflags 1 , .Xr chmod 1 , +.Xr cvs 1 , .Xr locate 1 , .Xr whereis 1 , .Xr which 1 , .Xr stat 2 , .Xr fts 3 , .Xr getgrent 3 , .Xr getpwent 3 , .Xr strmode 3 , .Xr re_format 7 , .Xr symlink 7 .Sh 規格 .Nm ユーティリティの文法は .St -p1003.2 の仕様で決められた文法のスーパセットです。 全 1 文字オプションと +.\" .Ic -iname , -inum , -iregex , -print0 , -delete , -ls , +.\" ja-groff-0.100_3 で整形できないためマクロ使用方法を変えています .Ic -iname , .Ic -inum , .Ic -print0 , .Ic -delete , .Ic -ls , .Ic -regex のプライマリは .St -p1003.2 の拡張です。 .Pp -昔は -.Fl d , -.Fl h , -.Fl x +昔は +.Fl d , h , x のオプションは -それぞれ ``\-depth'', ``\-follow'', ``\-xdev'' のプライマリを +それぞれ +.Ic -depth , -follow , -xdev +のプライマリを 用いて実装されていました。 これらのプライマリは常に真に評価されていました。 これらのプライマリは 探索が始まる前に効果を与える本当のグローバル変数であったので、 いくつかの合法的な expression が予期しない結果となりました。 -一例として ``\-print \-o \-depth''の expression があります。 -\-print が常に真に評価されるため -標準の評価の順番では \-depth は決して評価されないはずですが、 +一例として +.Ic -print Cm -o Ic -depth +の expression があります。 +.Ic -print +が常に真に評価されるため +標準の評価の順番では +.Ic -depth +は決して評価されないはずですが、 そうではありませんでした。 .Pp -演算子の ``-or'' は ``\-o'' として実装されていました。 -演算子の ``-and'' は ``\-a'' として実装されていました。 +演算子の +.Cm -or +は +.Cm -o +として実装されていました。 +演算子の +.Cm -and +は +.Cm -a +として実装されていました。 .Pp 昔の実装では .Ic exec と -.Ic ok +.Ic -ok のプライマリでは、 -utility 名やその引数中において、 -空白以外の文字が前後に続く ``{}'' を置き換えませんでした。 -このバージョンでは utility 名やその引数のどの場所に ``{}'' が現れても +tility 名やその引数中において、 +空白以外の文字が前後に続く +.Dq Li {} +を置き換えませんでした。 +このバージョンでは utility 名やその引数のどの場所に +.Dq Li {} +が現れても 置き換えます。 .Pp .Fl E オプションは、 .Xr grep 1 および .Xr sed 1 の類推から実装されました。 .Sh バグ .Nm によって使われる特殊文字は多くのシェルにとっても 特殊文字です。 -特に ``*'', ``['', ``?'', ``('', ``)'', ``!'', ``\e'', ``;'' は、 +特に +.Dq Li * , +.Dq Li \&[ , +.Dq Li \&] , +.Dq Li \&? , +.Dq Li \&( , +.Dq Li \&) , +.Dq Li \&! , +.Dq Li \e , +.Dq Li \&; +は、 シェルからエスケープされなくてはならないでしょう。 .Pp オプションとファイル名との間および ファイル名と .Ar expression との間を区切るデリミタが存在しませんので、 -ファイル名にオプションと間違えるようなもの (``-xdev'' のようなもの) や、 +ファイル名にオプションと間違えるようなもの ( +.Pa -xdev +のようなもの) や、 .Ar expression -と間違えるようなもの (``!'' のようなもの) を指定することは難しいです。 +と間違えるようなもの ( +.Pa \&! +のようなもの) を指定することは難しいです。 このようなファイル名を指定する場合は .Fl f オプションを使うか、 .Xr getopt 3 -で使われるオプション指定の終了記号 ``--'' を使用します。 +で使われるオプション指定の終了記号 +.Dq Fl Fl +を使用します。 .Pp .Ic -delete プライマリは、ファイルシステムツリーの検索順序に影響する 他のオプションとは十分には連係しません。 .Sh 歴史 .Nm コマンドは .At v1 から登場しました。 diff --git a/ja_JP.eucJP/man/man1/ln.1 b/ja_JP.eucJP/man/man1/ln.1 index f0823566fd..0f5adeaa2e 100644 --- a/ja_JP.eucJP/man/man1/ln.1 +++ b/ja_JP.eucJP/man/man1/ln.1 @@ -1,179 +1,203 @@ .\" Copyright (c) 1980, 1990, 1993 .\" The Regents of the University of California. All rights reserved. .\" .\" This code is derived from software contributed to Berkeley by .\" the Institute of Electrical and Electronics Engineers, Inc. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" 3. All advertising materials mentioning features or use of this software .\" must display the following acknowledgement: .\" This product includes software developed by the University of .\" California, Berkeley and its contributors. .\" 4. Neither the name of the University nor the names of its contributors .\" may be used to endorse or promote products derived from this software .\" without specific prior written permission. .\" .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" .\" @(#)ln.1 8.2 (Berkeley) 12/30/93 -.\" %FreeBSD: src/bin/ln/ln.1,v 1.11.2.2 2000/12/08 13:34:35 ru Exp % -.\" $FreeBSD$ +.\" %FreeBSD: src/bin/ln/ln.1,v 1.11.2.3 2001/05/10 16:22:47 sobomax Exp % +.\" $FreeBSD: doc/ja_JP.eucJP/man/man1/ln.1,v 1.11 2001/05/14 01:07:25 horikawa Exp $ .\" .Dd December 30, 1993 .Dt LN 1 .Os BSD 4 .Sh 名称 .Nm ln , .Nm link .Nd リンクファイルの作成 .Sh 書式 .Nm -.Op Fl fisv +.Op Fl fhinsv .Ar source_file .Op target_file .Nm -.Op Fl fisv +.Op Fl fhinsv .Ar source_file ... .Op target_dir .Nm link .Ar source_file Ar target_file .Sh 解説 .Nm は新しいディレクトリエントリ (リンクファイル) を作成するユーティリティです。 リンクファイルのモードはオリジナルファイルと同じになります。 リンクファイルは .Dq ファイルの内容のコピー ではなく、 .Dq ファイルを指し示すポインタ であり、1 つのオリジナル ファイルを多くのディレクトリで取り扱えるようにするのに有効です。 リンクファイルには、ハードリンクとシンボリックリンクの 2 つの形式があり ます。違いは、リンクの方法です。 .Pp オプションとしては以下のものがあります。 .Bl -tag -width flag .It Fl f target_file が既に存在する場合、 リンクが成功するように、これをアンリンクします。 ( .Fl f オプションが指定されると、それ以前の .Fl i オプションは無視されます。) +.It Fl h +.Ar target_file +または +.Ar target_dir +がシンボリックリンクの場合、これを辿りません。 +これは、 +.Fl f +オプションと共に使用して、 +ディレクトリを指すかもしれないシンボリックリンクを置き換える場合に +最も有用です。 .It Fl i すでに target_file が存在する場合、 .Nm に標準エラー出力を使用して確認を求めさせます。 標準入力から .Sq Li y または .Sq Li Y で始まる文字列が入力されると、target_file が既に存在する場合、 リンクが成功するように、これをアンリンクします。 ( .Fl i オプションが指定されると、それ以前の .Fl f オプションは無視されます。) +.It Fl n +.Fl h +と同様ですが、他の +.Nm +の実装との互換性のためにあります。 .It Fl s シンボリックリンクを作成します。 .It Fl v .Nm を冗長にし、処理するファイルを表示します。 .El .Pp デフォルトでは、 .Nm は .Em ハードリンク を作成します。 ファイルへのハードリンクはオリジナルのディレクトリエントリと区別できません。 ファイルの参照に使われる名前にかかわらず、 そのファイルへのいかなる修正も同じように有効です。 通常、ハードリンクはディレクトリを指すことはできませんし、 ファイルシステムを拡張することもできません。 .Pp シンボリックリンクはリンク先ファイルの名前を保持します。 リンクに対して .Xr open 2 操作を行うと、その参照先ファイルが用いられます。 シンボリックリンクに対して .Xr stat 2 操作を行うと、参照先ファイルの情報を返します。 リンクそのものの情報を得るには .Xr lstat 2 を用いなければなりません。 .Xr readlink 2 呼び出しによってシンボリックリンクの内容を読むこともできます。 シンボリックリンクによってファイルシステムを拡張したり、 ディレクトリを参照したりすることが可能です。 .Pp 1 個あるいは 2 個の引数が与えられた場合、 .Nm は既存のファイル .Ar source_file に対するリンクを作成します。 .Ar target_file が指定された場合、リンクの名前はそれと同一になります。 .Ar target_file はリンクファイルを置くディレクトリであっても構いません。 それ以外の場合はリンクはカレントディレクトリに置かれます。 ディレクトリ名だけが指定された場合は、 .Ar source_file のパス名の最後のファイル名が指定されたものとみなします。 .Pp 2 個以上の引数が与えられた場合、 .Nm はディレクトリ .Ar target_file 内に指定された全てのファイルのリンクを作成します。作られるリンクの 名前は、リンクされるファイルの名前と同じになります。 .Pp 本ユーティリティを .Nm link として呼び出す場合、正確に 2 個の引数が必要であり、 どちらもディレクトリであってはなりません。 この単純モードでは、オプションは指定不可であり、渡された 2 個の引数を使用して .Xr link 2 の動作を行います。 .Pp .Sh 関連項目 .Xr link 2 , .Xr lstat 2 , .Xr readlink 2 , .Xr stat 2 , .Xr symlink 2 , .Xr symlink 7 .Sh 互換性 -.Fl i -と +.Fl h , +.Fl i , +.Fl n , .Fl v は標準ではありませんし、スクリプト中での使用はお勧めしません。 +他の +.Nm +実装との互換性のためだけに提供されています。 +.Sh 標準 +.Nm +ユーティリティは +.St -p1003.2-92 +に適合します。 単純化された .Nm link -は +コマンドは .St -susv2 -準拠です。 +に適合します。 .Sh 歴史 .Nm コマンドは .At v1 から登場しました。 diff --git a/ja_JP.eucJP/man/man1/netstat.1 b/ja_JP.eucJP/man/man1/netstat.1 index d80883347a..71ac779420 100644 --- a/ja_JP.eucJP/man/man1/netstat.1 +++ b/ja_JP.eucJP/man/man1/netstat.1 @@ -1,392 +1,390 @@ .\" Copyright (c) 1983, 1990, 1992, 1993 .\" The Regents of the University of California. All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" 3. All advertising materials mentioning features or use of this software .\" must display the following acknowledgement: .\" This product includes software developed by the University of .\" California, Berkeley and its contributors. .\" 4. Neither the name of the University nor the names of its contributors .\" may be used to endorse or promote products derived from this software .\" without specific prior written permission. .\" .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" .\" from: @(#)netstat.1 8.8 (Berkeley) 4/18/94 -.\" %FreeBSD: src/usr.bin/netstat/netstat.1,v 1.22.2.3 2001/03/22 13:48:42 des Exp % +.\" %FreeBSD: src/usr.bin/netstat/netstat.1,v 1.22.2.4 2001/05/10 08:26:46 ru Exp % .\" -.\" $FreeBSD$ +.\" $FreeBSD: doc/ja_JP.eucJP/man/man1/netstat.1,v 1.13 2001/05/14 01:07:26 horikawa Exp $ .\" .Dd April 18, 1994 .Dt NETSTAT 1 .Os BSD 4.2 .Sh 名称 .Nm netstat .Nd ネットワークの状態を表示する .Sh 書式 .Nm .Op Fl AaLlnW .Op Fl f Ar address_family .Op Fl M Ar core .Op Fl N Ar system .Nm .Op Fl bdghilmnrs .Op Fl f Ar address_family .Op Fl M Ar core .Op Fl N Ar system .Nm .Op Fl bdn .Op Fl I Ar interface .Op Fl M Ar core .Op Fl N Ar system .Op Fl w Ar wait .Nm .Op Fl p Ar protocol .Op Fl M Ar core .Op Fl N Ar system .Nm .Op Fl p Ar protocol .Op Fl i .Op Fl I Ar Interface .Nm .Op Fl s .Op Fl f Ar address_family .Op Fl i .Op Fl I Ar Interface .Sh 解説 .Nm コマンドは、ネットワークに関連したさまざまな情報を、シンボル表示を 交えてわかりやすく表示します。 出力の形式は指定オプションによって何種類かにわかれます。 第 1 の形式は、プロトコルごとのアクティブソケットの一覧です。 第 2 の形式は、選択したオプションによる、他のネットワークのデータ構造です。 第 3 の形式は、コンフィギュレーションされているネットワークインタフェースの パケットトラフィックを .Ar wait で指定したインターバル毎に継続して表示します。 第 4 の形式は、指定したプロトコルに関する統計情報を表示します。 第 5 と第 6 の形式は、指定したプロトコルまたはアドレスファミリに関し、 インタフェース毎の統計情報を表示します。 .Pp 本コマンドでは、以下のオプションを指定可能です。 .Bl -tag -width flag .It Fl A デフォルトの表示では、ソケットと関係したすべてのプロトコル制御ブロックの アドレスが表示されます。通常これらはデバッグに用いられます。 .It Fl a デフォルトの表示では、すべてのソケットの状態が表示されます。通常 は、サーバプロセスで利用されているソケットは表示されません。 ルーティングテーブル表示時には (後述のオプション .Fl r ) -複製された経路 (親経路に -.Dv RTF_CLONING -または +プロトコル複製された経路 (親経路を .Dv RTF_PRCLONING -のフラグを設定することによって生成された経路) +することによって生成された経路) を表示します。 通常これらの経路は表示されません。 .It Fl b 本オプションをネットワークインタフェース表示 (後述の .Fl i オプション) と併用した場合には、入力、出力したバイト数を表示します。 .It Fl d 本オプションをネットワークインタフェース表示 ( .Fl i オプション、もしくは後述のインターバルオプション) と併用した場合には、欠落したパケット数を併せて表示します。 .It Fl f Ar address_family 表示する統計情報あるいはアドレス制御ブロック情報を .Ar address family の指定に合致するアドレスファミリのものに限定します。 アドレスファミリについては、 .Ar inet が .Dv AF_INET (インターネットプロトコルファミリ) として、 .Ar inet6 が .Dv AF_INET6 として、 .Ar ipx が .Dv AF_IPX として、 .Ar atalk が .Dv AF_APPLETALK (ddp) (アップルトークプロトコル) として、 .Ar netgraph または .Ar ng が .Dv AF_NETGRAPH として、 .\".Ar ns .\"が .\".Dv AF_NS .\"(XEROX NS プロトコルファミリ) として、 .\".Ar iso .\"が .\".Dv AF_ISO .\"(ISO プロトコルファミリ) として、そして .Ar unix が .Dv AF_UNIX (UNIX ドメインプロトコルファミリ) として解釈されます。 .It Fl g マルチキャスト (グループアドレス) ルーティングに関連した情報を表示します。 デフォルトでは、IPマルチキャスト仮想インタフェースおよびルーティング テーブルについて表示します。 .Fl s オプションが同時に指定された場合、マルチキャストルーティングについての 統計情報も表示します。 .It Fl h .Tn IMP ホストテーブルの状態を表示します (時代遅れ)。 .It Fl I Ar interface 指定したインタフェースについての情報を表示します。本オプションは、 インターバルオプション .Ar wait と同時に指定し て使われます。このインターバルオプションについての詳細は後述します。 .Fl f Ar address_family オプションが ( .Fl s オプションと共に) 使用された場合か、 .Fl p Ar protocol が指定された場合、 .Ar interface に関するインタフェース毎の統計情報を、指定した .Ar address_family または .Ar protocol, に対し、それぞれ表示します。 .It Fl i 自動コンフィギュレーションされているネットワークインタフェースの状態 を表示します (静的にシステムにコンフィギュレーションされている インタフェースについて表示しますが、ブート時にコンフィギュレーションされて いないものについては表示しません)。 .Fl a オプションが同時に指定されている場合には、各イーサネットインタフェース および各 IP インタフェースアドレス について、現在使用されているマルチキャストアドレスが表示 されます。マルチキャストアドレスは、 各々対応するインタフェースアドレスに続いて表示 されます。 .Fl f Ar address_family オプションが ( .Fl s オプションと共に) 使用された場合か、 .Fl p Ar protocol が指定された場合、全インタフェース に関するインタフェース毎の統計情報を、指定した .Ar address_family または .Ar protocol, に対し、それぞれ表示します。 .It Fl L 様々な listen 待ち行列の大きさを表示します。 1 番目の数は、受け付けられなかった接続数です。 2 番目の数は、受け付けられなかった不完全な接続数の合計です。 3 番目の数は、待ち行列に繋がれた接続の最大数です。 .It Fl l 完全な IPv6 アドレスを表示します。 .It Fl M デフォルトで使用される .Pa /dev/kmem の代わりに指定した core から、ネームリストに関連する各値を 取り出します。 .It Fl m メモリ管理ルーチンによって記録されているメモリ使用の統計情報を表 示します。 (ネットワーク管理システムは、独自にメモリバッファを確保しています)。 .It Fl N .Pa /kernel のかわりに、指定したカーネルモジュールからネームリストを取り出します。 .It Fl n ネットワークアドレスを数字で表示します (通常、 .Nm コマンドは、IPアドレスを可能な限りホスト名などのシンボリックなものに置 き換えようとします)。 本オプションは、どのような表示形式の場合にも使用できます。 .It Fl p Ar protocol .Ar protocol で指定したプロトコルについての統計情報を表示します。 プロトコルとしては、よく知られている名称、もしくは別名定義されている名称 を指定します。プロトコルのいくつかは .Pa /etc/protocols の中で定義されています。 特別なプロトコル名 .Dq bdg は、ブリッジの状態を表示するために使用します。 プロトコルについて情報が表示されない場合は、通常、 報告すべき有意な数値がないことを意味します。 .Ar protocol で指定したプロトコルが未知のものである場合、もしくはそのプロトコルの統 計情報記録ルーチンがない場合には、プログラムはその旨メッセージを出しま す。 .It Fl s プロトコルごとの統計情報を表示します。 このオプションが複数指定された場合、カウンタの値が 0 のものは 表示が抑制されます。 .It Fl r ルーティングテーブルを表示します。 -複製された経路を表示するには、 +プロトコル複製された経路を表示するには、 .Fl a を使用してください。 .Fl s オプションが同時に指定された場合には、ルーティングの統計情報について 表示します。 .Fl l も指定されると、 .Nm はより多くの桁数があると仮定します。 .It Fl W 表示において、欄が溢れる場合でも、アドレスを縮めません。 .It Fl w Ar wait ネットワークインタフェースの統計情報について、 .Ar wait で指定した秒ごとに定期的に表示します。 .El .Pp デフォルトのアクティブソケット表示では、ローカルおよびリモートアドレス、 送受信キューのサイズ(バイト単位)、プロトコル、そしてプロトコルの内部状態が それぞれ表示されます。 アドレス形式については、 .Dq host.port もしくは、ソケットのアドレスが ネットワーク単位でしか特定できない場合には .Dq network.port という形式が採用されます。 ホストもしくはネットワークアドレスがデータベース .Pa /etc/hosts や .Pa /etc/networks の内容にしたがって変換可能である場合、各アドレスは名前で 表示されます。このような変換が不可能な場合、もしくは .Fl n オプションが指定された場合には、アドレスはアドレスファミリに従って 数値で表示されます。 インターネットアドレスの .Dq ドット形式 についてさらに知りたい場合には、 .Xr inet 3 を参照して下さい。 特にアドレスが指定されてない場合や、アドレスが .Dq ワイルドカード 指定されている場合には、その部分のアドレスやポート番号のところには .Dq * が表示されます。 .Pp インタフェース表示では、パケット転送、エラー、コリジョンに関する 累積情報を見ることができます。また、インタフェースの ネットワークアドレスおよび最大転送可能ユニットサイズ .Pq Dq mtu も見ることができます。 .Pp ルーティングテーブル表示では、利用可能な経路とその状態が表示 されます。各経路は、到達先ホストもしくはネットワークと、 パケットの転送 (forward) に使用されるゲートウェイから成ります。 フラグフィールドは、 ルーティングに関する状態の集合が表示されます。フラグフィールドの 各フラグについては、 .Xr route 8 および .Xr route 4 を参照して下さい。 表示される文字とフラグの間の対応は以下の通りです。 .Bl -column XXXX RTF_BLACKHOLE 1 RTF_PROTO1 ルーティングフラグ #1 にて特定されるプロトコル 2 RTF_PROTO2 ルーティングフラグ #2 にて特定されるプロトコル 3 RTF_PROTO3 ルーティングフラグ #3 にて特定されるプロトコル B RTF_BLACKHOLE 破棄されるパケット b RTF_BROADCAST ブロードキャストアドレスを表現する経路 C RTF_CLONING 新しい経路を生成する c RTF_PRCLONING 使用時に、プロトコル専用の新しい経路を生成する D RTF_DYNAMIC (リダイレクトによって) 動的に生成される G RTF_GATEWAY ゲートウェイ等による中継を必要としている到達先 H RTF_HOST ホストエントリ (これ以外はネットワーク) L RTF_LLINFO アドレス変換を連動させられる正当なアドレス M RTF_MODIFIED (リダイレクトによって) 動的に変更される R RTF_REJECT 到達不可能なホストもしくはネットワーク S RTF_STATIC 手動で追加された U RTF_UP 使用可能経路 W RTF_WASCLONED クローンした結果として作成された経路 X RTF_XRESOLVE 外部の daemon がプロトコルからリンクアドレス変換を行なう .El .Pp 直接到達可能な経路は、ローカルホストにアタッチされた各インタフェースごとに 生成されます。このようなエントリのゲートウェイフィールドは、 対外インタフェースのアドレスを表します。 refcnt フィールドは、使用されている経路の現在数を示します。 コネクション指向のプロトコルは、通常、コネクションの間じゅう 単一の経路を保持します。 他方で、コネクションレス型のプロトコルは、同じ到達先に対して パケットを送る場合にも、新たに経路を確保します。 use フィールドは、その経路を通って送られたパケット数を表示します。 インタフェースエントリは、その経路用に用いられる ネットワークインタフェースを表示します。 .Pp .Nm が .Fl w オプションと .Ar wait インターバル引数を与えられて起動された場合、ネットワークインタフェースに 関連した統計情報を定期的に表示します。 ほとんど使われませんが、オプション指定なしで数字だけを netstat の引数と して指定することもでき、本オプションと同様の動作をさせることができます。 しかし、この使い方は過去との互換性のためにのみ存在します。 デフォルトでは、本表示は すべてのインタフェースについてのサマリ情報からなります。 .Fl I オプションを用いることで、特定の インタフェースの情報を表示させることが可能です。 .Sh 関連項目 .Xr fstat 1 , .Xr nfsstat 1 , .Xr sockstat 1 , .Xr ps 1 , .Xr inet 4 , .Xr unix 4 , .Xr hosts 5 , .Xr networks 5 , .Xr protocols 5 , .Xr services 5 , .Xr iostat 8 , .Xr trpt 8 , .Xr vmstat 8 .Sh 歴史 .Nm コマンドは、 .Bx 4.2 にはじめて登場しました。 .Pp IPv6 サポートは WIDE/KAME プロジェクトが追加しました。 .Sh 関連ファイル .Bl -tag -width /dev/kmem -compact .It Pa /kernel デフォルトのカーネルの名前リスト .It Pa /dev/kmem デフォルトのメモリファイル .El .Sh バグ エラーの概念については、定義が間違っています。 diff --git a/ja_JP.eucJP/man/man1/pkg_info.1 b/ja_JP.eucJP/man/man1/pkg_info.1 index c643f114bf..3f92696687 100644 --- a/ja_JP.eucJP/man/man1/pkg_info.1 +++ b/ja_JP.eucJP/man/man1/pkg_info.1 @@ -1,213 +1,223 @@ .\" .\" FreeBSD install - a package for the installation and maintenance .\" of non-core utilities. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" .\" Jordan K. Hubbard .\" .\" .\" @(#)pkg_info.1 -.\" %FreeBSD: src/usr.sbin/pkg_install/info/pkg_info.1,v 1.24.2.8 2001/02/20 23:32:49 jkh Exp % +.\" %FreeBSD: src/usr.sbin/pkg_install/info/pkg_info.1,v 1.24.2.9 2001/05/17 12:33:38 sobomax Exp % .\" -.\" $FreeBSD$ +.\" $FreeBSD: doc/ja_JP.eucJP/man/man1/pkg_info.1,v 1.18 2001/05/14 01:07:27 horikawa Exp $ .\" .Dd November 25, 1994 .Dt pkg_info 1 .Os FreeBSD .Sh 名称 .Nm pkg_info .Nd ソフトウェア配布 package の情報を表示するプログラム .Sh 書式 .Nm .Op Fl cdDfgGiIkLmopqrRsvx .Op Fl e Ar package .Op Fl l Ar prefix .Op Fl t Ar template +.Op Fl W Ar filename .Op Ar pkg-name ... .Nm .Fl a .Op Ar flags .Sh 解説 .Nm コマンドは、 .Xr pkg_create 1 によりファイルにパックされた package (訳注: FreeBSD の package system におけるパッケージを指す場合にこう表記します) か、 .Xr pkg_add 1 によりすでにシステムにインストールされた package に関し、 情報を表示するために用いられます。 .Sh オプション 以下のコマンドラインオプションが提供されています。 .Bl -tag -width indent .It Ar pkg-name ... 指定された package が表示されます。指定されるのはイントール済みの package の名前か、package 配布ファイルへのパス、FTP 可能な package への URL のいずれかになります。 .It Fl a 現在インストールされているすべての package を表示します。 .It Fl v 饒舌な出力に切り替えます。 .It Fl p 各 package のインストール用 prefix を表示します。 .It Fl q レポートヘッダのような情報を出力する際に余分な出力を .Dq 省略 し、 生の情報のみ出力します (基本的に人が読みやすいものではありません)。 .It Fl c 各 package の (一行) コメントフィールドを表示します。 .It Fl d 各 package の長い説明フィールドを表示します。 .It Fl D 各 package のインストールメッセージファイルを表示します。 .It Fl f 各 package の packing list instructions を表示します。 .It Fl g 記録されたチェックサムに合致しないファイルを表示します。 .It Fl i もしあれば、各 package のインストールスクリプトを表示します。 .It Fl I 各 package のインデックス行を表示します。このオプションは他の package 書式整形オプションの全てに優先します。 .It Fl k もしあれば、各 package のアンインストールスクリプト を表示します。 .It Fl r もしあれば、各 package の requirements スクリプトを表示します。 .It Fl R (指定した) 各 package を必要とする package のうちで、インストールされて いるもののリストを表示します。 .It Fl m もしあれば、各 package の mtree ファイルを表示します。 .It Fl L 各 package に含まれるファイルを表示します。 これは packing list をただ見るのとは異なり、 生成されるすべてのフルパス名が表示されます。 .It Fl s 各 package 中のインストールされたファイルの総容量を表示します。 .It Fl o package 生成時に記録された .Dq 起源 パスを表示します。 このパスは、 生成された package から、 .Fx .Em "Ports Collection" における元の port の場所を与えることを意図しています。 .It Fl G 表示する package 選択時に、 .Ar pkg-name 中のシェルグロブパターン展開しません (デフォルトでは .Nm は、 .Ar pkg-name 中のシェルグロブパターンを展開します)。 +.It Fl W +指定した +.Ar filename +引数に対して、これが属する package を表示します。 +ファイルが現在のディレクトリに無い場合で、絶対パス指定でない場合、 +.Xr which 1 +を使用して +.Ev PATH +が検索されます .It Fl x .Ar pkg-name を正規表現として扱い、 名前が正規表現に適合する package の情報のみを表示します。 複数の正規表現を指定可能です。 この場合、リスト少なくともひとつの正規表現に適合する package を .Nm は表示します。 .It Fl e Ar pkg-name .Ar pkg-name で示される package が現在インストールされている場合には 0 を 返し、そうでなければ 1 を返します。 このオプションにより、スクリプトから (おそらく必要不可欠な) 他の package の存在を簡単に確認することが可能になります。 .It Fl l Ar str 各 information category header ( .Fl q を参照) の前に .Ar str を付加します。 これは本来、package に関する多くの information fields を一度に 得たいが、そのごっちゃになった出力で混乱したくない、という フロントエンドプログラムのためにあります。 このオプションで各 field の先頭に特別な文字列を付け加えることが できます。 .It Fl t Ar template .Dq 作業場所 を作成する際に、 .Xr mktemp 3 への入力として .Ar template を用います。 これはデフォルトでは .Pa /tmp/instmp.XXXXXX という文字列ですが、 .Pa /tmp ディレクトリの容量が制限されているような状況では 変更する必要があるかもしれません。 .Xr mktemp 3 が一意の ID を用いるために必要な `X' の文字をいくつか残しておく ことを忘れないでください。 .Bd -ragged -offset indent -compact 注: .Nm は各 package からとても小さな情報しか 抽出しないので、実際にはこのオプションは必要ありません。 溢れさせるには非常に小さな .Pa /tmp でなければならないでしょう。 .Ed .El .Sh 技術詳細 package の情報は、コマンドラインから指定された package のファイル名か、 .Pa /var/db/pkg/ Ns Aq Ar pkg-name にあるすでにインストールされた package の情報から抽出されます。 .Sh 環境変数 .Ev PKG_TMPDIR で、 .Nm が作業用ファイルを生成するディレクトリを指定します。 この変数が設定されていない場合、 .Ev TMPDIR が用いられます。両方とも設定されていない場合、 組み込みのデフォルトディレクトリが用いられます。 .Pp .Ev PKG_DBDIR で、 インストールされた package についての代替的なデータベースの位置を指定します。 .Sh ファイル .Bl -tag -width /var/db/pkg -compact .It Pa /var/tmp 環境変数 .Ev PKG_TMPDIR , .Ev TMPDIR がともに設定されていない場合、もしくはこれらのディレクトリの空き領域が 十分でない場合に用いられます。 .It Pa /tmp .Pa /var/tmp が存在しないか、十分な空き領域を持たない場合に、次の選択肢として 用いられます。 .It Pa /usr/tmp .Pa /tmp が適切でない場合の最後の選択肢です。 .It Pa /var/db/pkg インストールされた package についてのデータベースのデフォルトの 位置です。 .El .Sh 関連項目 .Xr pkg_add 1 , .Xr pkg_create 1 , .Xr pkg_delete 1 , .Xr pkg_version 1 , .Xr mktemp 3 , .Xr mtree 8 .Sh 作者 .An Jordan Hubbard .Sh 協力者 .An John Kohl Aq jtk@rational.com .Sh バグ まだあるはずです。 diff --git a/ja_JP.eucJP/man/man1/sh.1 b/ja_JP.eucJP/man/man1/sh.1 index 736102d877..14576ca74d 100644 --- a/ja_JP.eucJP/man/man1/sh.1 +++ b/ja_JP.eucJP/man/man1/sh.1 @@ -1,1825 +1,1828 @@ .\" Copyright (c) 1991, 1993 .\" The Regents of the University of California. All rights reserved. .\" .\" This code is derived from software contributed to Berkeley by .\" Kenneth Almquist. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" 3. All advertising materials mentioning features or use of this software .\" must display the following acknowledgement: .\" This product includes software developed by the University of .\" California, Berkeley and its contributors. .\" 4. Neither the name of the University nor the names of its contributors .\" may be used to endorse or promote products derived from this software .\" without specific prior written permission. .\" .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" .\" from: @(#)sh.1 8.6 (Berkeley) 5/4/95 -.\" %FreeBSD: src/bin/sh/sh.1,v 1.39.2.8 2001/03/05 17:57:31 ru Exp % +.\" %FreeBSD: src/bin/sh/sh.1,v 1.39.2.9 2001/05/16 02:04:50 dd Exp % .\" -.\" $FreeBSD$ +.\" $FreeBSD: doc/ja_JP.eucJP/man/man1/sh.1,v 1.27 2001/05/14 01:07:28 horikawa Exp $ .\" Japanese Translation amended by Norihiro Kumagai, 3/29/96, .\" based on the version of NetBSD Japanese Man Project .\" This amended version is for the FreeBSD-jpman Project, convened .\" by Kazuo Horikawa. .\" .Dd May 5, 1995 .Dt SH 1 .Os BSD 4 .Sh 名称 .Nm sh .Nd コマンドインタプリタ (シェル) .Sh 書式 .Nm .Op Fl /+abCEefIimnpsTuVvx .Op Fl /+o Ar longname .Op Fl c Ar string .Op Ar arg ...\& .Sh 解説 .Nm ユーティリティ はシステムの標準コマンドインタプリタです。 現在 .Nm は .St -p1003.2 のシェル規約に対応する途上にあります。 本バージョンのシェルは、見方によっては Korn shell と同様に 見える機能を多数持っていますが、 .Xr pdksh 1 のような Korn shell クローンではありません。 このシェルには、POSIX で規定された仕様といくつかの Berkeley 拡張のみが 取り入れられています。 本マニュアルは、shell のチュートリアルでは ありませんし、仕様を完全に記述するものでもありません。 .Ss 概要 シェルは、ファイルまたは端末から 1 行ずつ読み込み、それを解釈し、 コマンドを実行します。シェルはユーザがシステムにログインしたときに起動 されるプログラムです (ただし、ユーザは .Xr chsh 1 コマンドによって他のシェルを選択することもできます)。 シェルは、制御構文を持つ言語であり、 データ記憶をはじめとして多様な機能を提供するマクロ機能、 ヒストリ、行編集機能も内蔵しています。 このシェルは対話的に使うときに便利な機能を多くとり入れており、 対話的に用いるときも非対話的に (シェルスクリプトとして) 用いるときも、 共通のインタプリタ言語を用いることができる利点があります。 すなわち、コマンド名をシェルに直接タイプする ことも、コマンド名をファイルに書いておいてそのファイルをシェルに 直接実行させることもできます。 .Ss 起動 .\" .\" XXX This next sentence is incredibly confusing. .\" 引数が与えられず、かつシェルの標準入力が端末の場合 (または .Fl i フラグが指定 された場合)、シェルは対話的に動作します。対話的シェルは、通常、コマンド 入力時にプロンプトを表示し、文法的なエラーとコマンドエラーを 異なった方法で処理します (後述します)。 起動時に、シェルは 0 番目の引数を検査します。もしそれが マイナス記号 .Pq Li - で始まっているなら、シェルはログインシェルとして 動作します。ユーザがシステムにログインした場合は自動的にこの状況に なります。ログインシェルは、まず (以下の各ファイルが存在する場合)、 .Pa /etc/profile と次に .Pa .profile ファイルからコマンドを読み込みます。 シェル起動時に、もしくはログインシェルで .Pa .profile を実行中に環境変数 .Ev ENV が設定されているなら、シェルは、その次に環境変数 .Ev ENV で示されたファイルからコマンドを読み込みます。 つまり、ユーザはログイン時にのみ実行したいコマンドを .Pa .profile に書き、シェルが起動されるたびに実行したいコマンドを環境変数 .Ev ENV で示すファイルに書くことになります。 環境変数 .Ev ENV を設定するには、ホームディレクトリ下のファイル .Pa .profile に以下のように記述します。 ここで .Pa .shinit のかわりに好きな名前を指定することができます。 .Pp .Dl ENV=$HOME/.shinit; export ENV .Pp コマンドライン引数で指定されたオプション以外の最初のものを、シェルは コマンドを読み込むべきファイル (シェルスクリプト) の名前であると解釈し、 それ以後の引数はシェルの位置パラメータ ($1, $2, ...) に設定します。 それ以外の場合、シェルはコマンドを標準入力から読み込みます。 .Pp 古いバージョンの .Nm とは異なり、環境変数 .Ev ENV で指定したスクリプトが実行されるのは、対話的シェルの呼び出し時のみです。 これにより、いい加減に書かれた .Ev ENV スクリプトに起因する、簡単に食いものにされることが多い有名な セキュリティホールがふさがれたことになります。 .Ss 引数リスト処理 .Nm の 1 文字からなるオプションはそれぞれ対応する長い名前を持っています。 ただし .Fl c と .Fl /+o は例外です。 次の解説では、長い名前は単一文字オプションの後で説明します。 あるオプションの長い名前は、 .Xr sh 1 の .Fl /+o オプションへの引数として指定可能です。 シェルが起動されると、 オプションの長い名前を .Ic set 組み込みコマンド (後述の .Sx 組み込みコマンド で説明) の .Fl /+o オプションへの引数として指定可能です。 マイナス記号 .Pq Li - でオプションを指定することは、そのオプションを有効にすることを意味し、 プラス記号 .Pq Li + でオプションを指定することは、そのオプションを無効にすることを意味します。 .Dq Li -- または、単なる .Dq Li - はオプション処理を終了させ、 コマンドラインの残りの語を引数として解釈することを強制します。 .Fl /+o と .Fl c のオプションは長い名前を持ちません。 .Bl -tag -width Ds .It Fl a Li allexport 値が代入されたときに変数をエクスポートするよう、変数にフラグを付けます。 .It Fl b Li notify バックグラウンドジョブ実行の完了を、コマンドが実行中でも即座に報告しま す (未実装です)。 .It Fl C Li noclobber すでに存在するファイルに対して .Dq Li > リダイレクトにより上書きしません (未実装です)。 .It Fl E Li emacs 組み込みの .Xr emacs 1 風のコマンド行編集機能を有効にします (それ以前に .Fl V オプションが指定された場合、それを無効にします)。 .It Fl e Li errexit 非対話モードで、テスト状態にないコマンドの実行に失敗した場合、 直ちにシェルを終了します。 コマンドは、if, elif, while, until 構文を 制御するのに用いられている場合に、テスト状態であるとみなされます。 また、 .Dq Li && や .Dq Li || の左辺値として用いられているコマンドも、テスト状態とみなされます。 .It Fl f Li noglob パス名展開を行ないません。 .It Fl I Li ignoreeof 対話的シェルの場合、入力の .Dv EOF を無視します。 .It Fl i Li interactive シェルが対話的に動作するように強制します。 .It Fl m Li monitor ジョブ制御を可能にします (対話的シェルの場合は自動的に設定されます)。 .It Fl n Li noexec 非対話的シェルの場合、コマンドを読み込みますが、そのコマンドの実行は しません。シェルスクリプトの文法を検査する場合に便利です。 .It Fl p Li privileged 特権モードを有効にします。 起動時に実効ユーザ ID あるいは実効グループ ID が、実ユーザ ID や実グルー プ ID と一致していなければ、このモードが有効になります。このモードを無 効化すると、実効ユーザ ID および実効グループ ID は、実ユーザ ID および 実グループ ID に設定されます。 対話的シェルでこのモードが有効になっていると、 .Pa /etc/profile の後で .Pa ~/.profile に代わり、 .Pa /etc/suid_profile を読み込みます。一方、環境変数 .Ev ENV の内容は無視されます。 .It Fl s Li stdin コマンドを標準入力から読み込みます (引数でファイル名が指定されていない 場合には、このオプションが自動的に設定されます)。 シェルが実行されてから本オプションを ( .Ic set などによって) 設定しても効果はありません。 .It Fl T Li asynctraps 子を待つとき、即座にトラップを実行します。 本オプションが設定されていないと、 .St -p1003.2 で指定されているように、子が終了した後にトラップが実行されます。 この非標準オプションは、 シグナルをブロックする子の周囲に保護シェルを置くために有用です。 周囲のシェルは子を殺したり、 次のように、制御を tty に戻して子だけを残したりできます: .Bd -literal -offset indent sh -T -c "trap 'exit 1' 2 ; some-blocking-program" .Ed .Pp .It Fl u Li nounset 値が設定されていない変数を展開しようとした場合、 標準エラー出力にエラーメッセージを出力し、 さらに非対話的シェルならば、ただちにシェルを終了します (未実装です)。 .It Fl V Li vi 組み込みの .Xr vi 1 風の行編集機能を有効にします (それ以前に .Fl E オプションが指定されていた場合、それは無効になります)。 .It Fl v Li verbose 入力を読み込むごとに標準エラー出力に書き出します。デバッグのときに便利です。 .It Fl x Li xtrace 各コマンドを実行する前に、そのコマンドを標準エラー出力に (各コマンドの 前に .Dq Li + \ を付加して) 書き出します。デバッグのときに便利です。 .El .Pp .Fl c オプションは、シェルの入力として解釈させる文字列引数を渡すために使用可能です。 このオプションは引数として文字列を一つだけ受け取ることに注意して下さい。 ですから、複数の単語からなる文字列は引用符で囲う必要があります。 .Pp .Fl /+o オプションは、オプションの長い名前のみを引数としてとり、 オプションの有効化と無効化を行います。 例えば、次の 2 つの .Nm 起動方法では組み込みの .Xr emacs 1 コマンドラインエディタを有効化します: .Bd -literal -offset indent set -E set -o emacs .Ed .Ss 構文構造 シェルは、ファイルを行単位で読み込み、空白文字 (ブランクおよびタブ) や シェルにとって特別な意味を持つ特定の文字列 ( .Dq 演算子 と呼ばれるものです) を区切りとして、複数の単語に分割します。演算子には、制御演算子とリ ダイレクト演算子の 2 種類があります (これらの意味については後述します)。 以下に、それらの一覧を示します。 .Bl -tag -width Ds .It No 制御演算子: .Bl -column "XXX" "XXX" "XXX" "XXX" "XXX" -offset center -compact .It Xo .Li & Ta Xo .Li && Ta Xo .Li ( Ta Xo .Li ) Ta Xo .Li \en .Xc Xc Xc Xc Xc .It Xo .Li ;; Ta Xo .Li ; Ta Xo .Li | Ta Xo .Li || .Xc Xc Xc Xc .El .It No リダイレクト演算子: .Bl -column "XXX" "XXX" "XXX" "XXX" "XXX" -offset center -compact .It Xo .Li < Ta Xo .Li > Ta Xo .Li << Ta Xo .Li >> Ta Xo .Li <> .Xc Xc Xc Xc Xc .It Xo .Li <& Ta Xo .Li >& Ta Xo .Li <<- Ta Xo .Li >| .Xc Xc Xc Xc .El .El .Ss 引用 (クォート) 引用は、特殊な意味を持つ文字や単語 (演算子、空白、キーワードなど) の意味 を打ち消すために用います。引用には、シングルクォート文字のペアを使う方法、 ダブルクォート文字のペアを使う方法、バックスラッシュ文字を使う方法 の 3 種類があります。 .Bl -tag -width Ds .It シングルクォート文字 シングルクォートのペアで囲まれた文字は、すべてその文字そのまま (リテラル) として扱われます (ただしシングルクォートは別です。シングルクォート で囲った文字列の中にシングルクォートを含めることはできません)。 .It ダブルクォート文字 ダブルクォートのペアで囲まれた文字は、ドル記号文字 .Pq Li $ 、バッククォート文字 .Pq Li ` 、バックスラッシュ文字 .Po Li \e\" .Pc を除き、すべてリテラルとして扱われます。 ダブルクォート文字による引用の中にあるバックスラッシュ文字は、歴史 的経緯によりすこし変わった扱いを受けます。 次の文字の前にある場合はクォートになりますが、 それ以外ではリテラルのままとなります: .Bl -column "XXX" "XXX" "XXX" "XXX" "XXX" -offset center -compact .It Xo .Li $ Ta Xo .Li ` Ta Xo .Li \&" Ta Xo .Li \e\ Ta Xo .Li \en .Xc Xc Xc Xc Xc .El .It バックスラッシュ バックスラッシュは、その後ろの 1 文字を、リテラルとして扱うように指示 します。ただし改行文字 .Pq Li \en は別です。改行文字の直前のバックスラッシュは、行 の継続であるとみなされます。 .El .Ss 予約語 予約語はシェルにとって特別な意味を持つ単語で、行の先頭または制御演算子 の直後でのみ予約語として認識されます。以下に予約語の一覧を挙げます。 .Bl -column "doneXX" "elifXX" "elseXX" "untilXX" "whileX" -offset center .It Xo .Li \&! Ta Xo .Li { Ta Xo .Li } Ta Xo .Ic case Ta Xo .Ic do .Xc Xc Xc Xc Xc .It Xo .Ic done Ta Xo .Ic elif Ta Xo .Ic else Ta Xo .Ic esac Ta Xo .Ic fi .Xc Xc Xc Xc Xc .It Xo .Ic for Ta Xo .Ic if Ta Xo .Ic then Ta Xo .Ic until Ta Xo .Ic while .Xc Xc Xc Xc Xc .El .Ss エイリアス エイリアスは、名前とそれと対応する値が対になったもので、 組み込みコマンド .Ic alias によって定義されます。 シェルは、予約語が現れる可能性がある場所 (上記を参照) で、 ある単語に対して、それが予約語かどうかの検査を済ませたのち、 それがエイリアスに一致するかどうかを検査します。 もし一致したならば、入力行の中で、その単語をエイリアスの値に置き換えます。 たとえば、 .Dq Li lf という名前で .Dq Li ls -F という値を持つエイリアスが 存在したとすると、次の入力行 .Bd -literal -offset indent lf foobar .Ed .Pp は、以下のように置換されます。 .Bd -literal -offset indent ls -F foobar .Ed .Pp エイリアスは、初心者に対し、引数付きの関数を生成する面倒を求めることなく、 短いコマンドをつくり出す便利な方法を提供するものです。 しかし、構文的にあいまいなコードを作り出すことにもつながりかねません。 そのような使い方はお勧めできません。 .Ss コマンド シェルは、読み込んだ単語を、文法に従って解釈します。 本マニュアルでは文法については解説しません。 .St -p1003.2 の BNF 表記を参照してください。要するに、行を1行を読み込み、読み込んだ 行の最初の単語 (制御演算子がある場合は、そのあとの最初の単語) が予約語 でない場合、シェルはその行を単純コマンドとして解釈します。それ以外の場 合、複合コマンドあるいは特殊構造であると解釈します。 .Ss 単純コマンド 単純コマンドを解釈する場合、シェルは以下のような動作をします。 .Bl -enum .It 単語の前にある .Dq Li name=value の形式の単語を取り除き、 単純コマンドの環境に代入します。 リダイレクト演算子とその引数 (後述) を取り除き、 あとで処理できるように保存します。 .It 残った単語を、 .Sx 単語展開 の節で説明する方法で展開します。 展開後の最初の単語をコマンド名とみなし、コマンドの位置を探索します。 残りの単語はコマンドへの引数とみなされます。 処理の結果、コマンド名が残らなかった場合、手順 1) で 取り出した .Dq Li name=value の変数代入を、現在のシェルの環境に反映します。 .It 次節で説明する方法で、リダイレクトを行ないます。 .El .Ss リダイレクト リダイレクトは、コマンドがどこから入力するか、どこへ出力するかを 変更するときに用います。 一般には、リダイレクトでは、ファイルのオープン、クローズ、または ファイルへの参照の複製 (duplicate) を行います。 リダイレクトで用いられる全般的な形式は、以下のとおりです。 .Pp .Dl [n] redir-op file .Pp ここで、 .Ql redir-op は前述したリダイレクト演算子のいずれかです。 これらの演算子をどのように利用するかの例をいくつか以下に挙げます。 .Bl -tag -width "1234567890XX" -offset indent .It Li [n]> file 標準出力 (またはファイル記述子 n) を file にリダイレクトします .It Li [n]>| file 上と同様。ただし .Fl C オプションの効果を打ち消します。 .It Li [n]>> file 標準出力 (またはファイル記述子 n) を file に追加します。 .It Li [n]< file 標準入力 (またはファイル記述子 n) を file からリダイレクトします。 .It Li [n]<> file 標準入力 (またはファイル記述子 n) を file から/へ、リダイレクトします。 .It Li [n1]<&n2 ファイル記述子 n2 を標準入力 (またはファイル記述子 n1) に複製します。 .It Li [n]<&- 標準入力 (またはファイル記述子 n) をクローズします。 .It Li [n1]>&n2 標準出力 (またはファイル記述子 n1) をファイル記述子 n2 に複製します。 (訳注: 通常は「ファイル記述子 n2 を標準出力 (またはファイル記述子 n1) に 複製」と表現します。 結果は、標準出力 (または n1 への出力) の n2 へのリダイレクトです。) .\" [man-jp 1544], [man-jp 1827] 以降のスレッド参照。 .It Li [n]>&- 標準出力 (または n) をクローズします。 .El .Pp 以下のリダイレクトは、しばしば .Dq ヒア・ドキュメント (here-document) と 呼ばれます。 .Bd -literal -offset indent [n]<< delimiter here-doc-text ...\& delimiter .Ed .Pp シェルは、delimiter までの行を保存し、コマンドへの標準入力またはファイ ル記述子 n にリダイレクトします。最初の行の delimiter が引用 (クォート) されていた場合、here-doc-text の内容をリテラルとして扱います。 そうでない場合、パラメータ展開、コマンド置換、数値演算 ( .Sx 単語展開 の節で 説明します) を適用します。演算子が ( .Dq Li << でなく) .Dq Li <<- の場合は、 here-doc-text の各行の行頭のタブを取り除きます。 .Ss コマンド検索と実行 コマンドには、シェル関数、組み込みコマンド、通常プログラムの 3 種類があり、 コマンドを検索する際には、シェルは名前の検索をこの順序で行います。 3 種類のコマンドは異なる方法で実行されます。 .Pp シェル関数を実行するとき、$0 を除くすべての位置パラメータ ($1, $2,..) をシェル関数への引数として設定します。$0 は変更されません。シェル関数 の環境として指定された変数 (関数名の直前に .Dq name=value を置いて指定 されたもの) は、その関数に局所的な変数となり、指定された初期値が設定さ れます。そして、シェルは関数定義で与えられたコマンドを実行します。コマ ンドの実行が完了すると、位置パラメータを元の値に戻します。これは全て現 在のシェルの中で処理されます。 .Pp 組み込みコマンドは、新たなプロセスを作成せずにシェル内部で実行されます。 .Pp コマンドが関数でも組み込みコマンドでもない場合は、通常のプログラムとみなし (次節で説明するとおり) ファイルシステムの中でそのコマンドを検索します。 通常のプログラムを実行する場合、シェルは引数と 環境をプログラムに渡して、そのプログラムを実行します。 プログラムが通常の実行ファイル形式ではない場合 (つまり、 .Tn ASCII 表現で .Qq #! となる .Qq マジックナンバ でファイルが始まっておらず、 .Xr execve 2 が .Er ENOEXEC を返す場合)、 サブシェルの中でそのプログラムを解釈実行します。この場合、あたかも新たに シェルが起動されたかのような効果を得るために、子シェルは自分自身を 再初期化します。ただし、子プロセスは、親シェル中のハッシュされたコマンド 位置情報を憶えており、これは再初期化されません。 .Pp 本ドキュメントの古いバージョンや古いソースコードでは、ときおり、 マジックナンバのないシェルスクリプトのことを .Qq シェル手続き と呼んでいて、 まぎらわしい場合がありますので注意して下さい。 .Ss パス検索 コマンドを検索するとき、シェルは、まず、その名前のシェル関数があるかどうかを 調べます。次に、その名前の組み込みコマンドがあるかどうかを調べます。 組み込みコマンドでもない場合、以下のいずれかの処理が行われます: .Bl -enum .It コマンド名にスラッシュが含まれていれば、検索は行わず、 単にそのコマンドが実行されます。 .It 変数 .Ev PATH に含まれる各エントリに対して、順にそのコマンドを検索します。 変数 .Ev PATH の値はコロン .Dq : で区切られたエントリの列でなければなりません。 各エントリは、それぞれディレクトリ名一つに対応します。 カレントディレクトリは、 空のディレクトリ名を指定することで暗黙的に、 あるいは 1 個のピリオドを指定することで明示的に 指示することができます。 .El .Ss コマンドの実行ステータス 各コマンドは終了ステータスを持ち、それにより他のシェルコマンドの動作に 影響を与えることができます。基本的な考え方として、終了ステータス 0 は 通常の終了または成功を示します。0 以外の終了ステータスは失敗、エラーを 意味します。各コマンドのマニュアルにそれぞれの終了ステータスがどのよう な意味を持つかが記述されているはずです。組み込みコマンドと (実行された) 関数も終了ステータスを返します。 .Pp コマンドがシグナルにより終了 (terminate) させられた場合、 終了ステータスは 128 にシグナル番号を加えたものになります。 シグナル番号はヘッダファイル .Aq Pa sys/signal.h に定義されています。 .Ss 複合コマンド (Complex Commands) 複合コマンドは、単純コマンドの組み合わせで作ります。 制御演算子または予約語と組み合わせることで、より大きな複合コマンドを生 成します。一般に、コマンドは以下のうちのいずれかです。 .Bl -item -offset indent .It 単純コマンド .It パイプライン .It リストまたは合成リスト (compound-list) .It 合成コマンド (compound command) .It 関数定義 .El .Pp 特に指定のない場合、コマンドの終了ステータスは最後に実行された 単純コマンドの終了ステータスとなります。 .Ss パイプライン パイプラインは、複数のコマンドを制御演算子 `|' によってつないだものです。 最後のコマンドを除くすべてのコマンドの標準出力は、次のコマンドの標準入力に 接続されます。 最後のコマンドの標準出力は、通常通り、シェルから受け継がれます。 .Pp パイプラインの形式は次のとおりです。 .Pp .Dl [!] command1 [ | command2 ...] .Pp command1 の標準出力は command2 の標準入力に接続されます。コマンドの標 準入出力がパイプラインによって割り当てられるのは、各コマンドに属する リダイレクト演算子で指定されたリダイレクトを処理する前のことだと考えて 下さい。 .Pp パイプラインがバックグラウンド (後述) でなければ、シェルはすべての コマンドが終了するのを待ちます。 .Pp パイプラインの直前に予約語 `!' が置かれなかった場合、終了ステータスは パイプラインの最後のコマンドの終了ステータスとなります。 `!' が前置された場合、終了ステータスはパイプラインの最後のコマンドの 終了ステータスの論理否定を取った値となります。 すなわち、最後のコマンドが 0 を返した場合、パイプラインの 終了ステータスは 1 に、最後のコマンドが 0 より大きな値を返した場合、 終了ステータスは 0 になります。 .Pp パイプラインによる標準入出力の接続はリダイレクトに先立って行われるため、 パイプラインの接続をリダイレクトによって修正することができます。たとえば、 .Pp .Dl $ command1 2>&1 | command2 .Pp .Ql command1 の標準出力と標準エラー出力の両方を .Ql command2 の標準入力に 接続します。 .Pp .Dq Li \&; または改行文字を終端として用いることにより、直前の AND-OR リスト ( .Sx 短絡リスト演算子 で後述) を順次実行します。 .Dq Li & は、直前の AND-OR リストを非同期に実行します。 .Pp 注: 他のいくつかのシェルと異なり、 .Nm ではパイプラインの各プロセスは起動した .Nm の子プロセスとなります。シェルの組み込みコマンドである ときは別です。その場合は現在のシェルで実行されますが、 環境に対する操作は影響を与えません。 .Ss バックグラウンドコマンド (&) コマンドが制御演算子がアンパサンド .Pq Li & で終了している場合、シェルはそのコマンドを 非同期に実行します。すなわち、シェルはそのコマンドの終了を待たずに、 次のコマンドの実行を開始します。 .Pp コマンドをバックグラウンドで実行させるための形式は以下のとおりです。 .Bd -literal -offset indent command1 & [command2 & ...] .Ed .Pp シェルが対話的でない場合、非同期コマンドの標準入力には /dev/null が 接続されます。 .Ss リスト (一般的な話) リストは 0 個またはそれ以上のコマンドを改行文字、セミコロン文字、アン パーサント文字 (&) で区切った列です。リストは、これら 3 つの記号のいずれかで 終了させることもできます。リスト中のコマンドは並べられた順に実行 されます。もし、コマンドに続けてアンパーサント文字が置かれている場合、 シェルはそのコマンドを起動したあと、すぐに次のコマンドの処理を開始します。 その他の場合、そのコマンドの終了を待ってから次のコマンドの処理を開始します。 .Ss 短絡リスト演算子 (Short-Circuit List Operators) .Dq Li && と .Dq Li || は AND-OR リスト演算子です。 .Dq Li && は最初のコマンド を実行し、もし最初のコマンドの終了ステータスが 0 ならば次のコマンドを 実行します。 .Dq Li || も同様ですが、最初のコマンドの終了ステータスが 0 でない場合に、次のコマンドを実行します。 .Dq Li && と .Dq Li || の優先順位は 同じです。 .Ss 制御構造 (if, while, for, case) .Ic if コマンドの文法は以下のとおりです。 .\" .\" XXX Use .Dl to work around broken handling of .Ic inside .Bd and .Ed . .\" .Dl Ic if Ar list .Dl Ic then Ar list .Dl [ Ic elif Ar list .Dl Ic then Ar list ] ...\& .Dl [ Ic else Ar list ] .Dl Ic fi .Pp .Ic while コマンドの文法は以下のとおりです。 .Dl Ic while Ar list .Dl Ic do Ar list .Dl Ic done .Pp 最初のリストの終了ステータスが 0 であるかぎり、2 つのリストを繰り返し 実行します。 .Ic until コマンドも同様に実行しますが、 単語 .Ic while の代わりに単語 .Ic until を使うことと、 最初のリストの終了ステータスが 0 になるまで、 2 つのリストを繰り返し実行することが異なります。 .Pp .Ic for コマンドの文法は以下のとおりです。 .Dl Ic for Ar variable Ic in Ar word ...\& .Dl Ic do Ar list .Dl Ic done .Pp 各 word は展開され、変数 variable に word を順に設定しながらリストを 繰り返し実行します。 .Ic do と .Ic done は .Dq Li { と .Dq Li } で置き換えることができます。 .Pp .Ic break と .Ic continue コマンドの文法は以下のとおりです。 .Dl Ic break Op Ar num .Dl Ic continue Op Ar num .Pp .Ic break は内側から .Ar num 個の .Ic for ループまたは .Ic while ループを終了します。 .Ic continue は内側から .Ar num 個のループの次の繰り返しに制御を移します。 .\" 上の文、原文では以下のようになっているが、the *num* innermost loop が .\" 正しいと思われる。実際の sh の動作もそうなっているようだ。 .\" --- 97/05/31 sakai@jp.freebsd.org ↓ .\" Continue continues with the next iteration of the innermost loop. これらのコマンドは組み込みコマンドとして実装されています。 .Pp .Ic case コマンドの文法は以下のとおりです。 .Dl Ic case Ar word Ic in .Dl pattern) list ;; .Dl ...\& .Dl Ic esac .Pp pattern は、1 つあるいは複数のパターン (後述の .Sx シェルパターン を参照のこと) を .Dq Li \&| で接続したものです。 .Ss 複数のコマンドのグループ化 コマンドは、以下のいずれかの方法によりグループ化することができます。 .Bd -literal -offset indent (list) .Ed .Pp または、 .Bd -literal -offset indent { list; } .Ed .Pp 最初の形式では、コマンドはサブシェル上で実行されます。 この組み込みコマンドは現在のシェルには影響を与えないことに注意してください。 2 つめの形式では新たなシェルを fork しないので、やや効率が良くなります。 このようにして複数コマンドをグループ化することで、 あたかも単一プログラムであるかのように、それらの出力をまとめて リダイレクトすることができます。 .Bd -literal -offset indent { echo -n "hello"; echo " world"; } > greeting .Ed .Ss 関数 関数定義の構文は以下のとおりです。 .Bd -literal -offset indent name ( ) command .Ed .Pp 関数定義は実行可能文の一種です。実行されると、名前 name の関数 が定義され、終了ステータスとして 0 を返します。command は 通常、 .Dq Li { と .Dq Li } で囲まれたリストです。 .Pp .Ic local コマンドを用いて関数に局所的な変数を宣言することができます。 これは関数定義中の最初の文で行わなければなりません。構文は次のとおりです。 .Bd -ragged -offset indent .Ic local .Op Ar variable ...\& .Op Ar - .Ed .Pp .Ic local コマンドは、組み込みコマンドとして実装されています。 .Pp 変数を局所変数にする場合、関数を呼び出した環境に同じ名前の変数があれば、 新しい局所変数は値と export、readonly フラグを引き継ぎます。もし同じ名前の 変数がなければ、局所変数は初期値を持ちません。シェルは動的スコープ を用います。すなわち、関数 .Em f に局所的な変数 .Em x を作成し、関数 .Em f から関数 .Em g を呼び出した場合、関数 .Em g 内部での変数 .Em x に対する操作は大域変数 .Em x ではなく、関数 .Em f で宣言された変数 .Em x への操作となります。 .Pp 特殊パラメータのうち局所宣言できるのは .Dq Li - だけです。 .Dq Li - を 局所宣言すると、関数内で set コマンドを用いてシェルオプションを 変更しても、関数が終了するとそれらのオプションは元の値に戻ります。 .Pp .Ic return コマンドの文法は以下のとおりです。 .Bd -ragged -offset indent .Ic return .Op Ar exitstatus .Ed .Pp .Ic return は現在実行中の関数を終了させます。 .Ic return は組み込みコマンドとして実装されています。 .Ss 変数とパラメータ シェルはパラメータの集合を管理しています。名前を持つパラメータを 変数と呼びます。シェルは、起動時にすべての環境変数をシェル変数に取り込みます。 新たな変数は、次の形式によって設定できます。 .Bd -literal -offset indent name=value .Ed .Pp ユーザが設定する変数は、アルファベット、数字、アンダスコア (_) のみ からなる名前を持つ必要があります。また、最初の文字が数字であっては いけません。 パラメータは、以下に示す数字または特殊記号により参照することもできます。 .Ss 位置パラメータ 位置パラメータは、0 より大の数字によって参照されるパラメータです。シェルは 位置パラメータの初期値としてシェルスクリプト名に続く引数を設定します。 組み込みコマンド .Ic set により再設定や消去ができます。 .Ss 特殊パラメータ 特殊パラメータは、以下に挙げる特殊文字のいずれかにより参照される パラメータです。各パラメータの値の説明を各文字の後ろに示します。 .Bl -hang .It Li * 位置パラメータ 1,2,... に展開されます。ダブルクォート文字列内部で展開 される場合、展開結果は各位置パラメータの間を変数 .Ev IFS の先頭の文字 ( .Ev IFS が設定されていない場合は .Aq 空白文字 ) で区切った単一の文字列になります。 .It Li @ 位置パラメータ 1,2,... に展開されます。ダブルクォート引用の内部で展開 される場合、各位置パラメータは別々の引数となります。 もし、位置パラメータが設定されていない場合には、 .Li @ の展開結果は 0 個の引数となります (ダブルクォート引用の内部であっても)。 すなわち、$1 が .Dq abc 、$2 が .Dq def ghi であった場合、 .Qq Li $@ は 次の 2 つの引数に展開されます。 .Bd -literal -offset indent "abc" "def ghi" .Ed .It Li # 位置パラメータの数に展開されます。 .It Li \&? 最後に実行したパイプラインの終了ステータスに展開されます。 .It Li - (ハイフン) 現在のオプションフラグ (1 文字オプション名をつないだ文字列) に展開されます。起動時に指定されたもの、組み込みコマンド set で指定した もの、シェルが暗黙に設定したもののすべてを含みます。 .It Li $ 起動されたシェルのプロセス ID に展開されます。 サブシェルも親シェルと同じ値を持ちます。 .It Li \&! 現在のシェルが最後にバックグラウンドで実行したコマンドのプロセス ID に 展開されます。パイプラインの場合、パイプラインの最後のコマンドの プロセス ID になります。 .It Li 0 (ゼロ) シェルの名前またはシェルスクリプト名に展開されます。 .El .Ss 単語展開 本節では、単語に対して適用されるさまざまな展開について説明します。あとで 述べるように、すべての展開がすべての単語に対して適用されるわけではありません。 .Pp 単一の単語に対して適用されたチルダ展開、パラメータ展開、コマンド置換、 数式展開、クォート削除の結果は単一のフィールドになります。単一の単語が 複数のフィールドに分割される可能性があるのは、フィールド分割または パス名展開の場合だけです。この規則の唯一の例外は、ダブルクォート中の パラメータ .Li @ の展開です (前述)。 .Pp 単語展開の順序は以下のとおりです。 .Bl -enum .It チルダ展開、パラメータ展開、コマンド置換、数式展開 (これらはすべて 同時に行われます) .It 変数 .Ev IFS の値が空でなければ、(1) の結果の各フィールドに対して フィールド分割が行われる .It パス名展開 ( .Fl f オプションが無効の場合) .It クォート削除 .El .Pp 文字 .Dq Li $ はパラメータ展開、コマンド置換、数式評価を行うきっかけになります。 .Ss チルダ展開 (ユーザのホームディレクトリ名への置換) 引用されていないチルダ文字 .Pq Li ~ で始まる単語は、チルダ展開の対象になります。 チルダ文字からスラッシュ文字 .Pq Li / または単語の終端までのすべての文字がユーザ名 とみなされ、そのユーザのホームディレクトリに置換されます。もしユーザ名が 省略された場合 (たとえば ~/foobar)、チルダ文字は変数 HOME の値 (現在のユーザのホームディレクトリ) に置換されます。 .Ss パラメータ展開 パラメータ展開の形式は以下のとおりです。 .Bd -literal -offset indent ${expression} .Ed .Pp ここで、expression は対応した .Dq Li } までのすべての文字です。対応する .Dq Li } を調べる際に、バックスラッシュ文字によりエスケープされたり、クォート文字に 狭まれた .Dq } や、数式展開に埋め込まれている文字や、コマンド置換や変数展開中に ある文字は調べる対象になりません。 .Pp パラメータ展開の形式のうちもっとも単純なものは以下のとおりです。 .Bd -literal -offset indent ${parameter} .Ed .Pp そのパラメータに値が存在する場合、その値に置き換えられます。 .Pp パラメータ名やシンボルを中括弧 ({}) で囲んでも構いません。この中括弧は、 数字 2 文字以上からなる位置パラメータの場合や、パラメータ名の直後に パラメータ名の一部であるとみなし得る文字が続く場合を除き、 省略可能です。ダブルクォート引用中のパラメータ展開は以下 のようになります。 .Bl -enum .It パラメータ展開を行った結果の単語に対しては、パス名展開は適用されません。 .It パラメータが特殊パラメータ .Li @ の場合を除き、フィールド分割は適用されません。 .El .Pp さらに、以下の形式を用いることにより、パラメータ展開の結果に修正を加える ことができます。 .Bl -tag -width Ds .It Li ${parameter:-word} デフォルト値への置換: パラメータ parameter が設定されていないか空の値 を持つ場合、word を展開した結果に置換されます。さもなければ、パラメー タ parameter の値に置換されます。 .It Li ${parameter:=word} デフォルト値の代入: パラメータ parameter が設定されていないか空の値を持つ場合、word を展開 した結果が parameter に代入されます。最終的にパラメータ parameter の値 に置換されます。位置パラメータや特殊パラメータは、この方法で代入すること はできません。 .It Li ${parameter:?[word]} 空か設定されていないときにエラーとする: パラメータ parameter が設定されていないか空の値を持つ場合、word を展開 した結果 (word が省略された場合にはパラメータが設定されていないことを表す デフォルトのメッセージ) が標準エラー出力に書き出され、 シェルは非 0 の終了ステータスで終了します。 それ以外の場合、パラメータ parameter の値に置換されます。対話的シェルの場合は 必ずしも終了しません。 .It Li ${parameter:+word} 代替値の使用: パラメータ parameter が設定されていないか空の値を持つ場合、空の値に 置換されます。さもなければ、word を展開した結果に置換されます。 .Pp 以上のパラメータ展開において、`:' を用いた場合はパラメータが設定されていない かまたは空の値であることが検査され、`:' を省略するとパラメータが 設定されていないことのみを検査します。 .It Li ${#parameter} 文字列の長さ: パラメータの値の (文字列としての) 長さに置換されます。 .Pp 以下の 4 通りのパラメータ展開は部分文字列切り出し処理を行います。各場合 において、パターンは正規表現ではなく、パターンマッチ記法 ( .Sx シェルパターン の項を参照) が用いられます。パラメータが .Li * または .Li @ の場合、展開の結果 がどうなるかは規定しません (unspecified)。 パラメータ展開全体をダブルクォートで囲んでも パターンは引用されません。中括弧のなかで引用することにより パターンを引用することができます。 .It Li ${parameter%word} 最短後置パターンの削除: まず word が展開され、その結果をパターンとして扱います。 パラメータ parameter の右から、パターンに一致する最短の部分を削除した文字列に 置換されます。 .It Li ${parameter%%word} 最長後置パターンの削除: まず word が展開され、その結果をパターンとして扱います。 パラメータ parameter の右から、パターンに一致する最長の部分を削除した文字列に 置換されます。 .It Li ${parameter#word} 最短前置パターンの削除: まず word が展開され、その結果をパターンとして扱います。 パラメータ parameter の左から、パターンに一致する最短の部分を削除した文字列に 置換されます。 .It Li ${parameter##word} 最長前置パターンの削除: まず word が展開され、その結果をパターンとして扱います。 パラメータ parameter の左から、パターンに一致する最長の部分を削除した文字列に 置換されます。 .El .Ss コマンド置換 コマンド置換により、コマンド名自身をコマンドの出力で置き換えることができます。 コマンド置換は、以下のように、コマンド command を囲った場合、 .Bd -literal -offset indent $(command) .Ed .Pp またはバッククォートバージョン .Bd -literal -offset indent `command` .Ed .Pp とした場合に行なわれます。 シェルは、コマンド command をサブシェルの環境で実行し、command が標準出力 に出力したものから最後の改行文字を削除した結果で置換します。 最後以外の 改行は削除しません。ただし、フィールド分割の際に、 .Ev IFS の値や引用のされかたによっては、 ここで残った改行文字が結局は空白に置換されることもあります。 .Ss 数式展開 数式展開とは、数式を評価し、その値に置換する仕組みです。数式展開の形式は以下 のとおりです。 .Bd -literal -offset indent $((expression)) .Ed .Pp 数式 expression は、その中のダブルクォート文字が特別扱いを受けないという 点を除いては、ダブルクォート文字で囲まれている文字列と同様に扱われます。 シェルは expression 中のすべてのトークンにパラメータ展開、コマンド置換、 クォート削除を適用します。 .Pp 次にシェルはその結果を数式として扱い、その値に置換します。 .Ss 空白文字による分割 (フィールド分割) パラメータ展開、コマンド置換、数式展開のあと、シェルは展開結果を調べて、 ダブルクォートの外にある部分に対してフィールド分割を適用します。 その結果、複数のフィールドになる場合もあります。 .Pp シェルは、変数 .Ev IFS に設定されている文字それぞれ区切り文字とみなし、 パラメータ展開の結果、およびコマンド置換の結果をフィールドに分割します。 .Ss パス名展開 (ファイル名生成) .Fl f フラグが設定されていなければ、フィールド分割が行われたあと、ファイル名生成 が行われます。各単語は、スラッシュで区切られたパターンの列であるとみなさ れます。パス名展開処理において、単語は、条件を満たすファイル すべてのファイル名の列で置換されます。この各ファイル名は、単語の 各パターン部分を、そのパターンに一致する文字列に置換することで 生成されるものです。 これには 2 つの制限があります: まず、パターンはスラッシュを含む文字列には 一致しません。次に、パターンは、そのパターンがピリオドで始まらないかぎり、 ピリオドで始まる文字列に一致しません。 次節では、パス名展開と .Ic case コマンドで用いられるパターンについて説明します。 .Ss シェルパターン パターンは、通常の文字とメタキャラクタからなります。通常の文字は、 その文字そのものに一致します。 メタキャラクタは .Dq Li \&! , .Dq Li * , .Dq Li \&? , .Dq Li [ です。これらの文字を引用 すると、各々の特殊な意味を失います。コマンド置換や変数置換において、 ドル記号やバッククォート文字がダブルクォート文字の中にない場合には、 変数の値やコマンドの出力の中に、これらの特殊な文字が存在するかどうかが 調べられ、それらがあれば、メタキャラクタとして扱われます。 .Pp アスタリスク文字 .Pq Li * は、どのような文字列とも一致します。 クエスチョンマーク文字 .Pq Li \&? は、任意の文字 1 文字と一致します。 左大括弧 .Pq Li [ は文字クラスを開始します。 文字クラスの最後は右大括弧 .Pq Li \&] です。 .Dq Li \&] がない場合は、 .Dq Li [ は文字そのものに一致し、文字クラスの開始とは見なされません。文字 クラスは大括弧内に出現するすべての文字に一致します。 マイナス記号を用いれば、文字の範囲を指定することができます。 文字クラスの最初にエクスクラメーションマーク .Pq Li \&! を置くことで、 文字クラスの意味を反転させることができます。 .Pp 文字クラスに文字 .Dq Li \&] を含めるには、 .Dq Li \&] を文字クラスの最初 ( .Dq Li \&! を置く場合はそのあと) に置きます。 文字クラスに .Dq Li - を含めるときも同様で、 リストの最初もしくは最後に置きます。 .Ss シェル組み込みコマンド 本節では、別プロセスでは実行できない処理を行なうために組み込まれている コマンドを列挙します。 さらに、組み込みバージョンの .Xr printf 1 が効率を上げるために提供されています。 .Bl -tag -width Ds .It Ic \&: 終了ステータス 0 (真) を返すヌルコマンドです。 .It Ic \&. Ar file 指定されたファイル file に記述されたコマンドがシェルに読み込まれ、 実行されます。 .Ar file に .Dq / 文字を含む場合、その通りに扱われます。 そうでなければ、シェルは .Ev PATH を使用して、ファイルを検索します。 .Ev PATH を使用しても見付からない場合、カレントディレクトリを検索します。 .It Ic alias Op Ar name ...\& .It Ic alias Xo .Op Ar name Ns = Ns Ar string ... .Xc .Ar name Ns = Ns Ar string が指定されている場合、シェルは名前 .Ar name を持つ値 .Ar string のエイリアスを定義します。単に .Dq name だけが指定された場合、 エイリアス .Dq name の値が表示されます。引数が指定されない場合、 .Ic alias は定義されているすべてのエイリアスの名前と値を表示します ( .Ic unalias も参照)。 .It Ic bg Op Ar job ...\& 指定されたジョブ (指定されなかった場合は現在のジョブ) を、 続けてバックグラウンドで実行させます。 .It Ic command Ar cmd Op Ar arg ...\& 指定された組み込みコマンド .Ar cmd を実行します。 シェル関数を同名の組み込みコマンドでオーバライドしたい場合に有用です。 .It Ic cd Op Ar directory 指定されたディレクトリ .Ar directory に移動します。 .Ar directory 無指定時は .Ev HOME で指定されるディレクトリに移動します。 .Ar directory がカレントディレクトリのサブディレクトリとして見付からない場合 (かつ .Dq Li / , .Dq Li ./ , .Dq Li ../ のいずれでも開始しない場合)、指定された .Ar directory を .Ev CDPATH 変数中のディレクトリリストから検索します。 .Ar CDPATH の形式は .Ev PATH と同様です。対話的シェルでは、ユーザ が指定したディレクトリと異なる場所に移動した場合、 .Ic cd は、移動先のディレクトリ名を表示します。 これは、 .Ev CDPATH の機構が動作した場合と、シンボリックリンクを辿った場合に発生します。 +.It Ic chdir +.Ic cd +組み込みコマンドの別名です。 .It Xo .Ic echo .Op Fl en .Ar string .Xc .Ar string の後に改行文字を付けて、標準出力に表示します。 .Bl -tag -width Ds .It Fl n 最後の改行文字を抑制します。 .It Fl e C 風のバックスラッシュエスケープシーケンスを処理します。 .Ic echo は次の文字エスケープを理解します: .Bl -tag -width Ds .It \ea 警告 (端末ベルを鳴らす) .It \eb バックスペース .It \ec 最後の改行文字を抑制します (改行文字が最後の文字でない場合、行が縮んでしまうという副作用があります) .It \ee ESC 文字 (ASCII 0x1b) .It \ef フォームフィード .It \en 改行 .It \er 復改 .It \et 水平タブ .It \ev 垂直タブ .It \e\e バックスラッシュ文字 .It \e0nnn (この 0 はゼロです) 8 進数値が nnn である文字 .El .Pp .Ar string がクォートで括られていない場合、 シェルからエスケープするためには、 バックスラッシュ自身をバックスラッシュでエスケープする必要があります。 例えば次の通りです: .Bd -literal -offset indent $ echo -e "a\evb" a b $ echo -e a\e\evb a b $ echo -e "a\e\eb" a\eb $ echo -e a\e\e\e\eb a\eb .Ed .El .It Ic eval Ar string ...\& 指定されたすべての引数を空白で結合し、その結果を解析し直してから コマンドとして実行します。 .It Ic exec Op command Op arg ...\& .Ar commmand が省略されない場合、そのシェルプロセスは指定されたプログラムに 置き換えられます ( .Ar command は、シェル組み込みコマンドや関数ではない、本物の プログラムでなければなりません)。 .Ic exec コマンドにおけるリダイレクトは、 永久性を持つと見なされ、 .Ic exec コマンド完了後にも引き続き効力を持ちます。 .It Ic exit Op exitstatus シェルを終了します。 .Ar exitstatus が指定された場合、これはシェルの終了ステータスになります。 そうでない場合、直前に実行したコマンドの 終了ステータスがシェルの終了ステータスとなります。 .It Ic export Ar name ...\& それ以後にシェルから実行されるコマンドの環境に、指定された名前の変数が 含まれるようにします (変数のエクスポート)。 変数のエクスポートを取り消す唯一の方法は、変数を .Ic unset することです。 以下のように記述することで、エクスポートすると 同時に変数の値を設定することができます。 .Bd -literal -offset indent export name=value .Ed .Pp 引数を指定しない場合、すべてのエクスポートされている名前と値が表示されます。 .It Xo .Ic fc .Op Fl e Ar editor .Op Ar first Op Ar last .Xc .It Xo .Ic fc .Fl l .Op Fl nr .Op Ar first Op Ar last .Xc .It Xo .Ic fc .Fl s .Op Ar old=new .Op Ar first .Xc .Ic fc 組み込みコマンドは、対話的シェルにそれ以前に入力されたコマンドの内容を、 表示、編集、再実行します。 .Bl -tag -width Ds .It Fl e Ar editor 編集に際し、指定されたエディタ .Ar editor を使用します。 .Ar editor は変数 .Ev PATH を通して検索できるコマンド名です。 .Fl e が指定されなかった場合は、変数 .Ev FCEDIT の値が用いられます。 .Ev FCEDIT が設定されていないか空に設定されている場合は .Ev EDITORの値が用いられ、それも設定されていないか空ならば .Xr ed 1 が用いられます。 .It Fl l No (ell) (小文字のエル) エディタを起動せずに、コマンド履歴の内容を一覧出力します。 パラメータ first と last で指定した範囲のコマンドが順に (出力の順番は .Fl r オプションの影響を受けます) 出力されます。 各コマンドの出力の際にはコマンド番号が付加されます。 .It Fl n .Fl l で一覧出力する際にコマンド番号を付加しません。 .It Fl r コマンド一覧時 ( .Fl l オプション指定時) や編集時 ( .Fl l も .Fl s も指定されなかった場合) の順序を反転します。 .It Fl s エディタを起動せずにコマンドを再実行します。 .It Ar first .It Ar last 一覧出力や編集の対象となるコマンドを選択します。アクセス可能なコマンド の数は変数 .Ev HISTSIZE の値で決まります。 .Ar first または .Ar last 、または両方の値は、以下のいずれかの形式で指定します。 .Bl -tag -width Ds .It Ar [+]num 正の数で、コマンド番号を指定します。コマンド番号は .Fl l オプションで表示させて調べることができます。 .It Ar -num 負の数は、 .Ar num 個だけ現在から遡ったコマンドを指定します。たとえば、 -1 は直前に実行されたコマンドを指定します。 .It Ar string 文字列 string は、過去に実行されたコマンドのうち、 その文字列から始まる最新のものを指定します。 もし .Fl s オプションが指定されて .Ar old=new が指定されていなければ、 最初のオペランドにイコール記号 を含めることはできません。 .El .El .Pp .Ic fc コマンドの実行にあたり、以下の環境変数の影響を受けます。 .Bl -tag -width Ds .It Ev FCEDIT 使用するエディタ名 .It Ev HISTSIZE アクセス可能なコマンド数 .El .It Ic fg Op job 指定されたジョブ .Ar job または現在のジョブをフォアグラウンドに移動します。 .It Ic getopts Ar optstring Ar var POSIX に準拠した .Ic getopts コマンドです。 この .Ic getopts コマンドにより、以前の .Xr getopt 1 コマンドの必要性は減少しました。 最初の引数は文字の列です。各文字の後ろにはコロンをつけることができ、 そのオプションが引数をとることを指示します。 指定された変数に、解析され見つかったオプションが設定されます。 見つかったオプションの次の引数のインデックスはシェル変数 .Ev OPTIND に格納されます。 あるオプションが引数をとる場合、その引数はシェル変数 .Ev OPTARG に置かれます。 有効でないオプションに出くわすと、変数 .Ev var には .Dq Li \&? がセットされます。 getopts はオプション群の末尾に到達すると偽の値 (1) を返します。 .It Xo .Ic hash .Op Fl rv .Op Ar command ...\& .Xc シェルは、コマンドの位置を保持するハッシュテーブルを維持管理しています。 .Ic hash コマンドに引数が指定されなかった場合、このテーブルの内容が出力されます。 最後に .Ic cd コマンドが実行されてから参照されていない項目には アスタリスク文字 が表示されます。 この項目は無効になっているかもしれません。 .Pp 引数を指定した場合、 .Ic hash コマンドは指定した .Ar command をハッシュテーブルから削除し ( .Ar command が関数ではない場合)、その後でそのコマンドを検索します。 .Fl v オプションを指定した場合、 .Ic hash は発見したコマンドの位置を表示します。 .Fl r オプションを指定した場合、 .Ic hash は関数以外のすべてのエントリをハッシュテーブルから削除します。 .It Ic jobid Op Ar job ジョブ .Ar job 中の各プロセスのプロセス ID を表示します。引数 .Ar job が 省略された場合、現在のジョブに対して処理を行います。 .It Ic jobs バックグラウンドで走行中の、現在のシェルプロセスの子プロセスの 一覧を出力します。 .It Ic pwd カレントディレクトリのパスを表示します。組み込みコマンド版は カレントディレクトリ名を覚えており、表示するときに再計算しないので、 組み込みコマンド版は同名のプログラムとは異なった表示をする場合があります。 このため処理は高速ですが、カレントディレクトリ の名前を変更した場合でも、組み込み版の .Xr pwd 1 は以前のディレクトリ名を表示し続けます。 .It Xo .Ic read .Op Fl p Ar prompt .Op Fl t Ar timeout .Op Fl er .Ar variable ...\& .Xc .Fl p オプションが指定され、かつ標準入力が端末の場合、 .Ar prompt をプロンプトとして表示します。 そして標準入力から 1 行入力します。行端の改行文字を削除し、行を前述の .Sx 空白文字による分割 (フィールド分割) の方法に従って分割し、各単語を、valiable... で指定する各変数に 順に代入します。 もし、指定された変数の数より分割された単語の数が多ければ、最後の変数に 残りの単語すべて ( .Ev IFS の文字を区切りにしてそれらも一緒に) が代入されます。 分割された単語の数より多くの変数が指定されていたなら、 余った変数には空文字列が設定されます。 .Pp .Fl r オプションが指定された場合を除き、バックスラッシュは特別に扱われます。 バックスラッシュ文字が改行文字の直前にある場合、 バックスラッシュ文字と改行文字は削除されます。 その他の文字の直前にバックスラッシュがある場合、バックスラッシュは削除され、 文字が .Ev IFS に含まれていても、 .Ev IFS の文字でないかのように扱われます。 .Pp .Fl t オプションが指定され、かつ入力がなされる前に .Ar timeout が経過すると、 .Ic read コマンドは値を割当てずに戻ります。 .Ar timeout 値の後にはオプションで .Dq s , .Dq m , .Dq h のいずれかの一文字 を付けることが出来、それぞれ秒・分・時間を陽に指定します。 どれも指定しない場合には .Dq s であるものとします。 .Pp .Fl e オプションは、古いスクリプトとの後方互換性のためだけにあります。 .It Ic readonly Ar name ...\& .Ar name で指定された変数を読み出し専用とし、あとで値を変更したり unset した りすることができないようにします。以下のように記述することで、 変数を読み出し専用と宣言するのと同時に値を設定することも可能です。 .Bd -literal -offset indent readonly name=value .Ed .Pp 引数が指定されない場合、 .Ic readonly コマンドは、読み出し専用になっている変数の名前の一覧を表示します。 .It Xo .Ic set .Op Fl /+abCEefIimnpTuVvx .Op Fl /+o Ar longname .Op Fl c Ar string .Op Fl - Ar arg ...\& .Xc .Ic set コマンドは 3 通りの異なった機能を持ちます。 .Bl -item .It 引数を指定しなかった場合、短かい形式でも長い .Dq Fl /+o Ar longname という形式であっても、 .Sx 引数リストの処理 の節で説明されているように、指定されたオプションの設定またはクリアを行います。 .It .Dq Fl - オプションが指定された場合、 .Ic set はシェルの位置パラメータを、引き続く引数で置き換えます。 .Dq Fl - オプションの後に引数が続かない場合、 すべての位置パラメータはクリアされ、 .Dq Li shift $# コマンドを実行するのと等価になります。 位置置換パラメータとして引数を指定するとき、 .Dq Fl - フラグは省略可能です。 これはお勧めできません。 なぜなら、最初の引数はマイナス記号 .Pq Li - またはプラス記号 .Pq Li + で開始するかもしれないからです。 これらは、 .Ic set コマンドが、オプションの有効化または無効化の要求であると解釈してしまいます。 .El .It Ic setvar Ar variable Ar value 変数 .Ar variable に値 .Ar value を代入します。( .Ic setvar は、関数内で、パラメータとして渡された名前を持つ 変数に値を代入するためのものです。 一般に、 .Ic setvar を使うよりも .Bd -literal -offset indent variable=value .Ed と書くほうが望ましいといえます。) .It Ic shift Op Ar n 位置パラメータを .Ar n 回シフトします。 .Ar n を指定しない場合 1 回シフトします。 1 回のシフトにより、$2 の値が $1 に、$3 の 値が $2 に代入されます (以下同様)。また、$# の値は 1 減少します。 位置パラメータがない場合、shift は何もしません。 .It Xo .Ic trap .Op Ar action .Ar signal ...\& .Xc シェルが指定されたシグナル .Ar signal を受けとったときに、 .Ar action を解析し実行するように設定します。 シグナルはシグナル番号で指定します。 .Ar action は空文字列に したり、省略したりすることができます。空文字列の場合、指定されたシグナルは 無視され、省略した場合は、指定したシグナルを受けとったときデフォルトの処理を 行ないます。シェルがサブシェルを起動するとき、trap で指定された (かつ 無視するように設定されていない) シグナルの動作をデフォルトの処理に戻します。 シェルが起動したときにすでに無視されるように設定されていたシグナルに対して .Ic trap コマンドを使用しても効果はありません。 .It Ic type Op Ar name ...\& 各 .Ar name をコマンドとして解釈し、コマンド検索の結果を出力します。出力さ れる結果は以下のものがあります。シェルのキーワード、エイリアス、シェル の組み込みコマンド、コマンド、痕跡つきエイリアス (tracked alias)、最後に not found (見つからず) があります。エイリアスについては、エイリアス展開 の結果が出力されます。コマンドと痕跡つきエイリアスについては、そのコマンドの 完全なパス名が印刷されます。 .It Xo .Ic ulimit .Op Fl HSabcdflmnust .Op Ar limit .Xc リソースのリミット値 (リミット値については .Xr getrlimit 2 参照) を設定あるいは表示します。 .Ar limit が指定されている場合、指定されたリソースが設定されます。 それ以外の場合、現在のリソース設定値が表示されます。 .Pp .Fl H が指定された場合、ハードリミットが設定ないし表示されます。 ハードリミット値を下げることは誰にでもできますが、 それを増やすことができるのはスーパユーザだけです。 オプション .Fl S を指定した場合はソフトリミットになります。 リミット値を表示する場合、 .Fl S か .Fl H のいずれか一方だけしか指定できません。 デフォルトでは、表示はソフトリミット、設定はハード/ソフトリミット両方です。 .Pp オプション .Fl a を指定すると .Ic ulimit コマンドは全リソースの設定値を表示します。 この場合、パラメータ .Ar limit は指定できません。 .Pp この他のオプションは、表示あるいは設定するリソースの種類を指定するものです。 これらは互いに排他的です。 .Bl -tag -width Ds .It Fl b Ar sbsize ソケットバッファサイズの最大値。バイト単位。 .It Fl c Ar coredumpsize コアダンプファイルの最大サイズ。512 バイトのブロック単位。 .It Fl d Ar datasize プロセスのデータセグメントの最大サイズ。キロバイト単位。 .It Fl f Ar filesize ファイルの最大サイズ。512 バイトブロック単位。 .It Fl l Ar lockedmem プロセスがロックできるメモリサイズの最大値。キロバイト単位。 .It Fl m Ar memoryuse プロセスの常駐セットサイズの最大値。キロバイト単位。 .It Fl n Ar nofiles あるプロセスがオープンできるファイル記述子の最大数。 .It Fl s Ar stacksize スタックセグメントサイズの最大値。キロバイト単位。 .It Fl t Ar time 各プロセスで消費できる CPU 時間の最大値。秒単位。 .It Fl u Ar userproc このユーザ ID で同時に走らせうる最大プロセス数。 .El .It Ic umask Op Ar mask ファイル作成マスクの値 ( .Xr umask 2 を参照) を、 .Ar mask で指定された 8 進数の値に設定します。引数が 省略された場合、現在のマスクの値が表示されます。 .It Xo .Ic unalias .Op Fl a .Op Ar name .Xc .Ar name が指定された場合、指定された名前のエイリアスを削除します。 .Fl a オプションが指定された場合、すべてのエイリアスを削除します。 .It Ic unset Ar name ...\& 指定された変数または関数を unset し、エクスポートされていない状態にします。 指定された名前の変数も関数も存在する場合、変数と関数の両方が unset されます。 .It Ic wait Op Ar job 指定されたジョブ .Ar job が終了するのを待ち、ジョブ内の最後のプロセスの 終了ステータスを返します。引数が省略された場合、すべてのジョブが終了する まで待ち、終了ステータス 0 を返します。 .El .Ss コマンド行編集 .Nm が端末から対話的に実行されている場合、現在入力中のコマンドおよび コマンド履歴 ( .Sx 組み込みコマンド の .Ic fc 参照) を vi モードのコマンド行編集機能 により編集することができます。 このモードでは、vi のマニュアルに示されているコマンドのサブセットを用います。 コマンド .Dq Li set -o vi (または .Dq Li set -V ) により vi モードが有効になり、 .Nm は vi の挿入モードに移行します。 vi モード中では、 挿入モードとコマンドモードの両方を自由に切り替えることが可能です。 vi モードは vi と同様であり、 .Aq ESC キー によりコマンドモードに移行し、コマンドモードで .Aq return キーを叩くことで、 行の内容がシェルに渡されます。 .Pp 同様に、コマンド .Dq Li set -o emacs により emacs 風のコマンド行編集機能の サブセットを使うことができるようになります。 .Sh 関連項目 .Xr builtin 1 , .Xr echo 1 , .Xr expr 1 , .Xr pwd 1 , .Xr printf 1 , .Xr test 1 .Sh 歴史 .Nm コマンドは、 .At V.1 で登場しました。 .\" -Amended by N.Kumagai 97.12.30 diff --git a/ja_JP.eucJP/man/man1/ssh.1 b/ja_JP.eucJP/man/man1/ssh.1 index 6134fa162f..7acd08c4a5 100644 --- a/ja_JP.eucJP/man/man1/ssh.1 +++ b/ja_JP.eucJP/man/man1/ssh.1 @@ -1,1227 +1,1227 @@ .\" -*- nroff -*- .\" .\" Author: Tatu Ylonen .\" Copyright (c) 1995 Tatu Ylonen , Espoo, Finland .\" All rights reserved .\" .\" As far as I am concerned, the code I have written for this software .\" can be used freely for any purpose. Any derived versions of this .\" software must be clearly marked as such, and if the derived work is .\" incompatible with the protocol description in the RFC file, it must be .\" called by a name other than "ssh" or "Secure Shell". .\" .\" Copyright (c) 1999,2000 Markus Friedl. All rights reserved. .\" Copyright (c) 1999 Aaron Campbell. All rights reserved. .\" Copyright (c) 1999 Theo de Raadt. All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" .\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR .\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES .\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. .\" IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, .\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT .\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, .\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY .\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .\" .\" $OpenBSD: ssh.1,v 1.64 2000/10/16 21:46:31 markus Exp $ -.\" %FreeBSD: /home/ncvs/src/crypto/openssh/ssh.1,v 1.4.2.7 2001/03/15 09:27:00 asmodai Exp % -.\" $FreeBSD:$ +.\" %FreeBSD: src/crypto/openssh/ssh.1,v 1.4.2.7 2001/03/15 09:27:00 asmodai Exp % +.\" $FreeBSD: doc/ja_JP.eucJP/man/man1/ssh.1,v 1.3 2001/04/30 02:07:02 horikawa Exp $ .\" .Dd September 25, 1999 .Dt SSH 1 .Os .Sh 名称 .Nm ssh .Nd OpenSSH セキュア シェル クライアント (リモート ログイン プログラム) .Sh 書式 .Nm ssh .Op Fl l Ar ログイン名 .Op Ar ホスト名 | ユーザ@ホスト名 .Op Ar コマンド .Pp .Nm ssh .Op Fl afgknqtvxACNPTX246 .Op Fl c Ar 暗号化オプション .Op Fl e Ar エスケープ文字 .Op Fl i Ar identityファイル .Op Fl l Ar ログイン名 .Op Fl o Ar オプション .Op Fl p Ar ポート .Oo Fl L Xo .Sm off .Ar ポート : .Ar ホスト : .Ar ホスト側ポート .Sm on .Xc .Oc .Oo Fl R Xo .Sm off .Ar ポート : .Ar ホスト : .Ar ホスト側ポート .Sm on .Xc .Oc .Op Ar ホスト名 | ユーザ@ホスト名 .Op Ar コマンド .Sh 解説 .Nm (Secure Shell、セキュア シェル) はリモートマシンにログイン したり、リモートマシン上でコマンドを実行するためのプログラムです。 これは rlogin と rsh を置き換えるためのもので、安全でないネットワーク 上にある、2つの信頼されていないホスト間で、暗号化された安全な通信を 提供します。X11 の接続や任意の TCP/IP ポートなども安全な通信路を通して 転送できます。 .Pp .Nm は指定された .Ar hostname に接続し、ログインします。 ユーザはリモートマシンに対して、自分自身であることを証明しなければいけません。 これにはプロトコルのバージョンに応じたいくつかの方法のうちのひとつを使います: .Pp .Ss SSH プロトコル バージョン 1 .Pp 最初に、ユーザがリモートマシン上の .Pa /etc/hosts.equiv あるいは .Pa /etc/ssh/shosts.equiv に記されているマシンからログインしてきて、 さらにそのユーザの名前が両方のホストで同じならば、そのユーザは すぐにログインが許可されます。 つぎに、 .Pa \&.rhosts か .Pa \&.shosts がリモートホスト上のそのユーザのホームディレクトリに存在していて、そこに クライアントホスト名とそのホスト上におけるユーザ名が記されている 行が存在すれば、そのユーザはログインが許可されます。 この形の認証はふつう、これのみではサーバから許可されません。 安全ではないからです。 .Pp 2番目の (原始的な) 認証方法は .Pa rhosts または .Pa hosts.equiv を RSA ベースのホスト認証と組み合わせて使うことです。これは もしログインが .Pa $HOME/.rhosts , .Pa $HOME/.shosts , .Pa /etc/hosts.equiv , あるいは .Pa /etc/ssh/shosts.equiv で許可されていて、さらにサーバ側がクライアントのホスト鍵 ( .Sx 関連ファイル セクションの .Pa /etc/ssh/ssh_known_hosts と .Pa $HOME/.ssh/known_hosts の項を参照) を確認できる場合、そして その場合のみログインが許可されます。この認証方法を使うと IP 詐称、 DNS 詐称 および 経路詐称 によるセキュリティーホールをふさぐことができます。 [管理者の方へ: .Pa /etc/hosts.equiv や .Pa $HOME/.rhosts 、 そして一般的な rlogin/rsh プロトコルは 本質的に危険であり、セキュリティを考えるなら禁止しなくてはいけません] .Pp 3つめの認証方法として、 .Nm は RSA ベースの認証をサポートしています。 このやりかたは公開鍵暗号化技術に基づいています: 暗号システムのなかには、 暗号化/復号化をそれぞれ別の鍵をつかって行うことができ、さらに復号化用の 鍵から暗号化用の鍵が推測することはできないものがあります。RSA はこのような 暗号システムのひとつで、以下のようなアイデアで認証を行います。 まず各ユーザは、認証のための「秘密鍵」「公開鍵」とよばれる鍵の対を つくります。サーバは公開鍵を知っていますが、秘密鍵のほうはユーザだけが 知っているものとします。 .Pa $HOME/.ssh/authorized_keys ファイルには、ログインが許可されている公開鍵の一覧が書かれています。 ユーザがログインするさい、 .Nm プログラムは、そのユーザがどの鍵をつかって 認証したがっているかをサーバに伝えます。サーバはこの鍵が許される ものであるかどうかをチェックし、もし許されているならば、ユーザ (実際には ユーザのために走っている .Nm プログラム) に「チャレンジ(挑戦)」と 呼ばれるものを送ります。これはサーバ側で生成された でたらめな数で、 ユーザの公開鍵によって暗号化されています。このチャレンジはユーザが もっている正しい秘密鍵によってのみ復号化することができます。ユーザ側の クライアントはこのときチャレンジを秘密鍵をつかって復号化してみせること で、秘密鍵の中身をサーバ側に見せることなしに、それを持っていることを サーバに対し証明するのです。 .Pp .Nm は RSA の認証プロトコルを自動的に行います。ユーザは .Xr ssh-keygen 1 をつかって自分の RSA 鍵の対をつくります。このプログラムは秘密鍵を ユーザのホームディレクトリ内の .Pa $HOME/.ssh/identity ファイルに、公開鍵を .Pa $HOME/.ssh/identity.pub ファイルに格納します。ユーザはつぎにこの .Pa identity.pub をリモートマシン上の自分のホームディレクトリにある .Pa $HOME/.ssh/authorized_keys ファイルにコピーしなくてはいけません ( .Pa authorized_keys ファイルは従来の .Pa $HOME/.rhosts ファイルに相当し、1行ごとにひとつの鍵を格納します。 各行はかなり長くなることもあります)。 この後、ユーザはパスワードなしでログインすることができます。 RSA 認証は rhosts 認証よりもずっと安全です。 .Pp RSA 認証を使う際にいちばん便利なのは「認証エージェント」と呼ばれる ものを使うことかもしれません。詳しくは .Xr ssh-agent 1 のマニュアルページを見てください。 .Pp もし他の認証方法が失敗した場合、 .Nm はユーザにパスワードを要求します。 このパスワードはチェックのためリモートホストに送られますが、 すべての通信は暗号化されているため、ネットワークを盗聴している何物かに よってパスワードが見られてしまうようなことはありません。 .Pp .Ss SSH プロトコル バージョン 2 .Pp ユーザがバージョン 2 のプロトコルで接続したときには、別の認証方法が 使えるようになります: まず、クライアントは公開鍵の方法で認証しようと こころみます。これが失敗するとパスワード認証が使われます。 .Pp 公開鍵による方法は前節に書かれている RSA 認証と似ていますが、 特許のある RSA アルゴリズムの代わりに DSA アルゴリズムが使われる点が 違っています。クライアントは .Pa $HOME/.ssh/id_dsa にある自分の DSA 秘密鍵をつかってセッション識別子と 呼ばれるものに署名し、この結果をサーバに送ります。 サーバはこれに対応する公開鍵が .Pa $HOME/.ssh/authorized_keys2 ファイルに存在するかどうかチェックし、 もし両方の鍵が存在してその署名が正しければアクセスを許可します。 セッション識別子は共有 Diffie-Hellman 値によって与えられ、この値は クライアントとサーバのみが知ることができます。 .Pp 公開鍵認証が失敗するか、それが使えなかった場合、リモートホストには そのユーザであることを証明するパスワードが送られます。この プロトコル 2 の実装はまだ Kerberos や OPIE 認証をサポートしていません。 .Pp プロトコル 2 は信頼性 (通信は 3DES, Blowfish, CAST128 または Arcfour によって暗号化されます) や、データが途中で改竄されることを防ぐための追加の機構 (hmac-sha1, hmac-md5) を提供しています。プロトコル 1 では 接続の清潔さを保証する強力なメカニズムは存在しないことに注意してください。 .Pp .Ss ログインセッション と リモート実行 .Pp ユーザの同一性が確認されると、サーバは与えられたコマンドを実行するか、 そのマシンにログインさせユーザに標準のリモートマシンでのシェル環境を 与えます。リモートコマンドあるいはシェルにおけるすべての通信は 自動的に暗号化されます。 .Pp 仮想端末が割り当てられる場合 (通常のログイン時)、ユーザは .Ic ~. という文字を入力することによって接続を切ることができ、 .Ic ~^Z によって .Nm をサスペンドできます。 転送されている接続の一覧は .Ic ~# によって見ることができます。X11 あるいは TCP/IP 接続が 終了するのを待つためにセッションがブロックされているときは、 .Ic ~& を入力することによって ssh をバックグラウンド化することができます (ユーザのシェルがまだ生きているときに これをやってはいけません、 シェルが止まってしまいます)。 使用可能なエスケープ文字の一覧は、 .Ic ~? . で見ることができます。 .Pp チルダ記号そのものを 1回入力するには .Ic ~~ を押します (あるいは上で述べられている以外の文字をチルダに続けます)。 エスケープ文字は、必ず改行の直後に来なければ特別な文字とは 解釈されません。このエスケープ文字は設定ファイルかコマンドラインから 変更することもできます。 .Pp もし仮想端末が割り当てられていない場合、そのセッションは透過となり、 バイナリファイルもきちんと送ることができます。ほとんどのシステムでは エスケープ文字を .Dq none に設定すると、たとえ端末が使われていても 透過なセッションにすることができます。 .Pp セッションは、リモートマシン上のコマンドやシェルが完了し、すべての X11 や TCP/IP 接続が閉じられると終了します。このときのリモート プログラムの終了状態が .Nm ssh の終了状態となります。 .Pp .Ss X11 と TCP の転送 .Pp ユーザが X11 を使っている (環境変数 .Ev DISPLAY が設定されている) 場合には、 X11 ディスプレイへの接続をリモート側に転送するようにできます。これは、 シェル (あるいはコマンド) から起動された X11 プログラムはどれも 暗号化された通信路を通って、本当の X サーバへの接続はローカルマシン上から なされるようになるのです。ユーザは .Ev DISPLAY を手動で設定すべきではありません。 X11 接続の転送はセキュリティを弱めるためデフォルトでは禁止されていますが、 コマンドラインあるいは設定ファイルによって有効にできます。 .Pp .Nm によって設定された .Ev DISPLAY の値はサーバマシン上を指すように なっていますが、ディスプレイ番号は 0 より大きい値になっているでしょう。 これは正常な状態です。 .Nm は暗号化された通信路を介して接続を転送するため、 サーバマシン上に .Dq プロキシーの X サーバをつくるのでこうなるのです。 .Pp また、 .Nm は自動的にサーバマシン上で Xauthority の情報を用意します。 この目的のため、 .Nm はランダムな認証クッキーを生成し、サーバ側の Xauthority に格納し、接続が転送されるときはすべてこのクッキーを持たせる ようにします。そして接続が開かれるときに、これが本物のクッキーと置き換わる ようにするのです。本物の認証クッキーがサーバ側に送られることは 決してありません (し、それに暗号化されないままでクッキーが送られるような こともありません)。 .Pp ユーザが認証エージェントを使っている場合、そのエージェントへの接続は それがコマンドラインあるいは設定ファイルで禁止されていない限り、 自動的にリモート側に転送されます。 .Pp 安全な通信路をつかった任意の TCP/IP 接続への転送は、 コマンドラインあるいは設定ファイルで指定します。TCP/IP 転送の 応用として、ひとつは電子預金への安全な接続が考えられます。ほかにも ファイヤーウォールを抜けるなどの使いみちがあるでしょう。 .Pp .Ss サーバ認証 .Pp .Nm はこれまでに使った鍵すべてが入っているデータベースを 自動的に保持し、チェックします。これらのうち、RSA ホスト鍵はユーザの ホームディレクトリにある .Pa $HOME/.ssh/known_hosts に格納され、 DSA ホスト鍵は .Pa $HOME/.ssh/known_hosts2 に格納されます。 加えて、 .Pa /etc/ssh/ssh_known_hosts および .Pa /etc/ssh/ssh_known_hosts2 が既知のホストとして自動的にチェックされます。 新しいホストはユーザ側のファイルに自動的に追加されていきます。 もし、あるホストの鍵が変わっていた場合、 .Nm は警告を発してパスワード認証を禁止します。 これはトロイの木馬がユーザのパスワードを盗むのを防ぐためです。 この仕組みのもうひとつの目的は、どこか他の場所で man-in-the-middle 攻撃が行われ、暗号化がたくみにかわされてしまうのを防ぐことです。 .Cm StrictHostKeyChecking オプション (下記参照) はホスト鍵が知られていなかったり、 それが変更されていた場合のログインを防ぐために使われます。 .Sh オプション .Bl -tag -width Ds .It Fl a 認証エージェントの接続を転送することを禁止します。 .It Fl A 認証エージェントの接続を転送することを許可します。 これは設定ファイルによってホストごとに指定することも可能です。 .It Fl c Ar blowfish|3des このセッションで使われる暗号化の方法を指定します。デフォルトでは .Ar 3des が使われます。これが安全であると考えられているためです。 .Ar 3des (トリプル des) は 3つの異なる鍵をつかって 暗号化-復号化-暗号化を行うもので、 .Nm ではもう完全にはサポートされなくなった .Ar des 暗号化よりもおそらく安全です。 .Ar blowfish は高速なブロック暗号化アルゴリズムで、非常に安全のようです。 そして .Ar 3des よりかなり速くなります。 .It Fl c Ar "3des-cbc,blowfish-cbc,arcfour,cast128-cbc" さらにプロトコル バージョン 2 では、暗号化の方法をカンマで 区切ったリストにより優先順位をつけて指定することができます。 プロトコル バージョン 2 は 3DES, Blowfish および CAST128 を それぞれ CBC モードでサポートし、Arcfour もサポートします。 .It Fl e Ar ch|^ch|none 仮想端末を使うセッションにおけるエスケープ文字を指定します (デフォルトは .Ql ~ )。エスケープ文字は行頭に来たときのみ認識されます。 エスケープ文字のあとにドット ( .Pq Ql \&. ) がくると接続が閉じられ、control-Z がくると接続はサスペンドされます。 そのエスケープ文字自身がきたときには、その文字が 1回だけ送られます。 エスケープ文字を .Dq none に指定するとあらゆるエスケープ機能が禁止され、 セッションは完全に透過になります。 .It Fl f .Nm がコマンドを実行する直前に、 バックグラウンドに移行するよう指示します。これは .Nm にパスワードあるいはパスフレーズを入力する必要はあるものの、 そのコマンド自体はバックグラウンドで実行させたいときに有用です。 これは .Fl n オプションも含んでいます。 リモートサイトで X11 プログラムを起動させる方法では、 .Ic ssh -f host xterm などとやるのがおすすめです。 .It Fl g リモートホストが転送されたローカルなポートに接続することを許可します。 .It Fl i Ar identityファイル RSA 認証のさい、 identity (秘密鍵) を読むファイルを指定します。 デフォルトはユーザのホームディレクトリにある .Pa $HOME/.ssh/identity になっています。identity ファイルは設定ファイルによって、 ホストごとに指定することもできます。複数の .Fl i オプションを指定することも可能です。 (設定ファイルで複数の鍵を指定することもできます。) .It Fl k Kerberos チケットおよび AFS トークンの転送を禁止します。 これは設定ファイルによって、ホストごとに指定することもできます。 .It Fl l Ar ログイン名 リモートマシン上でログインするユーザ名を指定します。 これは設定ファイルによって、ホストごとに指定することもできます。 .It Fl n 標準入力を .Pa /dev/null からリダイレクトします (つまり標準入力からの読み込みを禁止します)。 .Nm がバックグラウンドで走るときには、このオプションを指定しなくてはいけません。 よくある手としては、リモートマシン上で X11 のプログラムを 走らせるときにこれを使うことです。たとえば、 .Ic ssh -n shadows.cs.hut.fi emacs & で emacs を立ち上げると、X11 接続は暗号化された経路を 介して自動的に転送されます。 .Nm プログラムはこの後バックグラウンドに移行するでしょう。 (これは .Nm がパスワードあるいはパスフレーズを訊いてくるときには使えません。 .Fl f オプションも参照してください。) .It Fl N リモートコマンドを実行しません。これはポート転送のみを 行いたい場合に有用です (プロトコル バージョン 2 のみ)。 .It Fl o Ar オプション 設定ファイルと同じ形式でオプションを与えたいときに使用します。 コマンドラインオプションでは指定できないオプションを指定したいときに 有用です。このときのオプションは設定ファイルの 1行と 同じ形式である必要があります。 .It Fl p Ar ポート リモートホストに接続するポート番号あるいはポート名を指定します。 これは設定ファイルによって、ホストごとに指定することもできます。 .It Fl P 外に向けての接続を、特権ポートでないポートから張るようにします。 これはファイヤーウォールが特権ポートからの接続を禁じているときに 使われます。このオプションを指定すると、 .Cm RhostsAuthentication および .Cm RhostsRSAAuthentication オプションがオフになることに注意してください。 .It Fl q 静かなモード。すべての警告メッセージや診断メッセージは 抑制されます。致命的なエラーだけが表示されます。 .It Fl t 強制的に仮想端末を割り当てます。これはリモートマシン上で 任意の画面ベースのプログラムを実行するときに非常に有用かもしれません。 たとえば、メニューサービスを実装するときなどに。 .It Fl T 仮想端末の割り当てを禁止します (プロトコル バージョン2 のみ)。 .It Fl v 冗長表示モード。 .Nm が進行中のデバッグメッセージを表示するようにします。 これは接続や認証、設定の問題をデバッグするときに助けとなります。 またユーザがパスワードとして "s/key" を入力したときに、 .Xr skey 1 チャレンジを表示するためにも冗長モードが使われます。 複数の -v オプションをつけると冗長性が増します。最大は 3個です。 .It Fl x X11 の転送を禁止します。 .It Fl X X11 の転送を許可します。 これは設定ファイルによって、ホストごとに指定することもできます。 .It Fl C すべてのデータを圧縮するよう指示します (標準入力、標準出力、 標準エラー出力、転送された X11 や TCP/IP 接続を含む)。圧縮に 使われるアルゴリズムは .Xr gzip 1 と同じもので、 .Dq レベル は .Cm CompressionLevel (下記参照) によって制御できます。 圧縮は、モデムその他の遅い接続においては必要ですが、高速な ネットワークでは速度が低下するだけです。このデフォルト値は 2ホスト間ごとに設定ファイルに書くことができます。下の .Cm Compress オプションを参照してください。 .It Fl L Ar ポート:ホスト:ホスト側ポート 与えられたローカル (クライアント) ホスト上のポートが、 与えられたリモートホスト上のポートに転送されるようにします。 これはローカル側で .Ar port に listen (接続受け付け) 用の ソケットを割り当てることにより行われます。 このポートに向けて行われた接続はいつでも 安全な通信路を経由してリモートマシン上に到達し、そこから .Ar host のポート .Ar hostport に接続されるようになります。 ポート転送は設定ファイルによっても指定できます。特権ポートを 転送できるのは root だけです。IPv6 アドレスはこれとは別の 形式で指定されます: .Ar port/host/hostport .It Fl R Ar ポート:ホスト:ホスト側ポート 与えられたリモート (サーバ) ホスト上のポートが、 与えられたローカルホスト上のポートに転送されるようにします。 これはリモート側で .Ar port に listen (接続受け付け) 用の ソケットを割り当てることにより行われます。 このポートに向けて行われた接続はいつでも 安全な通信路を経由してローカルマシン上に到達し、ここから .Ar host のポート .Ar hostport に接続されるようになります。 ポート転送は設定ファイルによっても指定できます。特権ポートを 転送できるのは、リモートマシン上に root としてログインしているときだけです。 .It Fl 2 .Nm がプロトコル バージョン 2 のみを使うよう強制します。 .It Fl 4 .Nm が IPv4 アドレスのみを使うよう強制します。 .It Fl 6 .Nm が IPv6 アドレスのみを使うよう強制します。 .El .Sh 設定ファイル .Nm は次のものから、この順序で設定情報を取得します: コマンドライン オプション、ユーザの設定ファイル .Pq Pa $HOME/.ssh/config 、そしてシステムの設定ファイル .Pq Pa /etc/ssh/ssh_config 。各設定項目は、ぞれそれ 最初に取得されたものが使われます。設定ファイルはいくつかのセクションに 分かれており、これらは .Dq Host 指定子により区切られていて、その 指定子のパターンどれかにマッチするホストに対応するセクションが 適用されます。マッチさせるホストの名前は、コマンドラインから 与えられたものになります。 .Pp 各設定項目で最初に得られた値が使われるので、よりホストに特化した宣言を ファイルの先頭近くに置くようにし、一般的なものを後に置くのが よいでしょう。 .Pp 設定ファイルは以下のような形式になっています: .Pp 空行、および .Ql # で始まる行は、コメントとみなされます。 .Pp それ以外の場合、この行は .Dq キーワード 引数 の形式とみなされます。 とりうるキーワードとその意味は以下のとおりです (設定ファイルは大文字小文字を区別することに注意してください) : .Bl -tag -width Ds .It Cm Host (ホスト) これ以後の宣言 (次の .Cm Host キーワードが現れるまで) を、 このキーワードに与えられるパターンのどれかにマッチするホストのみに 限定します。パターン中では .Ql \&* と .Ql ? がワイルドカードとして使えます。単独の .Ql \&* は、あらゆるホストに対してのデフォルトになります。 ここでのホストとは、コマンドライン引数で与えられた .Ar hostname のことです (つまりホスト名はマッチングの前に正規化されたりしません)。 .It Cm AFSTokenPassing (AFS トークンパス) リモートホストに AFS トークンを渡すかどうかを指定します。 このキーワードがとりうる引数の値は .Dq yes あるいは .Dq no のどちらかになります。 .It Cm BatchMode (バッチ処理モード) これが .Dq yes に設定されているときは passphrase および password の 問い合わせが禁止されます。このオプションはスクリプトその他の バッチ処理中で、パスワードを打ち込むユーザがいない場合に有用です。 引数の値は .Dq yes あるいは .Dq no です。 .It Cm CheckHostIP (ホスト IP のチェック) このフラグが .Dq yes に設定されていると、ssh は .Pa known_hosts ファイルにあるホストの IP アドレスも加えてチェックするようになります。 これによって、DNS 詐称によりホスト鍵が変えられたことを 検出できます。このオプションが .Dq no に設定されている場合は、このチェックは行われません。 .It Cm Cipher (暗号化アルゴリズム) プロトコル バージョン 1 のセッションで使われる暗号化の アルゴリズムを指定します。現在のところ .Dq blowfish および .Dq 3des がサポートされており、デフォルトは .Dq 3des です。 .It Cm Ciphers (複数の暗号化アルゴリズム) プロトコル バージョン 2 で許可されている暗号化アルゴリズムの 優先順位を指定します。複数の暗号化アルゴリズムを指定する場合は カンマで区切ってください。デフォルトは .Dq 3des-cbc,blowfish-cbc,cast128-cbc,arcfour です。 .It Cm Compression (圧縮) データ圧縮を行うかどうかを指定します。 引数の値は .Dq yes あるいは .Dq no です。 .It Cm CompressionLevel (圧縮レベル) 圧縮をおこなうさいの圧縮レベルを指定します。この引数がとる値は 整数の 1 (高速) から 9 (遅いが高圧縮) までです。デフォルトの 値は 6 で、ほとんどのアプリケーションにはこれで充分です。 この値の意味は .Xr gzip 1 と同じです。 .It Cm ConnectionAttempts (接続試行回数) 接続を試みる回数 (1秒に一回) を指定します。これを越えると ssh は rsh に移行するか、終了してしまいます。この値は整数で なければなりません。これは、ときどき接続に失敗する環境での スクリプトなどに有用です。 .It Cm DSAAuthentication (DSA 認証) DSA 認証を行うかどうかを指定します。この引数の値は .Dq yes か .Dq no . です。DSA 認証は DSA identity ファイルが存在するときにのみ 試されます。このオプションはプロトコル バージョン 2 にしか適用されません。 .It Cm EscapeChar (エスケープ文字) エスケープ文字を設定します (デフォルトは .Ql ~ )。エスケープ文字はコマンドラインからも指定できます。 この引数には 1つの文字か、 .Ql ^ に1文字を付けたもの、あるいはエスケープ文字の使用をすべて禁止するなら .Dq none を指定します (これはその接続を、バイナリ データに対して透過にすることになります)。 .It Cm FallBackToRsh (rsh への退行) .Nm 経由の接続が拒否された (connection refused、リモートホスト上で .Xr sshd 8 が listen していない) とき、かわりに (このセッションが 暗号化されていないという適切な警告のあとで) .Xr rsh 1 を自動的に使うべきかどうかを指定します。この引数の値は .Dq yes または .Dq no です。 .It Cm ForwardAgent (エージェント転送) 認証エージェントへの接続を、(それがあれば) リモートマシンに 転送するかどうかを指定します。この引数の値は .Dq yes あるいは .Dq no でなければならず、デフォルトは .Dq no です。 .It Cm ForwardX11 (X11 転送) X11 接続を自動的に安全な通信路へリダイレクトし、 .Ev DISPLAY を設定するかどうかを指定します。この引数の値は .Dq yes あるいは .Dq no でなければならず、デフォルトは .Dq no です。 .It Cm GatewayPorts (ゲートウェイポート) ローカルから転送されたポートに、リモートホストが接続することを 許可するかどうかを指定します。この引数の値は .Dq yes または .Dq no でなければならず、デフォルトは .Dq no です。 .It Cm GlobalKnownHostsFile (大域的 known_host ファイル) .Pa /etc/ssh/ssh_known_hosts のかわりに使用するファイルを指定します。 .It Cm HostName (本当のホスト名) ログインする本当のホスト名を指定します。これはホストの ニックネームや省略形を指定するときに使います。デフォルトは コマンドラインから与えられた名前になります。 (コマンドライン、 .Cm HostName 指示子の両方とも) 数字の IP アドレスでもかまいません。 .It Cm IdentityFile (identity ファイル) ユーザの RSA 認証用 identity (秘密鍵) を読むファイルを 指定します (デフォルトはユーザのホームディレクトリにある .Pa $HOME/.ssh/identity です)。加えて、認証のさいには認証エージェントによって現れる identity も 使われます。ファイル名ではユーザのホームディレクトリを表すのに チルダ表記を使うことができます。設定ファイルには複数の identity が 指定されていてもよく、この場合すべての identity が順に試されます。 .It Cm IdentityFile2 (identity ファイル 2) ユーザの DSA 認証用 identity (秘密鍵) を読むファイルを 指定します (デフォルトはユーザのホームディレクトリにある .Pa $HOME/.ssh/id_dsa です)。ファイル名はユーザのホームディレクトリを 表すのにチルダ表記を使うことができます。 設定ファイルには複数の identity が指定されていてもよく、 この場合すべての identity が順に試されます。 .It Cm KeepAlive (生かしておく) システムが相手のマシンに keepalive メッセージを送るべきかどうかを 指定します。これが送られると、接続の異常終了や相手マシンの クラッシュが通知されるようになります。しかし、これは 経路が一時的にダウンしていても接続が死んでいるということになってしまい、 これが気にいらない人もいます。 .Pp デフォルトは .Dq yes です (keepalive を送る)。クライアントはネットワークがダウンするか、 リモートホストが落ちると通知してきます。 これはスクリプト中では重要であり、多くのユーザもそれを望んでいます。 .Pp Keepalive を禁止するには、 クライアントとサーバ両方の側の設定ファイルでこの値を .Dq no にする必要があります。 .It Cm KerberosAuthentication (Kerberos 認証) Kerberos 認証を使うべきかどうか指定します。この引数の値は .Dq yes あるいは .Dq no です。 .It Cm KerberosTgtPassing (Kerberos TGT パス) Kerberos TGT がサーバを転送するかどうかを指定します。これは その Kerberos サーバが実際に AFS kaserver であるときのみ 機能します。この引数の値は .Dq yes あるいは .Dq no です。 .It Cm LocalForward (ローカル転送) ローカルマシンの TCP/IP ポートを、安全な通信路を経由させて リモートマシン上から与えられた host:port に転送するよう指示します。 最初の引数はポートで、2番目の引数には host:port の形で指定します。 ポート転送は複数指定することができ、コマンド ラインから追加指定することもできます。特権ポートを転送できるのは スーパーユーザだけです。 .It Cm LogLevel (ログレベル) .Nm ssh が出力するログメッセージの冗長性レベルを指定します。 とりうる値は次のとおりです: QUIET, FATAL, ERROR, INFO, VERBOSE および DEBUG。 デフォルトでは INFO です。 .It Cm NumberOfPasswordPrompts (パスワード試行回数) パスワードを何回まで訊くかを指定します。 これを越えるとあきらめてしまいます。 このキーワードの引数は整数でなくてはなりません。 デフォルト値は 3 です。 .It Cm PasswordAuthentication (パスワード認証) パスワード認証を使うかどうかを指定します。この引数の値は .Dq yes または .Dq no です。このオプションはプロトコル バージョン 1 と 2 の 両方に適用されることに注意してください。 .It Cm Port (ポート) リモートホストに接続するときのポート番号あるいはポート名を指定します。 デフォルトは 22 です。 .It Cm Protocol (プロトコル) .Nm がサポートすべきプロトコルのバージョンの優先順位を指定します。 とりうる値は .Dq 1 と .Dq 2 で、複数のバージョンを 指定するときはカンマで区切ってください。デフォルト値は .Dq 1,2 です。これは .Nm がまず始めにバージョン 1 を試し、それが失敗した場合に バージョン 2 を試すことを指示しています .It Cm ProxyCommand (プロキシ コマンド) サーバに接続するのに使用するコマンドを指定します。コマンド文字列は .Pa /bin/sh によって実行され、これは行末まで書くことができます。 コマンド文字列では、 .Ql %h は接続するホスト名に置換され、 .Ql %p はポート番号あるいはポート名に置換されます。 コマンドは基本的に何でもよいのですが、標準入力から読み込み、 標準出力に書き込むようなものでなければいけません。 これは最終的にサーバマシン上で動いている .Xr sshd 8 に接続するか、どこか別の場所で .Ic sshd -i を起動させるようにします。ホスト鍵の管理は接続されているホストの HostName を使って行われます (デフォルトでは、これはユーザが タイプした名前になります)。このオプションを使うと、 .Cm CheckHostIP は使用できませんので注意してください。 [訳注: それと rhosts 認証も使用できなくなります。これは 特権ポートから接続を張る方法がないためです] .Pp .It Cm RemoteForward (リモート転送) リモートマシン上の TCP/IP ポートを、安全な通信路を経由させて ローカルマシン上から与えられた host:post に転送するよう指示します。 最初の引数はポートで、2番目の引数には host:port の 形で指定します。ポート転送は複数指定することができ、コマンド ラインから追加指定することもできます。特権ポートを転送できるのは スーパーユーザだけです。 .It Cm RhostsAuthentication (rhosts 認証) Rhosts ベースの認証を試みるかどうかを指定します。この宣言は クライアント側にのみ影響し、セキュリティにまったくなんの 効果もないことに注意してください。rhosts 認証を禁止すると、 rhosts 認証が使われないときに、遅い接続での認証にかかる時間が 短縮されます。ほとんどのサーバでは RhostsAuthentication は 安全でないという理由で許可されていません (RhostsRSAAuthenticationを参照)。 この引数の値は .Dq yes または .Dq no です。 .It Cm RhostsRSAAuthentication (rhosts-RSA 認証) RSA ホスト認証を使った Rhosts ベースの認証を試みるかどうかを 指定します。これはほとんどのサイトでの基本的な認証方法です。 この引数の値は .Dq yes または .Dq no です。 .It Cm RSAAuthentication (RSA 認証) RSA 認証を試みるかどうかを指定します。この引数の値は .Dq yes または .Dq no にしてください。RSA 認証は identity が存在するか、 認証エージェントが動いているときにのみ試されます。このオプションは プロトコル バージョン 1 にしか適用されないので注意してください。 .It Cm SkeyAuthentication (s/key 認証) .Xr skey 1 認証を使うかどうかを指定します。引数の値は .Dq yes あるいは .Dq no になります。デフォルトは .Dq no です。 .It Cm StrictHostKeyChecking (厳格なホスト鍵チェック) このフラグが .Dq yes に設定されていると、 .Nm が .Pa $HOME/.ssh/known_hosts および .Pa $HOME/.ssh/known_hosts2 に自動的にホスト鍵を追加することはしなくなり、ホスト鍵が変わっている ホストには接続を拒否します。これはトロイの木馬攻撃に対する最大の 防御になります。しかし適切な .Pa /etc/ssh/ssh_known_hosts や .Pa /etc/ssh/ssh_known_hosts2 ファイルをもっていないものの、 しょっちゅう新しいホストに接続するような場合は、この機能は余計な お世話になります。基本的にこのオプションは、ユーザが新しいホストを 手で追加するよう強制するものです。ふつうこのオプションは 禁止されていて、新しいホストは自動的に known_hosts ファイルに 追加されていきます。どちらの場合も known_hosts にあるホスト鍵は 自動的に検証されます。この引数の値は .Dq yes または .Dq no です。 .It Cm UsePrivilegedPort (特権ポートの使用) 外に向けての接続をおこなうときに、 特権ポートを使用するかどうかを指定します。この引数の値は .Dq yes または .Dq no で、デフォルトは .Dq yes になっています。このオプションを .Dq no にすると .Cm RhostsAuthentication および .Cm RhostsRSAAuthentication が使えなくなることに注意してください。 [訳注: .Cm ProxyCommand を使っているときも特権ポートは 使えないため、これらの認証は使えなくなります。] .It Cm User (ユーザ) ログインするユーザ名を指定します。これは異なるマシン上で 異なるユーザ名を持っているような場合に有用です。 これでコマンドラインからわざわざユーザ名を与えなくてもすみます。 .It Cm UserKnownHostsFile (known_hosts ファイルの使用) .Pa $HOME/.ssh/known_hosts の代わりに使われるファイルを指定します。 .It Cm UseRsh (rsh の使用) このホストに対して rlogin/rsh が使われるべきかどうかを指定します。 相手のホストが .Nm プロトコルをまったくサポートしていないということもあり得ます。 こうなったとき .Nm .Xr rsh 1 を exec します。このオプションが指定されていると、 これ以外のすべてのオプション ( .Cm HostName を除く) は無視されます。とりうる値は .Dq yes あるいは .Dq no です。 .It Cm XAuthLocation (xauth の位置) .Xr xauth 1 プログラムの場所を指定します。デフォルトは .Pa /usr/X11R6/bin/xauth です。 .El .Sh 環境変数 .Nm はふつう以下の環境変数を設定します: .Bl -tag -width Ds .It Ev DISPLAY .Ev DISPLAY 変数は X11 サーバの場所を示しています。これは .Nm によって、 .Dq hostname:n という形の値が自動的にセットされます。 ここで hostname の部分はシェルが走っているホストを表しており、 n は n \*(>= 1 の整数です。 .Nm はX11 接続を安全な通信路で転送するために、この特別な値を使うのです。 ユーザはふつう DISPLAY を明示的に設定すべきではありません。 なぜならそうすると X11 の接続が安全でなくなってしまうからです (しかもユーザは認証に必要なクッキーを手でコピーしなければならなくなります)。 .It Ev HOME ユーザのホームディレクトリのパス名に設定されます。 .It Ev LOGNAME .Ev USER と同じです。この環境変数を使うシステムで互換性を保つために設定されます。 .It Ev MAIL ユーザのメールボックスを指しています。 .It Ev PATH デフォルトの .Ev PATH です。これは .Nm ssh のコンパイル時に指定されます。 .It Ev SSH_AUTH_SOCK 認証エージェントと通信するのに使われる Unix ドメインソケットの パスを表しています。 .It Ev SSH_CLIENT 接続の末端にあるクライアントの識別子です。この変数にはスペースで 区切られた 3つの値が入っています: クライアントの IP アドレス、 クライアントのポート、および サーバのポート。 .It Ev SSH_TTY 現在のシェルあるいはコマンドに割り当てられている tty の名前 (端末装置へのパス) にセットされます。現在のセッションが端末を 持たない場合、この変数はセットされません。 .It Ev TZ デーモンが起動したとき、現在の時間帯を表すタイムゾーン変数が セットされていると、それがここにセットされます (つまりデーモンは その値を新規の接続に渡します)。 .It Ev USER ログインしているユーザ名にセットされます。 .El .Pp これらに加えて、 .Nm は .Pa $HOME/.ssh/environment を読み込み、 .Dq VARNAME=value という形式の行を環境変数に追加します。 .Sh 関連ファイル .Bl -tag -width Ds .It Pa $HOME/.ssh/known_hosts ユーザがログインしたことのあるホストすべてのホスト鍵 ( .Pa /etc/ssh/ssh_known_hosts にないもの) を記録します。 .Xr sshd 8 も見てください。 .It Pa $HOME/.ssh/identity, $HOME/.ssh/id_dsa RSA および DSA 認証用のユーザの identity (秘密鍵)を格納します。 これらのファイルには他人に見られるとまずいデータが入っているため、 そのユーザには読めても、他人からはアクセスできないようにしてください (読み込み/書き込み/実行属性ともに)。 .Nm は、他人がアクセスできるようになっている identity ファイルは無視するので注意してください。 鍵を作成するときにパスフレーズを指定することも可能です。この パスフレーズはファイル中の見られるべきでない部分を、 3DES を使って暗号化するのに用いられます。 .It Pa $HOME/.ssh/identity.pub, $HOME/.ssh/id_dsa.pub 認証のための公開鍵を格納します (鍵ファイルのうち公開できる 部分が可読形式で格納されています)。 .Pa $HOME/.ssh/identity.pub ファイルの内容は、RSA 認証を使ってログインしたいすべてのマシン上の .Pa $HOME/.ssh/authorized_keys ファイルに加えられていなければいけません。また、 .Pa $HOME/.ssh/id_dsa.pub ファイルの内容も同様に、 DSA 認証を使ってログインしたいすべてのマシン上にある .Pa $HOME/.ssh/authorized_keys2 ファイルに加えられている必要があります。 これらのファイルは見られてもよいため、他人が読めるように しておいてもかまいません (が必須ではないです)。これらのファイルが 自動的に使われることは決してなく、必要でもありません。これはただ ユーザの便宜をはかるために提供されています。 .It Pa $HOME/.ssh/config これはユーザごとの設定ファイルです。 このファイルの形式は上で説明されているものです。 このファイルは .Nm クライアントによって使われます。 このファイルはふつう特に見られてはまずい情報は含んでいません。 しかし望ましいパーミッションとしては、そのユーザからは 読み/書きが可能で、他人からはアクセス不可能に しておくのがよいでしょう。 .It Pa $HOME/.ssh/authorized_keys このユーザのログインに使われる RSA 公開鍵のリストです。この形式は .Xr sshd 8 のマニュアルで説明されています。 このファイルのいちばん簡単な形式は、 .pub 公開鍵ファイルと同じにすることです (つまり各行に、係数のビット数、公開されている指数、 係数およびコメントフィールドがスペースで区切られて 格納される)。これは見られても非常にまずいというものでは ありませんが、できればこのユーザからは読み/書きが可能で、 他人からはアクセス不可能なパーミッションに設定しておくのがよいでしょう。 .It Pa $HOME/.ssh/authorized_keys2 このユーザのログインに使われる DSA 公開鍵のリストです。この ファイルも見られて非常にまずいというものではありませんが、 このユーザからは読み/書きが可能で、他人からはアクセス不可能の パーミッションを設定しておくのがよいでしょう。 .It Pa /etc/ssh/ssh_known_hosts, /etc/ssh/ssh_known_hosts2 システム全体にわたる known hosts 鍵です。 .Pa /etc/ssh/ssh_known_hosts は RSA 鍵を、 .Pa /etc/ssh/ssh_known_hosts2 は DSA 鍵を格納します。 これらのファイルはシステム管理者によって用意され、その組織内で 使われるすべてのマシン用の公開ホスト鍵を格納するようになっているはずです。 このファイルは誰からも読めるようになっていなければいけません。 このファイルは 1行ごとに公開鍵を格納し、これは次のような 形式になっています (各フィールドはスペースで区切られます): システム名、係数のビット数、公開されている指数、係数、そして オプションとしてコメント用フィールド。同一のマシンにいくつかの 異なる名前が使われている場合は、それらをずべてカンマで区切って 列挙する必要があります。この形式は .Xr sshd 8 マニュアルページで説明されています。 .Pp .Xr sshd 8 がログイン時にクライアント側のホストを検証するさいには、 システムの正式な名前 (ネームサーバの返す canonical name) が 使われます。これ以外の名前が必要なのは次のような理由によります。 .Nm は、鍵を検査する前にユーザの指定した名前を正式なものに変換する、 ということをしません。何物かがネームサーバに仕掛けを入れれば、 これを使ってホスト認証をだますことが可能になってしまうからです。 .It Pa /etc/ssh/ssh_config システム全体にわたる設定ファイルです。このファイルはユーザの設定 ファイルでは指定されなかった値を提供し、また設定ファイルを 持たないユーザのためのデフォルトにもなります。このファイルは 誰にでも読み込み可能でなければいけません。 .It Pa $HOME/.rhosts このファイルは .Pa \&.rhosts 認証で使われる、ログインを許可されたホスト名と ユーザの対の一覧です。(このファイルは rlogin と rsh でも 使われるので、安全ではありません。) ファイル中の各行はホスト名 (ネームサーバが返す正式な形式のもの) およびそのホストでの ユーザ名をスペースで区切って格納します。 ユーザのホームディレクトリが NFS パーティション上にあるような マシンでは、このファイルは誰にでも読み込み 可能でなければなりません。 .Xr sshd 8 はこれを root として読むからです。 加えて、このファイルはそのユーザの所有でなければならず、 他の人が書き込み可能であってはいけません。 ほとんどのマシンにおける推奨されるパーミッションは、そのユーザが 読み書き可能で、他の人はアクセス不可能というものです。 .Pp デフォルトでは、 .Xr sshd 8 で \s+2.\s0rhosts 認証が許可されるには、 まず RSA ホスト認証に成功することが必要になっています。 サーバマシンが .Pa /etc/ssh/ssh_known_hosts の中にそのクライアントのホスト鍵を持っていない場合は、 .Pa $HOME/.ssh/known_hosts ファイルにそれを入れておくことができます。 これをするのにいちばん簡単なのは、サーバマシンから ssh を使ってクライアントマシンに接続し直すことです。 こうすることにより、そのホスト鍵が自動的に .Pa $HOME/.ssh/known_hosts に追加されます。 .It Pa $HOME/.shosts このファイルは .Pa \&.rhosts とまったく同じように扱われます。このファイルは、 .Xr rlogin 1 や .Xr rsh 1 ではログインできないようにしつつ、 .Nm で rhosts 認証を使えるようにするためにあります。 .It Pa /etc/hosts.equiv このファイルは .Pa \&.rhosts 認証で使われます。ここには正式なホスト名が各行に記載されています (この形式の完全な説明は .Xr sshd 8 マニュアルページにあります)。このファイルに クライアントホストが載っていると、クライアント側とサーバ側の ユーザ名が同じ場合にログインは自動的に許可されます。普通は RSA ホスト認証が成功してからでなくてはいけません。このファイルは root のみが書き込めるようにしておくべきです。 .It Pa /etc/ssh/shosts.equiv このファイルは .Pa /etc/hosts.equiv とまったく同じように扱われます。このファイルは .Nm を使うが、rsh/rlogin は使わないユーザのログインを許可するのに有用です。 .It Pa /etc/ssh/sshrc このファイルのコマンドは、ユーザがログインしてシェル (あるいはコマンド) が開始する直前に .Nm によって実行されます。より詳しい情報については .Xr sshd 8 マニュアルページを見てください。 .It Pa $HOME/.ssh/rc このファイルのコマンドは、ユーザがログインしてシェル (あるいはコマンド) が開始する直前に .Nm によって実行されます。より詳しい情報については .Xr sshd 8 マニュアルページを見てください。 .It Pa $HOME/.ssh/environment 環境変数の追加定義を格納します。上の .Sx 環境変数 の節を見てください。 .It Pa libcrypto.so.X.1 ssh が動作するためには、このライブラリで RSA アルゴリズムの サポートを含むバージョンが必要です。 .El .Sh 作者 OpenSSH は Tatu Ylonen によってリリースされたオリジナルの (フリー) ssh 1.2.12 から派生したものです。しかしバグがとり除かれ、より新しい機能が 追加されています。1.2.12 がリリースされるとすぐに、オリジナルの ssh は だんだんと制限されたライセンスになっていき、フリーのバージョンに対する 要求が生まれました。 .Pp このバージョンの OpenSSH は… .Bl -bullet .It 何らかの制限的事項 (つまり特許など。 .Xr ssl 8 を参照) がついているコンポーネントはすべて、 ソースコードから直接削除されています。 かわりにライセンスあるいは特許つきのコンポーネントは、 外部ライブラリから取り込まれます。 .It SSH プロトコル 1.5 と 2 をサポートするようにアップデートされました。 これで他のすべての SSH クライアントやサーバと互換になります。 .It .Xr kerberos 8 認証とチケットパスの追加サポートが含まれています。 .It .Xr skey 1 を用いた、使い捨てパスワード (one-time password) 認証をサポートしています。 .El .Pp OpenSSH は以下の人々によって製作されました: Aaron Campbell, Bob Beck, Markus Friedl, Niels Provos, Theo de Raadt, そして Dug Song。 .Pp SSH プロトコル 2 のサポートは Markus Friedl の手によるものです。 .Sh 日本語訳 新山 祐介 (euske@cl.cs.titech.ac.jp) 2000/11/23 .Pp 当マニュアルページは氏のご好意により .Fx 日本語マニュアルに収録させていただいています。 翻訳についてのご意見、ご指摘がありましたら新山氏 、および .Fx jpman プロジェクト までお送りください。 .Sh 関連項目 .Xr rlogin 1 , .Xr rsh 1 , .Xr scp 1 , .Xr ssh-add 1 , .Xr ssh-agent 1 , .Xr ssh-keygen 1 , .Xr telnet 1 , .Xr sshd 8 , .Xr ssl 8 diff --git a/ja_JP.eucJP/man/man1/whois.1 b/ja_JP.eucJP/man/man1/whois.1 index 61c4ab8887..51c5f5c71b 100644 --- a/ja_JP.eucJP/man/man1/whois.1 +++ b/ja_JP.eucJP/man/man1/whois.1 @@ -1,181 +1,193 @@ .\" Copyright (c) 1985, 1990, 1993 .\" The Regents of the University of California. All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" 3. All advertising materials mentioning features or use of this software .\" must display the following acknowledgement: .\" This product includes software developed by the University of .\" California, Berkeley and its contributors. .\" 4. Neither the name of the University nor the names of its contributors .\" may be used to endorse or promote products derived from this software .\" without specific prior written permission. .\" .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" .\" From: @(#)whois.1 8.1 (Berkeley) 6/6/93 -.\" %FreeBSD: src/usr.bin/whois/whois.1,v 1.15.2.1 2000/12/08 15:14:18 ru Exp % +.\" %FreeBSD: src/usr.bin/whois/whois.1,v 1.15.2.2 2001/05/22 07:06:52 ru Exp % .\" -.\" $FreeBSD$ +.\" $FreeBSD: doc/ja_JP.eucJP/man/man1/whois.1,v 1.10 2001/05/14 01:07:30 horikawa Exp $ .Dd November 17, 1999 .Dt WHOIS 1 -.Os BSD 4.3 +.Os .Sh 名称 .Nm whois .Nd インターネットのドメイン名とネットワーク番号のディレクトリサービス .Sh 書式 -.Nm whois +.Nm .Op Fl adgimpQrR6 .Op Fl h Ar host .Ar name ... .Sh 解説 .Nm はネットワークインフォメーションセンタ .Pq Tn NIC のデータベースのレコード検索を行ないます。 .Pp オプションとしては以下のものがあります。 -.Bl -tag -width Ds +.Bl -tag -width indent .It Fl a American Registry for Internet Numbers .Pq Tn ARIN データベースを使用します。 ここには、 .Tn APNIC および .Tn RIPE 以外がカバーする全世界の IP 番号があります。 -連絡先 (ハンドル) 情報は、NIC ハンドルの後に "-ARIN" を付けて検索します: +連絡先 (ハンドル) 情報は、NIC ハンドルの後に +.Qq Li -ARIN +を付けて検索します: .Pp -.D1 Ic $ whois -a foo3-ARIN +.Dl "$ whois -a foo3-ARIN" .Pp .It Fl d US Department of Defense データベースを使用します。 -.Tn \&.MIL +.Tn .MIL のサブドメインの連絡先があります。 .It Fl g US の軍以外の連邦政府データベースを使用します。 -.Tn \&.GOV +.Tn .GOV のサブドメインの連絡先があります。 .It Fl h Ar host デフォルトのバリアントに代えて、指定したホスト用います。 ホスト名もしくは IP 番号を指定可能です。 .Pp デフォルトでは、提供された (単一の) 引数のトップレベルドメイン .Pq Tn TLD -に ".whois-servers.net" を追加することにより、 +に +.Qq Li .whois-servers.net +を追加することにより、 .Nm が使用する whois サーバ名を構築します。 この効果的な方法により、多くの TLD が適切な whois サーバを自動選択できます。 -必要な whois-servers.net サブドメインが見付からない場合、 -提供される whois.crsnic.net になります。 +必要な +.Pa whois-servers.net +サブドメインが見付からない場合、 +提供される +.Pa whois.crsnic.net +になります。 .It Fl i Network Solutions Registry for Internet Numbers -.Pq Tn whois.networksolutions.com +.Pq Pa whois.networksolutions.com データベースを使用します。 ここにはほとんどの -.Tn \&.COM , -.Tn \&.NET , -.Tn \&.ORG , -.Tn \&.EDU +.Pa .COM , .NET , .ORG , .EDU ドメインのネットワーク番号とドメインの連絡先情報があります。 -注意! +.Sy 注意! 現在これらのドメインの登録は、多くの独立した競合する登録会社が行っています。 本データベースには、Network Solutions, Inc. 以外の登録会社が登録した ドメインの情報はまったく含まれません。 -また、InterNIC データベース +また、 +.Tn InterNIC +データベース .Pq Tn whois.internic.net は既に Network Solutions, Inc. の取り扱いでないことに注意してください。 -詳細は http://www.internic.net/ を参照してください。 -連絡先 (ハンドル) 情報は、NIC ハンドルの前に "handle " を付けて検索します: +詳細は +.Pa http://www.internic.net/ +を参照してください。 +.Pp +連絡先 (ハンドル) 情報は、NIC ハンドルの前に +.Qq Li "handle " +を付けて検索します: .Pp -.D1 Ic $ whois -i 'handle foo3' +.Dl "$ whois -i 'handle foo3'" .Pp .It Fl m Route Arbiter Database .Pq Tn RADB データベースを使用します。 ここには、多くのオペレータのネットワークのポリシ仕様があります。 .It Fl p Asia/Pacific Network Information Center .Pq Tn APNIC データベースを使用します。 ここには、東アジア、オーストラリア、ニュージーランド、太平洋諸島の IP 番号があります。 .It Fl Q 高速検索しません。 .Nm が、権威のある whois サーバ (が列挙されていた場合、これ) に名前を問いあわせようとせず、 検索が失敗しても InterNic に問い合わせようとしないことを意味します。 本フラグは、他のフラグと組み合わせると効果がありません。 .It Fl r R\(aaeseaux IP Europ\(aaeens .Pq Tn RIPE データベースを使用します。 ここには、ヨーロッパのネットワーク番号とドメインの連絡先情報があります。 .It Fl R Russia Network Information Center .Pq Tn RIPN データベースを使用します。 ここには、 -.Tn \&.RU +.Tn .RU のネットワーク番号とドメインの連絡先情報があります。 IPv6 Resource Center .Pq Tn 6bone データベースを使用します。 ここには、IPv6 のネットワーク名とアドレスがあります。 .El .Pp .Nm コマンドに指定されたオペランドは空白をはさんで結合され、 指定された .Nm サーバに渡されます。 .Pp 特に .Ar name で指定されなければ、デフォルトでは データベース中のすべてのレコードのほとんどの フィールド (名前、通称 (nicknames)、ホスト名、ネットアドレス、その他) に ついて .Ar name に一致するものを探すという、広範囲な検索を実行します。 .Ar name オペランドの持つ特別な意味や 検索の進め方に関してさらに情報を得るには、 特別な名前 -.Dq Ar help +.Dq Li help を .Ar name に指定して下さい。 .Sh 関連項目 .Rs .%A Ken Harrenstien .%A Vic White .%T NICNAME/WHOIS .%D 1 March 1982 .%O RFC 812 .Re .Sh 歴史 .Nm コマンドは .Bx 4.3 から登場しました。 diff --git a/ja_JP.eucJP/man/man5/login.conf.5 b/ja_JP.eucJP/man/man5/login.conf.5 index 395f49bc5f..6c9cb502ae 100644 --- a/ja_JP.eucJP/man/man5/login.conf.5 +++ b/ja_JP.eucJP/man/man5/login.conf.5 @@ -1,368 +1,374 @@ .\" Copyright (c) 1996 David Nugent .\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, is permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice immediately at the beginning of the file, without modification, .\" this list of conditions, and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" 3. This work was done expressly for inclusion into FreeBSD. Other use .\" is permitted provided this notation is included. .\" 4. Absolutely no warranty of function or purpose is made by the author .\" David Nugent. .\" 5. Modifications may be freely made to this file providing the above .\" conditions are met. .\" -.\" %FreeBSD: src/lib/libutil/login.conf.5,v 1.22.2.7 2001/01/16 10:33:29 ru Exp % +.\" %FreeBSD: src/lib/libutil/login.conf.5,v 1.22.2.8 2001/05/18 05:38:21 obrien Exp % .\" -.\" $FreeBSD$ +.\" $FreeBSD: doc/ja_JP.eucJP/man/man5/login.conf.5,v 1.18 2001/05/14 01:09:29 horikawa Exp $ .Dd November 22, 1996 .Dt LOGIN.CONF 5 .Os FreeBSD .Sh 名称 .Nm login.conf .Nd ログインクラス ケーパビリティ データベース .Sh 書式 .Pa /etc/login.conf , .Pa ~/.login_conf .Sh 解説 .Nm には、ログインクラスについてのさまざまな属性やケーパビリティが 含まれています。 ログインクラス (ユーザアカウントデータベースである .Pa /etc/master.passwd のそれぞれの行について自由に設定できる注釈) は、セッションの アカウンティングやリソース制限、ユーザ環境設定などを決定します。 ログインクラスはシステム内のさまざまなプログラムから利用され、 ユーザのログイン環境を設定するほか、 ポリシー、アカウンティング及び管理上の制限を設定します。 ログインクラスはまた、 システムや利用可能な種々の認証機構に対するユーザ認証手段を提供します。 .Pp システムのユーザクラスケーパビリティデータベースである .Pa /etc/login.conf の中の "default" という特別なレコードは、 .Pa /etc/master.passwd 内に有効なログインクラスを持たない root 以外のすべてのユーザに よって自動的に使われます。有効なログインクラスを持たない uid が 0 の ユーザは、"root" レコードが存在する場合はそのレコードが、 存在しない場合は "default" レコードがログインクラスとして使われます。 .Pp .Fx においては、個々のユーザは .Pa .login_conf というファイルをホームディレクトリに作成することができます。 このファイルは (/etc/login.conf と) 同じフォーマットで、 レコード id が "me" である 1 エントリのみで構成されます。 もし .login.conf が存在するならば、このファイルは .Xr login 1 によって使用され、システムのログインケーパビリティデータベースによって 指定されたユーザ環境設定を上書き設定します。 その際、ログインケーパビリティのサブセット、 典型的には承認やリソース制限そしてアカウンティングを含まないもの のみが上書きされます。 .Pp クラスケーパビリティデータベースのレコードは、コロンで区切られた いくつかのフィールドから構成されています。 各レコードの最初のフィールドは、レコードを特定するための 1 つまたは複数の名前で、それらは '|' 文字で区切られます。 その最初の名前が、最も一般化された短縮名称です。 最後の名前は、ログインケーパビリティエントリをより分かりやすく説明した 長い名前であるべきで、他の名前はその同義語です。 すべての名前は小文字かつ空白を含まないようにすべきですが、 最後の名前は可読性を考慮して、大文字やブランクを含んでいてもよいでしょう。 .Pp ケーパビリティデータベースのフォーマットについての詳細な説明は .Xr getcap 3 を参照してください。 .Sh ケーパビリティ データベース内のそれぞれの行に含まれるフィールドは、 .Xr getcap 3 の慣習に従い、ブール型、文字列型 .Ql \&= 数値型 .Ql \&# があります。 しかしながら数値データのところは、数値型が拒否され文字列型が 受け入れられることがあったり、両方の書式が受け入れられることもあります。 値は次のカテゴリに分類されます。 .Bl -tag -width "program" .It file データファイルへのパス名 .It program 実行可能ファイルへのパス名 .It list コンマや空白で区切られた値のリスト (または値の組) .It path 普通の csh の慣習に従った、空白やコンマで区切られたパス名のリスト (先頭のユーザ名を伴う/伴わないチルダはホームディレクトリに展開される等) .It number 10 進数 (デフォルト)、16 進数 (0x で始まる)、または 8 進数 (0 で始まる) の 数値型の値。数値型の場合、設定できる値は 1 つだけです。 数値型は文字列型のフォーマットでも指定できる場合があります (ケーパビリティタグ '#' の代わりに '=' で値が区切られているなど)。 どの方法が使われた場合でも、データベース中のすべての行は修正したい行の値を 正確に上書きするために、同じ方法を用いなければなりません。 .It size サイズを表す文字。単位のデフォルトの解釈はバイトで、サフィックスに よって別の単位を指定できます。 .Bl -tag -offset indent -compact -width xxxx .It b 512 バイトブロックの明示的な指定 .It k キロバイトの指定 (1024 バイト) .It m 1 メガバイトの乗数の指定 (1048576 バイト) .It g ギガバイト単位の指定。そして .It t テラバイトの記述。 .El サイズの値は数値であり、サフィックスの大文字小文字は重要ではありません。 連続した値は足し込まれます。 .It time 時間の期間。デフォルトの単位は秒。 プレフィックスによって別の単位を指定できます。 .Bl -tag -offset indent -compact -width xxxx .It y 1 年を 365 日で数えた年数の指定 .It w 週の数の指定 .It d 日数 .It h 時間数 .It m 分数 .It s 秒数 .El 連続した値は足し込まれます。 たとえば 2 時間 40 分は 9600s、160m または 2h40m と 表現することができます。 .El .Pp 特別な .Em tc=value 表記を使用することにより、通常の約束事であるケーパビリティエントリの 補間が可能です。 .Pp .Sh リソース制限 .Bl -column coredumpsize indent indent .It Sy "名称 型 注 解説 +.It "coredumpsize size コアダンプサイズの最大値制限 .It "cputime time CPU 使用制限 -.It "filesize size ファイルサイズの最大値制限 .It "datasize size データサイズの最大値制限 -.It "stacksize size スタックサイズの最大値制限 -.It "coredumpsize size コアダンプサイズの最大値制限 -.It "memoryuse size コアメモリ使用量の最大値制限 -.It "memorylocked size コアメモリロック可能量の最大値制限 +.It "filesize size ファイルサイズの最大値制限 .It "maxproc number プロセス数の最大値制限 +.It "memorylocked size コアメモリロック可能量の最大値制限 +.It "memoryuse size コアメモリ使用量の最大値制限 .It "openfiles number プロセスごとにオープンできるファイル数の最大値制限 .It "sbsize size 最大のソケットバッファサイズ +.It "stacksize size スタックサイズの最大値制限 .El .Pp これらのリソース制限エントリは、実際には最大値と現在の 制限値の両方を指定します ( .Xr getrlimit 2 を参照してください)。 普通は現在の制限値 (ソフトリミット) が使われますが、 ユーザは現在の制限値を最大制限値 (ハードリミット) まで増やすことが 許されています。 最大制限値と現在の制限値はケーパビリティ名に各々 -max 及び -cur を 追加することによって指定できます。 .Pp .Sh 環境 .Bl -column ignorenologin indent xbinxxusrxbin .It Sy "名称 型 注 解説 .It "charset string $MM_CHARSET 環境変数の明示的な設定値 .It "hushlogin bool false ~/.hushlogin ファイルがある場合と同じ .It "ignorenologin bool false nologin によってログインを禁止されません .It "lang string $LANG 環境変数を指定した値に設定します .It "manpath path マニュアルページのデフォルト検索パス .It "nologin file このファイルが存在する場合、ファイルの内容が画面に表示され、そのログインセッションは終了されます .It "path path /bin /usr/bin デフォルトコマンド検索パス .It "priority number 優先度 (nice) レベルの初期値 .It "requirehome bool false ログインのために有効なホームディレクトリが必要 .It "setenv list コンマで区切られた環境変数とその設定値のリスト .It "shell prog パスワードファイルで指定されているシェルより優先して実行されるセッションシェル。SHELL 環境変数の値は、パスワードファイルで指定されているものになります。 .It "term string 他の手段によって決定できない場合のデフォルトの端末タイプ .It "timezone string $TZ 環境変数のデフォルト値 .It "umask number 022 umask の初期値。続く数字が 8 進数と解釈されるように、常に 0 から始めます .It "welcome file /etc/motd ウェルカムメッセージが入っているファイル .El .Pp .Sh 認証 .Bl -column minpasswordlen indent indent .It Sy "名称 型 注 解説 +.\" .It "approve program Program to approve login. +.It "copyright file 追加のコピーライト情報を含んだファイル +.It "host.allow list クラス内のユーザがアクセス可能なリモートホストワイルドカードのリスト +.It "host.deny list クラス内のユーザがアクセス不可なリモートホストワイルドカードのリスト +.It "login_prompt string +.Xr login 1 +が与えるログインプロンプト .It "minpasswordlen number 6 ローカルパスワード文字列長の最小値 +.It "mixpasswordcase bool true +すべて小文字のパスワードが入力された場合、 +.Xr passwd 1 +がユーザに警告します .It "passwd_format string md5 新規パスワードが使用する 暗号フォーマット。 -有効な値は "md5" と "des" です。 +有効な値は "md5", "des", "blf" です。 NIS クライアントが、 .Fx ではない NIS サーバを使用する場合、 おそらく "des" を使用すべきでしょう。 -.\" .It "approve program Program to approve login. -.It "mixpasswordcase bool true Whether -すべて小文字のパスワードが入力された場合、 -.Xr passwd 1 -がユーザに警告します -.It "copyright file 追加のコピーライト情報を含んだファイル -.\".It "widepasswords bool false Use the wide password format. The wide password -.\" format allows up to 128 significant characters in the password. -.It "host.allow list クラス内のユーザがアクセス可能なリモートホストワイルドカードのリスト -.It "host.deny list クラス内のユーザがアクセス不可なリモートホストワイルドカードのリスト +.It "passwd_prompt string +.Xr login 1 +が表示するパスワードプロンプト .It "times.allow list ログインが許されている時間帯のリスト .It "times.deny list ログインが許されない時間帯のリスト .It "ttys.allow list クラス内のユーザがアクセスに使用できる端末と端末グループのリスト .It "ttys.deny list クラス内のユーザがアクセスに使用不可な端末と端末グループのリスト +.\".It "widepasswords bool false Use the wide password format. The wide password +.\" format allows up to 128 significant characters in the password. .El .Pp これらのフィールドは、ログイン認証システムの中で .Xr passwd 1 や、その他のプログラムから使用される予定です。 .Pp 環境変数を設定するケーパビリティは、その中の文字 .Ql \&~ と .Ql \&$ の両方がスキャンされ、これらはそれぞれ ユーザのホームディレクトリ及びユーザ名に置換されます。 環境変数中にこれらの文字をそのまま含める場合には、 その前にバックスラッシュ '\\' をつけてエスケープします。 .Pp .Em host.allow と .Em host.deny エントリはコンマで区切られたリストで、システムへのリモートアクセスの チェックに使われます。 これらはホスト名か IP アドレスまたはその両方を含むリストからなり、 それらに対してリモートログインのチェックが行われます。 このリストの各項目は、ワイルドカード一致用にシェルプログラムが使用しているのと 同じ書式のワイルドカードを含むことができます (実装の詳細は .Xr fnmatch 3 を参照してください)。 ホストのチェックは、リモートシステムのインターネットアドレス と (もし有効なら) ホスト名の両方をつきあわせて行われます。 両方のリストが空かもしくは指定されていない場合、あらゆるリモートホスト からのログインは許可されます。 host.allow が 1 つかそれ以上のホストを含む場合、リスト中の 各項目のどれかにマッチしたリモートシステムのみがログインを許されます。 host.deny が 1 つかそれ以上のホストを含む場合、そのリストのどれかに マッチしたホストからのログインが禁止されます。 .Pp .Em times.allow と .Em times.deny エントリはコンマで区切られた期間のリストであり、この期間はクラス内の ユーザがログインを許されます。 これらは 1 つ以上の日のコード指定と、これに続けて 24 時間表記の開始時刻と 終了時刻をハイフンまたはダッシュで区切ったものとして表現されます。 たとえば MoThSa0200-1300 は、月、木、土の 午前 2 時から午後 1 時と解釈されます。 これらの時間指定リストの両方が空だった場合、クラス内のユーザはいつでもアクセス 可能になります。 .Em times.allow が指定されている場合、ログインは指定された期間のみ許可されます。 もし .Em times.deny が指定されている場合、 .Em times.allow の中で期間が指定されているかどうかに関わらず、指定された期間は ログインできなくなります。 .Pp .Xr login 1 が強制することは、これらのエントリにより許可された期間内に実際の ログインが行なわれることのみである点に注意して下さい。 セッションの生存期間に関して更なる規制をかけるには、別のデーモンを用意し、 許可されている期間から許可されていない期間への 遷移を監視する必要があります。 .Pp .Em ttys.allow と .Em ttys.deny エントリは、クラス内のユーザがシステムにアクセスするために使う コンマで区切られた (/dev/ プレフィックスを除く) 端末デバイスと、 端末グループ (ttygroup) のリストです (ttygroup の詳細は .Xr getttyent 3 と .Xr ttys 5 を参照して下さい)。 どちらのエントリも存在しない場合、ユーザが使用するログインデバイスの選択には 制限はありません。 .Em ttys.allow のみ指定されている場合、ユーザの使えるデバイスは指定されたグループ またはデバイスリストのみに制限されます。 .Em ttys.deny のみ指定されている場合、ユーザは指定されたデバイスやデバイス グループを使用できません。 両方が与えられていてかつどちらも空でない場合、ユーザは ttys.allow で指定されていて、ttys.deny では指定されていないデバイス群のみ 使用できます。 .Sh アカウント制限 .Bl -column host.accounted indent indent .It "Sy "名称 型 注 解説 .It "accounted bool false このクラス内の全ユーザの セッション時間アカウウンティングを有効化 .It "autodelete time アカウント失効後自動で削除されるまでの時間 .It "bootfull bool false セッション終了時の「ttygroup が一杯の場合にのみブート」戦略を 有効にする .It "daytime time 1 日あたりのログイン最大時間 .It "expireperiod time 期限切れまでの割り当て時間 .It "graceexpire time 失効したアカウントの猶予日数 .It "gracetime time 追加された、猶予ログイン許可時間 .It "host.accounted list ログインセッションがアカウントされる リモートホストワイルドカードのリスト .It "host.exempt list ログインセッションのアカウンティング を免除されたリモートホストワイルドカードのリスト .It "idletime time ログアウトまでの最大アイドル時間 .It "monthtime time 月毎の最大ログイン時間 .It "passwordtime time 次回パスワード無効日を指定するために .Xr passwd 1 が使用 .It "refreshtime time アカウントのリフレッシュ許可時間 .It "refreshperiod str リフレッシュが行なわれる頻度 .It "sessiontime time セッション毎の最大ログイン時間 .It "sessionlimit number すべてのグループに対する tty 上の 同時最大ログイン数 .It "ttys.accounted list ログインアカウントが有効な tty と ttygroup のリスト .It "ttys.exempt list ログインアカウントが無効な tty と ttygroup のリスト .It "warnexpire time 失効しそうなアカウントに対する事前の注意を 行なう時間 .It "warnpassword time 失効しそうなパスワードに対する事前の 注意を行なう時間 .It "warntime time 時間切れになりそうな場合に対する事前の注意を 行なう時間 .It "weektime time 1 週間毎の最大ログイン時間 .El .Pp これらのフィールドは、ユーザのログインアクセスを規制、コントロール、記録する タイムアカウンティングシステムによって使われます。 .Pp .Em ttys.accounted と .Em ttys.exempt フィールドは、先に述べた .Em ttys.allow と .Em ttys.deny と同じような方法で状態を操作します。 .Em host.accounted と .Em host.exempt のリストも同様です。 .Sh 関連項目 .Xr cap_mkdb 1 , .Xr login 1 , .Xr getcap 3 , .Xr getttyent 3 , .Xr login_cap 3 , .Xr login_class 3 , .Xr passwd 5 , .Xr ttys 5 diff --git a/ja_JP.eucJP/man/man5/make.conf.5 b/ja_JP.eucJP/man/man5/make.conf.5 index 7c4c7582f9..eb86c0e708 100644 --- a/ja_JP.eucJP/man/man5/make.conf.5 +++ b/ja_JP.eucJP/man/man5/make.conf.5 @@ -1,763 +1,762 @@ .\" Copyright (c) 2000 .\" Mike W. Meyer .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" .\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" %FreeBSD: src/share/man/man5/make.conf.5,v 1.12.2.1 2001/03/08 05:44:45 obrien Exp % +.\" %FreeBSD: src/share/man/man5/make.conf.5,v 1.12.2.2 2001/05/17 07:08:38 ru Exp % .\" -.\" $FreeBSD$ +.\" $FreeBSD: doc/ja_JP.eucJP/man/man5/make.conf.5,v 1.4 2001/05/14 01:09:30 horikawa Exp $ .\" .Dd November 3, 2000 .Dt MAKE.CONF 5 .Os .Sh 名称 .Nm make.conf .Nd システムビルド情報 .Sh 解説 .Nm ファイルには .Fx のソースや ports アプリケーションの制御に関する設定が含まれています。 通常 .Nm ファイルは、システム管理者が、 これらの値をデフォルトから変更したい場合に作成します。 .Pp .Nm の用途は、コマンド実行やコンパイル動作を直接行うことではなく、 .Pa /usr/src , .Pa /usr/ports , .Pa /usr/doc などにある様々な makefile にインクルードされることです。 そのような makefile では、 内部の動作が .Nm の与える条件によって変化するようになっているのです。 .Pp .Pa /etc/make.conf ファイルはそれぞれ適切な .Pa Makefile からインクルードされます。 各々の Makefile の中では、 利用可能なすべてのオプションに対し、デフォルトの設定が与えられています。 .Pa /etc/make.conf で指定する必要があるオプションは、 システム管理者がデフォルトから変更したいと思ったものだけです。 .Pp ビルドの手続きは、大きく 4 つの領域に分けられます。 world、カーネル、ドキュメント、ports です。 .Nm で設定された変数はこれらの領域の 1 つ、2 つ、 あるいは全てに適用されます。 変数は、特定のビルドに対して .Xr make 1 の .Fl D オプションを用いて指定することもできます。 .Pp 以下のリストでは、それぞれ指定したビルドの途中で用いることのできる 各変数の名前と簡単な説明を記述します。 .Vt bool と指定されている変数では、その値は意味を持ちません。 変数が設定されていれば (たとえ値が .Dq Li FALSE や .Dq Li NO でも)、変数が設定されているものとして扱われます。 .Pp 次のリストは、すべてのビルド (あるいはビルド以外の目的で使われる .Pa Makefile ) で用いられる変数の名前と簡単な説明です。 .Bl -tag -width Ar .It Va CFLAGS -.Vt ( str ) +.Qt Vt str C のコードをコンパイルするときのコンパイラの設定を制御します。 .Op Fl O を越えた最適化レベル .Pq Op Fl O2 , No ...\& はサポートされていません。 .Va BDECFLAGS は、 .An "Bruce Evans" Aq bde@FreeBSD.org が開発や変更のテスト用に勧めている .Xr gcc 1 設定です。 これは以下のように使用可能です。 .Pp .Bd -literal -offset indent CXFLAGS+=${BDECFLAGS} .Ed .It Va CVS_UPDATE -.Vt ( bool ) +.Qt Vt bool .Dq Li "make update" で ports を更新するときに .Xr cvs 1 を用いる場合、設定します。 .It Va CXXFLAGS -.Vt ( str ) +.Qt Vt str C++ のコードをコンパイルするときのコンパイラの設定を制御します。 .Va CXXFLAGS は最初は .Va CFLAGS の値に設定されます。この .Va CXXFLAGS の値に追加を行いたい場合は、 .Dq Li = ではなく .Dq Li += を用いてください。 .It Va INSTALL -.Vt ( str ) +.Qt Vt str デフォルトのインストールコマンドです。 インストールを行う前に比較を行いたい場合は、次の例を用いてください。 .Bd -literal -offset indent INSTALL="install -C" .Ed .It Va LOCAL_DIRS -.Vt ( str ) +.Qt Vt str この変数には .Pa /usr/src で make を行うときに入るべきディレクトリをすべてリストします。 .It Va MTREE_FOLLOWS_SYMLINKS -.Vt ( str ) +.Qt Vt str .Xr mtree 8 にシンボリックリンクを追跡させたい場合は、 これを .Dq Fl L に設定します。 .It Va NO_DOCUPDATE -.Vt ( bool ) +.Qt Vt bool .Dq Li "make update" で doc ツリーを更新させない場合これを設定します。 .It Va NO_PORTSUPDATE -.Vt ( bool ) +.Qt Vt bool .Dq Li "make update" で ports ツリーを更新させない場合これを設定します。 .It Va SUP_UPDATE -.Vt ( bool ) +.Qt Vt bool .Dq Li "make update" による ports の更新に .Xr cvsup 1 を使う場合これを設定します。 .It Va SUP -.Vt ( str ) +.Qt Vt str .Dq Li "make update" で用いられる .Xr cvsup 1 コマンドの置き場所です。 .It Va SUPFLAGS -.Vt ( str ) +.Qt Vt str .Dq Li "make update" を行うとき .Xr sup 1 に与えるフラグ。デフォルトは .Op Fl g L Ar 2 です。 .It Va SUPHOST -.Vt ( str ) +.Qt Vt str .Dq Li "make update" を行うときに用いる sup サーバのホスト名です。 .It Va SUPFILE -.Vt ( str ) +.Qt Vt str .Dq Li "make update" を行うとき、最初に用いる .Ar supfile です。デフォルトは .Pa /usr/share/examples/cvsup/standard\-supfile です。 .It Va SUPFILE1 -.Vt ( str ) +.Qt Vt str .Dq Li "make update" を行うとき、二番目に用いる .Ar supfile です。デフォルトは .Pa /usr/share/examples/cvsup/secure\-supfile です。 .It Va SUPFILE2 -.Vt ( str ) +.Qt Vt str .Dq Li "make update" を行うとき、三番目に用いる .Ar supfile です。デフォルトは .Pa /usr/share/examples/cvsup/secure\-supfile です。 .It Va PORTSSUPFILE -.Vt ( str ) +.Qt Vt str .Dq Li "make update" を行うときの ports 用の .Ar supfile です。デフォルトは .Pa /usr/share/examples/cvsup/ports\-supfile です。 .It Va DOCSUPFILE -.Vt ( str ) +.Qt Vt str .Dq Li "make update" を行うときのドキュメント用の .Ar supfile です。デフォルトは .Pa /usr/share/examples/cvsup/doc\-supfile です。 .El .Pp 次のリストは、カーネルのビルドで用いられる変数の名前と簡単な説明です。 .Bl -tag -width Ar .It Va BOOT_COMCONSOLE_PORT -.Vt ( str ) +.Qt Vt str ブートブロックが、 キーボード/ビデオカードの代わりに シリアルコンソールを用いるよう設定された場合に、 コンソールとして用いるポートアドレスです。 .It Va BOOT_COMCONSOLE_SPEED -.Vt ( int ) +.Qt Vt int ブートブロックが、 キーボード/ビデオカードの代わりに シリアルコンソールを用いるよう設定された場合に、 コンソールで用いるボーレートです。 .It Va BOOTWAIT -.Vt ( int ) +.Qt Vt int カーネルがデフォルトカーネルのブートを開始する前に、 コンソールのキーが押されるのを待つ時間を制御します。 値はだいたいミリ秒単位となります。 ディスクからブートする前のキー入力の認識は BIOS が行うので、 これが 0 に設定されていた場合でも、 ユーザの選択したブートパラメータを与えることは可能です。 .It Va COPTFLAGS -.Vt ( str ) +.Qt Vt str カーネルをコンパイルするときのコンパイラの設定を制御します。 .Op Fl O を越えた最適化レベル .Pq Op Fl O2 , No ...\& はサポートされていません。 .It Va KERNEL -.Vt ( str ) +.Qt Vt str .Dq Li "${MAKE} buildkernel" によるビルドと .Dq Li "${MAKE} installkernel" . によるインストールとで、 どのカーネル設定を用いるかを制御します。例えば .Bd -literal -offset indent KERNEL=MINE DEBUG GENERIC OTHERMACHINE .Ed .Pp とすると、 .Pa MINE , DEBUG , GENERIC , OTHERMACHINE といった各設定ファイルに対応するカーネルをビルドし、 .Pa MIME に対応するカーネルをインストールします。 デフォルトは .Pa GENERIC です。 .It Va NO_KERNELCONFIG -.Vt ( bool ) +.Qt Vt bool .Dq Li "${MAKE} buildkernel" の際に .Xr config 8 を実行しない場合には、これを設定します。 .It Va NO_KERNELDEPEND -.Vt ( bool ) +.Qt Vt bool .Dq Li "${MAKE} buildkernel" の際に .Dq Li "${MAKE} depend" を実行しない場合には、これを設定します。 .It Va NO_MODULES -.Vt ( bool ) +.Qt Vt bool カーネルといっしょにモジュールをビルドしない場合に設定します。 .El .Pp 次のリストは、world のビルドで用いられる変数の名前と簡単な説明です。 .Bl -tag -width Ar .It Va COMPAT1X -.Vt ( bool ) +.Qt Vt bool .Fx 1 互換ライブラリをインストールする場合に設定します。 .It Va COMPAT20 -.Vt ( bool ) +.Qt Vt bool .Fx 2.0 互換ライブラリをインストールする場合に設定します。 .It Va COMPAT21 -.Vt ( bool ) +.Qt Vt bool .Fx 2.1 互換ライブラリをインストールする場合に設定します。 .It Va COMPAT22 -.Vt ( bool ) +.Qt Vt bool .Fx 2.2 互換ライブラリをインストールする場合に設定します。 .It Va COMPAT3X -.Vt ( bool ) +.Qt Vt bool .Fx 3 互換ライブラリをインストールする場合に設定します。 .It Va ENABLE_SUIDPERL -.Vt ( bool ) +.Qt Vt bool suid .Xr perl 1 バイナリのインストールを行う場合に設定します。 .It Va FETCH_CMD -.Vt ( str ) +.Qt Vt str ファイルの取得に用いるコマンドです。 通常は .Xr fetch 1 です。 .It Va MAKE_IDEA -.Vt ( bool ) +.Qt Vt bool IDEA 暗号化コードをビルドする場合に設定します。 このコードは米国やヨーロッパの多くの国々で特許が取得されています。 合法的に IDEA を使えるかどうか決めるのは .Em あなたの責任 です。 .It Va MAKE_KERBEROS4 -.Vt ( bool ) +.Qt Vt bool KerverosIV (KTH eBones) をビルドする場合に設定します。 .It Va MAKE_KERBEROS5 -.Vt ( bool ) +.Qt Vt bool Kerveros5 (KTH Heimdal) をビルドする場合に設定します。 .Em 注意! これはまだ実験的なコードです。 安定している Kerberos5 が必要ならば、 ports を用いてください。 .It Va MODULES_WITH_WORLD -.Vt ( bool ) +.Qt Vt bool カーネルと同時にではなく、 システムと同時にモジュールをビルドする場合に設定します。 .It Va NO_CVS -.Vt ( bool ) +.Qt Vt bool CVS をビルドしない場合に設定します。 .It Va NO_BIND -.Vt ( bool ) +.Qt Vt bool BIND をビルドしない場合に設定します。 .It Va NO_FORTRAN -.Vt ( bool ) +.Qt Vt bool .Xr g77 1 と関連ライブラリをビルドしない場合に設定します。 .It Va NO_LPR -.Vt ( bool ) +.Qt Vt bool .Xr lpr 1 と関連プログラムをビルドしない場合に設定します。 .It Va NO_MAILWRAPPER -.Vt ( bool ) +.Qt Vt bool MTA セレクタである .Xr mailwrapper 8 をビルドしない場合に設定します。 .It Va NO_MAKEDEV -.Vt ( bool ) +.Qt Vt bool インストールの際に .Pa /dev で .Dq Li "MAKEDEV all" を実行しない場合に設定します。 .It Va NO_OBJC -.Vt ( bool ) +.Qt Vt bool Objective C のサポートをビルドしない場合に設定します。 .It Va NO_OPENSSH -.Vt ( bool ) +.Qt Vt bool OpenSSH をビルドしない場合に設定します。 .It Va NO_OPENSSL -.Vt ( bool ) +.Qt Vt bool OpenSSL をビルドしない場合に設定します (同時に .Va NO_OPENSSH も設定されたことになります)。 .It Va NO_SENDMAIL -.Vt ( bool ) +.Qt Vt bool .Xr sendmail 8 と関連プログラムをビルドしない場合に設定します。 .It Va NO_SHAREDOCS -.Vt ( bool ) +.Qt Vt bool .Bx 4.4 の古い文書をビルドしない場合に設定します。 .It Va NO_TCSH -.Vt ( bool ) +.Qt Vt bool .Pa /bin/csh (これは .Xr tcsh 1 です) をビルド・インストールしない場合に設定します。 .It Va NO_X -.Vt ( bool ) +.Qt Vt bool X\-Windows のサポート (例えば .Xr doscmd 1 など) をコンパイルしない場合に設定します。 .It Va NOCLEAN -.Vt ( bool ) +.Qt Vt bool .Dq Li "make buildworld" の途中で clean を行わない場合に設定します。 何をやっているかわからない人は設定すべきではありません。 .It Va NOCLEANDIR -.Vt ( bool ) +.Qt Vt bool .Dq Li "${MAKE} cleandir" の代わりに .Dq Li "${MAKE} clean" を実行する場合に設定します。 .It Va NOCRYPT -.Vt ( bool ) +.Qt Vt bool crypto コードを一切ビルドしない場合に設定します。 .It Va NOGAMES -.Vt ( bool ) +.Qt Vt bool ゲームをビルドしない場合に設定します。 .It Va NOINFO -.Vt ( bool ) +.Qt Vt bool .Xr info 5 各ファイルを作成・インストールしない場合に設定します。 .It Va NOLIBC_R -.Vt ( bool ) +.Qt Vt bool .Nm libc_r .Pf ( Nm libc のリエントラント版) をビルドしない場合に設定します。 .It Va NOMANCOMPRESS -.Vt ( bool ) +.Qt Vt bool man ページのインストールの際に圧縮を行わない場合に設定します。 .It Va NOPERL -.Vt ( bool ) +.Qt Vt bool .Xr perl 1 をビルドしない場合に設定します。 .It Va NOPROFILE -.Vt ( bool ) +.Qt Vt bool profile 版ライブラリをコンパイルしない場合に設定します。 .It Va NOSECURE -.Vt ( bool ) +.Qt Vt bool .Pa secure サブディレクトリで crypto コードをビルドしない場合に設定します。 .It Va NOSHARE -.Vt ( bool ) +.Qt Vt bool .Pa share サブディレクトリをビルドしない場合に設定します。 .It Va NOUUCP -.Vt ( bool ) +.Qt Vt bool .Xr uucp 1 と関連プログラムをビルドしない場合に設定します。 .It Va PERL_THREADED -.Vt ( bool ) +.Qt Vt bool .Xr perl 1 をスレッドサポート機能込みでビルド・インストールする場合に設定します。 .It Va PPP_NOSUID -.Vt ( bool ) +.Qt Vt bool .Xr ppp 8 を suid root プログラムとしてはインストールしない場合に設定します。 .It Va SENDMAIL_MC -.Vt ( str ) +.Qt Vt str インストール時に用いるデフォルトの m4 設定ファイルです。 この値には .mc ファイルのフルパスを与えます。例えば .Pa /etc/mail/myconfig.mc 。 make install すると、既存の .Pa /etc/mail/sendmail.cf を上書きしてしまうので、注意して使ってください。 .Va SENDMAIL_CF はもう推奨されなくなりました。 .It Va SENDMAIL_ADDITIONAL_MC -.Vt ( str ) +.Qt Vt str ビルド時に .cf ファイルに変換される追加分の .mc ファイル (複数指定可) です。 値には、これらの .mc ファイルへのフルパスを与えます。 例えば .Pa /etc/mail/foo.mc .Pa /etc/mail/bar.mc など。 .It Va SENDMAIL_CFLAGS -.Vt ( str ) +.Qt Vt str .Xr sendmail 8 をビルドするときにコンパイルコマンドに渡すフラグです。 .Va SENDMAIL_* 各フラグを用いれば、 SASL サポートをその設定と共に指定できます。 例えば次のようにします。 .Bd -literal -offset indent SENDMAIL_CFLAGS=-I/usr/local/include -DSASL SENDMAIL_LDFLAGS=-L/usr/local/lib SENDMAIL_LDADD=-lsasl .Ed .It Va SENDMAIL_LDFLAGS -.Vt ( str ) +.Qt Vt str .Xr sendmail 8 をビルドするときに .Xr ld 1 コマンドに渡すフラグです。 .It Va SENDMAIL_LDADD -.Vt ( str ) +.Qt Vt str .Xr sendmail 8 をビルドするときに .Xr ld 1 コマンドの末尾に追加するフラグです。 .It Va SENDMAIL_DPADD -.Vt ( str ) +.Qt Vt str この変数の説明は与えられていません。 .El .Pp 次のリストは、ドキュメントのビルドで用いられる変数の名前と簡単な説明です。 .Bl -tag -width Ar .It Va DISTDIR -.Vt ( str ) +.Qt Vt str distfiles が保存されている場所です。 通常これは .Va PORTSDIR の .Pa distfiles です。 .It Va DOC_LANG -.Vt ( str ) +.Qt Vt str ビルド・インストール対象の言語とエンコーディングのリストです。 .It Va PRINTERDEVICE -.Vt ( str ) +.Qt Vt str システム文書のデフォルトのフォーマットです。 プリンタに依存します。 簡単なプリンタなら .Dq Li ascii に、PostScript プリンタや グラフィックスプリンタ + ghostscript フィルタなら .Dq Li ps に設定できます。 .El .Pp 次のリストは、ports のビルドで用いられる変数の名前と簡単な説明です。 .Bl -tag -width Ar .It Va FORCE_PKG_RESIDENT -.Vt ( bool ) +.Qt Vt bool 既存の package (訳注: FreeBSD の package system におけるパッケージを指す場合にこう表記します) の登録情報を上書きする場合に設定します。 .It Va HAVE_MOTIF -.Vt ( bool ) +.Qt Vt bool システムに Motif がある場合に設定します。 .It Va KRB5_HOME -.Vt ( str ) +.Qt Vt str MIT Kerberos5 の port を .Pa /usr/local 以外にインストールしたい場合に設定します。 .\"translator: "ports" で固有単語とみなすべき? .It Va LOCALBASE -.Vt ( str ) +.Qt Vt str X 以外の ports をインストールする際のベースディレクトリを与えます。 これは .Pa /usr/ports でビルドを行う際に .Va PREFIX にデフォルト値として与えられます。 .It Va MASTER_SITE_AFTERSTEP -.Vt ( str ) +.Qt Vt str AfterStep の ports のマスタサイトを変更します。 パスの最後の部分は .Dq Li /%SUBDIR%/ でなければなりません。 .It Va MASTER_SITE_BACKUP -.Vt ( str ) +.Qt Vt str .Pa Makefile にリストされている場所が使えない場合、 ports が distfile をチェックしに行く場所を制御します。 パスの最後の部分は .Dq Li /${DIST_SUBDIR}/ でなければなりません。 .It Va MASTER_SITE_COMP_SOURCES -.Vt ( str ) +.Qt Vt str .Pa comp.sources ports のマスタサイトの場所を制御します。 パスの最後の部分は .Dq Li %SUBDIR%/ でなければなりません。 .It Va MASTER_SITE_GNOME -.Vt ( str ) +.Qt Vt str GNOME ports のマスタサイトの場所を制御します。 パスの最後の部分は .Dq Li %SUBDIR%/ でなければなりません。 .It Va MASTER_SITE_GNU -.Vt ( str ) +.Qt Vt str GNU ports のマスタサイトの場所を制御します。 パスの最後の部分は .Dq Li %SUBDIR%/ でなければなりません。 .It Va MASTER_SITE_KDE -.Vt ( str ) +.Qt Vt str KDE ports のマスタサイトの場所を制御します。 パスの最後の部分は .Dq Li %SUBDIR%/ でなければなりません。 .It Va MASTER_SITE_FREEBSD -.Vt ( bool ) +.Qt Vt bool 設定されていると、すべてのファイルをマスタの .Fx サイトから取得します。 .It Va MASTER_SITE_MOZILLA -.Vt ( str ) +.Qt Vt str Mozilla ports のマスタサイトの場所を制御します。 パスの最後の部分は .Dq Li %SUBDIR%/ でなければなりません。 .It Va MASTER_SITE_OVERRIDE -.Vt ( str ) +.Qt Vt str 設定されていると、ports の .Pa Makefile にリストされているサイトよりも先に、このサイトをチェックしに行きます。 次のようにすればバックアップサイトを先にチェックさせることができます。 .Bd -literal -offset indent MASTER_SITE_OVERRIDE?= ${MASTER_SITE_BACKUP} .Ed .It Va MASTER_SITE_PERL_CPAN -.Vt ( str ) +.Qt Vt str Perl ports のマスタサイトの場所を制御します。 パスの最後の部分は .\".Bd -literal -offset indent .\" /%SUBDIR%/ .\".Ed .Dq Li /%SUBDIR%/ でなければなりません。 .\"translator: ここの .Bd .Ed はコメントアウトしました。 .It Va MASTER_SORT_REGEX -.Vt ( str ) +.Qt Vt str ミラーセットのソート順を制御する場合に設定します。 .Pa .jp ドメインのミラーを優先的に用いたければ、以下のような設定をします。 .Bd -literal -offset indent MASTER_SORT_REGEX?= ^file: ^ftp://ftp\.FreeBSD\.org/pub/FreeBSD/ports/local-distfiles/ ://[^/]*\.jp/ ://[^/]*\.jp\. .Ed .Pp 他の国別 TLD ドメインのユーザは、 .Dq Li jp を適切なドメインに変更してください。 .It Va MASTER_SITE_RINGSERVER -.Vt ( str ) +.Qt Vt str Ringserver ports のマスタサイトの場所を制御します。 パスの最後の部分は .Dq Li /%SUBDIR%/ でなければなりません。 .It Va MASTER_SITE_RUBY -.Vt ( str ) +.Qt Vt str Ruby ports のマスタサイトの場所を制御します。 パスの最後の部分は .Dq Li /%SUBDIR%/ でなければなりません。 .It Va MASTER_SITE_SUNSITE -.Vt ( str ) +.Qt Vt str Sunsite ports のマスタサイトの場所を制御します。 パスの最後の部分は .Dq Li /%SUBDIR%/ でなければなりません。 .It Va MASTER_SITE_TCLTK -.Vt ( str ) +.Qt Vt str Tcl/Tk ports のマスタサイトの場所を制御します。 パスの最後の部分は .Dq Li /%SUBDIR%/ でなければなりません。 .It Va MASTER_SITE_TEX_CTAN -.Vt ( str ) +.Qt Vt str TeX ports のマスタサイトの場所を制御します。 パスの最後の部分は .Dq Li /%SUBDIR%/ でなければなりません。 .It Va MASTER_SITE_WINDOWMAKER -.Vt ( str ) +.Qt Vt str WindowMaker ports のマスタサイトの場所を制御します。 パスの最後の部分は .Dq Li /%SUBDIR%/ でなければなりません。 .It Va MASTER_SITE_XCONTRIB -.Vt ( str ) +.Qt Vt str X contrib の ports のマスタサイトの場所を制御します。 パスの最後の部分は .Dq Li /%SUBDIR%/ でなければなりません。 .It Va MASTER_SITE_XEMACS -.Vt ( str ) +.Qt Vt str Xemacs ports のマスタサイトの場所を制御します。 パスの最後の部分は .Dq Li /%SUBDIR%/ でなければなりません。 .It Va MASTER_SITE_XFREE -.Vt ( str ) +.Qt Vt str XFree ports のマスタサイトの場所を制御します。 パスの最後の部分は .Dq Li /%SUBDIR%/ でなければなりません。 .It Va MOTIFLIB -.Vt ( str ) +.Qt Vt str .Pa libXm.a と .Pa libXm.so の場所です。 .It Va MOTIF_STATIC -.Vt ( bool ) +.Qt Vt bool Motif を用いる ports を、Motif の共有ライブラリを持たない システム上でも実行させたい場合に設定します。 .It Va NOCLEANDEPENDS -.Vt ( bool ) +.Qt Vt bool .Dq Li "make clean" によって clean される他の ports から依存されている ports を clean したくない場合に設定します。 .It Va NOPORTDOCS -.Vt ( bool ) +.Qt Vt bool ports と同時に追加ドキュメントをインストールしない場合に設定します。 .It Va PACKAGES -.Vt ( str ) +.Qt Vt str package ターゲットのみに用いられます。 package ツリーのディレクトリです。 .It Va PATCH_SITES -.Vt ( str ) +.Qt Vt str パッチファイルの配布をしている一次サイトの場所です。 .It Va PORTSDIR -.Vt ( str ) +.Qt Vt str ports ツリーの場所です。 .It Va USA_RESIDENT -.Vt ( bool ) +.Qt Vt bool 米国居住者は設定してください。 設定すると、米国輸出規制に従う必要がある ports が、 この規制に従うようになります。 .It Va WRKDIRPREFIX -.Vt ( str ) +.Qt Vt str ports をビルドする際に用いる一時ファイルを作成する場所です。 .It Va X11BASE -.Vt ( str ) +.Qt Vt str X11 ディストリビューションを .Pa /usr/X11R6 以外の場所にインストールしたい場合、その場所を設定します。 .El .Sh 関連ファイル .Bl -tag -width /etc/defaults/make.conf -compact .It Pa /etc/defaults/make.conf .It Pa /etc/make.conf .It Pa /usr/doc/Makefile .It Pa /usr/src/Makefile .It Pa /usr/src/Makefile.inc1 .It Pa /usr/ports/Mk/bsd.port.mk .It Pa /usr/ports/Mk/bsd.sites.mk .El .Sh 関連項目 .Xr gcc 1 , .Xr install 1 , .Xr lpd 8 , .Xr make 1 , -.Xr make 7 , .Xr ports 7 , .Xr sendmail 8 .Sh 歴史 .Nm ファイルは .Fx 4.0 以前のいつかに登場しました。 .Sh 作者 このマニュアルページは .An "Mike W. Meyer" Aq mwm@mired.org が書きました。 .Sh バグ このマニュアルページは現在の .Nm で利用できるオプションに比べると、 古くなることが時々あるかもしれません。 現在利用できる最新のオプションについては、 .Pa /etc/defaults/make.conf ファイルを調べてください。 diff --git a/ja_JP.eucJP/man/man5/periodic.conf.5 b/ja_JP.eucJP/man/man5/periodic.conf.5 index 0150ee9d78..83f044acbc 100644 --- a/ja_JP.eucJP/man/man5/periodic.conf.5 +++ b/ja_JP.eucJP/man/man5/periodic.conf.5 @@ -1,559 +1,573 @@ .\"- .\" Copyright (c) 2000 Brian Somers .\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" .\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" %FreeBSD: src/share/man/man5/periodic.conf.5,v 1.8.2.11 2001/03/06 19:08:18 ru Exp % +.\" %FreeBSD: src/share/man/man5/periodic.conf.5,v 1.8.2.12 2001/05/06 14:02:05 dirk Exp % .\" -.\" $FreeBSD$ +.\" $FreeBSD: doc/ja_JP.eucJP/man/man5/periodic.conf.5,v 1.7 2001/05/14 01:09:30 horikawa Exp $ .Dd June 22, 2000 .Dt PERIODIC.CONF 5 .Os FreeBSD .Sh 名称 .Nm periodic.conf .Nd 定期実行ジョブの設定情報 .Sh 解説 .Nm ファイルには、日次/週次/月次のシステムメンテナンスジョブを どのように実行するかが記述されています。 このファイルは .Pa /etc/defaults にあり、 .Pa /etc の下にある同名のファイルは部分的に優先されます。 そしてさらに .Pa /etc/periodic.conf.local が優先されます。 .Pp .Nm は実際にはそれぞれの定期実行スクリプトからシェルスクリプトとして 取り込まれ、単にデフォルトの設定変数を提供することを意図しています。 .Pp 以下の変数は .Xr periodic 8 自身によって使用されます: .Bl -tag -offset 4n -width 2n .It Ar local_periodic (文字列) 定期実行スクリプトを検索するディレクトリのリスト。 このリストは .Xr periodic 8 の引数が絶対パスのディレクトリ名でなかった場合にのみ使用され、常に .Pa /etc/periodic が前置きされます。 .It Ar dir Ns No _output (パスまたはリスト) .Ar dir ディレクトリから起動されるスクリプトの出力をどうするか記述します。 この変数に絶対パスが指定された場合、出力はそのファイルに行われます。 絶対パスではなかった場合は、一つ以上のスペースで区切られた 複数のメールアドレスと解釈され、それらのユーザにメールで送られます。 この変数が設定されてない場合や変数が空であった場合は、 標準出力に出力されます。 .Pp それほど気にかけていないマシンでは .Ar $daily_output 、 .Ar $weekly_output そして .Ar $monthly_output はそれぞれ .Dq /var/log/daily.log , .Dq /var/log/weekly.log そして .Dq /var/log/monthly.log にしておくといいでしょう。すると .Xr newsyslog 8 が、(もしファイルがあれば) これらのファイルを適切な時に切替えます。 .It Ar dir Ns No _show_success .It Ar dir Ns No _show_info .It Ar dir Ns No _show_badconfig (ブール値) これらの変数は 起動されたスクリプトの戻り値に従って、 .Xr periodic 8 が出力を抑制するかどうかを制御します (ここで .Ar dir はそれぞれのスクリプトが置かれてるディレクトリ名です)。 もしスクリプトの戻り値が .Sq 0 で、 .Ar dir Ns No _show_success が .Dq NO に設定されていた場合、 .Xr periodic 8 はスクリプトの出力を抑制します。 もしスクリプトの戻り値が .Sq 1 で、 .Ar dir Ns No _show_info が .Dq NO に設定されていた場合、 .Xr periodic 8 はスクリプトの出力を抑制します。 もしスクリプトの戻り値が .Sq 2 で、 .Ar dir Ns No _show_badconfig が .Dq NO に設定されていた場合、 .Xr periodic 8 はスクリプトの出力を抑制します。 もしこれらの変数が .Dq YES にも .Dq NO にも設定されていなかった場合は、それぞれのデフォルト値は .Dq YES , .Dq YES そして .Dq NO です。 .Pp スクリプトの戻り値がどのように解釈されるかは .Xr periodic 8 のマニュアルページを参照して下さい。 .El .Pp 以下の変数は .Pa /etc/periodic/daily にある標準のスクリプトによって使用されます: .Bl -tag -offset 4n -width 2n .It Ar daily_clean_disks_enable (ブール値) .Ar daily_clean_disks_files にマッチしたファイルを毎日削除したい場合 .Dq YES にします。 .It Ar daily_clean_disks_files (文字列) マッチさせるファイル名のリストを設定します。 ワイルドカードも使用できます。 .It Ar daily_clean_disks_days (整数) .Ar daily_clean_disks_enable が .Dq YES の場合、何日間ファイルにアクセスや修正がなかったら 削除するかをこの変数に設定する必要もあります。 .It Ar daily_clean_disks_verbose (ブール値) 削除したファイル名を日次の出力で報告させたい場合 .Dq YES に設定します。 .It Ar daily_clean_tmps_enable (ブール値) 毎日一時ディレクトリをきれいにしたい場合 .Dq YES に設定します。 .It Ar daily_clean_tmps_dirs (文字列) .Ar daily_clean_tmps_enable が .Dq YES に設定されていた場合にきれいにするディレクトリ名のリストを指定します。 .It Ar daily_clean_tmps_days (整数) .Ar daily_clean_tmps_enable が設定されていた場合、何日間ファイルにアクセスや修正がなかったら 削除するかをこの変数に設定する必要もあります。 .It Ar daily_clean_tmps_ignore (文字列) .Ar daily_clean_tmps_enable が .Dq YES に設定されていた場合に削除させたくないファイルのリストを設定します。 ワイルドカードも使用可能です。 .It Ar daily_clean_tmps_verbose (ブール値) 削除したファイル名を日次の出力で報告させたい場合 .Dq YES に設定します。 .It Ar daily_clean_preserve_enable (ブール値) .Pa /var/preserve から古いファイルを削除したい場合 .Dq YES に設定します。 .It Ar daily_clean_preserve_days (整数) 何日間ファイルに修正がなかったら削除するかを この変数に設定します。 .It Ar daily_clean_preserve_verbose (ブール値) 削除したファイル名を日次の出力で報告させたい場合 .Dq YES に設定します。 .It Ar daily_clean_msgs_enable (ブール値) 古いシステムメッセージを削除する場合 .Dq YES に設定します。 .It Ar daily_clean_msgs_days (整数) 何日間ファイルに修正がなかったら削除するかを設定します。 この変数が空白だった場合、 .Xr msgs 1 のデフォルト値が使われます。 .It Ar daily_clean_rwho_enable (ブール値) .Pa /var/who の下の古いファイルを削除したい場合 .Dq YES に設定します。 .It Ar daily_clean_rwho_days (整数) 何日間ファイルに修正がなかったら削除するかを設定します。 .It Ar daily_clean_rwho_verbose (ブール値) 削除したファイル名を日次の出力で報告させたい場合 .Dq YES に設定します。 .It Ar daily_clean_hoststat_enable (ブール値) .Pa /var/spool/.hoststat の下の古いファイルを削除したい場合 .Dq YES に設定します。 .It Ar daily_clean_hoststat_days (整数) 何日間ファイルに修正がなかったら削除するかを設定します。 .It Ar daily_clean_hoststat_verbose (ブール値) 削除したファイル名を日次の出力で報告させたい場合 .Dq YES に設定します。 .It Ar daily_backup_passwd_enable (ブール値) .Pa /etc/master.passwd ファイルと .Pa /etc/group ファイルのバックアップをとりリポートを出力させたい場合 .Dq YES に設定します。 リポートは、両ファイルに対する修正点と .Pa group ファイルに .Xr chkgrp 8 をかけた結果を出力します。 .It Ar daily_backup_aliases_enable (ブール値) .Pa /etc/mail/aliases ファイルのバックアップをとり修正点を日次の出力で報告させたい場合 .Dq YES に設定します。 .It Ar daily_backup_distfile_enable (ブール値) .Pa /etc/Distfile ファイルのバックアップをとり修正点を日次の出力で報告させたい場合 .Dq YES に設定します。 .It Ar daily_calendar_enable (ブール値) 毎日 .Ic calendar -a を行いたい場合 .Dq YES に設定します。 .It Ar daily_accounting_enable (ブール値) 毎日アカウンティングファイルを 切り替えたい場合 .Dq YES にします。 .Xr rc.conf 5 の中の .Ar accounting_enable が有効になっていない場合は切り替える必要はありません。 .It Ar daily_accounting_compress (ブール値) 一日分のアカウンティングファイルを .Xr gzip 1 を使用して圧縮したい場合 .Dq YES に設定します。 .It Ar daily_distfile_enable (ブール値) 毎日 .Xr rdist 1 を実行したい場合 .Dq YES に設定します。その場合 .Pa /etc/Distfile も存在していなければなりません。 .It Pa daily_news_expire_enable (ブール値) .Pa /etc/news.expire を実行したい場合 .Dq YES に設定します。 .It Pa daily_uuclean_enable (ブール値) .Ic uustat -a を実行したい場合 .Dq YES に設定します。 .It Ar daily_status_disks_enable (ブール値) .Po .Ar daily_status_disks_df_flags を引数に指定して .Pc .Xr df 1 を実行し、また .Ic dump -W を実行したい場合 .Dq YES に設定します。 .It Ar daily_status_disks_df_flags (文字列) .Ar daily_status_disks_enable が .Dq YES の場合、 .Xr df 1 ユーティリティに渡す引数を設定します。 .It Ar daily_status_uucp_enable (ブール値) .\" 原文の /etc/uuclean.daily は誤りと思われる [man-jp-reviewer 3018], .\" docs/2267 .Ic uustat -a を実行したい場合 .Dq YES に設定します。 .It Ar daily_status_network_enable (ブール値) .Ic netstat -i を実行したい場合 .Dq YES に設定します。 .It Ar daily_status_network_usedns (ブール値) .Xr netstat 1 を実行する時、(DNS を参照するための) .Fl n オプションをつけずに実行したい場合 .Dq YES に設定します。 .It Ar daily_status_rwho_enable (ブール値) .Xr uptime 1 を実行したい場合 (もしくは .Pa /etc/rc.conf の中で .Ar rwhod_enable を .Dq YES に設定していて .Xr ruptime 1 を実行したい場合) .Dq YES に設定します。 .It Ar daily_status_mailq_enable (ブール値) .Xr mailq 1 を実行したい場合 .Dq YES に設定します。 .It Ar daily_status_mailq_shorten (ブール値) .Ar daily_status_mailq_enable を .Dq YES に設定していて .Nm mailq の出力を短くしたい場合 .Dq YES に設定します。 .It Ar daily_status_security_enable (ブール値) .Pa /etc/security を実行したい場合 .Dq YES に設定します。 .It Ar daily_status_security_inline (ブール値) .Pa /etc/security .\" inline -> その場 をその場で実行したい場合 .Dq YES に設定します。 デフォルトでは、 .Ar $daily_status_security_output の値に従い、出力をメールするかログします。 .It Ar daily_status_security_output (文字列) .Ar $daily_status_security_inline が .Dq NO である場合の、 .Pa /etc/security の送信先です。 この変数は、前述の .Ar *_output 変数と同様に振舞います。 すなわち、1 個以上の email アドレスか、1 個の絶対パス指定のファイル名です。 .It Ar daily_status_security_noamd (ブール値) 前日のファイルシステムのマウント状況と比較する時に .Xr amd 8 によるマウントを無視したい場合 .Dq YES に設定します。 .It Ar daily_status_security_nomfs (ブール値) 前日のファイルシステムのマウント状況と比較する時に .Xr mfs 8 によるマウントを無視したい場合 .Dq YES に設定します。 .It Ar daily_status_mail_rejects_enable (ブール値) .Pa /var/log/maillog に記録された 前日分のメール拒否を要約したい場合 .Dq YES に設定します。 +.It Ar daily_status_named_enable +(ブール値) +前日文の拒否されたゾーン転送 (AXFR と IXFR) を要約したい場合 +.Dq YES +に設定します。 +.It Ar daily_status_named_logs +(数値) +前日文の拒否されたゾーン転送のチェック対象となる、 +ログファイル数を設定します。 +.It Ar daily_status_named_usedns +(ブール値) +DNS の逆引き検索を有効にしたい場合 +.Dq YES +に設定します。 .It Ar daily_status_mail_rejects_logs (整数) 前日分のメール拒否をチェックするべき maillog ファイルの数を設定します。 .It Ar daily_local (文字列) 他のすべての日次スクリプトの後に実行する 追加スクリプトのリストを設定します。 すべてのスクリプトは絶対パスで指定されなければなりません。 .El .Pp 以下の変数は .Pa /etc/periodic/weekly にある標準のスクリプトによって使用されます: .Bl -tag -offset 4n -width 2n .It Ar weekly_clean_kvmdb_enable (ブール値) 古い .Pa /var/db/kvm_*.db ファイルを削除したい場合 .Dq YES に設定します。 現在のカーネルが使っている kvm ファイルは削除されません。 .It Ar weekly_clean_kvmdb_days (整数) 何日間ファイルにアクセスがなかったら 削除するかをこの変数に設定する必要があります。 .It Ar weekly_clean_kvmdb_verbose (ブール値) 削除したファイル名を週次の出力で報告させたい場合 .Dq YES に設定します。 .It Ar weekly_uucp_enable (ブール値) .Pa /usr/libexec/uucp/clean.weekly を実行したい場合 .Dq YES に設定します。 .It Ar weekly_locate_enable (ブール値) .Pa /usr/libexec/locate.updatedb を実行したい場合 .Dq YES に設定します。このスクリプトは .An nobody ユーザとして .Ic nice -5 を使用して実行され、 .Xr locate 1 コマンドによって使われるテーブルを生成します。 .It Ar weekly_whatis_enable (ブール値) .Pa /usr/libexec/makewhatis.local を実行したい場合 .Dq YES に設定します。このスクリプトは .Xr apropos 1 コマンドによって使われるデータベースを再生成します。 .It Ar weekly_catman_enable (ブール値) .Pa /usr/libexec/catman.local を実行したい場合 .Dq YES に設定します。 このスクリプトはすべての古くなったマニュアルページを処理して、 ディスク容量を消費する代わりに .Xr man 1 コマンドを速くします。 .It Ar weekly_noid_enable (ブール値) システム上でみなしごになったファイルを 探したい場合 .Dq YES に設定します。 みなしごになったファイルとは、 無効なユーザやグループのものとなっているファイルです。 .It Ar weekly_noid_dirs (文字列) みなしごになったファイルを探したいディレクトリのリストを 指定します。これは通常 .Pa / に設定されます。 .It Ar weekly_status_pkg_enable (ブール値) インストールされているパッケージの中で 古くなったものを .Xr pkg_version 1 を使用して一覧にしたい場合 .Dq YES に設定します。 .It Ar weekly_local (文字列) 他のすべての週次スクリプトの後に実行する 追加スクリプトのリストを設定します。 すべてのスクリプトは絶対パスで指定されなければなりません。 .El .Pp 以下の変数は .Pa /etc/periodic/monthly にある標準のスクリプトによって使用されます: .Bl -tag -offset 4n -width 2n .It Ar monthly_accounting_enable (ブール値) .Xr ac 8 コマンドによってログインのアカウンティング処理を行いたい場合 .Dq YES に設定します。 .It Ar monthly_local (文字列) 他のすべての月次スクリプトの後に実行する 追加スクリプトのリストを設定します。 すべてのスクリプトは絶対パスで指定されなければなりません。 .El .Sh 関連ファイル .Bl -tag -width /etc/defaults/periodic.conf .It Pa /etc/defaults/periodic.conf デフォルト設定ファイルです。 このファイルはすべてのデフォルトの変数と設定値が記述されています。 .It Pa /etc/periodic.conf 通常、システム特有の変数を優先させるためのファイルです。 .It Pa /etc/periodic.conf.local さらに追加して優先させるためのファイルで、 .Pa /etc/periodic.conf を共有していたり、配布していたりする場合に役立ちます。 .El .Sh 関連項目 .Xr apropos 1 , .Xr calendar 1 , .Xr df 1 , .Xr gzip 1 , .Xr locate 1 , .Xr man 1 , .Xr msgs 1 , .Xr netstat 1 , .Xr nice 1 , .Xr pkg_version 1 , .Xr rdist 1 , .Xr rc.conf 5 , .Xr ac 8 , .Xr chkgrp 8 , .Xr dump 8 , .Xr mfs 8 , .Xr newsyslog 8 , .Xr periodic 8 .Sh 歴史 .Nm ファイルは .Fx 4.1 で登場しました。 .Sh 作者 .An Brian Somers Aq brian@Awfulhak.org diff --git a/ja_JP.eucJP/man/man5/rc.conf.5 b/ja_JP.eucJP/man/man5/rc.conf.5 index a92a659819..70b24f4870 100644 --- a/ja_JP.eucJP/man/man5/rc.conf.5 +++ b/ja_JP.eucJP/man/man5/rc.conf.5 @@ -1,1578 +1,1645 @@ .\" Copyright (c) 1995 .\" Jordan K. Hubbard .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" .\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" %FreeBSD: src/share/man/man5/rc.conf.5,v 1.64.2.19 2001/03/08 05:44:15 obrien Exp % +.\" %FreeBSD: src/share/man/man5/rc.conf.5,v 1.64.2.20 2001/05/22 18:59:56 schweikh Exp % .\" -.\" $FreeBSD$ +.\" $FreeBSD: doc/ja_JP.eucJP/man/man5/rc.conf.5,v 1.35 2001/05/14 01:09:31 horikawa Exp $ .\" .Dd February 4, 2001 .Dt RC.CONF 5 .Os .Sh 名称 .Nm rc.conf .Nd システム設定情報 .Sh 解説 .Nm ファイルはローカルホスト名、全ての潜在的なネットワークインタフェースに 関する設定の詳細、システムの初期起動時に立ち上げるべき サービスに関する記述可能な情報を含んできます。初めてインストールする際に は、一般に .Nm ファイルはシステムインストールユーティリティ .Pa /stand/sysinstall によって初期化されます。 .Pp .Nm の目的は、 コマンドの実行やシステム起動操作を直接行うことではありません。 それに代わり、 そこに見出される設定にしたがって内部操作を条件付きで制御する .Pa /etc 下のいろいろな類の起動スクリプトの一部をなしています。 .Pp .Pa /etc/rc.conf ファイルは、 使用可能な全オプションのデフォルト設定を指定するファイル .Pa /etc/defaults/rc.conf からインクルードされます。 オプションを .Pa /etc/rc.conf に指定する必要があるのは、 システム管理者がこれらのデフォルトを上書きしたい場合だけです。 ファイル .Pa /etc/rc.conf.local は、 .Pa /etc/rc.conf の設定を上書きするために使用されます。これは歴史的事情のためです。 後述の .Dq rc_conf_files を参照してください。 .Pp 以下に示すのは .Nm ファイル中で設定可能な各変数について、 その名前と簡単な解説をリストしたものです。 .Bl -tag -width Ar .It Ar swapfile (文字列) .Ar NO にセットすると スワップファイルはインストールされません。 .Ar NO 以外の場合、その値は追加スワップ領域のために利用するファイルの 完全パス名として用いられます。 .It Ar apm_enable (ブール値) .Ar YES にセットすると .Xr apm 8 コマンドでの自動電源管理 (Automatic Power Management) のサポートを有効に します。 .It Ar apmd_enable (ブール値) .Xr apmd 8 を実行し、ユーザランドから APM イベントを扱います。 APM サポートも有効にします。 .It Ar apmd_flags (文字列) .Ar apmd_enable が .Ar YES の場合、これらは .Xr apmd 8 デーモンに渡すフラグになります。 .It Ar pccard_enable (ブール値) .Ar YES にセットすると、起動時に PCCARD のサポートを有効にします。 .It Ar pccard_mem (文字列) PCCARD コントローラメモリアドレスをセットします。 .Ar DEFAULT とするとデフォルト値になります。 .It Ar pccard_ifconfig (文字列) ブート時またはカード挿入時に .Xr ifconfig 8 に渡される引数のリストです (例えば、 固定アドレスの場合は "inet 192.168.1.1 netmask 255.255.255.0" などですし、 DHCP クライアントの場合は "DHCP" です)。 .It Ar pccard_beep (整数) 0 である場合、PCCARD コントローラを静寂モードにします。 1 である場合、ビープモードにします。 2 である場合、メロディモードにします。 .It Ar pccard_conf (文字列) .Xr pccardd 8 デーモンの設定ファイルのパスです (例えば .Pa /etc/pccard.conf.sample です)。 .It Ar pccardd_flags (文字列) -.Ar pccard_enable +.Ar pccard_enable が .Ar YES の場合、これらは .Xr pccardd 8 デーモンに渡すフラグになります。 .It Ar local_startup (文字列) 起動スクリプトファイルを検索するためのディレクトリのリストです。 .It Ar hostname (文字列) ネットワーク上でのあなたのホストの完全な形のドメイン名 (The Fully Qualified Domain Name) です。あなたがネットワークに接続されていない 場合でも、この変数は確実に何か意味のあるものに設定すべきです。 ホスト名を DHCP を介して設定するために .Xr dhclient 8 を使用している場合、この変数は空文字列に設定すべきです。 .It Ar nisdomainname (文字列) あなたのホストの NIS ドメイン名。NIS が動いてないときは .Ar NO とします。 .It Ar dhcp_program (文字列) DHCP クライアントプログラムのパスです (ISC DHCP クライアントの .Pa /sbin/dhclient がデフォルトです)。 .It Ar dhcp_flags (文字列) DHCP クライアントプログラムに渡す追加のフラグです。 ISC DHCP クライアント用に利用可能なコマンドラインオプションについては、 .Xr dhclient 8 ページを参照してください。 .It Ar firewall_enable (ブール値) 起動時にロードされるファイアウォール規則を持ちたくないときには .Ar NO 、持ちたいときには -.Ar YES +.Ar YES をセットします。 .Ar YES にセットし、かつカーネルが IPFIREWALL 付きで作られなかった場合、 ipfw カーネルモジュールがロードされます。 .Ar ipfilter_enable も参照してください。 .It Ar firewall_script (文字列) .Pa /etc/rc.firewall 以外のファイアウォールスクリプトを実行したい場合、 そのスクリプトの完全なパス名をこの変数に設定してください。 .It Ar firewall_type (文字列) .Pa /etc/rc.firewall 中で選択されたファイアウォールのタイプまたはローカルファイアウォール規則 の組を含むファイルを名付けます。 .Pa /etc/rc.firewall -中では以下のものが選択可能です: +中では以下のものが選択可能です: .Dq open - 無制限の IP アクセス; .Dq closed - lo0 経由を除く全ての IP サービスを禁止; .Dq client - ワークステーション向けの基本的な保護; .Dq simple - LAN 向けの基本的な保護。 ファイル名が指定される場合には完全なパス名でなければなりません。 .It Ar firewall_quiet (ブール値) .Ar YES にセットすると、起動時にコンソール上で ipfw 規則の表示を行ないません。 .It Ar firewall_logging (ブール値) .Ar YES にセットすると、ipfw のイベントロギングを有効にします。 IPFIREWALL_VERBOSE カーネルオプションと等価です。 .It Ar natd_program (文字列) .Xr natd 8 のパス。 .It Ar natd_enable (ブール値) .Ar YES にセットすると、natd を有効にします。 .Ar firewall_enable もまた .Ar YES にセットされ、 .Xr divert 4 ソケットがカーネルで有効にされている必要があります。 .It Ar natd_interface natd が実行されるパブリックインタフェースの名前です。 .Ar natd_enable が .Ar YES にセットされている場合には、これを設定する必要があります。 インタフェースの指定は、インタフェース名でも IP アドレスでもかまいません。 .It Ar natd_flags 追加の natd フラグはここに記述する必要があります。 .Fl n または .Fl a のフラグは上記 .Ar natd_interface とともに自動的に引数として追加されます。 .\" ----- ipfilter_enable seting -------------------------------- .It Ar ipfilter_enable (ブール値) デフォルトは .Ar NO にセットされます。 .Ar YES にセットすると、 .Xr ipf 8 パケットフィルタリングを有効にします。 厳密に言えば、この設定と、 .Ar ipfilter_program , .Ar ipfilter_rules , .Ar ipfilter_flags が連結されてコマンドとなるいう事実とを "濫用" して、 およそどんなフィルタでも構築可能です。 ただし、 .Ar ipfilter_rules で指定されるファイルが読めることが必要です。 .Ar ipfilter_enable と .Ar ipnat_enable が .Ar YES にセットされ、 .Ar ipnat_rules で指定されたファイルが読める場合、 .Ar ipnat_program , .Ar ipnat_rules , .Ar ipnat_flags が、 ネットワークアドレス変換プログラムの起動のためのコマンドラインを構成します。 .Ar ipfilter_enable と .Ar ipmon_enable が .Ar YES にセットされた場合、 .Ar ipmon_program と .Ar ipmon_flags が、上記コマンドの動作を監視するための別のコマンドラインを構成します。 詳細は .Pa /etc/rc.network を参照してください。 .Pp 典型的な用途では、 .Bd -literal ipfilter_enable="YES" ipfilter_flags="" ipnat_enable="YES" ipmon_enable="YES" .Ed を .Pa /etc/rc.conf に記述し、 .Pa /etc/ipf.rules と .Pa /etc/ipnat.rules を適切に編集する必要があるでしょう。 ipf 使用時には、 .Ar firewall_enable をオフにすることを推奨します。 カーネル構成ファイル中に .Bd -literal options IPFILTER options IPFILTER_LOG options IPFILTER_DEFAULT_BLOCK .Ed を置くことも良い考えです。 .\" ----- ipfilter_program setting ------------------------------ .It Ar ipfilter_program (文字列) デフォルトで .Ar /sbin/ipf -Fa -f にセットされます。 この変数は、フィルタルール (別のファイル中にあるものと期待されます) までのコマンドラインを含みます (フィルタルールは含みません)。 詳細は .Ar ipfilter_enable を参照してください。 .\" ----- ipfilter_rules setting -------------------------------- .It Ar ipfilter_rules (文字列) デフォルトで .Ar /etc/ipf.rules にセットされます。 この変数は、フィルタルール定義ファイルの名前を含みます。 このファイルは、実行するフィルタコマンドから読めることが期待されます。 詳細は .Ar ipfilter_enable を参照してください。 .\" ----- ipfilter_flags setting -------------------------------- .It Ar ipfilter_flags (文字列) デフォルトで .Ar -E にセットされます。 この変数は、フィルタコマンドに追加されるフラグを含みます。 このフラグはルール定義ファイルの後に追加されます。 デフォルト設定では、オンデマンドでロードされる ipf モジュールを初期化します。 ipfilter を直接カーネルに組み込むときには (これが推奨です)、 この変数を空にしてコード初期化が複数回行われないようにすべきです。 詳細は .Ar ipfilter_enable を参照してください。 .\" ----- ipnat_enable setting ---------------------------------- .It Ar ipnat_enable (ブール値) デフォルトで .Ar NO にセットされます。 .Ar YES にセットすると、 .Xr ipnat 8 ネットワークアドレス変換を有効にします。 この変数をセットする場合、 .Ar ipfilter_enable もセットすることが必要です。 詳細は .Ar ipfilter_enable を参照してください。 .\" ----- ipnat_program setting --------------------------------- .It Ar ipnat_program (文字列) デフォルトで .Ar /sbin/ipnat -CF -f にセットされます。 この変数は、変換ルール定義 (別のファイル中にあるものと期待されます) までのコマンドラインを含みます (変換ルール定義は含みません)。 詳細は .Ar ipfilter_enable を参照してください。 .\" ----- ipnat_rules setting ----------------------------------- .It Ar ipnat_rules (文字列) デフォルトで .Ar /etc/ipnat.rules にセットされます。 この変数は、ネットワークアドレス変換を定義するファイルの名前を含みます。 このファイルは、実行する NAT プログラムから読めることを期待しています。 詳細は .Ar ipfilter_enable を参照してください。 .\" ----- ipnat_flags setting ----------------------------------- .It Ar ipnat_flags (文字列) デフォルトで空です。 この変数は、ipnat のコマンドラインに追加されるフラグを含みます。 このフラグはルール定義ファイルの後に追加されます。 詳細は .Ar ipfilter_enable を参照してください。 .\" ----- ipmon_enable setting ---------------------------------- .It Ar ipmon_enable (ブール値) デフォルトで .Ar NO にセットされます。 .Ar YES にセットすると、 .Xr ipmon 8 モニタリング ( .Xr ipf 8 と .Xr ipnat 8 のイベントのログ) を有効にします。 この変数をセットする場合、 .Ar ipfilter_enable もセットすることが必要です。 詳細は .Ar ipfilter_enable を参照してください。 .\" ----- ipmon_program setting --------------------------------- .It Ar ipmon_program (文字列) デフォルトで .Ar /sbin/ipmon にセットされます。 この変数は .Xr ipmon 8 実行形式のファイル名を含みます。 詳細は .Ar ipfilter_enable を参照してください。 .\" ----- ipmon_flags setting ----------------------------------- .It Ar ipmon_flags (文字列) デフォルトで .Ar -Ds にセットされます。 この変数は、 .Xr ipmon 8 プログラムに渡されるフラグを含みます。 他の典型的な例は .Ar -D /var/log/ipflog であり、これは .Xr ipmon 8 に .Xr syslogd 8 をバイパスさせて、直接ファイルにログさせます。 このような場合、必ず .Pa /etc/newsyslog.conf を次のように修正してください: .Bd -literal /var/log/ipflog 640 10 100 * Z /var/run/ipmon.pid .Ed 詳細は .Ar ipfilter_enable を参照してください。 .\" ----- end of added ipf hook --------------------------------- .It Ar tcp_extensions (ブール値) デフォルトでは .Ar NO です。YES にセットすると、 .%T RFC 1323 で述べられているような ある TCP オプションを有効にします。 もしネットワークコネクションが不規則にハングアップしたり、 それに類する他の不具合がある場合には、これを .Ar NO に戻して様子をみてみるのもよいかもしれません。世間に出回っている ハードウェア/ソフトウェアの中には、これらのオプションでうまく動作しない ものがあることが知られています。 .It Ar log_in_vain (ブール値) デフォルトで .Ar NO にセットされています。 YES に設定すると、 listen 中のソケットが無いポートに対する接続の試みをログするようになります。 .It Ar tcp_keepalive (ブール値) デフォルトで .Ar YES にセットされています。 NO にセットすると、 アイドルな TCP 接続を検出し、相手がまだ起きていて、到達可能であることを、 確認しなくなります。 .It Ar tcp_drop_synfin (ブール値) デフォルトで .Ar NO にセットされています。 YES にセットすると、 TCP フレームで SYN と FIN のフラグを共にセットされているものを、 カーネルが無視するようになります。 これにより、OS が指紋を残すのを防ぎますが、 正当なアプリケーションが動作しなくなるかもしれません。 RCP_DROP_SYNFIN オプション付きでカーネルを構築した場合のみ、 本オプションが使用可能です、 .It Ar tcp_restrict_rst (ブール値) デフォルトで .Ar NO にセットされています。 YES にセットすると、 不正な TCP パケット (例えば、閉じられたポート宛のフレーム) に応答する TCP RST フレームの送出を、 カーネルに止めさせます。 RCP_RESTRICT_RST オプション付きでカーネルを構築した場合のみ、 本オプションが使用可能です、 .It Ar icmp_drop_redirect (ブール値) デフォルトで .Ar NO にセットされています。 YES にセットすると、 ICMP REDIRECT パケットを、カーネルが無視するようになります。 .It Ar icmp_log_redirect (ブール値) デフォルトで .Ar NO にセットされています。 YES にセットすると、 ICMP REDIRECT パケットを、カーネルが記録するようになります。 ログメッセージの速度制限はありませんので、 あなたのネットワーク内の問題解決にのみ使用すべきです。 .It Ar network_interfaces (文字列) このホスト上で形成されるネットワークインタフェースのリストを 設定します。 たとえば、ループバックデバイス (標準) および SMC Elite Ultra NIC があるなら .Qq Ar "lo0 ed0" という 2 つのインタフェースを設定します。 .Em interface の各値に対して .No ifconfig_ Ns Em interface という変数が存在すると仮定されます。 1 つのインタフェースに複数の IP アドレスを登録したい場合は、 ここに IP エイリアスのエントリを追加することも可能です。 対象とするインタフェースが ed0 であると仮定すると、 .Bd -literal -ifconfig_ed0_alias0="inet 127.0.0.253 netmask 0xffffffff" +ifconfig_ed0_alias0="inet 127.0.0.253 netmask 0xffffffff" ifconfig_ed0_alias1="inet 127.0.0.254 netmask 0xffffffff" .Ed というようになります。 見つかった各 ifconfig__alias エントリについて、 その内容が .Xr ifconfig 8 に渡されます。最初にアクセスに失敗した時点で実行は中止されるので .Bd -literal ifconfig_ed0_alias0="inet 127.0.0.251 netmask 0xffffffff" ifconfig_ed0_alias1="inet 127.0.0.252 netmask 0xffffffff" ifconfig_ed0_alias2="inet 127.0.0.253 netmask 0xffffffff" ifconfig_ed0_alias4="inet 127.0.0.254 netmask 0xffffffff" .Ed のようにすると、alias4 は追加され .Em ない ことに注意してください。これは alias3 エントリを抜かしたことで検索が中止されるからです。 .Pp インタフェースの DHCP での立ち上げは、 .No ifconfig_ Ns Em interface 変数を .Dq DHCP に設定することで可能です。 例えば ed0 デバイスを DHCP で初期化するには、 次のような行を指定すればよいです: .Bd -literal ifconfig_ed0="DHCP" .Ed .It Ar ppp_enable (ブール値) .Ar YES にセットすると、 .Xr ppp 8 デーモンを実行します。 .It Ar ppp_mode (文字列) .Xr ppp 8 デーモンを実行するモードです。受け付けられるモードは .Ar auto , ddial , direct , .Ar dedicated のいずれかです。 完全な解説はマニュアルを参照してください。 .It Ar ppp_nat (ブール値) .Ar YES にセットすると、パケットエイリアスを有効にします。 .Ar gateway_enable と共に使用することにより、 本ホストをネットワークアドレス変換ルータとして使用して、 プライベートネットワークアドレスのホストからの インターネットへのアクセスを可能にします。 .It Ar ppp_profile (文字列) .Pa /etc/ppp/ppp.conf から使用するプロファイル名です。 .It Ar ppp_user (文字列) このユーザ名の元で ppp を起動します。 デフォルトでは ppp は .Ar root が起動します。 .It Ar rc_conf_files (文字列) 本オプションは、 .Pa /etc/defaults/rc.conf の設定を上書きするファイルのリストを指定するために使用されます。 ファイルは指定された順序に読み込まれ、 ファイルへの完全なパスを含む必要があります。 デフォルトでは、指定されるファイルは .Pa /etc/rc.conf と .Pa /etc/rc.conf.local です。 .It Ar fsck_y_enable (ブール値) .Ar YES にセットすると、 ファイルシステムの最初の preen に失敗した場合、 .Xr fsck 8 を -y フラグ付きで実行します。 .It Ar syslogd_enable (ブール値) .Ar YES にセットすると、 .Xr syslogd 8 デーモンを起動します。 .It Ar syslogd_flags (文字列) .Ar syslogd_enable が .Ar YES の場合、これらは .Xr syslogd 8 に渡すフラグになります。 .It Ar inetd_enable (ブール値) .Ar YES にセットすると、 .Xr inetd 8 デーモンを起動します。 .It Ar inetd_flags (文字列) .Ar inetd_enable が .Ar YES の場合、これらは .Xr inetd 8 へ渡すフラグとなります。 .It Ar named_enable (ブール値) .Ar YES にセットすると、 .Xr named 8 デーモンを起動します。 .It Ar named_program (文字列) .Xr named 8 のパス (デフォルトは .Pa /usr/sbin/named です)。 .It Ar named_flags (文字列) .Ar named_enable が .Ar YES の場合、これらは .Xr named 8 に渡すフラグとなります。 .It Ar kerberos_server_enable (ブール値) ブート時に Kerberos 認証サーバを起動したい場合は .Ar YES にセットします。 .It Ar kadmind_server_enable .Xr kadmind 8 (Kerberos 管理デーモン) を実行したい場合は .Ar YES とします。スレーブサーバ上では .Ar NO にセットします。 .It Ar kerberos_stash (文字列) .Ar YES なら (唯一 .Ar kerberos_server_enable が .Ar YES にセットされ、かつ .Xr kerberos 1 および .Xr kadmind 8 の両方を用いるときにのみ) 隠されたマスタキーのプロンプト入力を行なう代りに、 そのキーを用いるよう Kerberos サーバに指示します。 .It Ar rwhod_enable (ブール値) .Ar YES にセットすると、ブート時に .Xr rwhod 8 デーモンを起動します。 .It Ar rwhod_flags (文字列) .Ar rwhod_enable が .Ar YES にセットされている場合、これらは rwhod に渡すフラグになります。 .It Ar amd_enable (ブール値) .Ar YES にセットすると、ブート時に .Xr amd 8 デーモンを起動します。 .It Ar amd_flags (文字列) .Ar amd_enable が .Ar YES にセットされている場合、これらは amd に渡すフラグとなります。 詳しくは .Xr amd 8 の .Xr info 1 ページを利用してください。 .It Ar update_motd (ブール値) .Ar YES にセットすると、ブート時に実行されているカーネルリリースを反映するように .Pa /etc/motd を更新します。 .Ar NO にセットすると、 .Pa /etc/motd は更新を行いません。 .It Ar nfs_client_enable (ブール値) .Ar YES にセットすると、ブート時に NFS クライアントデーモンを起動します。 .It Ar nfs_client_flags (文字列) .Ar nfs_client_enable が .Ar YES の場合、これらは .Xr nfsiod 8 デーモンに渡すフラグとなります。 .It Ar nfs_access_cache .Ar nfs_client_enable が .Ar YES の場合、この変数に .Ar 0 をセットして NFS ACCESS RPC キャッシングを無効化することができますし、 NFS ACCESS 結果がキャッシュされる秒数を指定することもできます。 2-10 秒の値を設定すると、 多くの NFS 操作のネットワークトラフィックを十分減らします。 .It Ar nfs_server_enable (ブール値) .Ar YES にセットすると、ブート時に NFS サーバデーモンを起動します。 .It Ar nfs_server_flags (文字列) .Ar nfs_server_enable が .Ar YES の場合、これらは .Xr nfsd 8 デーモンに渡すフラグとなります。 .It Ar single_mountd_enable (ブール値) .Ar YES にセットし .Ar nfs_server_enable をセットしないと、 .Xr mountd 8 は起動しますが .Xr nfsd 8 デーモンは起動しません。 実際に NFS は使用せずに CFS を使用する場合に、一般的に必要となります。 .It Ar weak_mountd_authentication (ブール値) .Ar YES にセットすると、権限付けられていないマウント要求を行なうために PCNFSD のようなサービスを許可します。 .It Ar nfs_privport (ブール値) .Ar YES にセットすると、安全なポート上でのみ NFS サービスを提供します。 .It Ar nfs_bufpackets (整数) 数値を設定すると、そのパケット数分のソケットバッファ空間が、 NFS クライアント上に予約されます。 .Ar DEFAULT に設定すると、カーネルのデフォルト (典型的には 4) が使用されます。 ギガビットネットワークでは大きな値を設定すると高性能になるでしょう、 最小値は 2 であり、最大値は 64 です。 .It Ar rpc_lockd_enable (ブール値) この変数が .Ar YES にセットされ、しかも NFS サーバである場合、ブート時に .Xr rpc.lockd 8 を起動します。 .It Ar rpc_statd_enable (ブール値) この変数が .Ar YES にセットされ、しかも NFS サーバである場合、ブート時に .Xr rpc.statd 8 を起動します。 .It Ar portmap_program (文字列) .Xr portmap 8 のパス (デフォルトは .Pa /usr/sbin/portmap です)。 .It Ar portmap_enable (ブール値) .Ar YES の場合、ブート時に .Xr portmap 8 サービスを起動します。 .It Ar portmap_flags (文字列) .Ar portmap_enable が .Ar YES の場合、これらは .Xr portmap 8 デーモンに渡すフラグとなります。 .It Ar xtend_enable (ブール値) .Ar YES にセットすると、ブート時に -.Xr xtend 8 +.Xr xtend 8 デーモンを起動します。 .It Ar xtend_flags (文字列) .Ar xtend_enable が .Ar YES の場合、これらは .Xr xtend 8 デーモンに渡すフラグとなります。 .It Ar pppoed_enable (ブール値) .Ar YES にセットすると、ブート時に -.Xr pppoed 8 +.Xr pppoed 8 デーモンを起動し、PPP オーバイーサネットサービスを提供します。 .It Ar pppoed_provider .Xr pppoed 8 はこの .Ar provider に対する要求を listen し、究極的にはこの名前を .Ar system 引数として .Xr ppp 8 を実行します。 .It Ar pppoed_flags .Xr pppoed 8 へ渡す追加のフラグ。 .It Ar pppoed_interface pppoed が実行されるネットワークインタフェース。 .Ar pppoed_enable が .Dq YES にセットされた場合、必須です。 .It Ar timed_enable (ブール値) .Ar YES なら、ブート時に .Xr timed 8 サービスを実行します。このコマンドは、全ホストについて一貫した .Qq "ネットワーク時間" が確立されなければならないマシンネットワークのためにあります。 これが有用である典型例は、 ファイルのタイムスタンプがネットワークワイドで一貫性をもつことが 期待されるような、大規模 NFS 環境です。 .It Ar timed_flags (文字列) .Ar timed_enable が .Ar YES の場合、これらは .Xr timed 8 サービスに渡すフラグとなります。 .It Ar ntpdate_enable (ブール値) .Ar YES にセットすると、システムスタートアップ時に ntpdate を実行します。 このコマンドは、ある標準的な参照先を元に、ただ .Ar 1 回 だけシステム時刻を同期させるためにあります。 また、システムを最初にインストールする際、 これを (知られているサービスのリストから) 最初にセットアップするオプションが .Pa /stand/sysinstall プログラムによって提供されます。 .It Ar ntpdate_program (文字列) .Xr ntpdate 8 のパス (デフォルトは .Pa /usr/sbin/ntpdate です)。 .It Ar ntpdate_flags (文字列) .Ar ntpdate_enable が .Ar YES の場合、これらは .Xr ntpdate 8 コマンドに渡すフラグとなります (典型的にはホスト名)。 .It Ar xntpd_enable (ブール値) .Ar YES にセットすると、ブート時に .Xr xntpd 8 コマンドが起動されます。 .It Ar xntpd_program (文字列) .Xr xntpd 8 のパス (デフォルトは .Pa /usr/sbin/xntpd です)。 .It Ar xntpd_flags (文字列) .Ar xntpd_enable が .Ar YES の場合、これらは .Xr xntpd 8 デーモンに渡すフラグとなります。 .It Ar nis_client_enable (ブール値) .Ar YES にセットすると、システムブート時に .Xr ypbind 8 サービスを起動します。 .It Ar nis_client_flags (文字列) .Ar nis_client_enable が .Ar YES の場合、これらは .Xr ypbind 8 サービスに渡すフラグとなります。 .It Ar nis_ypset_enable (ブール値) .Ar YES にセットすると、システムブート時に .Xr ypset 8 デーモンを起動します。 .It Ar nis_ypset_flags (文字列) .Ar nis_ypset_enable が .Ar YES の場合、これらは .Xr ypset 8 デーモンに渡すフラグとなります。 .It Ar nis_server_enable (ブール値) .Ar YES にセットすると、システムブート時に .Xr ypserv 8 デーモンを起動します。 .It Ar nis_server_flags (文字列) .Ar nis_server_enable が .Ar YES の場合、これらは .Xr ypserv 8 デーモンに渡すフラグとなります。 .It Ar nis_ypxfrd_enable (ブール値) .Ar YES にセットすると、システムブート時に .Xr ypxfrd 8 デーモンを起動します。 .It Ar nis_ypxfrd_flags (文字列) .Ar nis_ypxfrd_enable が .Ar YES の場合、これらは .Xr ypxfrd 8 デーモンに渡すフラグとなります。 .It Ar nis_yppasswdd_enable (ブール値) .Ar YES にセットすると、システムブート時に .Xr yppasswdd 8 デーモンを起動します。 .It Ar nis_yppasswdd_flags (文字列) .Ar nis_yppasswdd_enable が .Ar YES の場合、これらは .Xr yppasswdd 8 デーモンに渡すフラグとなります。 .It Ar defaultrouter (文字列) .Ar NO をセットしないと、このホスト名または IP アドレスへのデフォルトルートを 作成します (このルータがネームサーバへたどりつく必要がある 場合は IPアドレスを使用すること!)。 .It Ar static_routes (文字列) システムブート時に追加したいスタティックルートのリストを セットします。 .Ar NO 以外をセットした場合、その値を空白で区切った各要素について、 各 .Em element 毎に変数 .No route_ Ns element が存在すると仮定され、その後、 .Dq route add 操作に渡されます。 .It Ar gateway_enable (ブール値) .Ar YES にセットすると、IP ルータとして動作する、 たとえばインタフェース間でパケットをフォワードするように ホストを設定します。 .It Ar router_enable (ブール値) .Ar YES にセットすると、 .Ar router および .Ar router_flags の設定に基づいて、ある種のルーティングデーモンを実行します。 .It Ar router (文字列) .Ar router_enable が .Ar YES にセットされると、これが使用するルーティングデーモン名になります。 .It Ar router_flags (文字列) .Ar router_enable が .Ar YES にセットされると、これらがルーティングデーモンへ渡すフラグとなります。 .It Ar mrouted_enable (ブール値) .Ar YES にセットすると、マルチキャストルーティングデーモン .Xr mrouted 8 を起動します。 .It Ar mrouted_flags (文字列) .Ar mrouted_enable が .Ar YES の場合、これらはマルチキャストルーティングデーモンへ渡すフラグとなります。 .It Ar ipxgateway_enable (ブール値) .Ar YES にセットすると、IPX トラフィックのルーティングを有効にします。 .It Ar ipxrouted_enable (ブール値) .Ar YES にセットすると、ブート時に .Xr IPXrouted 8 デーモンを起動します。 .It Ar ipxrouted_flags (文字列) .Ar ipxrouted_enable が .Ar YES の場合、これらは .Xr IPXrouted 8 デーモンへ渡すフラグとなります。 .It Ar arpproxy_all .Ar YES にセットすると、グローバルプロキシ ARP を有効にします。 .It Ar forward_sourceroute これが .Ar YES にセットされ、更に .Ar gateway_enable もまた .Ar YES にセットされている場合、 送信元が経路指定したパケット (source routed packets) はフォワードされます。 .It Ar accept_sourceroute .Ar YES にセットすると、 システムは自分宛の送信元経路指定パケットを受け付けます。 .It Ar rarpd_enable (ブール値) .Ar YES にセットすると、システムブート時に .Xr rarpd 8 デーモンを起動します。 .It Ar rarpd_flags (文字列) .Ar rarpd_enable が .Ar YES の場合、これらは .Xr rarpd 8 デーモンへ渡すフラグとなります。 .It Ar atm_enable (ブール値) -.Ar YES +.Ar YES システムブート時に ATM インタフェースの設定を有効にします。 次に説明する ATM 関連の変数に関し、 利用可能なコマンドパラメータの更なる詳細については、 .Xr atm 8 のマニュアルページを参照してください。 更なる詳細な設定情報に関しては、 .Pa /usr/share/examples/atm 中のファイルも参照してください。 .It Ar atm_netif_ (文字列) ATM 物理インタフェース .Va に対し、本変数は、 作成すべき ATM ネットワークインタフェースの 名前プレフィックスと数字を指定します。 値はコマンド .Dq atm set netif Va のパラメータとして渡されます。 .It Ar atm_sigmgr_ (文字列) ATM 物理インタフェース .Va に対し、本変数は使用すべき ATM シグナリングマネージャを定義します。 値はコマンド .Dq atm attach Va のパラメータとして渡されます。 .It Ar atm_prefix_ (文字列) ATM 物理インタフェース .Va に対し、本変数は、 UNI シグナリングマネージャを使用するインタフェースの NSAP プレフィックスを定義します。 .Em ILMI に設定すると、プレフィックスは自動的に -.Xr ilmid 8 +.Xr ilmid 8 デーモンを介して設定されます。 そうでない場合、値はコマンド .Dq atm set prefix Va のパラメータとして渡されます。 .It Ar atm_macaddr_ (文字列) ATM 物理インタフェース .Va に対し、本変数は、 UNI シグナリングマネージャを使用するインタフェースの MAC アドレスを定義します。 .Em NO に設定すると、ATM インタフェースカードに格納されている ハードウェア MAC アドレスが使用されます。 そうでない場合、値はコマンド .Dq atm set mac Va のパラメータとして渡されます。 .It Ar atm_arpserver_ (文字列) ATM 物理インタフェース .Va に対し、本変数は、ATMARP サービスを提供するホストの ATM アドレスを定義します。 本変数は、UNI シグナリングマネージャを使用するインタフェースにおいてのみ 利用可能です。 .Em local に設定すると、本ホストが ATMARP サーバになります。 値はコマンド .Dq atm set arpserver Va のパラメータとして渡されます。 .It Ar atm_scsparp_ (ブール値) .Em YES に設定すると、ネットワークインタフェース -.Va +.Va に対する SCSP/ATMARP サービスが、 .Xr scspd 8 および .Xr atmarpd 8 を使用して開始されます。 本変数は -.So -.No atm_arpserver_ Ns Va +.So +.No atm_arpserver_ Ns Va .No = Ns Qq local -.Sc +.Sc が定義されている場合にのみ利用可能です。 .It Ar atm_pvcs (文字列) システムブート時に追加したい ATM PVC のリストを設定します。 -値中で空白で区切られた -.Em element +値中で空白で区切られた +.Em element ごとに、変数 .No atm_pvc_ Ns Em element が存在するものと仮定されます。これらの変数の値がコマンド .Dq atm add pvc のパラメータとして渡されます。 .It Ar atm_arps (文字列) システムブート時に追加したい、 永続的な ATM ARP エントリのリストを設定します。 -値中で空白で区切られた -.Em element +値中で空白で区切られた +.Em element ごとに、変数 .No atm_arp_ Ns Em element が存在するものと仮定されます。これらの変数の値がコマンド .Dq atm add arp のパラメータとして渡されます。 .It Ar keymap (文字列) .Ar NO にセットすると、キーマップはインストールされません。それ以外の場合、 ここで指定した .Ar value がキーマップファイル .Pa /usr/share/syscons/keymaps/.kbd をインストールするのに用いられます。 .It Ar keyrate (文字列) キーボードのリピートスピードです。以下のいずれかにセットします。 .Ar slow , .Ar normal , .Ar fast デフォルト値を希望する場合は .Ar NO とします。 .It Ar keychange (文字列) .Ar NO 以外にセットすると、その値でファンクションキーをプログラムしようとします。 指定できる値は単一の文字列で, .Qq Ar " [ ]..." という形式でないといけません。 .It Ar cursor (文字列) カーソルの動作を明示的に指定する場合は .Ar normal , .Ar blink , .Ar destructive のいずれかの値にセットします。デフォルト動作を選ぶには .Ar NO とします。 .It Ar scrnmap (文字列) .Ar NO にセットすると、スクリーンマップはインストールされません。 それ以外の場合には、ここで指定した .Ar value がスクリーンマップファイル .Pa /usr/share/syscons/scrnmaps/ をインストールするのに用いられます。 .It Ar font8x16 (文字列) .Ar NO にセットすると、スクリーンサイズの要求に対しデフォルトの 8x16 フォント値が 用いられます。それ以外の場合は .Pa /usr/share/syscons/fonts/ の値が用いられます。 .It Ar font8x14 (文字列) .Ar NO にセットすると、スクリーンサイズの要求に対しデフォルトの 8x14 フォント値が 用いられます。それ以外の場合は .Pa /usr/share/syscons/fonts/ の値が用いられます。 .It Ar font8x8 (文字列) .Ar NO にセットすると、スクリーンサイズの要求に対しデフォルトの 8x8 フォント値が 用いられます。それ以外の場合は .Pa /usr/share/syscons/fonts/ の値が用いられます。 .It Ar blanktime (整数) .Ar NO にセットすると、デフォルトのスクリーンブランク時間間隔が用いられます。 それ以外の場合は -.Ar value +.Ar value 秒にセットされます。 .It Ar saver (文字列) .Ar NO 以外にセットすると、これが実際に使用する スクリーンセーバ (ブランク, 蛇, デーモンなど) となります。 .It Ar moused_enable (文字列) .Ar YES にセットすると、コンソール上でのカット/ペーストセレクション用に .Xr moused 8 デーモンが起動されます。 .It Ar moused_type (文字列) 利用したいマウスのプロトコルのタイプ。 .Ar moused_enable が .Ar YES の場合、この変数は必ず設定しなければなりません。 多くの場合、 .Xr moused 8 デーモンは適切なマウスタイプを自動的に検出することができます。 デーモンにマウスを検出させるには、この変数を .Ar auto にセットします。 自動検出が失敗する場合、以下のリストから 1 つを選びます。 .Pp マウスが PS/2 マウスポートに接続されている場合、 .Ar auto か .Ar ps/2 を常に指定する必要があります。マウスのブランドやモデルには無関係です。 同様に、マウスがバスマウスポートに接続されている場合、 .Ar auto か .Ar busmouse を選択してください。 他のプロトコルはシリアルマウス用であり、 PS/2 マウスおよびバスマウスでは動作しません。 USB マウスを持っている場合、 .Ar auto のみが USB マウスで動作する唯一のプロトコルです。 .Bd -literal microsoft Microsoft マウス (シリアル) intellimouse Microsoft IntelliMouse (シリアル) mousesystems Mouse system 社製のマウス (シリアル) mmseries MM シリーズのマウス (シリアル) logitech Logitech 製のマウス (シリアル) busmouse バスマウス mouseman Logitech の MouseMan および TrackMan (シリアル) glidepoint ALPS 製の GlidePoint (シリアル) thinkingmouse Kensignton 製の ThinkingMouse (シリアル) ps/2 PS/2 マウス mmhittab MM の HitTablet (シリアル) x10mouseremote X10 MouseRemote (シリアル) versapad Interlink VersaPad (シリアル) .Ed お使いのマウスが上記のリストにない場合でも、 リスト中のいずれかと互換性があるかも知れません。 互換性に関する情報については .Xr moused 8 のマニュアルページを参照してください。 .Pp また、 この変数が有効であるときは、(Xサーバのような) 他の全てのマウスクライアントは 仮想マウスデバイス .Pa /dev/sysmouse を通してマウスにアクセスし、 それを sysmouse タイプのマウスとして構成すべきであると いうことにも注意すべきです。これは、 .Xr moused 8 使用時は、全てのマウスデータがこの単一の標準フォーマットに変換されるためです。 クライアントプログラムが sysmouse タイプを サポートしないなら次に望ましいタイプとして mousesystems を指定してください。 .It Ar moused_port (文字列) .Ar moused_enable が .Ar YES の場合、これはマウスが接続されている実際のポートになります。 たとえば、COM1 シリアルマウスに対しては .Pa /dev/cuaa0 、PS/2 マウスに対しては .Pa /dev/psm0 、バスマウスに対しては .Pa /dev/mse0 となります。 .It Ar moused_flags (文字列) .Ar moused_type がセットされている場合、これらは .Xr moused 8 デーモンに渡す追加のフラグとなります。 .It Ar allscreens_flags (文字列) 設定すると、各仮想端末 .Pq Pa /dev/ttyv* に対し、これらのオプションを使用して .Xr vidcontrol 1 を実行します。 例えば .Ar -m on は、 .Ar moused_enable が .Ar YES にセットされている場合、全仮想端末上でマウスポインタを有効にします。 .It Ar cron_enable (ブール値) .Ar YES にセットすると、システムブート時に .Xr cron 8 デーモンを起動します。 .It Ar cron_program (文字列) .Xr cron 8 へのパス (デフォルトは .Pa /usr/sbin/cron です)。 .It Ar cron_flags (文字列) .Ar cron_enable が .Ar YES をセットされている場合、これが .Xr cron 8 へ渡すフラグとなります。 .It Ar lpd_program (文字列) .Xr lpd 8 のパス (デフォルトは .Pa /usr/sbin/lpd です)。 .It Ar lpd_enable (ブール値) .Ar YES にセットすると、システムブート時に .Xr lpd 8 デーモンを起動します。 .It Ar lpd_flags (文字列) .Ar lpd_enable が .Ar YES の場合、これらは .Xr lpd 8 デーモンに渡すフラグとなります。 .It Ar sendmail_enable (ブール値) .Ar YES にセットすると、システムブート時に .Xr sendmail 8 デーモンを起動します。 .It Ar sendmail_flags (文字列) .Ar sendmail_enable が .Ar YES の場合、これらは .Xr sendmail 8 デーモンに渡すフラグとなります。 .It Ar dumpdev (文字列) .Ar NO にセットしないと、カーネルクラッシュダンプ出力先を .Em value で指定したスワップデバイスに向けます。 システム再開時に、 .Xr savecore 8 プログラムは、指定したデバイスからクラッシュダンプを探し、典型的には .Pa /var/crash ディレクトリに格納します。 .It Ar check_quotas (ブール値) .Xr quotacheck 8 コマンドによってユーザディスクのクォータチェックを有効にしたいなら、 .Ar YES にセットします。 .It Ar accounting_enable (ブール値) .Xr accton 8 ファシリティでシステムアカウンティングを有効にしたいなら .Ar YES にセットします。 .It Ar ibcs2_enable (ブール値) システム初期ブート時に iBCS2 (SCO) バイナリエミュレーションを有効にしたいなら .Ar YES にセットします。 .It Ar ibcs2_loaders (文字列) これを .Ar NO にセットせずに .Ar ibcs2_enable を .Ar YES にセットした場合、 この文字列は有効化すべき追加の iBCS2 ローダのリストを指定します。 .It Ar linux_enable (ブール値) システムブート時に Linux/ELF バイナリエミュレーションを有効にしたいなら .Ar YES にセットします。 .It Ar osf1_enable (ブール値) システムブート時に OSF/1 (Digital UNIX) バイナリエミュレーションを 有効にしたいなら .Ar YES にセットします (Alpha)。 .It Ar rand_irqs (文字列) 乱数生成用に監視する IRQ のリストをセットします ( .Xr rndcontrol 8 のマニュアル参照)。 .It Ar clear_tmp_enable (ブール値) 起動時に .Pa /tmp 下を消去したいなら .Ar YES をセットします。 .It Ar ldconfig_paths (文字列) .Xr ldconfig 8 で使用する共有ライブラリのパスのリストをセットします。注意: .Pa /usr/lib は常に先頭に追加されるので、このリストに指定する必要はありません。 .It Ar ldconfig_insecure (ブール値) .Xr ldconfig 8 ユーティリティは、通常、 root 以外が書き込み可能なディレクトリの使用を拒否します。 このセキュリティチェックをシステムブート中に無効化したい場合に、 .Ar YES にセットします。 .It Ar kern_securelevel_enable (ブール値) カーネルのセキュリティレベルをシステムスタートアップ時に設定したい場合に、 .Ar YES にセットします。 .It Ar kern_securelevel (整数) スタートアップ時にセットされるカーネルセキュリティレベルです。 .Ar 値 として許される範囲は -1 (コンパイル時のデフォルト) から 3 (最も安全) です。 利用可能なセキュリティレベルとシステム操作への影響については、 .Xr init 8 を参照してください。 .It Ar start_vinum (ブール値) システムブート時に .Xr vinum 8 を開始したい場合、 .Ar YES にセットします。 .It Ar sshd_program (文字列) SSH サーバプログラムへのパスです .Po .Pa /usr/sbin/sshd がデフォルトです .Pc 。 .It Ar sshd_enable (ブール値) ブート時に .Xr sshd 8 を起動したい場合、 .Ar YES にセットします。 .It Ar sshd_flags (文字列) .Ar sshd_enable が .Ar YES の場合、これらは .Xr sshd 8 デーモンに渡すフラグになります。 .It Ar unaligned_print (ブール値) .Ar NO にセットすると、境界調整されていないアクセスの警告は表示されません (Alpha)。 +.\" ----- isdn settings --------------------------------- +.It Ar isdn_enable +(ブール値) +デフォルトは +.Ar NO +です。 +.Ar YES +に設定すると、isdn デーモン +.Pa /usr/sbin/isdnd +をシステム起動時に起動します。 +.It Va isdn_flags +(文字列) +デフォルトは +.Ar -dn -d0x1f9 +です。 +.Xr isndn 8 +に渡される追加のフラグです (調整可能なパラメータについては +.Ar isdn_fsdev +と +.Ar isdn_ttype +を参照してください)。 +.It Ar isdn_ttype +(文字列) +デフォルトは +.Ar cons25 +です。 +.Xr idsnd 8 +が全画面モードで動作する場合の出力端末の型です。 +.It Ar isdn_fsdev +(文字列) +デフォルトは +.Ar /dev/ttyv4 +です。 +.Xr idsnd 8 +が全画面モードで動作する場合の出力端末です (デーモンモード時は +.Ar NO +です)。 +.It Ar isdn_trace +(ブール値) +デフォルトは +.Ar NO +です。 +.Ar YES +に設定すると、ISDN プロトコルトレースユーティリティ +.Pa /usr/sbin/isdntrace +をシステム起動時に有効にします。 +.It Ar isdn_traceflags +(文字列) +デフォルトは +.Ar -f /var/tmp/isdntrace0 +です。 +.Pa /usr/sbin/isdntrace +へのフラグです。 +.It Ar isdn_screenflags +(文字列) +デフォルトは +.Ar NO +です。 +全画面モードのビデオモードです ( +.Xr syscons 4 +コンソールドライバ専用です。正当なモードについては +.Xr vidcontrol 1 +を参照してください)。 +.\" ----------------------------------------------------- .El .Sh 関連ファイル .Bl -tag -width /etc/defaults/rc.conf -compact .It Pa /etc/defaults/rc.conf .It Pa /etc/rc.conf .It Pa /etc/rc.conf.local .El .Sh 関連項目 .Xr catman 1 , .Xr makewhatis 1 , .Xr gdb 1 , .Xr info 1 , .Xr exports 5 , .Xr motd 5 , .Xr accton 8 , .Xr amd 8 , .Xr apm 8 , .Xr atm 8 , .Xr cron 8 , .Xr dhclient 8 , .Xr gated 8 , .Xr ifconfig 8 , .Xr inetd 8 , +.Xr isdnd 8 , +.Xr isdntrace 8 , .Xr lpd 8 , .Xr moused 8 , .Xr mrouted 8 , .Xr named 8 , .Xr nfsd 8 , .Xr nfsiod 8 , .Xr ntpdate 8 , .Xr pcnfsd 8 , .Xr portmap 8 , .Xr quotacheck 8 , .Xr rc 8 , .Xr rndcontrol 8 , .Xr route 8 , .Xr routed 8 , .Xr rpc.lockd 8 , .Xr rpc.statd 8 , .Xr rwhod 8 , .Xr savecore 8 , .Xr sendmail 8 , .Xr sshd 8 , .Xr sysctl 8 , .Xr syslogd 8 , .Xr swapon 8 , .Xr tickadj 8 , .Xr timed 8 , +.Xr vidcontrol 1 , .Xr vinum 8 , .Xr vnconfig 8 , .Xr xntpd 8 , .Xr xtend 8 , .Xr ypbind 8 , .Xr ypserv 8 , .Xr ypset 8 .Sh 歴史 .Nm ファイルは .Fx 2.2.2 で登場しました。 .Sh 作者 .An Jordan K. Hubbard . diff --git a/ja_JP.eucJP/man/man5/term.5 b/ja_JP.eucJP/man/man5/term.5 index 5d821935f7..bcd57f8ac9 100644 --- a/ja_JP.eucJP/man/man5/term.5 +++ b/ja_JP.eucJP/man/man5/term.5 @@ -1,212 +1,212 @@ .\"*************************************************************************** .\" Copyright (c) 1998 Free Software Foundation, Inc. * .\" * .\" Permission is hereby granted, free of charge, to any person obtaining a * .\" copy of this software and associated documentation files (the * .\" "Software"), to deal in the Software without restriction, including * .\" without limitation the rights to use, copy, modify, merge, publish, * .\" distribute, distribute with modifications, sublicense, and/or sell * .\" copies of the Software, and to permit persons to whom the Software is * .\" furnished to do so, subject to the following conditions: * .\" * .\" The above copyright notice and this permission notice shall be included * .\" in all copies or substantial portions of the Software. * .\" * .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * .\" IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * .\" DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR * .\" OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR * .\" THE USE OR OTHER DEALINGS IN THE SOFTWARE. * .\" * .\" Except as contained in this notice, the name(s) of the above copyright * .\" holders shall not be used in advertising or otherwise to promote the * .\" sale, use or other dealings in this Software without prior written * .\" authorization. * .\"*************************************************************************** .\" .\" %Id: term.5,v 1.10 2000/08/13 01:56:45 tom Exp % -.\" $FreeBSD$ +.\" $FreeBSD: doc/ja_JP.eucJP/man/man5/term.5,v 1.7 2001/05/14 01:09:32 horikawa Exp $ .TH TERM 5 .\" WORD: compiled コンパイル済みの .\" WORD: linear search 線形探索(パス名から inodeを) .\" WORD: boolean value ブール値 .\" WORD: terminate 終端する .ds n 5 -.ds d /usr/share/misc/terminfo/terminfo +.ds d /usr/share/misc/terminfo .SH 名称 term \- コンパイル済みの term ファイルの形式 .SH 書式 .B term .SH 解説 .PP コンパイル済みの terminfo 属性記述はディレクトリ \fB\*d\fP の下にあります。 \s-1UNIX\s+1 システムの巨大なディレクトリを線形探索するのを避けるため、 \fB\*b/c/name\fP という形の 2 階層の命名規則が用いられます。 (ここで、 .I name は端末の名前で、 .I c は .I name の最初の文字です。) ですから、 .I act4 は、 \fB\*d/a/act4\fP というファイル名で見つけることができます。 同じ端末を示す同義な名前は、同じコンパイル済みファイルへの複数の リンクとして実装されています。 .PP この形式は、全てのハードウェアで同じになるように選ばれています。 1 バイトが 8 ビット以上であることは仮定していますが、バイトオーダや 符号拡張の方式については仮定していません。 .PP コンパイル済みのファイルは .I tic プログラムにより生成され、 .I setupterm ルーチンにより読み取られます。 このファイルは 6 つの部分に分割されます。すなわち、 ヘッダ、 端末の名称、 ブール値のフラグ、 数値、 文字列、および 文字列テーブルです。 .PP ヘッダセクションはファイルの冒頭にあります。 このセクションは、以下に示す形式の short 型の整数 6 個からなります。 これらの整数は (1) マジックナンバ (8 進で 0432)、 (2) 名称セクションのバイト単位での大きさ、 (3) ブール値のセクションに含まれるバイトの個数、 (4) 数値セクションに含まれる short 型整数の個数、 (5) 文字列セクションに含まれるオフセットの個数 (short 型整数)、 (6) 文字列テーブルのバイト単位での大きさ です。 .PP short 型の整数は 2 個の 8 ビットバイトに格納されています。 最初のバイトは値の最下位 8 ビットを、2 番目のバイトは最上位 8 ビットを 含みます。(すなわち、値は 256*second+first と表現されます。) 値 \-1 は 2 バイト 0377, 0377 で表現されますが、その他の負の値は構文違反です。 一般に、この値は、あるケーパビリティがその端末に備わっていないことを 示します。 この形式は \s-1VAX\s+1 と \s-1PDP\s+1-11 のハードウェアに 一致するものであることにご注意下さい (これらはリトルエンディアンマシンです)。これに一致しないハードウェアの マシンでは、整数を 2 個のバイトとして読み込み、 リトルエンディアン値を算出する必要があります。 .PP 次に現れるのは端末名セクションです。 これは、端末のさまざまな名前を `|' 文字で区切って列挙した、 terminfo 記述の最初の行を含みます。 このセクションは 1 個の \s-1ASCII NUL\s+1 文字で終端されます。 .PP ブール型のフラグは、フラグ 1 個につき 1 バイトを占めます。 このバイトは、フラグが存在するかしないかに従って、0 か 1 となる必要があります。 ケーパビリティはファイル に含まれるのと同じ順番に並びます。 .PP 数値セクションが偶数バイト目から開始されるように、 ブール値のセクションと数値セクションの間には、 必要なら 1 個のナルバイトを挿入します (これは PDP-11 のワードアドレスアーキテクチャの名残であり、 元々は奇数バイト境界上のワードをアドレスすることで発生する IOT トラップを 避けるためにデザインされました)。 すべての short 型整数は short 型のワード境界に揃えて配置されます。 .PP 数値セクションはフラグセクションと同様です。 各ケーパビリティは 2 バイトを占め、リトルエンディアンの short 型整数として格納されます。 もし表現された値が \-1 なら、そのケーパビリティは存在しないものと 解釈されます。 .PP 文字列セクションもまた同様です。 各ケーパビリティは上記の形式に従い、2 バイトの short 型整数として 格納されます。 値 \-1 は、ケーパビリティが存在しないことを意味します。 それ以外の場合、値は、文字列テーブルの先頭からのオフセットとして 解釈されます。 ^X や \ec といった記法で示された特殊文字は、その記法を解釈した結果の形で 格納され、印刷可能表現では格納されません。 パッド情報 $ とパラメータ情報 %x は解釈を行なわずそのままの形で 格納されます。 .PP 最後のセクションは文字列テーブルです。これは文字列セクションで参照されている すべての文字列ケーパビリティの値を含みます。 各文字列はナルで終端されています。 .PP .I setupterm ルーチンでは、ファイルに実際に存在するケーパビリティ とは異なるものが予想され得ることにご注意下さい。 .I setupterm が再コンパイルされた後にデータベースが更新される (ファイルにいくつかの未知のエントリが含まれる結果になります)か、 データベースが最後にコンパイルされた後にプログラムが再コンパイルされる (存在しないエントリを生む結果になります)両方の可能性があります。 ルーチン .I setupterm は両方の可能性に備える必要があります \- これが、データ内に個数と大きさが含まれている理由です。 また、新しいケーパビリティは常に、ブール値、数値、文字列の ケーパビリティリストのそれぞれの最後に追加しなければなりません。 .PP 数値にリトルエンディアンを使用して他には自ら記述した書式を使用しても、 商用 UNIX バージョンとのバイナリ terminfo エントリの互換性を 信用することは賢くはありません。 問題は、少なくとも 3 種の terminfo (HP-UX AIX, OSF/1) が SVr1 後に System V がら分岐し、 System V と XSI の Curses 拡張と (バイナリ書式において) 衝突する 拡張ケーパビリティを文字列テーブルに追加したことです。 terminfo ソースの互換性に関する詳細な議論は、 \fBterminfo\fR(\*n) を参照してください。 .PP 例として、Lear-Siegler ADM-3 の記述の 16 進数ダンプを示します。 これは、ポピュラーですが、馬鹿な初期の端末です: .nf .sp adm3a|lsi adm3a, am, cols#80, lines#24, bel=^G, clear=\032$<1>, cr=^M, cub1=^H, cud1=^J, cuf1=^L, cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, home=^^, ind=^J, .sp .ft CW \s-20000 1a 01 10 00 02 00 03 00 82 00 31 00 61 64 6d 33 ........ ..1.adm3 0010 61 7c 6c 73 69 20 61 64 6d 33 61 00 00 01 50 00 a|lsi ad m3a...P. 0020 ff ff 18 00 ff ff 00 00 02 00 ff ff ff ff 04 00 ........ ........ 0030 ff ff ff ff ff ff ff ff 0a 00 25 00 27 00 ff ff ........ ..%.'... 0040 29 00 ff ff ff ff 2b 00 ff ff 2d 00 ff ff ff ff ).....+. ..-..... 0050 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ........ ........ 0060 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ........ ........ 0070 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ........ ........ 0080 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ........ ........ 0090 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ........ ........ 00a0 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ........ ........ 00b0 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ........ ........ 00c0 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ........ ........ 00d0 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ........ ........ 00e0 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ........ ........ 00f0 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ........ ........ 0100 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ........ ........ 0110 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ........ ........ 0120 ff ff ff ff ff ff 2f 00 07 00 0d 00 1a 24 3c 31 ....../. .....$<1 0130 3e 00 1b 3d 25 70 31 25 7b 33 32 7d 25 2b 25 63 >..=%p1% {32}%+%c 0140 25 70 32 25 7b 33 32 7d 25 2b 25 63 00 0a 00 1e %p2%{32} %+%c.... 0150 00 08 00 0c 00 0b 00 0a 00 ........ .\s+2 .ft R .fi .sp .PP いくつかの制限: コンパイル済みのエントリは 4096 バイトを超えることが できません。名前フィールドは 128 バイトを超えることができません。 .SH 関連ファイル \*d/*/* コンパイル済みの端末ケーパビリティデータベース .SH 関連項目 \fBcurses\fR(3X), \fBterminfo\fR(\*n). .\"# .\"# The following sets edit modes for GNU EMACS .\"# Local Variables: .\"# mode:nroff .\"# fill-column:79 .\"# End: diff --git a/ja_JP.eucJP/man/man5/terminfo.5 b/ja_JP.eucJP/man/man5/terminfo.5 index 933ca29008..0a4039e09d 100644 --- a/ja_JP.eucJP/man/man5/terminfo.5 +++ b/ja_JP.eucJP/man/man5/terminfo.5 @@ -1,3098 +1,3098 @@ '\" t .\" DO NOT EDIT THIS FILE BY HAND! .\" It is generated from terminfo.head, Caps, and terminfo.tail. .\" .\" Note: this must be run through tbl before nroff. .\" The magic cookie on the first line triggers this under some man programs. .\"*************************************************************************** .\" Copyright (c) 1998 Free Software Foundation, Inc. * .\" * .\" Permission is hereby granted, free of charge, to any person obtaining a * .\" copy of this software and associated documentation files (the * .\" "Software"), to deal in the Software without restriction, including * .\" without limitation the rights to use, copy, modify, merge, publish, * .\" distribute, distribute with modifications, sublicense, and/or sell * .\" copies of the Software, and to permit persons to whom the Software is * .\" furnished to do so, subject to the following conditions: * .\" * .\" The above copyright notice and this permission notice shall be included * .\" in all copies or substantial portions of the Software. * .\" * .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * .\" IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * .\" DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR * .\" OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR * .\" THE USE OR OTHER DEALINGS IN THE SOFTWARE. * .\" * .\" Except as contained in this notice, the name(s) of the above copyright * .\" holders shall not be used in advertising or otherwise to promote the * .\" sale, use or other dealings in this Software without prior written * .\" authorization. * .\"*************************************************************************** .\" .\" %Id: terminfo.head,v 1.9 2000/08/13 01:56:40 tom Exp % -.\" $FreeBSD$ +.\" $FreeBSD: doc/ja_JP.eucJP/man/man5/terminfo.5,v 1.5 2001/05/14 01:09:32 horikawa Exp $ .TH TERMINFO 5 "" "" "File Formats" .ds n 5 -.ds d /usr/share/misc/terminfo/terminfo +.ds d /usr/share/misc/terminfo .SH 名称 terminfo \- 端末ケーパビリティのデータベース .SH 書式 \*d/*/* .SH 解説 .I terminfo は端末の特性を記述するデータベースであり、 \fBnvi\fR(1), \fBrogue\fR(1) などの画面を活用したプログラムや \fBcurses\fR(3X) などのライブラリによって使用されます。 .I terminfo は、端末が持つケーパビリティの集合を与え、画面操作をどのようにして行うかを 指定し、必要なパディングや初期化シーケンスを指定することで、端末の特性を 記述します。 .PP .I terminfo のエントリは、`,' で区切られたフィールドの列からなります (フィールド内の コンマはバックスラッシュでエスケープするか、\e072 と書きます)。 `,' セパレータの後の空白は無視されます。 各端末を表す最初のエントリは、端末を表すものとして知られている名前を 指定します。名前を複数指定するときは `|' で区切ります。 最初の名前は、その端末のものとして最もよく知られた省略形を与えます。 最後の名前には、その端末を識別できるだけの長い名前を指定するべきです。 それら以外の名前は、同じ端末を指す別名と見なされます。 最後のもの以外の名前は、すべて英小文字からなり、空白が含まれていては いけません。 最後の名前には、読みやすくするために大文字や空白を含めても構いません。 .PP 端末名 (最後の冗長なものは除く) は、以下の約束にしたがって付けてください。 名前の基本部分を、端末を構成するハードウェアの特徴的部分から名付けます (``hp2621'' のように)。 この名前にはハイフンを含めてはいけません。 モードや、ユーザの設定が現れる部分については、基本名の後に、 ハイフンとモードの接尾辞つけて表してください。 例えば、vt100 の 132 桁モードは vt100-w のようになります。 使えるところがあれば、以下の接尾辞を使ってください。 .PP .TS center ; l c l l l l. \fB接尾辞 意味 例\fP -\fInn\fP 画面の行数 aaa-60 -\fIn\fPp 画面記憶ページ数 c100-4p -am 自動マージン付 (通常これがデフォルト) vt100-am -m 白黒モード; 色を抑制 ansi-m -mc 魔法のクッキー; ハイライトのときの空白 wy30-mc -na 矢印キー無し (局所的にとどめる) c100-na -nam 自動マージン無し vt100-nam -nl ステータス行無し att4415-nl -ns ステータス行無し hp2626-ns -rv 反転表示 c100-rv -s ステータス行有り vt100-s -vb ビープの代わりに可視ベルを使用 wy370-vb -w 幅広モード (> 80 桁、通常 132 桁) vt100-w .TE .PP 端末の命名規則についてさらに知りたいときは \fBterm(7)\fR のマニュアルを 参照してください。 .SS ケーパビリティ .\" Head of terminfo man page ends here .ps -1 以下は terminfo の記述ブロックに含まれ、terminfo を使うコードが使用できる ケーパビリティの完全な表です。表の各行の意味は次の通りです。 \fBvariable\fR は (terminfo レベルの) プログラマがケーパビリティを 使用するときに用いる名前です。 \fBcapname\fR は、データベースのテキストの中で用いる短縮名で、 データベースを更新する人間が用いる名前です。 可能な場合は常に、capname は ANSI X3.64-1979 標準規格 (現在 ECMA-48 に 取って代わられていますが、そこでも同一のもしくは非常に良く似た名前を 使っています) と同一もしくは類似のものを選んであります。その意味も、 その規格での規定に合致するようにしてあります。 termcap code は古典的な .B termcap ケーパビリティの名前です (いくつかのケーパビリティは新しいもので、 その名前は termcap に由来しません)。 .P ケーパビリティの名前の長さには、決まった上限はありません。ただし、名前を 短くし、ソースファイルにタブを使って .B cap をきれいに並べられるように、非公式ながら上限 5 文字の制限が既に 採用されています。 最後に、説明ではケーパビリティの意味を伝えようとします。説明の中には 以下のようなコードがある場合があります。 .TP (P) パディングが指定可能であることを表します。 .TP #[1-9] 説明の中では、文字列が (#\fIi\fP) として与えられる引数として tparm を介して渡されることを示します。 .TP (P*) 影響を受ける行数にパディングが比例することを表します。 .TP (#\d\fIi\fP\u) 第 \fIi\fP 番目のパラメータを表します。 .PP 以下はブール値ケーパビリティです。 .na .TS H center expand; c l l c c l l c lw25 lw6 lw2 lw20. \fBvariable cap- TCap 説明\fR \fBブール値 name Code\fR auto_left_margin bw bw T{ cub1 は桁 0 から最後の桁に回り込む T} auto_right_margin am am T{ 自動マージン機能を持つ T} back_color_erase bce ut T{ 画面を背景色で消去する T} can_change ccc cc T{ 既存の色を再定義可能 T} ceol_standout_glitch xhp xs T{ 強調出力は上書きで消去されない (hp) T} col_addr_glitch xhpa YA T{ hpa/mhpa では正方向のみ移動可能 T} cpi_changes_res cpix YF T{ 文字ピッチを変えると解像度が変わる T} cr_cancels_micro_mode crxm YB T{ cr を使用するとマイクロモードがオフになる T} dest_tabs_magic_smso xt xt T{ タブは破壊的、強調文字の動作が奇妙 (t1061) T} eat_newline_glitch xenl xn T{ 80 桁より後の改行は無視される (concept) T} erase_overstrike eo eo T{ 空白の重ね打ちで消去可能 T} generic_type gn gn T{ 一般的な回線タイプ T} hard_copy hc hc T{ ハードコピー端末 T} hard_cursor chts HC T{ カーソルが見にくい T} has_meta_key km km T{ メタキーを持つ (押すと第 8 ビットがセットされる) T} has_print_wheel daisy YC T{ 文字セットを変更するのに人手が必要なプリンタ T} has_status_line hs hs T{ 特別なステータス行を持つ T} hue_lightness_saturation hls hl T{ 端末は HLS 色表記のみ使用 (Tektronix) T} insert_null_glitch in in T{ 挿入モードでナル文字を区別する T} lpi_changes_res lpix YG T{ 行ピッチを変えると解像度が変わる T} memory_above da da T{ 画面より上の描画が保持される T} memory_below db db T{ 画面より下の描画が保持される T} move_insert_mode mir mi T{ 挿入モードで安全にカーソル移動可能 T} move_standout_mode msgr ms T{ 強調モードで安全にカーソル移動可能 T} needs_xon_xoff nxon nx T{ パディング機能が働かない。xon/xoff 制御が必要 T} no_esc_ctlc xsb xb T{ beehive 端末 (f1=escape, f2=ctrl C) T} no_pad_char npc NP T{ パディング文字が存在しない T} non_dest_scroll_region ndscr ND T{ スクロール領域が非破壊的 T} non_rev_rmcup nrrmc NR T{ smcup は rmcup の動作を反転しない T} over_strike os os T{ 端末は重ね打ち可能 T} prtr_silent mc5i 5i T{ プリンタ出力は画面にエコーしない T} row_addr_glitch xvpa YD T{ vpa/mvpa では正方向にのみ移動可能 T} semi_auto_right_margin sam YE T{ 最終桁で出力すると cr 動作をする T} status_line_esc_ok eslok es T{ ステータス行上でエスケープ可能 T} tilde_glitch hz hz T{ ~ 表示不可 (hazeltine 端末) T} transparent_underline ul ul T{ 下線付文字は上書きする T} xon_xoff xon xo T{ 端末は xon/xoff ハンドシェークを行う T} .TE .ad 以下は数値ケーパビリティです。 .na .TS H center expand; c l l c c l l c lw25 lw6 lw2 lw20. \fBvariable cap- TCap 説明\fR \fB数値 name Code\fR columns cols co T{ 1 行の桁数 T} init_tabs it it T{ タブの初期設定は # 個の空白毎 T} label_height lh lh T{ ラベル 1 つの行数 T} label_width lw lw T{ ラベル 1 つの桁数 T} lines lines li T{ 画面またはページの行数 T} lines_of_memory lm lm T{ lines の値以上の場合メモリの行数。0 は行数が可変であることを表す T} magic_cookie_glitch xmc sg T{ smso や rmso で画面に残る空白数 T} max_attributes ma ma T{ 端末が組み合わせて処理できる属性数の最大値 T} max_colors colors Co T{ 画面上の最大色数 T} max_pairs pairs pa T{ 画面上の色ペアの最大値 T} maximum_windows wnum MW T{ 定義可能なウィンドウ数の最大値 T} no_color_video ncv NC T{ 色付きでは使用できないビデオ属性 T} num_labels nlab Nl T{ 画面上のラベル数 T} padding_baud_rate pb pb T{ パディングが必要な最低ボー速度 T} virtual_terminal vt vt T{ 仮想画面番号 (CB/unix) T} width_status_line wsl ws T{ ステータス行の桁数 T} .TE .ad 以下の数値ケーパビリティは、SVr4.0 の term 構造体に存在していますが、 マニュアルには未だに説明がありません。SVr4 でプリンタに対応するために 採り入れられました。 .na .TS H center expand; c l l c c l l c lw25 lw6 lw2 lw20. \fBvariable cap- TCap 説明\fR \fB数値 name Code\fR bit_image_entwining bitwin Yo T{ 各ビットイメージ行に対するパスの数 T} bit_image_type bitype Yp T{ ビットイメージデバイスのタイプ T} buffer_capacity bufsz Ya T{ 印字前にバッファリング可能なバイト数 T} buttons btns BT T{ マウスのボタン数 T} dot_horz_spacing spinh Yc T{ 1 インチあたりのドット数での水平方向のドット間隔 T} dot_vert_spacing spinv Yb T{ 1 インチあたりのピン数での垂直方向のピン間隔 T} max_micro_address maddr Yd T{ micro_..._address での最大値 T} max_micro_jump mjump Ye T{ parm_..._micro での最大値 T} micro_col_size mcs Yf T{ マイクロモードでの文字ステップサイズ T} micro_line_size mls Yg T{ マイクロモードでの行ステップサイズ T} number_of_pins npins Yh T{ プリントヘッドのピン数 T} output_res_char orc Yi T{ 1 行あたりのユニット数での水平解像度 T} output_res_horz_inch orhi Yk T{ 1 インチあたりのユニット数での水平解像度 T} output_res_line orl Yj T{ 1 行あたりのユニット数での垂直解像度 T} output_res_vert_inch orvi Yl T{ 1 インチあたりのユニット数での垂直解像度 T} print_rate cps Ym T{ 1 秒あたりの文字数での印字速度 T} wide_char_size widcs Yn T{ 倍幅モードでの文字ステップサイズ T} .TE .ad 以下は文字列ケーパビリティです。 .na .TS H center expand; c l l c c l l c lw25 lw6 lw2 lw20. \fBvariable cap- TCap 説明\fR \fB文字列 name Code\fR acs_chars acsc ac T{ 図形文字セットの組、vt100 に基づく T} back_tab cbt bt T{ 後退タブ (P) T} bell bel bl T{ 可聴シグナル (ベル) (P) T} carriage_return cr cr T{ 復帰文字 (P*) (P*) T} change_char_pitch cpi ZA T{ 1 インチあたりの文字数を # 1 に変更 T} change_line_pitch lpi ZB T{ 1 インチあたりの行数を #1 に変更 T} change_res_horz chr ZC T{ 水平解像度を #1 に変更 T} change_res_vert cvr ZD T{ 垂直解像度を #1 に変更 T} change_scroll_region csr cs T{ 領域を行 #1 から行 #2 までに変更 (P) T} char_padding rmp rP T{ ip と同様だが挿入モード以外で使用 .\" 後で If padding is necessary between characters typed while not .\" in insert mode, give this as a number of milliseconds .\" padding in rmp. という記述がある T} clear_all_tabs tbc ct T{ タブ設定をすべてクリア (P) T} clear_margins mgc MC T{ 左右のソフトマージンをクリア T} clear_screen clear cl T{ 画面をクリアし、カーソルをホームに移動 (P*) T} clr_bol el1 cb T{ 行先頭までクリア T} clr_eol el ce T{ 行末までクリア (P) T} clr_eos ed cd T{ 画面末までクリア (P*) T} column_address hpa ch T{ 水平絶対位置 #1 (P) T} command_character cmdch CC T{ 端末がプロトタイプで設定可能なコマンド文字 !? T} create_window cwin CW T{ ウィンドウ #1 を #2,#3 から #4,#5 までと定義 T} cursor_address cup cm T{ 行 #1 桁 #2 に移動 T} cursor_down cud1 do T{ 1 行下に移動 T} cursor_home home ho T{ カーソルをホームに移動 (cup がない場合) T} cursor_invisible civis vi T{ カーソルを見えなくする T} cursor_left cub1 le T{ カーソルを 1 空白分左に移動 T} cursor_mem_address mrcup CM T{ メモリ相対のカーソル位置指定であり、行 #1 列 #2 へ移動 T} cursor_normal cnorm ve T{ カーソルを通常表示にする (civis/cvvis を元に戻す) T} cursor_right cuf1 nd T{ 非破壊空白 (1 空白分右に移動) T} cursor_to_ll ll ll T{ 最終行の最初の桁 (cup がない場合) T} cursor_up cuu1 up T{ 1 行上へ T} cursor_visible cvvis vs T{ カーソルをよく見えるようにする T} define_char defc ZE T{ 文字を定義 T} delete_character dch1 dc T{ 文字を削除 (P*) T} delete_line dl1 dl T{ 行を削除 (P*) T} dial_phone dial DI T{ 番号 #1 にダイアルする T} dis_status_line dsl ds T{ ステータス行を無効にする T} display_clock dclk DK T{ (#1,#2) に時計を表示する T} down_half_line hd hd T{ 半行下へ T} ena_acs enacs eA T{ 別の文字セットを有効にする T} enter_alt_charset_mode smacs as T{ 別の文字セットを開始 (P) T} enter_am_mode smam SA T{ 自動マージンオン T} enter_blink_mode blink mb T{ 点滅モードオン T} enter_bold_mode bold md T{ 太字 (更に明るい) モードオン T} enter_ca_mode smcup ti T{ cup を用いたプログラムを開始する文字列 T} enter_delete_mode smdc dm T{ 削除モード開始 T} enter_dim_mode dim mh T{ 半輝度モードオン T} enter_doublewide_mode swidm ZF T{ 倍幅モード開始 T} enter_draft_quality sdrfq ZG T{ ドラフト印字モード開始 T} enter_insert_mode smir im T{ 挿入モード開始 T} enter_italics_mode sitm ZH T{ 斜体モード開始 T} enter_leftward_mode slm ZI T{ 左向き移動モード開始 T} enter_micro_mode smicm ZJ T{ マイクロ移動モード開始 T} enter_near_letter_quality snlq ZK T{ NLQ 印字モード開始 T} enter_normal_quality snrmq ZL T{ 通常品質印字モード開始 T} enter_protected_mode prot mp T{ 保護モードオン T} enter_reverse_mode rev mr T{ 反転表示モードオン T} enter_secure_mode invis mk T{ ブランクモードオン (文字が見えない) T} enter_shadow_mode sshm ZM T{ シャドウプリントモード開始 T} enter_standout_mode smso so T{ 強調モード開始 T} enter_subscript_mode ssubm ZN T{ 下付き文字モード開始 T} enter_superscript_mode ssupm ZO T{ 上付き文字モード開始 T} enter_underline_mode smul us T{ 下線モード開始 T} enter_upward_mode sum ZP T{ 上向き移動モード開始 T} enter_xon_mode smxon SX T{ xon/xoff ハンドシェークオン T} erase_chars ech ec T{ #1 個の文字を消去 (P) T} exit_alt_charset_mode rmacs ae T{ 別の文字セット終了 (P) T} exit_am_mode rmam RA T{ 自動マージンオフ T} exit_attribute_mode sgr0 me T{ 全属性オフ T} exit_ca_mode rmcup te T{ cup を用いたプログラムを終了する文字列 T} exit_delete_mode rmdc ed T{ 削除モード終了 T} exit_doublewide_mode rwidm ZQ T{ 倍幅モード終了 T} exit_insert_mode rmir ei T{ 挿入モード終了 T} exit_italics_mode ritm ZR T{ 斜体モード終了 T} exit_leftward_mode rlm ZS T{ 左向き移動モード終了 T} exit_micro_mode rmicm ZT T{ マイクロ移動モード終了 T} exit_shadow_mode rshm ZU T{ シャドウプリントモード終了 T} exit_standout_mode rmso se T{ 強調モード終了 T} exit_subscript_mode rsubm ZV T{ 下付き文字モード終了 T} exit_superscript_mode rsupm ZW T{ 上付き文字モード終了 T} exit_underline_mode rmul ue T{ 下線モード終了 T} exit_upward_mode rum ZX T{ 上向き移動モード終了 T} exit_xon_mode rmxon RX T{ xon/xoff ハンドシェークオフ T} fixed_pause pause PA T{ 2-3 秒待つ T} flash_hook hook fh T{ スイッチフックをフラッシュ T} flash_screen flash vb T{ 可視ベル (カーソルは移動しない) T} form_feed ff ff T{ ハードコピー端末でのページ排出 (P*) T} from_status_line fsl fs T{ ステータス行からの復帰 T} goto_window wingo WG T{ ウィンドウ #1 に移動 T} hangup hup HU T{ 電話を切る T} init_1string is1 i1 T{ 初期化文字列 T} init_2string is2 is T{ 初期化文字列 T} init_3string is3 i3 T{ 初期化文字列 T} init_file if if T{ 初期化ファイルの名前 T} init_prog iprog iP T{ 初期化プログラムのパス名 T} initialize_color initc Ic T{ 色 #1 を (#2,#3,#4) に初期化 T} initialize_pair initp Ip T{ 色ペア #1 を fg=(#2,#3,#4), bg=(#5,#6,#7) に初期化 T} insert_character ich1 ic T{ 文字の挿入 (P) T} insert_line il1 al T{ 行の挿入 (P*) T} insert_padding ip ip T{ 文字挿入の後にパディングを挿入 T} key_a1 ka1 K1 T{ キーパッドの左上キー T} key_a3 ka3 K3 T{ キーパッドの右上キー T} key_b2 kb2 K2 T{ キーパッドの中央キー T} key_backspace kbs kb T{ backspace キー T} key_beg kbeg @1 T{ begin キー T} key_btab kcbt kB T{ back-tab キー T} key_c1 kc1 K4 T{ キーパッドの左下キー T} key_c3 kc3 K5 T{ キーパッドの右下キー T} key_cancel kcan @2 T{ cancel キー T} key_catab ktbc ka T{ clear-all-tabs キー T} key_clear kclr kC T{ clear-screen キー、または erase キー T} key_close kclo @3 T{ close キー T} key_command kcmd @4 T{ command キー T} key_copy kcpy @5 T{ copy キー T} key_create kcrt @6 T{ create キー T} key_ctab kctab kt T{ clear-tab キー T} key_dc kdch1 kD T{ delete-character キー T} key_dl kdl1 kL T{ delete-line キー T} key_down kcud1 kd T{ down-arrow キー T} key_eic krmir kM T{ 挿入モードで rmir や smir が送出するデータ T} key_end kend @7 T{ end キー T} key_enter kent @8 T{ enter/send キー T} key_eol kel kE T{ clear-to-end-of-line キー T} key_eos ked kS T{ clear-to-end-of-screen キー T} key_exit kext @9 T{ exit キー T} key_f0 kf0 k0 T{ F0 ファンクションキー T} key_f1 kf1 k1 T{ F1 ファンクションキー T} key_f10 kf10 k; T{ F10 ファンクションキー T} key_f11 kf11 F1 T{ F11 ファンクションキー T} key_f12 kf12 F2 T{ F12 ファンクションキー T} key_f13 kf13 F3 T{ F13 ファンクションキー T} key_f14 kf14 F4 T{ F14 ファンクションキー T} key_f15 kf15 F5 T{ F15 ファンクションキー T} key_f16 kf16 F6 T{ F16 ファンクションキー T} key_f17 kf17 F7 T{ F17 ファンクションキー T} key_f18 kf18 F8 T{ F18 ファンクションキー T} key_f19 kf19 F9 T{ F19 ファンクションキー T} key_f2 kf2 k2 T{ F2 ファンクションキー T} key_f20 kf20 FA T{ F20 ファンクションキー T} key_f21 kf21 FB T{ F21 ファンクションキー T} key_f22 kf22 FC T{ F22 ファンクションキー T} key_f23 kf23 FD T{ F23 ファンクションキー T} key_f24 kf24 FE T{ F24 ファンクションキー T} key_f25 kf25 FF T{ F25 ファンクションキー T} key_f26 kf26 FG T{ F26 ファンクションキー T} key_f27 kf27 FH T{ F27 ファンクションキー T} key_f28 kf28 FI T{ F28 ファンクションキー T} key_f29 kf29 FJ T{ F29 ファンクションキー T} key_f3 kf3 k3 T{ F3 ファンクションキー T} key_f30 kf30 FK T{ F30 ファンクションキー T} key_f31 kf31 FL T{ F31 ファンクションキー T} key_f32 kf32 FM T{ F32 ファンクションキー T} key_f33 kf33 FN T{ F33 ファンクションキー T} key_f34 kf34 FO T{ F34 ファンクションキー T} key_f35 kf35 FP T{ F35 ファンクションキー T} key_f36 kf36 FQ T{ F36 ファンクションキー T} key_f37 kf37 FR T{ F37 ファンクションキー T} key_f38 kf38 FS T{ F38 ファンクションキー T} key_f39 kf39 FT T{ F39 ファンクションキー T} key_f4 kf4 k4 T{ F4 ファンクションキー T} key_f40 kf40 FU T{ F40 ファンクションキー T} key_f41 kf41 FV T{ F41 ファンクションキー T} key_f42 kf42 FW T{ F42 ファンクションキー T} key_f43 kf43 FX T{ F43 ファンクションキー T} key_f44 kf44 FY T{ F44 ファンクションキー T} key_f45 kf45 FZ T{ F45 ファンクションキー T} key_f46 kf46 Fa T{ F46 ファンクションキー T} key_f47 kf47 Fb T{ F47 ファンクションキー T} key_f48 kf48 Fc T{ F48 ファンクションキー T} key_f49 kf49 Fd T{ F49 ファンクションキー T} key_f5 kf5 k5 T{ F5 ファンクションキー T} key_f50 kf50 Fe T{ F50 ファンクションキー T} key_f51 kf51 Ff T{ F51 ファンクションキー T} key_f52 kf52 Fg T{ F52 ファンクションキー T} key_f53 kf53 Fh T{ F53 ファンクションキー T} key_f54 kf54 Fi T{ F54 ファンクションキー T} key_f55 kf55 Fj T{ F55 ファンクションキー T} key_f56 kf56 Fk T{ F56 ファンクションキー T} key_f57 kf57 Fl T{ F57 ファンクションキー T} key_f58 kf58 Fm T{ F58 ファンクションキー T} key_f59 kf59 Fn T{ F59 ファンクションキー T} key_f6 kf6 k6 T{ F6 ファンクションキー T} key_f60 kf60 Fo T{ F60 ファンクションキー T} key_f61 kf61 Fp T{ F61 ファンクションキー T} key_f62 kf62 Fq T{ F62 ファンクションキー T} key_f63 kf63 Fr T{ F63 ファンクションキー T} key_f7 kf7 k7 T{ F7 ファンクションキー T} key_f8 kf8 k8 T{ F8 ファンクションキー T} key_f9 kf9 k9 T{ F9 ファンクションキー T} key_find kfnd @0 T{ find キー T} key_help khlp %1 T{ help キー T} key_home khome kh T{ home キー T} key_ic kich1 kI T{ insert-character キー T} key_il kil1 kA T{ insert-line キー T} key_left kcub1 kl T{ left-arrow キー T} key_ll kll kH T{ lower-left キー (home down) T} key_mark kmrk %2 T{ mark キー T} key_message kmsg %3 T{ message キー T} key_move kmov %4 T{ move キー T} key_next knxt %5 T{ next キー T} key_npage knp kN T{ next-page キー T} key_open kopn %6 T{ open キー T} key_options kopt %7 T{ options キー T} key_ppage kpp kP T{ previous-page キー T} key_previous kprv %8 T{ previous キー T} key_print kprt %9 T{ print キー T} key_redo krdo %0 T{ redo キー T} key_reference kref &1 T{ reference キー T} key_refresh krfr &2 T{ refresh キー T} key_replace krpl &3 T{ replace キー T} key_restart krst &4 T{ restart キー T} key_resume kres &5 T{ resume キー T} key_right kcuf1 kr T{ right-arrow キー T} key_save ksav &6 T{ save キー T} key_sbeg kBEG &9 T{ シフト状態の begin キー T} key_scancel kCAN &0 T{ シフト状態の cancel キー T} key_scommand kCMD *1 T{ シフト状態の command キー T} key_scopy kCPY *2 T{ シフト状態の copy キー T} key_screate kCRT *3 T{ シフト状態の create キー T} key_sdc kDC *4 T{ シフト状態の delete-character キー T} key_sdl kDL *5 T{ シフト状態の delete-line キー T} key_select kslt *6 T{ select キー T} key_send kEND *7 T{ シフト状態の end キー T} key_seol kEOL *8 T{ シフト状態の clear-to-end-of-line キー T} key_sexit kEXT *9 T{ シフト状態の exit キー T} key_sf kind kF T{ scroll-forward キー T} key_sfind kFND *0 T{ シフト状態の find キー T} key_shelp kHLP #1 T{ シフト状態の help キー T} key_shome kHOM #2 T{ シフト状態の home キー T} key_sic kIC #3 T{ シフト状態の insert-character キー T} key_sleft kLFT #4 T{ シフト状態の left-arrow キー T} key_smessage kMSG %a T{ シフト状態の message キー T} key_smove kMOV %b T{ シフト状態の move キー T} key_snext kNXT %c T{ シフト状態の next キー T} key_soptions kOPT %d T{ シフト状態の options キー T} key_sprevious kPRV %e T{ シフト状態の previous キー T} key_sprint kPRT %f T{ シフト状態の print キー T} key_sr kri kR T{ scroll-backward キー T} key_sredo kRDO %g T{ シフト状態の redo キー T} key_sreplace kRPL %h T{ シフト状態の replace キー T} key_sright kRIT %i T{ シフト状態の right-arrow キー T} key_srsume kRES %j T{ シフト状態の resume キー T} key_ssave kSAV !1 T{ シフト状態の save キー T} key_ssuspend kSPD !2 T{ シフト状態の suspend キー T} key_stab khts kT T{ set-tab キー T} key_sundo kUND !3 T{ シフト状態の undo キー T} key_suspend kspd &7 T{ suspend キー T} key_undo kund &8 T{ undo キー T} key_up kcuu1 ku T{ up-arrow キー T} keypad_local rmkx ke T{ \&'keyboard_transmit' モードから抜ける T} keypad_xmit smkx ks T{ \&'keyboard_transmit' モードに入る T} lab_f0 lf0 l0 T{ f0 でない場合、ファンクションキー f0 のラベル T} lab_f1 lf1 l1 T{ f1 でない場合、ファンクションキー f1 のラベル T} lab_f10 lf10 la T{ f10 でない場合、ファンクションキー f10 のラベル T} lab_f2 lf2 l2 T{ f2 でない場合、ファンクションキー f2 のラベル T} lab_f3 lf3 l3 T{ f3 でない場合、ファンクションキー f3 のラベル T} lab_f4 lf4 l4 T{ f4 でない場合、ファンクションキー f4 のラベル T} lab_f5 lf5 l5 T{ f5 でない場合、ファンクションキー f5 のラベル T} lab_f6 lf6 l6 T{ f6 でない場合、ファンクションキー f6 のラベル T} lab_f7 lf7 l7 T{ f7 でない場合、ファンクションキー f7 のラベル T} lab_f8 lf8 l8 T{ f8 でない場合、ファンクションキー f8 のラベル T} lab_f9 lf9 l9 T{ f9 でない場合、ファンクションキー f9 のラベル T} label_format fln Lf T{ ラベルフォーマット T} label_off rmln LF T{ ソフトラベルオフ T} label_on smln LO T{ ソフトラベルオン T} meta_off rmm mo T{ メタモードオフ T} meta_on smm mm T{ メタモードオン (8 番目のビットオン) T} micro_column_address mhpa ZY T{ マイクロモードの column_address T} micro_down mcud1 ZZ T{ マイクロモードの cursor_down T} micro_left mcub1 Za T{ マイクロモードの cursor_left T} micro_right mcuf1 Zb T{ マイクロモードの cursor_right T} micro_row_address mvpa Zc T{ マイクロモードの row_address #1 T} micro_up mcuu1 Zd T{ マイクロモードの cursor_up T} newline nel nw T{ 改行 (cr の後に lf が来る) T} order_of_pins porder Ze T{ ソフトウェアビットを印字ヘッドピンに一致させる T} orig_colors oc oc T{ すべての色ペアを本来のものにする T} orig_pair op op T{ デフォルトのペアを本来の値にする T} pad_char pad pc T{ パディング文字 (ヌル以外) T} parm_dch dch DC T{ #1 文字を削除 (P*) T} parm_delete_line dl DL T{ #1 行を削除 (P*) T} parm_down_cursor cud DO T{ #1 行下へ (P*) T} parm_down_micro mcud Zf T{ マイクロモードの parm_down_cursor T} parm_ich ich IC T{ #1 文字を挿入 (P*) T} parm_index indn SF T{ #1 行の前進スクロール (P) T} parm_insert_line il AL T{ #1 行を挿入 (P*) T} parm_left_cursor cub LE T{ 左へ #1 文字分移動 (P) T} parm_left_micro mcub Zg T{ マイクロモードの parm_left_cursor T} parm_right_cursor cuf RI T{ 右へ #1 文字分移動 (P*) T} parm_right_micro mcuf Zh T{ マイクロモードの parm_right_cursor T} parm_rindex rin SR T{ #1 行の後退スクロール (P) T} parm_up_cursor cuu UP T{ #1 行上へ (P*) T} parm_up_micro mcuu Zi T{ マイクロモードの parm_up_cursor T} pkey_key pfkey pk T{ ファンクションキー #1 の打鍵文字列を #2 にする T} pkey_local pfloc pl T{ ファンクションキー #1 の実行文字列を #2 にする T} pkey_xmit pfx px T{ ファンクションキー #1 の送信文字列を #2 にする T} plab_norm pln pn T{ ラベル #1 に文字列 #2 を表示 T} print_screen mc0 ps T{ 画面の内容を印字する T} prtr_non mc5p pO T{ #1 バイトだけプリンタをオンにする T} prtr_off mc4 pf T{ プリンタをオフにする T} prtr_on mc5 po T{ プリンタをオンにする T} pulse pulse PU T{ パルスダイアルを選択 T} quick_dial qdial QD T{ 確認なしで電話番号 #1 にダイアルする T} remove_clock rmclk RC T{ 時計を削除 T} repeat_char rep rp T{ 文字 #1 を #2 回繰り返す (P*) T} req_for_input rfi RF T{ (pty 用に) 次の入力文字を送る T} reset_1string rs1 r1 T{ リセット文字列 T} reset_2string rs2 r2 T{ リセット文字列 T} reset_3string rs3 r3 T{ リセット文字列 T} reset_file rf rf T{ リセットファイルの名前 T} restore_cursor rc rc T{ 最後の save_cursor の位置にカーソルを戻す T} row_address vpa cv T{ 垂直絶対位置 #1 (P) T} save_cursor sc sc T{ 現在のカーソル位置を保存 (P) T} scroll_forward ind sf T{ テキストを上にスクロール (P) T} scroll_reverse ri sr T{ テキストを下にスクロール (P) T} select_char_set scs Zj T{ 文字セット #1 の選択 T} set_attributes sgr sa T{ ビデオ属性を #1-#9 に定義 (PG9) T} set_background setb Sb T{ 背景色を #1 に設定 T} set_bottom_margin smgb Zk T{ 下マージンを現在行に設定 T} set_bottom_margin_parm smgbp Zl T{ 下マージンを #1 行目か下から #2 行目にする T} set_clock sclk SC T{ 時計を #1 時 #2 分 #3 秒に設定 T} set_color_pair scp sp T{ 現在の色ペアを #1 に設定 T} set_foreground setf Sf T{ 前景色を #1 に設定 T} set_left_margin smgl ML T{ 左ソフトマージンを現在桁に設定 T} set_left_margin_parm smglp Zm T{ 左 (右) マージンを桁 #1 (#2) に設定 T} set_right_margin smgr MR T{ 右ソフトマージンを現在桁に設定 T} set_right_margin_parm smgrp Zn T{ 右マージンを桁 #1 に設定 T} set_tab hts st T{ 全行のタブを現在の桁に設定 T} set_top_margin smgt Zo T{ 上マージンを現在行に設定 T} set_top_margin_parm smgtp Zp T{ 上 (下) マージンを行 #1 (#2) に設定 T} set_window wind wi T{ 現在のウィンドウを行 #1-#2、桁 #3-#4 とする T} start_bit_image sbim Zq T{ ビットイメージグラフィック印字の開始 T} start_char_set_def scsd Zr T{ 文字セット定義の開始 T} stop_bit_image rbim Zs T{ ビットイメージグラフィック印字の終了 T} stop_char_set_def rcsd Zt T{ 文字セット定義の終了 T} subscript_characters subcs Zu T{ 下付き文字となりうる文字のリスト T} superscript_characters supcs Zv T{ 上付き文字となりうる文字のリスト T} tab ht ta T{ 次の 8 文字分のハードウェアタブストップへのタブ文字 T} these_cause_cr docr Zw T{ これらの文字のうちのいずれかの印字は CR を引き起こす T} to_status_line tsl ts T{ ステータス行の列 #1 に移動 T} tone tone TO T{ タッチトーンダイアルを選択 T} underline_char uc uc T{ 文字 1 つに下線を付け、次の文字に移動 T} up_half_line hu hu T{ 半行上へ T} user0 u0 u0 T{ ユーザ文字列 #0 T} user1 u1 u1 T{ ユーザ文字列 #1 T} user2 u2 u2 T{ ユーザ文字列 #2 T} user3 u3 u3 T{ ユーザ文字列 #3 T} user4 u4 u4 T{ ユーザ文字列 #4 T} user5 u5 u5 T{ ユーザ文字列 #5 T} user6 u6 u6 T{ ユーザ文字列 #6 T} user7 u7 u7 T{ ユーザ文字列 #7 T} user8 u8 u8 T{ ユーザ文字列 #8 T} user9 u9 u9 T{ ユーザ文字列 #9 T} wait_tone wait WA T{ ダイアルトーンを待つ T} xoff_character xoffc XF T{ XOFF 文字 T} xon_character xonc XN T{ XON 文字 T} zero_motion zerom Zx T{ 次の文字表示を移動無しで行う T} .TE .ad 以下の文字列ケーパビリティは、SVr4.0 の term 構造体に存在していますが、 マニュアルで未だに説明がなされていません。 .na .TS H center expand; c l l c c l l c lw25 lw6 lw2 lw18. \fBvariable cap- TCap 説明\fR \fB文字列 name Code\fR alt_scancode_esc scesa S8 T{ スキャンコードエミュレーションのための別のエスケープ文字 T} bit_image_carriage_return bicr Yv T{ 同一行の先頭へ移動 T} bit_image_newline binel Zz T{ ビットイメージの次の行に移動 T} bit_image_repeat birep Xy T{ ビットイメージセル #1 を #2 回繰り返す T} char_set_names csnm Zy T{ 文字セット名のリスト T} code_set_init csin ci T{ 複数コードセットの初期化シーケンス T} color_names colornm Yw T{ 色 #1 に名前を与える T} define_bit_image_region defbi Yx T{ 矩形のビットイメージ領域を定義 T} device_type devt dv T{ 言語/コードセットサポートの指定 T} display_pc_char dispc S1 T{ PC 文字 #1 を表示 T} end_bit_image_region endbi Yy T{ ビットイメージ領域の終了 T} enter_pc_charset_mode smpch S2 T{ PC 文字表示モード開始 T} enter_scancode_mode smsc S4 T{ PC スキャンコードモード開始 T} exit_pc_charset_mode rmpch S3 T{ PC 文字表示モード終了 T} exit_scancode_mode rmsc S5 T{ PC スキャンコードモード終了 T} get_mouse getm Gm T{ curses がボタンイベントを取得すべき。パラメータ #1 は文書化されていない T} key_mouse kmous Km T{ マウスイベントが起きた T} mouse_info minfo Mi T{ マウス状態の情報 T} pc_term_options pctrm S6 T{ PC 端末オプション T} pkey_plab pfxl xl T{ ファンクションキー #1 に文字列 #2 を送信させ文字列 #3 を表示させる T} req_mouse_pos reqmp RQ T{ マウス位置の要求 T} scancode_escape scesc S7 T{ スキャンコードエミュレーションのためのエスケープ T} set0_des_seq s0ds s0 T{ コードセット 0 にシフト (EUC セット 0、ASCII) T} set1_des_seq s1ds s1 T{ コードセット 1 にシフト T} set2_des_seq s2ds s2 T{ コードセット 2 にシフト T} set3_des_seq s3ds s3 T{ コードセット 3 にシフト T} set_a_background setab AB T{ ANSI エスケープシーケンスを使って背景色を #1 に設定 T} set_a_foreground setaf AF T{ ANSI エスケープシーケンスを使って前景色を #1 に設定 T} set_color_band setcolor Yz T{ リボンの色を #1 に変更 T} set_lr_margin smglr ML T{ 左右両マージンを #1、#2 に設定 T} set_page_length slines YZ T{ ページ長を #1 行に設定 T} set_tb_margin smgtb MT T{ 上下両マージンを #1、#2 に設定 T} .TE .ad .in .8i XSI Curses 規格では以下のものが追加されています。 それらは、例えば、 Solaris 2.5 や IRIX 6.x など、4.1 以降のバージョンの System V の、 curses のものです。 それらの \fBncurses\fR termcap 名はでっちあげました。XSI Curses 規格に従うと、 termcap 名はありません。コンパイルされた terminfo エントリがこれらを 使っていれば、SVr4.1 以降の System V terminfo エントリとは バイナリ互換ではないかも知れません。用心してください! .na .TS H center expand; c l l c c l l c lw25 lw6 lw2 lw20. \fBvariable cap- TCap 説明\fR \fB文字列 name Code\fR enter_horizontal_hl_mode ehhlm Xh T{ 水平ハイライトモードに入る T} enter_left_hl_mode elhlm Xl T{ 左ハイライトモードに入る T} enter_low_hl_mode elohlm Xo T{ 下ハイライトモードに入る T} enter_right_hl_mode erhlm Xr T{ 右ハイライトモードに入る T} enter_top_hl_mode ethlm Xt T{ 上ハイライトモードに入る T} enter_vertical_hl_mode evhlm Xv T{ 垂直ハイライトモードに入る T} set_a_attributes sgr1 sA T{ ビデオ属性の 2 番目の組を #1-#6 と定義 T} set_pglen_inch slength sL T{ ページ長を 100分の #1 インチに設定 T} .TE .ad .\" %Id: terminfo.tail,v 1.32 2000/04/15 20:04:58 tom Exp % .\" Beginning of terminfo.tail file .ps +1 .PP .SS エントリの例 .PP 以下のエントリは、ANSI 規格端末を記述したものですが、現代的な端末の \fBterminfo\fR エントリが典型的にはどのようであるかを表しています。 .PP .nf .in -2 .ta .3i .ft CW \s-2ansi|ansi/pc-term compatible with color, mc5i, colors#8, ncv#3, pairs#64, cub=\\E[%p1%dD, cud=\\E[%p1%dB, cuf=\\E[%p1%dC, cuu=\\E[%p1%dA, dch=\\E[%p1%dP, dl=\\E[%p1%dM, ech=\\E[%p1%dX, el1=\\E[1K, hpa=\\E[%p1%dG, ht=\\E[I, ich=\\E[%p1%d@, il=\\E[%p1%dL, indn=\\E[%p1%dS, .indn=\\E[%p1%dT, kbs=^H, kcbt=\\E[Z, kcub1=\\E[D, kcud1=\\E[B, kcuf1=\\E[C, kcuu1=\\E[A, kf1=\\E[M, kf10=\\E[V, kf11=\\E[W, kf12=\\E[X, kf2=\\E[N, kf3=\\E[O, kf4=\\E[P, kf5=\\E[Q, kf6=\\E[R, kf7=\\E[S, kf8=\\E[T, kf9=\\E[U, kich1=\\E[L, mc4=\\E[4i, mc5=\\E[5i, nel=\\r\\E[S, op=\\E[37;40m, rep=%p1%c\\E[%p2%{1}%-%db, rin=\\E[%p1%dT, s0ds=\\E(B, s1ds=\\E)B, s2ds=\\E*B, s3ds=\\E+B, setab=\\E[4%p1%dm, setaf=\\E[3%p1%dm, setb=\\E[4%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}%=%t3%e%p1%d%;m, setf=\\E[3%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}%=%t3%e%p1%d%;m, sgr=\\E[0;10%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;%?%p7%t;8%;%?%p8%t;11%;%?%p9%t;12%;m, sgr0=\\E[0;10m, tbc=\\E[2g, u6=\\E[%d;%dR, u7=\\E[6n, u8=\\E[?%[;0123456789]c, u9=\\E[c, vpa=\\E[%p1%dd,\s+2 .in +2 .fi .ft R .PP 2 行目以後の行先頭に空白類文字を置くことで、エントリを複数行に分けて継続 して書くことができます。 行先頭に ``#'' を置くことでコメントを含めることができます。 .I terminfo のケーパビリティには、3 つの型があります。 ブール値ケーパビリティは、その端末がある特性を有しているかどうかを表します。 数値ケーパビリティは、その端末の大きさや、遅延の大きさを指定します。 文字列ケーパビリティは、端末のある機能を実行させる際に用いるシーケンスを 指定します。 .PP .SS ケーパビリティの型 .PP すべてのケーパビリティには名前があります。例えば、ANSI標準端末が .I "自動マージン" (つまり、行の端に到達すれば自動的に復帰改行がなされること) を有することは ケーパビリティ \fBam\fR で表されます。 よって ansi の記述は \fBam\fR を含みます。 数値ケーパビリティの後には文字 `#' が続き、そして正の値が続きます。 \fBcols\fR は、その端末の桁数を表しており、ansi では、 この値は `80' であることを示します。 数値ケーパビリティの値は、プログラミング言語 C の規約を使って 10 進数、 8 進数、16 進数で与えることができます (例えば、255、0377、0xff、0xFF)。 .PP 最後に、文字列ケーパビリティは、\fBel\fR (行末まで消去するシーケンス) などの ように、2 文字のコードと、`=' と、その先の `,' までの間の文字列とで 表されます。 .PP 文字列ケーパビリティの中で、文字のエンコードを簡単にするために、いくつ かのエスケープシーケンスが利用できます。\fB\eE\fR と \fB\ee\fR はともに、 \s-1ESCAPE\s0 文字にマップされます。 \fB^x\fR は任意の適切な x に関して control-x にマップされます。 \fB\en \el \er \et \eb \ef \es\fR はそれぞれ、改行、ラインフィード、復帰、 タブ、バックスペース、フォームフィード、空白にマップされます。 その他に、\fB\e^\fR は \fB^\fR に、\fB\e\e\fR は \fB\e\fR に、 \fB\e\fR, はコンマに、 \fB\e:\fR は \fB:\fR に、\fB\e0\fR はナル文字にマップされます。 (\fB\e0\fR は \e200 を生成します。これは文字列を終端しませんが、 ほとんどの端末では CS7 が指定されているので、ナル文字と同様の挙動を 示すからです。stty(1) を参照してください) 最後に、\fB\e\fR の後に 8 進 3 桁の数を指定して文字を表すこともできます。 .PP ミリ秒単位の遅延は、\fBel\fP=\eEK$<5> のように、文字列ケーパビリティの どの場所でも $<..> のブラケットで囲んで置くことができます。 この遅延を与えるためのパディングは、関数 .I tputs が行います。遅延は 1/10 の精度の数である必要があります。接尾辞 `*'、'/' またはその両方がついているかもしれません。`*' はパディングをその処理で 影響を受ける行の行数に比例させる必要があること、そしてその総計は 影響を受ける 1 単位あたりの必要パディングにより決まることを表します。 (文字挿入の場合、乗数は影響を受ける .IR 行 の数です。) 通常、デバイスに \fBxon\fR ケーパビリティがあれば、パディングは 勧告的なものです。コスト計算には使われますが遅延を引き起こしません。 `/' 接尾辞はパディングが必須のものであることを示し、フロー制御を示す \fBxon\fR があるデバイスに対しても指定されたミリ秒単位の遅延を強制します。 .PP あるケーパビリティをコメントアウトせねばならない場合があります。 そういう場合は、ケーパビリティ名の前にピリオドを置いてください。 上の例の 2 番目の .B ind がその例です。 .br .ne 5 .PP .SS コンパイルされた記述の読み込み .PP 環境変数 TERMINFO が設定されていれば、それは作業中の記述を コンパイルしたものを含むディレクトリのパス名と解釈されます。 そのディレクトリだけを探します。 .PP TERMINFO が設定されていなければ、\fBncurses\fR 版の terminfo 読み込みコードは その代わりにディレクトリ \fB$HOME/.terminfo\fR からコンパイルされた記述を 探します。 そこで見つけるのに失敗し、環境変数 TERMINFO_DIRS が設定されていれば、 変数の内容をコロンで区切られた探すべきディレクトリのリストと解釈します (空のエントリは \fI\*d\fR を探すコマンドとして解釈されます)。 TERMINFO_DIRS ディレクトリのいずれにも記述が見つからなければ、読み込みは 失敗します。 .PP TERMINFO も TERMINFO_DIRS も設定されていなければ、最後に試みられる場所は システムの terminfo ディレクトリ \fI\*d\fR です。 .PP (\fB$HOME/.terminfo\fR 探索も TERMINFO_DIRS 拡張も 標準の System V terminfo/curses ではサポートされていません。) .PP .SS 端末記述の準備 .PP ここでは、どのようにして端末の記述を準備するかの概略を説明します。もっと も効率的なやり方は、 .I terminfo の中にある類似の端末の記述をまねて作成することです。 .I vi などのスクリーンエディタに書き掛けの記述を使わせてみて、その記述が 正しいかどうかをチェックしながら、記述を徐々に作り上げてゆくことです。 通常のものとあまりにもかけ離れた端末の場合、 .I terminfo ファイルの記述能力の欠陥、もしくはテストプログラムの画面操作のコードの バグが明らかになるかも知れないので、それには注意してください。 .PP (端末メーカが文書に書いてくれていない場合に) 行の右挿入の際のパディングを 得るには、大きなファイルを 9600 ボーで編集し、画面の中ほどで 16 行程度を 削除してから、 `u' キーを数度すばやく連打するという厳しいテストを行 うとよいでしょう。 端末がぐちゃぐちゃになるのなら、普通は、もう少しパディングが必要だと いうことです。文字挿入についても似たようなテストを行うことができます。 .PP .SS 基本的なケーパビリティ .PP 端末の各行の桁数は数値型ケーパビリティ \fBcols\fR で指定します。 端末が \s-1CRT\s0 の場合、画面の行数はケーパビリティ \fBlines\fR で 指定します。 カーソルが右マージンに達したときに次の行の左端に回り込む場合、 ケーパビリティ \fBam\fR を指定する必要があります。 端末が、画面消去後カーソルをホームポジションにもってゆくことができる場合、 その機能は文字列ケーパビリティ \fBclear\fR で指定します。 端末が (ある文字を上に出力した時にその場所を消去するのではなく) 重ね打ちする場合、ケーパビリティ \fBos\fR を指定する必要があります。 印字端末で、ソフトコピー装置を持たない場合、 .B hc と .BR os とを指定します。 .RB ( os は、ハードコピー端末や、APL 端末だけでなく、\s-1TEKTRONIX\s+1 4010 シリーズのようなストレージスコープ管端末にも適用されます。) 現在の行の左端にカーソルを移動させるコードが存在する場合、それを .BR cr で指定します。 (通常、これは復帰文字、つまり control M になります。) 可聴シグナル (ベル、ビープ音など) を生成するコードがある場合、それを .BR bel で指定します。 .PP カーソルを (バックスペースのように) 1 ポジションだけ左へ移動させる コードがある場合、それは .BR cub1 で指定します。 同様に、右への移動、上への移動、下への移動はそれぞれ、 .BR cuf1 , .BR cuu1 , .BR cud1 で指定します。 これらの局所的カーソル移動機能は、通過する場所のテキストを変更するもので あってはなりません。たとえば、空白文字はその下のテキストを消去してしまう ため、普通は `\fBcuf1\fP=\ ' とは指定しません。 .PP ここで極めて重要なこととして、 .I terminfo にエンコードされた局所的カーソル移動は、\s-1CRT\s0 端末の左端および 上端では定義されないということです。 プログラムは、 .B bw の指定がない限り、左端でバックスペースを出力しようとしてはいけません。 また、画面上端で、上に移動しようとしてはいけません。 テキストを上にスクロールするためには、プログラムは画面左下隅にカーソルを 移動させて、 .B ind (index) 文字列を送出してください。 .PP テキストを下にスクロールするには、プログラムは画面左上隅にカーソルを 移動させて、 .B ri (reverse index) 文字列を送出してください。 文字列 .B ind と .B ri の挙動は、それぞれ先に述べた画面隅にカーソルがない場合には 定義されていません。 .PP スクロールシーケンスのパラメータ付きバージョンは、 .B indn と .B rin で、これらは、スクロールする行数を指定するパラメータを 1 つ取ることを除いては .B ind や .B ri と、同じ挙動を示します。 これらも、カーソルが適切な画面端に存在しない場合の挙動は定義されません。 .PP ケーパビリティ \fBam\fR は、右端でテキストが出力されてもカーソルが 右端に留まり続けるかどうかを示します。ただし、この挙動は最終桁での .B cuf1 の挙動には必ずしも適用されません。 左端からの局所的移動で定義されたものは、 .B bw が指定されている場合に、左端からの .B cub1 が 1 つ前の行の右端に移動するということだけです。 .B bw が指定されていない場合、この効果は定義されません。 これは、例えば、画面の端に沿って箱を描くときに便利なものです。 端末が自動マージン機能を切り替え可能な場合、 .I terminfo ファイルでは、通常はその機能はオン状態、つまり \fBam\fR であると想定します。 端末が次の行の先頭桁に移動するコマンドを持つ場合、そのコマンドを .B nel (newline) で指定することができます。 このコマンドが、現在行の残りの部分を消去するかどうかは関係ありません。 ですから、端末が、 .B cr や .B lf を持たない場合でも、動作する .B nel を作ることは可能でしょう。 .PP これまで紹介したケーパビリティで、ハードコピー端末や、\*(lqガラスの tty\*(rq 端末を記述するには十分です。 ここで、model 33 teletype は、 .PP .DT .nf .ft CW .in -7 \s-133\||\|tty33\||\|tty\||\|model 33 teletype, bel=^G, cols#72, cr=^M, cud1=^J, hc, ind=^J, os,\s+1 .in +7 .ft R .PP と記述されます。一方、Lear Siegler 社の \s-1ADM\-3\s0 は、 .PP .DT .nf .ft CW .in -7 \s-1adm3\||\|3\||\|lsi adm3, am, bel=^G, clear=^Z, cols#80, cr=^M, cub1=^H, cud1=^J, ind=^J, lines#24,\s+1 .in +7 .ft R .fi .PP と記述されます。 .PP .SS パラメータ化された文字列 .PP カーソル位置設定など、パラメータを必要とする文字列は、 .IR printf (3S) 風のエスケープ \fB%x\fR を含むパラメータ化文字列ケーパビリティを用いて 記述します。 例えば、カーソル位置を指定する .B cup ケーパビリティは、移動先の行と桁を指定する 2 つのパラメータを与える必要が あります。 (行と桁は 0 から数え、ユーザに見える物理画面を参照します。目に見えない メモリ部分は参照しません。) 端末がメモリ相対のカーソル位置指定機能を持つ場合、これは .BR mrcup で表します。 .PP パラメータ渡し機構では、スタックと、それを操作する特別の \fB%\fP コードを 用います。通常は、シーケンスはパラメータを 1 つスタックにプッシュし、 それをある形式で出力します。 もっと複雑な操作が必要なこともしばしばあります。 .PP \fB%\fR コードには以下の意味があります。 .PP .DT .nf .ta .5i 1.5i \s-1%% `%' を出力する %\fI[[\fP:\fI]flags][width[.precision]][\fPdoxXs\fI]\fP \fBprintf\fP でのように、フラグは [-+#] とスペース %c printf() の %c のように、pop() を表示する %s printf() の %s のように、pop() を表示する %p[1-9] \fIi\fP 番目のパラメータをプッシュする %P[a-z] pop() を動的変数 [a-z] に設定する %g[a-z] 動的変数 [a-z] をプッシュする %P[A-Z] pop() を静的変数 [a-z] に設定する %g[A-Z] 静的変数 [a-z] をプッシュする %'\fIc\fP' 文字定数 \fIc\fP %{\fInn\fP} 整数定数 \fInn\fP %l strlen(pop) をプッシュする %+ %- %* %/ %m 算術演算 (%m は剰余): push(pop() op pop()) %& %| %^ ビット演算: push(pop() op pop()) %= %> %< 論理演算: push(pop() op pop()) %A, %O 論理 and 操作と論理 or 操作 (条件節用) %! %~ 単項演算 push(op pop()) %i 最初の 2 パラメータに 1 を足す (ANSI 端末用) %? expr %t thenpart %e elsepart %; if-then-else, %e elsepart はオプション。 else-if は Algol 68 風に指定可能: %? c\d1\u %t b\d1\u %e c\d2\u %t b\d2\u %e c\d3\u %t b\d3\u %e c\d4\u %t b\d4\u %e %; \s+1 c\di\u は条件節、b\di\u は本体。 .fi .PP 二項演算は、通常の順序で並べたオペランドに対して後置形式で指定します。 例えば、x-5 を得るには、"%gx%{5}%-" を指定します。エスケープされた文字列を 評価する間 %P 変数と %g 変数は存続します。 .PP HP2645 の例を考えてみましょう。これで 3 行 12 桁に移動させるには、 \eE&a12c03Y に 6 ミリ秒のパディングを送出する必要があります。ここで行と 桁とが逆になっていること、行、桁とも 2 桁で出力されていることに注意して ください。 この端末の \fBcup\fR ケーパビリティは、\*(lqcup=6\eE&%p2%2dc%p1%2dY\*(rq となります。 .PP Microterm \s-1ACT-IV\s0 は、\fB^T\fR の後に現在の行と桁を、 どちらも単にバイナリ値で送る必要がありますが、 \*(lqcup=^T%p1%c%p2%c\*(rq となります。 \*(lq%c\*(rq を使う端末は、カーソルを前方に戻すこと (\fBcub1\fR) と 画面上で 1 行上にカーソルを移動させること (\fBcuu1\fR) ができる必要があります。 これは、システムが変更したり握りつぶしたりする可能性があるため、 \fB\en\fR, \fB^D\fR, \fB\er\fR を確実に送信できるとは限らないからです。 (terminfo を扱うライブラリルーチンは、タブが決して展開されないように 端末モードを設定します。ですから \et は確実に送信できます。 これは Ann Arbor 4080 では重要なことが分っています。) .PP 最後の例は \s-1LSI ADM\s0-3a です。これは行と桁を空白文字からのオフセットで 表します。ですから、\*(lqcup=\eE=%p1%' '%+%c%p2%' '%+%c\*(rq となります。 `\eE=' を送出した後、最初のパラメータをプッシュし、空白文字の ASCII 値 (32) を をプッシュし、それらを加えて (以前の 2 つの値の代わりにその和をスタックに プッシュし) 得た値を文字として出力します。 その後、2 番目のパラメータについても同様の処理を行います。 スタックを使うことで、さらに複雑な計算も可能です。 .PP .SS カーソル移動 .PP カーソルを高速にホームポジション (画面の左上隅) に移動させる方法を持つ 端末の場合、これを \fBhome\fR で指定することができます。同様に、高速に 左下隅に移動させる方法を持つ場合も \fBll\fR で指定することができます。 端末によっては、ホームポジションから \fBcuu1\fR を使って上に移動する ことでこの動作が可能な場合もありますが、 プログラムは (\fBll\fRでそう指定しない限り) 自分からそうしては ならないことになっています。これは、ホームポジションから上に移動した 場合の動作について、プログラムは一切想定できないからです。 ホームポジションは位置指定 (0,0)、つまり、メモリではなく、画面の左上隅と 等しいことに注意してください。 (ですから、HP 端末の \eEH のシーケンスは .BR home として使用できません。) .PP 端末が行や桁の絶対カーソル位置指定機能を持つ場合、単一パラメータを取る ケーパビリティ .B hpa (水平絶対位置) と .B vpa (垂直絶対位置) で指定します。 (hp2645 のような) 一般的な 2 パラメータのシーケンスよりもこれらの方が 短くなる場合がときどきあり、その場合、 .BR cup よりもそれらを使う可能性があります。 パラメータ化された局所移動機能 (例えば、 .I n 桁右へ移動する) が存在する場合、これらは、いくつ移動するかを指定する パラメータを 1 つ持つ .BR cud , .BR cub , .BR cuf , .BR cuu を使って指定することができます。 これらは主に、\s-1TEKTRONIX\s+1 4025 のように端末が .BR cup を持たない場合に有益です。 .PP これらのケーパビリティを使用するプログラムを実行する際に、端末を 特殊なモードにする必要がある場合、このモードに入るコードと出るコードをそれぞれ \fBsmcup\fR と \fBrmcup\fR で指定することができます。 こういう事態が生じる場合として、例えば Concept のように、複数ページの メモリを持つ端末があります。 画面相対指定を持たず、メモリ相対のカーソル位置指定機能しか持たない この端末の場合、画面の大きさのウィンドウ 1 枚を端末に固定で割り付け、 カーソル位置指定を適切にできるようにしなければなりません。 このケーパビリティは \s-1TEKTRONIX\s+1 4025 でも使用されています。 こちらでは、 .B smcup で、terminfo で使用するコマンド文字を設定しています。 \fBrmcup\fP シーケンス が出力された後に、\fBsmcup\fP シーケンスが画面を (\fBrmcup\fP を出力する前の状態に) 回復しないならば、\fBnrrmc\fP を 指定してください。 .PP .SS 領域消去 .PP 端末がカーソルを動かさずに、現在位置から行の末端まで消去可能である場合、 これを \fBel\fR で指定すべきです。 端末がカーソルを動かさずに、行の先頭から現在位置を含めて現在位置まで 消去可能である場合、これを \fBel1\fP で指定すべきです。 端末が現在位置から画面の終りまでを消去可能な場合、これを \fBed\fR で 指定すべきです。 \fBed\fR は行の第 1 桁から行う場合のみ定義されます。 (ですから、まともな .B ed が利用できない場合でも、大量の行削除リクエストを使ってシミュレート可能です。) .PP .SS 行の挿入/削除と垂直移動 .PP カーソルのある行の前に空白行を新規につくることができる端末の場合、 これを \fBil1\fR で指定すべきです。これは、行の先頭位置でのみ行われます。 作成後、カーソルは新しくできた空白行に置かれる必要があります。 端末がカーソルのある行を削除できる場合、これを \fBdl1\fR で指定すべきです。 この機能は削除される行の先頭でのみ行われます。 .B il1 と .B dl1 の変種で、挿入/削除する行数を表すパラメータを 1 つ取るものは、 .B il と .BR dl とで指定できます。 .PP (vt100 のように) スクロール領域を設定可能な端末の場合、 領域設定コマンドを .B csr ケーパビリティを用いて指定可能です。このケーパビリティは 2 つのパラメータ、 スクロール領域の先頭行と最終行、を取ります。 困ったことに、このコマンド実行後のカーソル位置は定義されません。 .PP 適切な領域に .B csr を用いることで行の挿入/削除の効果を得ることが可能です。 .B sc と .B rc (カーソルの保存と回復) コマンドは、合成した挿入/削除文字列がカーソルを 動かさないことを保証するには有用でしょう。 (\fBncurses\fR(3X) ライブラリは自動的にこの合成を行うので、 \fBcsr\fR で挿入/削除文字列をエントリ用につくる必要はないことに 注意してください。) .PP 挿入と削除を構成するもう 1 つの方法は、(HP-700/90 シリーズには挿入/削除は ありますが、このシリーズのような) いくつかの端末にあるメモリロック機能と index を組み合わせて使うことです。 .PP まともな行挿入/削除コマンドを持たない端末で、画面の最上端もしくは 最下端で行を挿入する場合、 .B ri もしくは .B ind を使って行うこともできます。まともな行挿入/削除コマンドを持つ場合でも、 これらを使う方が速い場合が多いです。 .PP スクロールする各ウィンドウが実質的に画面大のキャンバス上のビューポートで あるなら、ブール値 \fBnon_dest_scroll_region\fR を設定すべきです。この ケーパビリティをテストするためには、画面の中央にスクロール領域をつくり、 最下行に何かを書き、領域の一番上にカーソルを動かし、\fBri\fR を行った後 \fBdl1\fR か \fBind\fR を行ってください。 \fBri\fR で領域の下へとスクロールして消えたデータが、 再び現れるなら、スクロールは非破壊的です。System V Curses と XSI Curses は \fBind\fR, \fBri\fR, \fBindn\fR, \fBrin\fR が破壊的スクロールを シミュレーションすることを期待します。 これが本当でない限り \fBcsr\fR を定義しないようにと文書には注意書きがあります。 この \fBcurses\fR の実装はより寛大で、\fBndstr\fR が定義されていれば スクロールの後に明示的に消去を行います。 .PP メモリの一部に、すべてのコマンドが影響するウィンドウを定義することが できる端末の場合、それは、パラメータ化文字列 .BR wind で指定すべきです。 メモリ中での開始行、終了行、開始桁、終了桁を表す 4 パラメータは、 この順番で与えます。 .PP 上側の表示メモリを保持できる端末の場合、\fBda\fR ケーパビリティを 指定すべきです。下側の表示メモリを保持できる場合、\fBdb\fR を指定すべきです。 これらは、行削除やスクロールにより、画面最下端に非空白行が上がってくること、 および、\fBri\fR による逆スクロールにより非空白行が下がってくることを表します。 .PP .SS 文字の挿入/削除 .PP .I terminfo で記述可能な文字の挿入/削除に関して、基本的には 2 種類の インテリジェント端末があります。 もっとも標準的な文字挿入/削除機能は、現在行の文字のみが影響を受け、 シフトした文字は一体となって移動し行端で消えて行くものです。 その他の端末、例えば Concept 100 や Perkin Elmer Owl のようなものの場合、 表示出力された空白とそうでない空白との間に区別があります。挿入/削除に ともなうシフトは画面上の表示出力されていない空白に対してのみ適用され、 それぞれ空白の消滅、もしくは表示出力されていない空白 2 つになります。自分が 持っている端末がどちらのタイプかを調べるには、画面を消去してから、カーソル 移動を用いてテキストを 2 箇所に分けて出力します。\*(lqabc\*(rq と \*(lqdef\*(rq の間に (空白文字でなく) 局所的カーソル移動を用いて \*(lqabc\ \ \ \ def\*(rq を出力してください。 その後、カーソルを \*(lqabc\*(rq の前に移動させ、端末を挿入モードにします。 文字を打ち込むと、行の残りが一体となってシフトして行の端で文字がこぼれ おちてゆくならば、この端末は表示出力された空白とそうでない空白を区別しません。 \*(lqabc\*(rq がシフトして \*(lqdef\*(rq に当りその後はそれらが一緒に 行の端まで進み、次の行まで進むならば、この端末は 2 番目のタイプのもので \*(lqinsert null\*(rq を表すケーパビリティ \fBin\fR を指定すべきです。 論理的には、これらは別の属性 (挿入モードが 1 行か複数行か、および、 表示出力されていない空白を特別扱いするか否か) ですが、挿入モードを この属性 1 つで記述できない端末に、今までお目にかかったことはありません。 .PP terminfo では、挿入モードを持つ端末も、現在行の上で場所を空ける短い シーケンスを送る端末も、両方とも記述することができます。 挿入モードに入るシーケンスは \fBsmir\fR で指定してください。 挿入モードから出るシーケンスは \fBrmir\fR で指定してください。 挿入したい文字の直前に、あるシーケンスを送出する必要がある場合は \fBich1\fR で指定してください。まともな挿入モードを持つ端末のほとんどでは、 \fBich1\fR を指定することはないでしょう。一方、画面上で場所を空ける シーケンスを送る端末の場合は、\fBich1\fR を指定すべきです。 .PP 両方持つ端末の場合、通常は \fBich1\fR よりも挿入モードの方が望ましいでしょう。 技術的には、実際に両方を組み合わせて使用する必要がある場合以外は、両方同時に 指定すべきではありません。よって、両方あると curses を使わない アプリケーションの中には混乱するものがあります。その兆候は、挿入を使った 更新の時に文字が二重になることです。この要求は現在では稀です。ほとんどの \fBich\fR シーケンスはその前に smir を必要とはせず、 ほとんどの smir 挿入モードは各文字の前に \fBich1\fR を必要とはしません。 よって、新しい \fBcurses\fR は実際にこれが真実だと仮定し、 \fBrmir\fR/\fBsmir\fR か \fBich\fR/\fBich1\fR のどちらか一方 (両方では ありません) を適切なものとみなして利用します。もし、両方を必要とするほど 古い端末のエントリを、新しい curses で使うために書く必要があるなら、 \fBich1\fR に \fBrmir\fR/\fBsmir\fR シーケンスを含めてください。 .PP 挿入後のパディングが必要な場合、\fBip\fR (文字列オプション) に必要なミリ秒の 数を指定してください。その他のシーケンスで文字 1 文字を挿入後に送出する 必要のあるものを、いっしょに \fBip\fR で指定することもできます。 「挿入モード」に入り、かつ挿入する文字ごとにあるコードを付けて 送出する必要のある端末の場合、 .BR smir / rmir と .B ich1 とを両方とも指定してください。そうすることで、それらが使われるようになります。 .B ich ケーパビリティはパラメータ .IR n 1 つをとり、これは .B ich1 の動作を .I n 回繰り返します。 .PP 挿入モードでないとき、文字入力の間にパディングが必要なら、\fBrmp\fP に ミリ秒のパディングの数を指定してください。 .PP 挿入モードの途中で同じ行の文字を削除するために、カーソルを動かす必要がある 場合があります (例えば、挿入位置の後にタブがある場合)。挿入モードに 入ったままでカーソルを移動させることができる場合、このような場合の挿入を 高速に行うために、ケーパビリティ \fBmir\fR を指定することができます。 \fBmir\fR を省略しても、影響を受けるのは速度のみです。端末によっては (有名な Datamedia のアレとか) 挿入モードの動作方法の違いにより \fBmir\fR を 指定してはいけないものがあります。 .PP 最後に、文字 1 文字の削除用として .B dch1 を、 .I n 文字 削除用としてパラメータ .IR n 1 つをとる .B dch を、そして \fBsmdc\fR と \fBrmdc\fR をそれぞれ削除モードに入る シーケンスとそこから出るシーケンスとして与えることで 削除モード ( .B dch1 が動作するために、端末が入っていなければならないモード) を指定することが できます。 .PP .I n 文字を削除する (カーソルを移動させずに空白を .I n 個出力することと同等の処理) ためのコマンドは、パラメータを 1 つとる .B ech を使って指定することができます。 .PP .SS "ハイライト・下線・可視ベル" .PP 端末が 1 つまたはそれ以上の表示属性を持つ場合、これらを表す方法として異なった やり方がいくつかあります。 エラーメッセージや他の種類の注意を引くメッセージに適した、十分コントラストが 高く目立つ形式から 1 つ、\f2強調モード\fR を選択すべきです。 (選ぶなら、反転表示に半輝度を加えたもの、もしくは単に反転のみがよいでしょう。) 強調モードに入るシーケンス、出るシーケンスはそれぞれ \fBsmso\fR と \fBrmso\fR で指定します。 TVI 912 や Teleray 1061 のように、強調モードへの出入りにより画面に空白が 1 つ 2 つ残る場合、\fBxmc\fR を指定して空白がいくつ残るかを教えるべきです。 .PP 下線引きを開始するコード、終了するコードは、それぞれ \fBsmul\fR と \fBrmul\fR で指定します。 Microterm Mime のように、現在位置の文字に下線を引き、空白 1 つ分 カーソルを右に移動するコードを持つ端末の場合、そのコードを \fBuc\fR で 指定することができます。 .PP その他もろもろの強調モードに入るケーパビリティには、 .B blink (点滅) .B bold (太字もしくは更に明るい) .B dim (暗いもしくは半輝度) .B invis (空白もしくは見えないテキスト) .B prot (保護状態) .B rev (反転表示) .B sgr0 ( .I すべての 属性モードをオフにする) .B smacs (別の文字セットモードに入る) and .B rmacs (別の文字セットモードから出る) が含まれます。 これらのモードのどれか 1 つをオンにした場合に、他のモードがオフになる場合も ありますし、ならない場合もあります。 .PP モードの任意の組み合わせを設定するシーケンスが存在する場合、それを 9 つのパラメータを持つ .B sgr (属性の設定) で指定します。 パラメータのそれぞれは、0 か非 0 の値を取り、対応する属性がオンかオフかを 表します。 9 つのパラメータとは、順に、強調、下線、反転表示、点滅、暗い表示、太字、 空白、保護、別の文字セットです。 必ずしもすべてのモードが .BR sgr によってサポートされている必要はありません。 独立した属性コマンドが存在するものだけで構いません。 .PP 例えば、DEC vt220 は以下のモードのほとんどをサポートします。 .PP .TS center; l c c l c c lw28 lw6 lw2 lw20. \fBtparm パラメータ 属性 エスケープシーエンス\fP none なし \\E[0m p1 強調 \\E[0;1;7m p2 下線 \\E[0;4m p3 反転表示 \\E[0;7m p4 点滅 \\E[0;5m p5 暗い表示 利用できません p6 太字 \\E[0;1m p7 不可視 \\E[0;8m p8 保護 使われていません p9 別の文字セット ^O (オフ) ^N (オン) .TE .PP 各モードが動作中かどうかを素早く決める方法がないので、 エスケープシーケンスを動作中のモードをすべてオフにするもので始めます。 強調は反転と太字の組合せでできています。 保護モードはホストの消去から画面の文字を保護するので、sgr では普通は 使われませんが、vt220 端末には保護モードがあります。 別の文字セットモードは、オフかオンかによって ^O または ^N であるという点で 異なります。 全モードをオンにするシーケンスは \\E[0;1;4;5;7;8m^N です。 .PP いくつかのシーケンスは異なるモードに共通です。 例えば、;7 は、p1 か p3 が真であるとき、すなわち強調か反転モードがオンのときに 出力されます。 .PP 上のシーケンスを依存関係とあわせて余すところなく書くと次のようになります。 .PP .TS center; l c c l c c lw28 lw6 lw2 lw20. \fBシーケンス 出力される場合 terminfo への翻訳\fP \\E[0 常に \\E[0 ;1 p1 または p6 のとき %?%p1%p6%|%t;1%; ;4 p2 のとき %?%p2%|%t;4%; ;5 p4 のとき %?%p4%|%t;5%; ;7 p1 または p3 のとき %?%p1%p3%|%t;7%; ;8 p7 のとき %?%p7%|%t;8%; m 常に m ^N または ^O p9 が真なら ^N そうでなければ ^O %?%p9%t^N%e^O%; .TE .PP これをすべて一緒に sgr シーケンスに詰め込むと次のようになります。 .PP .nf sgr=\\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%; %?%p4%t;5%;%?%p7%t;8%;m%?%p9%t\\016%e\\017%;, .fi .PP sgr を設定したら、sgr0 も設定する必要があることを忘れないでください。 .PP 「魔法のクッキー (magic cookie)」 .RB ( xmc ) を持つ端末では、モード設定シーケンスを受信すると特殊な「クッキー」とでも 呼ぶべきゴミを画面に残します。この端末では、モード設定シーケンスは、 各文字に余分なビットを持たせるのではなく、表示アルゴリズムそのものに 影響を与えます。 HP 2621 などのような端末では、次の行へ移動したり、カーソルの位置指定を した際に強調モードから勝手に抜け出てしまいます。 強調モードを用いるプログラムは、強調モードでの移動が安全であることを示す .B msgr ケーパビリティの指定が無い場合には、カーソルを移動させたり改行文字を 送出する前に強調モードから脱出すべきです。 .PP エラー発生を無音で (ベルの代わりに) 通知するため、画面をフラッシュさせる 方法が提供されている端末の場合、それを \fBflash\fR で指定できます。これは カーソルを移動させてはなりません。 .PP カーソルが最下行にないときに通常の状態以上に見易くする (例えば、点滅しない 下線カーソルを、より見つけやすいブロックカーソルや点滅下線カーソルにする) 必要がある場合、そのシーケンスを .BR cvvis で指定してください。 カーソルを完全に見えないようにする方法がある場合、それを .BR civis で指定してください。 これらのモードの効果を打ち消すシーケンスとして、ケーパビリティ .BR cnorm を指定すべきです。 .PP たとえ重ね打ちでないとしても、(特殊なコードなしで) 下線文字を正しく 生成できる端末の場合、ケーパビリティ \fBul\fR を指定すべきです。 文字を別の文字に重ね打ちすると両方の文字が画面に残るなら、ケーパビリティ \fBos\fP を指定してください。 重ね打ちが空白文字で消去可能な場合、\fBeo\fR を指定してそのことを明らかに しておくべきです。 .PP .SS キーパッドとファンクションキー .PP キーを押すとコードを送出するキーパッドを持つ場合、そのキーパッドに関する 情報を指定することができます。注意すべき点として、キーパッドが 局所モードでしか動作しない端末 (例えば、シフト状態でない HP 2621 の キーがこれに該当します) を扱うことはできないことがあります。 送信状態か非送信状態かを設定できるキーパッドの場合、それらのためのコードを \fBsmkx\fR と \fBrmkx\fR とで指定することができます。 これらの指定がない場合、キーパッドは常に送信状態として扱われます。 左矢印、右矢印、上矢印、下矢印キー、home キーが送出するコードは、それぞれ \fBkcub1, kcuf1, kcuu1, kcud1, khome\fR で指定できます。 f0, f1, ..., f10 のようなファンクションキーがある場合、これらが送出する コードは \fBkf0, kf1, ..., kf10\fR で指定できます。 これらのキーが f0 から f10 までのデフォルトのラベル以外のラベルを持つ場合、 このラベルを \fBlf0, lf1, ..., lf10\fR で指定できます。 他の特殊キーが送出するコードは、以下のように指定できます。 .B kll (ホームダウン (home down))、 .B kbs (バックスペース (backspace))、 .B ktbc (全タブクリア (clear all tabs))、 .B kctab (この桁のタブストップをクリア)、 .B kclr (画面消去 (clear screen) キーまたは抹消 (erase) キー)、 .B kdch1 (文字削除 (delete character))、 .B kdl1 (行削除 (delete line))、 .B krmir (挿入モードから抜ける (exit insert mode))、 .B kel (行末までクリア)、 .B ked (画面の終りまでクリア)、 .B kich1 (文字挿入 (insert character) または挿入モードに入る (enter insert mode))、 .B kil1 (行挿入 (insert line))、 .B knp (次のページ (next page))、 .B kpp (前のページ (previous page))、 .B kind (前進スクロール (scroll forward) / 下降スクロール (scroll down))、 .B kri (後退スクロール (scroll backward) / 上昇スクロール (scroll up))、 .B khts (この桁にタブストップを設定)。 更に、キーパッドが 4 つの矢印を含む 3 × 3 のキー配列を持つ場合、他の 5 つの キーを .BR ka1 , .BR ka3 , .BR kb2 , .BR kc1 , .BR kc3 . で指定します。 3 × 3 のカーソル移動キーパッドの効果が必要な場合、これらのキーが有用です。 .PP ファンクションキーにプログラムする文字列は、 .BR pfkey , .BR pfloc , .BR pfx で指定できます。 画面のラベルの文字列は \fBpln\fP で指定すべきです。 これらの文字列は、それぞれ 2 つの引数を取ります。 プログラム対象のファンクションキー番号 (0 から 10 まで) と、 そこにプログラムする文字列です。 この範囲外のファンクションキー番号を使うと未定義のキーに対してプログラムして しまうかもしれず、これは端末依存の動作となります。 これらのケーパビリティの違いは以下の通りです。 .B pfkey を指定すると、そのキーを押すことは、ユーザが指定した文字列をタイプするのと 同じことになります。 .B pfloc では、端末内部で局所的にその文字列が実行されることになります。 .B pfx では、その文字列がコンピュータに送出されることになります。 .PP ケーパビリティ \fBnlab\fP, \fBlw\fP, \fBlh\fP はプログラム可能な画面のラベルの 数、幅、高さを定義します。 ラベルをオン、オフするコマンドがあるなら、\fBsmln\fP と \fBrmln\fP に 指定してください。 変更が見えるのを確実にするために、通常 \fBsmln\fP は 1 つ以上の pln シーケンスの後で出力されます。 .PP .SS タブと初期化 .PP 端末がハードウェアタブを持つ場合、次のタブストップまでカーソルを進める コマンドを .B ht (通常は control I) で指定できます。 前のタブストップまで左方向に進める「後退タブ」コマンドは、 .BR cbt で指定できます。 端末が、タブが端末に送出されずにコンピュータ内部で空白に展開されるモードに なっている場合、プログラムは、たとえ .B ht や .B cbt が存在しても、それらを使用しないという約束になっています。これは、 ユーザがタブストップを正しく設定していない可能性があるためです。 電源投入時に、 .I n 個の空白ごとにハードウェアタブが初期化されている端末の場合、数値パラメータ .B it を指定します。これはタブとして設定される空白数を表します。 通常、これは .IR tset コマンドが、ハードウェアタブ展開を使用するモード設定と、タブストップ設定とを 行うかどうかを決定するために使用します。 タブストップ設定を不揮発性メモリに記憶できる端末の場合、terminfo での記述の 際に、タブストップは正しく設定されていることを想定して構いません。 .PP 他のケーパビリティとして、 .BR is1 , .BR is2 , .BR is3 があり、これらは端末を初期化する文字列を指定します。また、 .BR iprog があり、これは端末初期化用として実行するプログラムのパス名を指定します。 また、\fBif\fR があり、これは初期化文字列が長い場合、それを含むファイルの 名前を指定します。 これらの文字列により、terminfo の残りの記述と矛盾なく動作するモードに 端末が設定されることが求められます。 通常、ユーザがログインするたびに、 .IR tput プログラムの .I init オプションがこれらの文字列を端末に対して送出します。 送出は以下の順序で行われます。 プログラム .BR iprog を実行 ; .BR is1 を出力 ; .BR is2 を出力 ; .BR mgc , .BR smgl , .BR smgr でマージンを設定 ; .B tbc と .BR hts でタブを設定 ; ファイル .BR if を印字 ; 最後に .BR is3 を出力。 .PP 初期化のほとんどは .BR is2 で行われます。 共通のシーケンスを .B is2 に置き、特殊な場合を .B is1 と .BR is3 とに置くことで、文字列をそれぞれに複製して持たせなくても、 特殊な端末モードを設定することができます。 まったくわけのわからない状態から復帰するための、よりハード寄りの リセットを行うためのシーケンスの組も同様に、 .BR rs1 , .BR rs2 , .BR rf , .BR rs3 で指定することができます。これらは .B is2 と .BR if と良く似たシーケンスです。 端末がハマったときに使うプログラムである、 .IR reset がこれらのシーケンスを出力します。 コマンドを .BR rs1 , .BR rs2 , .BR rs3 , .B rf に置くのは、普通、そのコマンドが画面にユーザを混乱させる効果を産み出し、 かつ、ログインの際には必要ない場合に限ります。 例えば、vt100 を 80 桁モードに設定するコマンドは、普通なら .BR is2 に含めるはずですが、 このコマンドは画面に混乱させるゴミを作り出しますし、端末は既に 80 桁モードに なっているのが普通ですので、このコマンドを含める必要ありません。 .PP タブストップの設定、クリアを行うコマンドがある場合、それらを .B tbc (全タブストップのクリア) と .B hts (各行の現在桁にタブストップを設定) に指定できます。 タブ設定に関して、ここで説明したものより複雑なシーケンスが必要な場合、 そのシーケンスを .B is2 や .BR if に置いても構いません。 .SS 遅延とパディング .PP ハードコピー端末と (例えば、DEC VT100 を含む) 非常に古い CRT を含む、 多くの古くて遅い端末は XON/XOFF ハンドシェークも DTR ハンドシェークも サポートしません。特定のカーソルの移動とスクリーンの変更の後には、 パディング文字が必要かもしれません。 .PP 端末がフロー制御のための xon/xoff ハンドシェークを使用する場合 (すなわち、 入力バッファが一杯に近くなると、ホストに自動的に ^S を送り返す場合)、 .BR xon を指定してください。 このケーパビリティはパディングの送出を抑えます。実質的に速度に制限のない メモリマップト形式のコンソールデバイスに対しても指定できます。 ルーチンが相対的なコストに関してよりよい見積もりを立てることができるように、 この場合でもパディング情報を指定すべきです。しかし、実際はパディング文字は 送信されません。 .PP \fBpb\fR (パディングボーレート) を指定することで、ボーレートが \fBpb\fR の値より低い場合、パディングが抑えられます。エントリに パディングボーレートがなければ、パディングが送出されるかされないかは \fBxon\fR により完全に制御されます。 .PP ナル (0) 文字以外のパディング文字を必要とする端末の場合、それを \fBpad\fR で指定できます。 .B pad 文字列の最初の文字のみが使用されます。 .PP .SS ステータス行 端末には、通常のソフトウェアでは使用されない (それゆえ、端末の \fBlines\fR ケーパビリティでは数に入らない) 余分な「ステータス行」を 持つものもあります。 .PP 最も簡単な場合には、ステータス行はカーソル位置の指定は可能ですが、 画面上のスクロール領域の一部ではないものです。初期化のときに 23 行の スクロール領域のある 24 行の VT100 と同じように、Heathkit H19 には、この種の ステータス行があります。この状況は \fBhs\fR ケーパビリティで指定します。 .PP ステータス行に入るには特別なシーケンスを必要とする端末もあります。 これはパラメータを 1 つとる文字列 \fBtsl\fR で表します。これは カーソルをステータス行の与えられた 0 桁に移動します。 ケーパビリティ \fBfsl\fR で最後の \fBtsl\fR の前の主画面のカーソル位置に 戻る必要があります。そのために \fBtsl\fR と \fBfsl\fR の中に \fBsc\fR (save cursor) と \fBrc\fR (restore cursor) の文字列の値を含める 必要があるかもしれません。 .PP ステータス行は通常、端末の幅と同じ幅だと仮定されています。これが 本当でないのなら、そのことを数値ケーパビリティ \fBwsl\fR で指定できます。 .PP ステータス行を消去したり削除するコマンドは \fBdsl\fR で指定できます。 .PP ブール値ケーパビリティ \fBeslok\fR は、ステータス行内でエスケープシーケンスや タブ等が通常通り働くことを示します。 .PP \fBncurses\fR の実装はこれらのケーパビリティのどれもまだ利用していません。 これらが重要になったらここに記述します。 .PP .SS 線画 .PP 多くの端末には図を描くのに役に立つ別の文字セットがあります。 terminfo と \fBcurses\fR は VT100 でサポートされている図形文字と AT&T 4410v1 の文字のいくつかをサポートします。 この別の文字セットは \fBacsc\fR ケーパビリティで設定されます。 .PP .TS H center expand; c l l c c l l c lw28 lw6 lw2 lw20. .\".TH \fBGlyph ACS Ascii VT100\fR \fBName Name Default Name\fR UK pound sign ACS_STERLING f } arrow pointing down ACS_DARROW v . arrow pointing left ACS_LARROW < , arrow pointing right ACS_RARROW > + arrow pointing up ACS_UARROW ^ - board of squares ACS_BOARD # h bullet ACS_BULLET o ~ checker board (stipple) ACS_CKBOARD : a degree symbol ACS_DEGREE \e f diamond ACS_DIAMOND + ` greater-than-or-equal-to ACS_GEQUAL > z greek pi ACS_PI * { horizontal line ACS_HLINE - q lantern symbol ACS_LANTERN # i large plus or crossover ACS_PLUS + n less-than-or-equal-to ACS_LEQUAL < y lower left corner ACS_LLCORNER + m lower right corner ACS_LRCORNER + j not-equal ACS_NEQUAL ! | plus/minus ACS_PLMINUS # g scan line 1 ACS_S1 ~ o scan line 3 ACS_S3 - p scan line 7 ACS_S7 - r scan line 9 ACS_S9 \&_ s solid square block ACS_BLOCK # 0 tee pointing down ACS_TTEE + w tee pointing left ACS_RTEE + u tee pointing right ACS_LTEE + t tee pointing up ACS_BTEE + v upper left corner ACS_ULCORNER + l upper right corner ACS_URCORNER + k vertical line ACS_VLINE | x .TE .PP 新しいデバイスの図形セットを定義するのに一番よい方法は、この表のその端末用の コピーに列を追加し、対応する図形のところに (\fBsmacs\fR/\fBrmacs\fR スイッチの 間に送出される場合に) 送出される文字を与えることです。それから VT100 と その端末の文字を右から左に順に読み上げてください。 これが ACSC 文字列になります。 .PP .SS 色の扱い .PP ほとんどのカラー端末は `Tektronix 風' か `HP 風' のどちらかです。Tektronix 風 端末には、あらかじめ定義された N 色 (N は通常 8 です) の組があり、 文字セル毎に独立に前景色と背景色を設定して、N * N の色ペアにできます。 HP 風端末では、色ペアをそれぞれ別々に設定する必要があります (前景と背景は 独立には設定できません)。 2*M の異なった色からは M までの色ペアができます。ANSI-互換端末は Tektronix 風 です。 .PP いくつかの基本的な色に関するケーパビリティは色の扱い方とは独立です。数値 ケーパビリティ \fBcolors\fR と \fBpairs\fR には、同時に表示できる色または 色ペアの最大数を指定します。\fBop\fR (original pair) 文字列は前景色と背景色を 端末の規定値にリセットします。\fBoc\fR 文字列はすべての色または色ペアを 端末の規定値にリセットします。(多くの PC 端末エミュレータを含む) いくつかの端末では、電源投入時の背景色ではなく、現在の背景色で 画面領域を消去します。この場合にはブール値ケーパビリティ \fBbce\fR を 指定すべきです。 .PP Tektronix 型の端末で現在の前景色と背景色を変えるためには、 \fBsetaf\fR (set ANSI foreground) と \fBsetab\fR (set ANSI background) を 使うか、\fBsetf\fR (set foreground) と \fBsetb\fR (set background) を使って ください。 これらは 1 つのパラメータ、色番号をとります。SVr4 の文書には \fBsetaf\fR/\fBsetab\fR だけが書かれています。XPG4 の草案には、 「端末が背景と前景を設定する ANSI エスケープシーケンスをサポートするなら、 それぞれ \fBsetaf\fR と \fBsetab\fR で指定すべきです。端末が 背景と前景を設定する別のエスケープシーケンスをサポートするなら、 それぞれ \fBsetf\fR と \fBsetb\fR で指定すべきです。\fIvidputs()\fR 関数と refresh 関数 は、定義されていれば \fBsetaf\fR と \fBsetab\fR を 使います。」と書かれています。 .PP \fBsetaf\fR/\fBsetab\fR と \fBsetf\fR/\fBsetb\fR ケーパビリティはそれぞれ 数値引数を 1 つとります。引数値 0-7 は移植できるよう以下のように定義されて います (中央の列は \fBcurses\fR や \fBncurses\fR ライブラリ用にヘッダで 利用できる記号の #define です)。端末のハードウェアはこれを好きなように マップするのは自由ですが、RGB 値は色空間での通常の位置を示しています。 .PP .TS H center; l c c c l l n l. \fB色 #define 値 RGB\fR 黒 \fBCOLOR_BLACK\fR 0 0, 0, 0 赤 \fBCOLOR_RED\ \fR 1 max,0,0 緑 \fBCOLOR_GREEN\fR 2 0,max,0 黄 \fBCOLOR_YELLOW\fR 3 max,max,0 青 \fBCOLOR_BLUE\fR 4 0,0,max マゼンタ \fBCOLOR_MAGENTA\fR 5 max,0,max シアン \fBCOLOR_CYAN\fR 6 0,max,max 白 \fBCOLOR_WHITE\fR 7 max,max,max .TE .PP HP 風の端末では、どの色ペアが現在のものかを設定する色ペア番号パラメータを ともなった \fBscp\fR を使ってください。 .PP Tektronix 風の端末では、色が変更できることを示すためにケーパビリティ \fBccc\fR があります。もしそうであれば、 \fBinitc\fR ケーパビリティは色数 (0 から \fBcolors\fR - 1) と 色を記述する 3 つのパラメータをとります。この 3 つのパラメータは、デフォルトでは RGB (Red, Green, Blue) 値と解釈されます。ブール値ケーパビリティ \fBhls\fR が あれば、代わりに HLS (Hue, Lightness, Saturation) 指標になります。範囲は 端末に依存します。 .PP HP 風の端末では、\fBinitp\fR が色ペア値を変更するケーパビリティを与えます。 パラメータを 7 つとります。色ペア番号 (0 から \fBmax_pairs\fR - 1 まで) と 3 つの数の組が 2 つです。最初の組で背景色を、2 番目の組で前景色を記述します。 これらのパラメータは \fBhls\fR に依存して (Red, Green, Blue) か (Hue, Lightness, Saturation) である必要があります。 .PP カラー端末のいくつかでは、色はハイライトと衝突します。この衝突を \fBncv\fR ケーパビリティで登録できます。これは、色が利用可能なときに使うことが できない属性のビットマスクです。\fBcurses\fR が理解する属性との対応は 以下の通りです。 .PP .TS center; l c c lw25 lw2 lw10. \fB属性 ビット 10 進数\fR A_STANDOUT 0 1 A_UNDERLINE 1 2 A_REVERSE 2 4 A_BLINK 3 8 A_DIM 4 16 A_BOLD 5 32 A_INVIS 6 64 A_PROTECT 7 128 A_ALTCHARSET 8 256 .TE .PP 例えば、多くの IBM PC コンソールで、下線の属性は前景色、青と衝突してしまい、 カラーモードでは利用できません。これは、\fBncv\fR ケーパビリティに 2 を 指定すべきです。 .PP SVr4 curses は \fBncv\fR では何もしませんが、ncurses はそれを認識してカラー用に 出力を最適化します。 .PP .SS その他 ナル (0) 文字以外のパディング文字を必要とする端末の場合、それを pad で 指定することができます。 pad 文字列の最初の文字のみが使用されます。 パディング文字を持たない端末の場合、npc を指定してください。 ncurses は termcap 互換の \fBPC\fR 変数を実装していることに注意してください。 アプリケーションはこの値をナル以外のものに設定するかもしれませんが、 ncurses は最初に \fBnpc\fR をテストし、端末にパディング文字がなければ napms を使います。 .PP 端末が半行だけ上下移動できる場合、それを .B hu (半行上へ) と .B hd (半行下へ) とで指定できます。 これは、主として、ハードコピー端末の上付き文字、下付き文字のために役に 立ちます。 ハードコピー端末が用紙を排出し次のページに行くこと (フォームフィード) が できる場合、それを .B ff (通常は control L) で指定します。 .PP (同じ文字を極めて多数回繰り返し送信する際の時間節約のため) 指定した文字を 指定した回数だけ繰り返すコマンドが存在する場合、パラメータ化文字列 .BR rep を用いてそれを指定することができます。 1 番目のパラメータは繰り返される文字で、2 番目のパラメータは繰り返し回数です。 ですから、tparm(repeat_char, 'x', 10) は `xxxxxxxxxx' と同じことです。 .PP \s-1TEKTRONIX\s+1 4025 のように、コマンド文字を設定可能な端末の場合、 .BR cmdch を用いてそれを表すことができます。 すべてのケーパビリティで使用されるプロトタイプコマンド文字を指定できます。 この文字は .B cmdch ケーパビリティで指定され、それが識別されます。 いくつかの UNIX システムでは以下の約束にしたがって処理がなされます。 すなわち、まず環境変数 .B CC を検査し、それが設定されている場合は、ケーパビリティ中にあるプロトタイプ 文字のすべてがその環境変数で指定された文字と置き換えられます。 .PP .IR switch , .IR dialup , .IR patch , .IR network などのような、特定の端末の種類を表さない端末記述には、プログラムが その端末とどう通信すればよいかが分からないと表明できるようにするため、 .B gn (一般的) ケーパビリティを指定すべきです。 (このケーパビリティは、エスケープシーケンスがわかっている .I 仮想 端末の記述には適用されません。) .PP 端末が、シフトキーとして動作し、文字すべての 8 ビット目を立てて送出する 「メタキー」を持つ場合、このことを .BR km により表すことができます。 この指定がない場合、ソフトウェアは、8 ビット目はパリティで、通常は クリアされていると想定します。 この「メタモード」をオンオフする文字列が存在する場合、それを .B smm と .BR rmm とで指定できます。 .PP 端末が画面 1 枚分より多い行数のメモリを持つ場合、メモリの行数を .BR lm で指定できます。 値 .BR lm #0 は、行数は固定でないものの、1 画面分以上のメモリを持つことを表します。 .PP 端末が \s-1UNIX\s+1 の仮想端末プロトコルをサポートしている場合、 その端末番号を .BR vt で指定できます。 .PP 端末に接続された外部プリンタを制御するメディアコピー文字列は、次のように 指定できます。すなわち、 .BR mc0 : 画面内容の印字、 .BR mc4 : プリンタオフ、 .BR mc5 : プリンタオンです。 プリンタがオンのとき、端末に送出されたテキストはすべてプリンタに送られます。 プリンタがオンの状態でもなお端末にテキストが表示されるか否かは未定義です。 変種である .B mc5p はパラメータを 1 つ取り、そのパラメータの値だけの文字を送る間プリンタを オンにし続け、そのあとオフにします。 このパラメータは 255 を越えてはなりません。 .BR mc4 を含むすべてのテキストは、 .B mc5p が有効な間、透過的にプリンタに渡されます。 .PP .SS ゴミ機能、困った機能 (Glitches and Braindamage) .PP Hazeltine 端末は `~' 文字を表示できません。これには \fBhz\fR を指定すべきです。 .PP Concept や vt100 のように \fBam\fR 直後の改行文字を無視する端末の場合、 \fBxenl\fR を指定すべきです。 .PP 強調表示を取り除くために (単に通常のテキストを上に書くだけでは済まず) .B el が必要な場合、 \fBxhp\fP を指定すべきです。 .PP Teleray 端末は、タブでカーソル移動した下にあった文字をすべて空白にして しまうので、この端末では \fBxt\fR (破壊的なタブ) を指定すべきです。 注 : これに対応する変数は、現在は `dest_tabs_magic_smso' ですが、 以前のバージョンでは、teleray_glitch でした。 このふざけた機能は、「魔法のクッキー」の先頭にカーソルを置けないことと、 強調モードを消去するために、行削除と行挿入が必要であることも意味します。 ncurses の実装はこの glitch を無視します。 .PP Beehive の Superbee 端末は、エスケープ文字や control C 文字を正しく 送信できません。これには .BR xsb を指定し、f1 キーをエスケープとし、f2 キーを control C として使用することを 表します。 (この問題が現れるのは特定の Superbee に限られ、その ROM に依存します。) terminfo の古いバージョンでは、このケーパビリティは `beehive_glitch' と 呼ばれていましたが、現在では `no_esc_ctl_c' と呼ばれていることに 注意してください。 .PP なにか特定の端末に固有の他の問題を解決したい場合、\fBx\fR\fIx\fR の形式で 新しいケーパビリティを追加して使っても構いません。 .PP .SS 似た端末 .PP 2 つの非常によく似た端末がある場合、いくつかの例外を除いて 一方 (変型種) は他方 (基本種) と似ているという定義を行うことができます。 変型種の定義においては、 文字列ケーパビリティ \fBuse\fR で、基本種の端末の名前を 指定できます。 .B use の指定より前に与えたケーパビリティは、 .BR use により得られる基本タイプの中のケーパビリティに優先します。 複数の \fBuse\fR ケーパビリティが存在する場合、逆の順番でマージされます。 すなわち、一番右側の \fBuse\fR の参照先が最初に処理され、 次にその左が処理されるといった順番になります。 エントリ中で明示的に指定されたケーパビリティは、 \fBuse\fR の参照先が与えるケーパビリティに優先します。 .PP ケーパビリティ定義の左側に \fBxx@\fR を置くことにより、そのケーパビリティを キャンセルできます。ここで xx はそのケーパビリティです。 例えば、エントリ .PP 2621-nl, smkx@, rmkx@, use=2621, .PP は \fBsmkx\fR も \fBrmkx\fR も持たない 2621-nl を定義します。 それゆえこの端末はビジュアルモードではファンクションキーラベルをオンに しません。 この機能はある端末の種々の機能や、ユーザの種々の設定を表す際に有用です。 .PP .SS 長いエントリの落とし穴 .PP 長い terminfo のエントリは問題になりそうにありません。現在まで terminfo の 文字列表の最大値 4K に達したエントリはないのです。不幸なことに termcap への 翻訳はずっと厳しく制限されている (1K まで) ので、長い terminfo エントリの termcap への翻訳は問題を引き起こすかも知れません。 .PP 4.3BSD および、より古いバージョンの tgetent() のマニュアルには、 termcap エントリ用に 1K のバッファを割り当てるように書いてあります。エントリは termcap ライブラリに よりナル文字で終了させられるので、termcap エントリとして 安全な最大の長さは 1k-1 (1023) バイトです。アプリケーションと使用する termcap ライブラリが何をするか、また、tgetent() が探しているタイプの端末が termcap ファイルのどこにあるかによって、悪いことがいくつか起こるかも 知れません。 .PP termcap ライブラリの中には、1023 バイトより長いエントリを見つけると 警告のメッセージを表示したり、終了したりするものもありますし、 そうでないものもあります。そうでないものはエントリを切捨てて 1023 バイトに してしまいます。アプリケーションプログラムの中には termcap エントリに 推奨された 1K より多く割り当てるものもありますし、そうでないものもあります。 .PP 各 termcap エントリにはそれに関係する重要な大きさが 2 つあります。"tc" 展開前と "tc" 展開後です。"tc" は、現在のエントリの最後に他の termcap エントリを 付け足し、そのケーパビリティを追加するケーパビリティです。termcap エントリが "tc" ケーパビリティを使わないならば、もちろん 2 つの長さは同じです。 .PP 特殊な端末のユーザ以外にも影響するので、「tc 展開前」の長さは最も 重要なものです。 これは /etc/termcap にあるエントリからバックスラッシュと 改行の組を引いたものの長さです。バックスラッシュと改行の組は tgetent() が 読み込む間に取り除きます。 termcap ライブラリの中には最後の改行を取り除くものもあります (GNU termcap は 行いません)。 次のように仮定します。 .TP 5 * 展開前の termcap エントリは 1023 バイト以上の長さです。 .TP 5 * アプリケーションは 1k のバッファを割り当てただけです。 .TP 5 * (BSD/OS 1.1 や GNU のもののように) termcap ライブラリは、それが必要なエントリで あれば、その長さに関わらず、読むためにエントリをすべてバッファに読み込みます。 .TP 5 * tgetent() は長いエントリの端末タイプか、長いエントリの後に termcap ファイルに 現れる端末タイプか、ファイルには全く現れない (そのため tgetent() は termcap ファイル全体を探す必要があります) 端末タイプを探しています。 .PP すると、tgetent() はメモリ、おそらくはスタックに重ね書きし、たぶんプログラムを コアダンプさせるでしょう。telnet のようなプログラムは特に弱いです。 現代的な telnet は端末タイプのような値を自動的に通してしまいます。 SunOS 4.1.3 や Ultrix 4.4 のように、過度に長い termcap エントリを 読んだときには警告メッセージを表示する termcap ライブラリでも、結果は 望ましいものではありません。OSF/1 3.0 のように termcap ライブラリが 長いエントリを切り捨てるなら、ここで死ぬことはありませんが、 端末に対して不正確なデータを返すことになるでしょう。 .PP 「tc 展開後」の長さは上と同じように影響するでしょうが、 影響を受けるのは TERM をその端末タイプに実際に設定した人だけです。 tgetent() は探している時ではなく、探していた端末タイプを見つけた時に一度だけ "tc" 展開を行うからです。 .PP 結局、1023 バイトより長い termcap エントリ は、termcap ライブラリと アプリケーションのさまざまな組合せで、コアダンプや警告や不正確な操作を 引き起こすかもしれません。"tc" 展開前でも長過ぎるなら、他の端末タイプの ユーザや termcap エントリのない TERM 変数を指定しているユーザにも影響する でしょう。 .PP -C (termcap へ翻訳) モードでは、\fBtic\fR(1) の \fBncurses\fR の 実装は tc 前の termcap へ翻訳する長さが長過ぎる場合、警告メッセージを出します。 -c (check) オプションは、分析された (tc 展開後の) 長さもチェックします。 .SS バイナリ互換性 売り物の UNIX の間のバイナリの terminfo エントリの移植性に期待するのは 賢明ではありません。問題は terminfo に (HP-UX と AIX で) 少なくとも 2 つの バージョンがあるからです。どちらも SVr1 の後で System V の terminfo から 分岐したもので、文字列表に System V や XSI Curses 拡張と (バイナリフォーマットで) 衝突する拡張ケーパビリティを追加しています。 .SH 拡張 SVr4 の \fBcurses\fR の実装のいくつかと SVr4 以前のものすべては パラメータ文字列内の %A 演算子と %O 演算子を解釈しません。 .PP SVr4/XPG4 は、別の文字セットモードで \fBmsgr\fR がカーソルの移動を許可するか どうかを指定しません (そのようなモードは、数ある中でも CR と NL を 局所的な移動を引き起こさない文字に写してしまうかも知れません)。 \fBncurses\fR の実装は \fBALTCHARSET\fR モードでは \fBmsgr\fR を無視します。 このため、反対の解釈をする XPG4 の実装では、\fBncurses\fR 用に作られた terminfo エントリの \fBmsgr\fR をオフにする必要があるかも知れません。 .PP \fBncurses\fR ライブラリは、更新の効率を上げるために少し非標準的な方法で 文字挿入と文字挿入モードを扱います。上の \fB文字の挿入/削除\fR の副節を 参照してください。 .PP \fBset_clock\fR と \fBdisplay_clock\fR のパラメータ置換は SVr4 でも XSI Curses 規格でも説明されていません。AT&T 505 端末の説明書から 推測したものです。 .PP \fBkmous\fR ケーパビリティの割り当てには注意してください。\fBncurses\fR は \fBKEY_MOUSE\fR として解釈しようとし、xterm のような キーボード入力ストリーム中でマウストラック情報を返すことのできる端末や エミュレータが使用します。 .PP 異なる売り物の terminfo と curses はそれぞれ異なる XSI Curses 標準の一部と (いくつかの場合) 異なった拡張をサポートします。以下は 1995 年 10 月時点での正確な要約です。 .PP \fBSVR4, Solaris, ncurses\fR -- SVr4 ケーパビリティをすべてサポートします。 .PP \fBSGI\fR -- SVr4 すべてと説明のない拡張文字列ケーパビリティ 1 つ (\fBset_pglen\fR) を サポートします。 .PP \fBSVr1, Ultrix\fR -- terminfo ケーパビリティの制限された一部をサポートします。ブール値は \fBxon_xoff\fR で、数値は \fBwidth_status_line\fR で、文字列は \fBprtr_non\fR で終わりです。 .PP \fBHP/UX\fR -- SVr1 の一部と、SVr[234] の数値 \fBnum_labels\fR, \fBlabel_height\fR, \fBlabel_width\fR と、ファンクションキー 11 から 63 までと、 \fBplab_norm\fR, \fBlabel_on\fR, \fBlabel_off\fR と、文字列表の非互換な拡張を いくつかサポートします。 .PP \fBAIX\fR -- SVr1 の一部と、ファンクションキー 11 から 63 までと、たくさんの 非互換な文字列表拡張をサポートします。 .PP \fBOSF\fR -- SVr4 全部と AIX 拡張の両方をサポートします。 .SH 関連ファイル .TP 25 \*d/?/* 端末記述を含むファイル .SH 関連項目 \fBtic\fR(1M), \fBcurses\fR(3X), \fBprintf\fR(3S), \fBterm\fR(\*n). .SH 作者 Zeyd M. Ben-Halim, Eric S. Raymond, Thomas E. Dickey. Pavel Curtis による pcurses に基づいています。 .\"# .\"# The following sets edit modes for GNU EMACS .\"# Local Variables: .\"# mode:nroff .\"# fill-column:79 .\"# End: diff --git a/ja_JP.eucJP/man/man7/term.7 b/ja_JP.eucJP/man/man7/term.7 index b99ac154cf..e469b0c7ef 100644 --- a/ja_JP.eucJP/man/man7/term.7 +++ b/ja_JP.eucJP/man/man7/term.7 @@ -1,245 +1,245 @@ .\"*************************************************************************** .\" Copyright (c) 1998 Free Software Foundation, Inc. * .\" * .\" Permission is hereby granted, free of charge, to any person obtaining a * .\" copy of this software and associated documentation files (the * .\" "Software"), to deal in the Software without restriction, including * .\" without limitation the rights to use, copy, modify, merge, publish, * .\" distribute, distribute with modifications, sublicense, and/or sell * .\" copies of the Software, and to permit persons to whom the Software is * .\" furnished to do so, subject to the following conditions: * .\" * .\" The above copyright notice and this permission notice shall be included * .\" in all copies or substantial portions of the Software. * .\" * .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * .\" IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * .\" DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR * .\" OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR * .\" THE USE OR OTHER DEALINGS IN THE SOFTWARE. * .\" * .\" Except as contained in this notice, the name(s) of the above copyright * .\" holders shall not be used in advertising or otherwise to promote the * .\" sale, use or other dealings in this Software without prior written * .\" authorization. * .\"*************************************************************************** .\" .\" %Id: term.7,v 1.12 2000/08/13 01:56:42 tom Exp % -.\" $FreeBSD$ +.\" $FreeBSD: doc/ja_JP.eucJP/man/man7/term.7,v 1.4 2001/05/14 01:09:43 horikawa Exp $ .TH TERM 7 .ds n 5 -.ds d /usr/share/misc/terminfo/terminfo +.ds d /usr/share/misc/terminfo .SH 名称 term \- 端末タイプの命名規則 .SH 解説 .PP 環境変数 \fBTERM\fR は通常、 あなたが使用中の端末・コンソール・ディスプレイデバイスの いずれかのタイプ名を含むはずです。 この情報は、エディタやメーラを含む、画面指向プログラムには非常に重要です。 .PP デフォルトの \fBTERM\fR の値は、 \fB/etc/inittab\fR (Linux や System V 系の UNIX) または \fB/etc/ttys\fR (BSD UNIX) を使って、各回線毎に設定されます。 ワークステーションやマイクロコンピュータについては、 ほとんどの場合これで十分です。 .PP ダイヤルアップ回線を使用する場合には、 回線に接続されるデバイスのタイプには色々なものがありえます。 古めの UNIX システムでは、ダイヤルアップ回線に `dumb' や `dialup' というような正にダム端末タイプをあらかじめ設定します。 新しめの UNIX システムでは、 DEC VT100 互換の端末やパーソナルコンピュータでのエミュレータの普及を反映して、 `vt100' に設定するかもしれません。 .PP 近年の telnet は、ローカル側の \fBTERM\fR 環境変数をリモート側に渡します。 あなたの端末タイプについて、 リモートの terminfo エントリや termcap エントリの互換性が無い場合は 問題が発生し得ますが、このような状況は稀であり、 明示的に `vt100' をエクスポートすることによりほぼ常に問題が避けられるでしょう (実際に VT100 上位互換のコンソール・端末・端末エミュレータを 使用していることを仮定しています)。 .PP どのような場合でも、シェルプロファイルを使用することにより、 システムの \fBTERM\fR 設定を無視して好きなように設定することができます。 \fBtset\fP(1) ユーティリティが助けとなることもあります。 該当する tty デバイスとボーレートを基にして 端末タイプを推定したり要求したりするためのルールセットを このコマンドへ与えることができます。 .PP 回線に対するシステムのデフォルトタイプを無視したくなるような、 (可視ベルや反転のような) オプションを組み込んだ カスタムエントリを持っている場合には、 独自の \fBTERM\fR の値を設定するというのもよいでしょう。 .PP 端末タイプの記述は、 \*d の下に、ケーパビリティデータのファイルとして格納されています。 システムが認識する全端末名を閲覧するには、シェルから toe | more としてください。 これらのケーパビリティファイルは、 取り出し速度の向上のために (置き換えられた、古いテキストベースの \fBtermcap\fR とは異なって) バイナリフォーマットとなっています。 エントリを調べるには、\fBinfocmp\fR(1) コマンドを使う必要があります。 これは次のように起動します: infocmp \fIentry-name\fR ここで \fIentry-name\fR は調べようとするタイプの名称です (そしてこれはケーパビリティファイルの名称であり、 名前の先頭の文字の名前を持った \*d のサブディレクトリにあります)。 このコマンドは、\fBterminfo\fR(\*n) に記述されている書式で、 ケーパビリティファイルをダンプします。 .PP \fBterminfo\fR(\*n) 記述の最初の行は、 terminfo が端末を認識するために使用する名称を与えます。 名称は `|' (パイプバー) 文字で区切られ、 最後の名称フィールドはコンマで終ります。 最初の名称フィールドは、このタイプの\fI第一名称\fR であり、 \fBTERM\fR 設定時に使用するものです。 最後の名称フィールドは (最初のものと違う場合は)、 端末タイプの本当の記述です (これは空白を含めることができます。他の名称は単一語であることが必要です)。 最初と最後のものの間にある名称フィールドは (もしあれば)、 端末の別名であり、通常は、互換性のために保持されている歴史的な名前です。 .PP 端末の第一名称の選択には、 第一名称を情報があって固有なものにするのに役立つような約束事があります。 以下に、端末命名のための段階的なガイドを示し、 また、端末名称をどのように解釈するのかも示します: .PP 最初に、ルート名称を選びます。 ルート名称は、 1 個の小文字に、 最大 7 文字までの小文字または数字が続きます。 区切り文字はルート名称に使うことを避けなければなりません。 なぜなら、これらはファイル名として使われたり解釈されるからです。 また、シェルのメタ文字 (!, $, *, ? 等) がそれらに含まれると、 奇妙で分り難い挙動を引き起こすかもしれないからです。 スラッシュ (/) や、ファイルシステムが解釈する可能性のある他の文字 (\e, $, [, ]) は特に危険です (terminfo はプラットフォームに依存しません。 特殊文字を含む名前を選ぶと、 将来移植されたシステム上のユーザが苦労することになるかもしれません)。 ドット (.) 文字は、ルート名称に 1 個までである限りは、比較的安全です。 歴史的な terminfo 名称には、ドットを使用しているものがあります。 .PP ほぼ常に、端末やワークステーションコンソールタイプのルート名称は、 ベンダの接頭辞 (Hewlett-Packard では \fBhp\fR、 Wyse では \fBwy\fR、AT&T 端末では \fBatt\fR 等) が付くか、 端末回線の共通名称 (DEC の VT シリーズ端末では \fBvt\fR、 Sun Microsystems のワークステーションコンソールでは \fBsun\fR、 ADDS Regent シリーズでは \fBregent\fR) であるべきです。 terminfo ツリーを列挙すれば、 どの接頭辞が既に一般的に使用されているかが分かります。 ルート名称の接頭辞には、適切な場合にはモデル番号が続き、 \fBvt100\fR, \fBhp2621\fR, \fBwy50\fR となります。 .PP PC-Unix コンソールタイプのルート名称は、OS 名称、 すなわち \fBlinux\fR, \fBbsdos\fR, \fBfreebsd\fR, \fBnetbsd\fR であるべきです。 決して \fBconsole\fR やその他の総称的なものであってはなりません。 なぜなら、マルチプラットフォーム環境では混乱の原因となるからです! モデル番号が続く場合、 OS のリリースレベルかコンソールドライバのリリースレベルを示すべきです。 .PP 端末エミュレータ (ANSI 標準か vt100 タイプのどれにも適合していないとみなされる場合には) のルート名称は、 プログラム名称か、容易に認識可能な省略名称であるべきです (すなわち \fBversaterm\fR, \fBctrm\fR)。 .PP ルート名称に続き、 ハイフンで区切った適当な数の機能を表す接尾辞を追加することが可能です。 .TP 5 2p メモリを 2 ページ持ちます。同様に 4p, 8p 等。 .TP 5 mc マジッククッキー。 端末によっては (特に古い Wyse)、 バグか故障のために (lossage) 複数属性をサポートするときにマジッククッキーを使ってしまいます。 (訳注: モードを変更したときにマジッククッキーと呼ばれる 1つか複数のスペースを表示してしまう端末があったらしい) .\" lossage - The result of a bug or malfunction (from Jargon) .\" Feb 26, 2000 このような端末が基とするエントリは、たいてい この接尾辞を持ち、 複数の属性をサポートするためにマジッククッキーを使用する 他のエントリとペアになります。 .TP 5 -am 自動マージンを有効にします (右マージンは回り込みます) .TP 5 -m 単色モード - カラーサポートを抑制します .TP 5 -na 矢印キー無し - termcap は、端末に付属する矢印キーを無視するので、 ユーザが矢印キーをローカルに使用可能となります .TP 5 -nam 自動マージン無し - am ケーパビリティを抑制します .TP 5 -nl ラベル無し - ソフトラベルを抑制します .TP 5 -nsl 状態行無し - 状態行を抑制します .TP 5 -pp 使用できるプリンタポートがあります .TP 5 -rv 反転モードの端末 (白地に黒) .TP 5 -s 状態行の有効化 .TP 5 -vb ビープではなく可視ベル (フラッシュ) を使用 .TP 5 -w 幅広; 端末は 132 桁モード .PP 伝統的には、端末タイプが行数を指定することを目的とした変形タイプである場合、 行数のサフィックスを先に書きます。 例えば FuBarCo モデル 2317 端末の 30 行モードの反転ビデオ用では、 最適な書式は \fBfubar-30-rv\fR となります (`fubar-rv-30' ではありません)。 .PP スタンドアロンエントリとしてではなく、 \fBuse\fP ケーパビリティを使用して他のエントリに挿入される部品として 書かれた端末タイプは、 ダッシュの代わりにプラス記号が埋め込まれて区別されます。 .PP 表示制御に端末タイプを使用するコマンドは、 しばしば、端末名引数を取る -T オプションを受け付けます。 このようなプログラムでは、-T オプションを指定しないときは、 \fBTERM\fR 環境変数を使用するべきです。 .SH 移植性 古い System V UNIX との最大の互換性を維持するために、 名前と別名は最初の 14 文字で区別可能とすべきです。 .SH 関連ファイル .TP 5 \*d/?/* コンパイルされた端末ケーパビリティデータベース .TP 5 /etc/inittab tty 回線初期化 (AT&T 系の UNIX) .TP 5 /etc/ttys tty 回線初期化 (BSD 系の UNIX) .SH 関連項目 \fBcurses\fR(3X), \fBterminfo\fR(\*n), \fBterm\fR(\*n) .\"# .\"# The following sets edit modes for GNU EMACS .\"# Local Variables: .\"# mode:nroff .\"# fill-column:79 .\"# End: diff --git a/ja_JP.eucJP/man/man8/diskless.8 b/ja_JP.eucJP/man/man8/diskless.8 index 94cce22e71..ed7ce7dd45 100644 --- a/ja_JP.eucJP/man/man8/diskless.8 +++ b/ja_JP.eucJP/man/man8/diskless.8 @@ -1,250 +1,263 @@ .\" %NetBSD: diskless.8,v 1.11 1997/06/16 07:50:35 mrg Exp % -.\" %FreeBSD: src/share/man/man8/diskless.8,v 1.6.2.4 2001/04/30 06:35:30 luigi Exp % -.\" $FreeBSD:$ +.\" %FreeBSD: src/share/man/man8/diskless.8,v 1.6.2.5 2001/05/11 17:49:32 bsd Exp % +.\" $FreeBSD: doc/ja_JP.eucJP/man/man8/diskless.8,v 1.9 2001/05/05 18:59:09 horikawa Exp $ .\" .\" Copyright (c) 1994 Gordon W. Ross, Theo de Raadt .\" Updated by Luigi Rizzo .\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" 3. The name of the author may not be used to endorse or promote products .\" derived from this software without specific prior written permission. .\" .\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR .\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES .\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. .\" IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, .\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT .\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, .\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY .\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .\" -.\" %FreeBSD: src/share/man/man8/diskless.8,v 1.6.2.4 2001/04/30 06:35:30 luigi Exp % +.\" %FreeBSD: src/share/man/man8/diskless.8,v 1.6.2.5 2001/05/11 17:49:32 bsd Exp % .\" .Dd April 18, 2001 .Dt DISKLESS 8 .Os .Sh 名称 .Nm diskless .Nd ネットワークを介してシステムをブートする .Sh 解説 ネットワークを介してマシンをブートする能力は、 .Em diskless もしくは .Em dataless マシンのためや、ローカルのファイルシステムの再インストールまたは 修復中に一時的に利用するために有用です。 このファイルは、クライアントがネットワークを介してブートする時に、 クライアントとサーバとの間で行われる通信の一般的な解説を提供します。 .Sh 操作 ネットワークを介してシステムをブートする時に、 クライアントとサーバの間で 3 フェーズのやりとりがあります: .Pp .Bl -enum -compact .It ステージ 1 のブートストラップがブートプログラムを 読み込みます。 .It ブートプログラムがカーネルを読み込みます。 .It カーネルがルートを NFS マウントします。 .El .Pp これらの各フェーズについて、以降で詳しく記述します。 .Pp フェーズ 1 では、ステージ 1 のブートストラップコードが ブートプログラムを読み込みます。このブートプログラムは、 普通ネットワークカードを制御できます。 ブートプログラムを、BIOS や、ネットワークカード上の BOOT ROM (PXE, etherboot, netboot) に格納することもできます。また、 ディスクユニット (etherboot, netboot 等) からロードさせることもできます。 .Pp フェーズ 2 では、ブートプログラムがカーネルを読み込みます。 このフェーズの操作はブートプログラムの設計に依存します。 普通、ブートプログラムは .Tn BOOTP プロトコルまたは .Tn DHCP プロトコルを用い、クライアントの IP アドレスと その他のブート情報を取得します。ブート情報は、 NFS サーバ、ルータ、ネームサーバの IP アドレス、 ロードするカーネル名を含みます (これに限らず他の情報が含まれる こともあります)。 その後、カーネルがロードされます。これには、 (etherboot や netboot の場合のように) NFS を使って直接ロードされる場合と、 pxeboot と呼ばれる中間ローダを通じて、TFTP や NFS を使ってロードされる 場合とがあります。 .Pp フェーズ 3 では、カーネルが DHCP や BOOTP を用いて設定情報を獲得し、 ルートファイルシステムのマウントに進み、動作を開始します。 ディスクレスシステムの開始処理中に行なわれるいくつかの動作は、 .Pa /etc/rc.diskless1 と .Pa /etc/rc.diskless2 とに列挙されています。 .Sh 設定 ディスクレスクライアントを実行させるためには、次に示すものが必要です。 .Bl -bullet .It NFS サーバ。これは、適切なパーミッションを付けて ルートパーティションと /usr パーティションをエクスポートします。 いくつかのシステムファイルにアクセスできるようにするために、 ルートパーティションが .Fl maproot Ns =0 でエクスポートされている限り、 スクリプト .Pa rc.diskless{1,2} は読み込み専用パーミッションで動作します。 例として .Pa /etc/exports は次に示す行を含みます。 .Bd -literal -offset indent -maproot=0 -alldirs /usr -alldirs .Ed .Pp ここで .Aq ROOT は、ルートパーティションのサーバ上でのマウントポイントです。 スクリプト .Pa /usr/share/examples/diskless/clone_root を使い、共用可能な読み込み専用ルートパーティションを 生成することができます。 しかし、同様に、サーバ自身が使用するルートディレクトリを (読み込み専用で) エクスポートさせると決めることもできます。 .It .Tn BOOTP または .Tn DHCP サーバ。 .Xr bootpd 8 は .Pa /etc/inetd.conf の .Em bootps 行のコメントを外すことで使用可能にすることができます。 .Pa /etc/bootptab の例は次のようになります。 .Bd -literal -offset indent .default:\\ hn:ht=1:vm=rfc1048:\\ :sm=255.255.255.0:\\ :sa=:\\ :gw=:\\ :rp=":": :ha=0123456789ab:tc=.default .Ed .Pp .Aq SERVER , .Aq GATEWAY , .Aq CLIENT の意味は明らかでしょう。 .Pp .It -ルートパーティション上に、ディスクレスクライアント用の設定ファイルを -生成します。これらは、 -.Pa /cont/${i}/etc -に置きます。ここで、 +ルートパーティション上に、ディレクトリ +.Pa /conf/default/etc +を作成し、ここに +.Pa /etc +の内容のコピーを置きます。 +.Pa /conf/default/etc +中のファイルとサブディレクトリが、ディスクレス環境の +.Pa /etc +メモリファイルシステムのブートストラップとして使用されます。 +.Pa /etc +全体をコピーし、上書きしないでください。 +.It +更に、 +.Pa /etc +中のファイルに対するネットワーク毎またはホスト毎の上書き設定は、 +.Pa /conf/${i}/etc +ディレクトリを作成することにより、可能となります。 +ここで、 .Va i は、 -.Qq Li default -、またはクライアントの +クライアントの サブネットブロードキャストアドレス、またはクライアントの IP アドレスです。 .Pp .Pa /etc/rc の主要な部分の実行 (これには、 .Pa rc.conf の読み込みも含まれます) の前に、 .Pa /etc/rc.diskless.1 によって、ファイルが 上に記したディレクトリから .Pa /etc にコピーされ ( .Pa /etc にあったそれ以前の内容は上書きされます)、 最も汎用のものから開始されます。 .Pp 最低でも、 .Pa /conf/default/etc/fstab に次の内容を含める必要があります。 .Bd -literal -offset indent : / nfs ro 0 0 :/usr /usr nfs ro 0 0 proc /proc procfs rw 0 0 .Ed .Pp また、 .Pa /conf/default/etc/rc.conf を変更し、ディスクレスクライアント用のスタートアップオプションを 含むようにしたバージョンを用意する必要もあります。 .Pp スタートアップコードで既に設定されているため、 .Va hostname や .Va ifconfig_* を指定する必要はまずないでしょう。 一方、サーバのローカルスタートアップファイルを使用しないようにするため、 .Va local_startup Ns = Ns Qq を設定する必要があるでしょう。 最後になりますが、 複数のディスクレスクライアントで同じ設定ファイルを共有する場合、 .Li `hostname` の値をスイッチ変数に使う .Ic case 文を用いて、 マシン固有の設定を行なうようにすると良いかもしれません。 .Pp .It カーネルを構築します。その際、設定ファイル ( .Pa /sys/i386/conf/DISKLESS など) には、少なくとも 次のオプションを含めておきます。 .Bd -literal -offset indent options MFS options BOOTP options BOOTP_NFSROOT options BOOTP_COMPAT .Ed .Pp ファイアウォールを使用する場合、デフォルトをオープンにしておかねば ならないことは覚えておいて下さい。オープンにしておかないと、 カーネルで bootp パケットの読み書きができなくなります。 .El .Sh セキュリティ上の問題 暗号化されない NFS を使用してルートパーティションと ユーザパーティションをマウントすると、暗号化キーなどの 情報が洩れるかもしれないことに注意して下さい。 .Sh バグ このマニュアルページはおそらく不完全です。 .Pp .Fx はときどきルートパーティションに書き込みを要求します。 ですから、スタートアップスクリプトでは、元の内容を保存する間、 MFS ファイルシステムをいくつかの位置 ( .Pa /etc や .Pa /var など) に マウントします。この処理はすべての場合を扱えないかもしれません。 .Sh 関連項目 .Xr ethers 5 , .Xr exports 5 , .Xr bootpd 8 , .Xr mountd 8 , .Xr nfsd 8 , .Xr pxeboot 8 , .Xr reboot 8 , .Xr tftpd 8 , .Xr ports/net/etherboot diff --git a/ja_JP.eucJP/man/man8/ifconfig.8 b/ja_JP.eucJP/man/man8/ifconfig.8 index 37206c3876..35a85d043b 100644 --- a/ja_JP.eucJP/man/man8/ifconfig.8 +++ b/ja_JP.eucJP/man/man8/ifconfig.8 @@ -1,467 +1,478 @@ .\" Copyright (c) 1983, 1991, 1993 .\" The Regents of the University of California. All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" 3. All advertising materials mentioning features or use of this software .\" must display the following acknowledgment: .\" This product includes software developed by the University of .\" California, Berkeley and its contributors. .\" 4. Neither the name of the University nor the names of its contributors .\" may be used to endorse or promote products derived from this software .\" without specific prior written permission. .\" .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" .\" From: @(#)ifconfig.8 8.3 (Berkeley) 1/5/94 -.\" %FreeBSD: src/sbin/ifconfig/ifconfig.8,v 1.27.2.6 2001/03/05 19:33:41 ru Exp % +.\" %FreeBSD: src/sbin/ifconfig/ifconfig.8,v 1.27.2.7 2001/05/11 13:30:01 jesper Exp % .\" -.\" $FreeBSD$ +.\" $FreeBSD: doc/ja_JP.eucJP/man/man8/ifconfig.8,v 1.17 2001/05/14 01:09:49 horikawa Exp $ .\" .Dd February 13, 1996 .Dt IFCONFIG 8 .Os BSD 4.2 .Sh 名称 .Nm ifconfig .Nd ネットワークインタフェースのパラメータの設定を行なう .Sh 書式 .Nm .Op Fl L .Ar interface .Op Ar address_family .Oo -.Ar address +.Ar address Ns Op Cm / Ns Ar prefixlength .Op Ar dest_address .Oc .Op Ar parameters .Nm .Fl a .Op Fl L .Op Fl d .Op Fl u .Op Ar address_family .Nm .Fl l .Op Fl d .Op Fl u .Op Ar address_family .Nm .Op Fl L .Op Fl d .Op Fl u .Sh 解説 .Nm は、ネットワークインタフェースに対してネットワークアドレス の割り当てを行ない、ネットワークインタフェースのパラメータの設定を行ないます。 .Nm は、システム立ち上げ 時に、マシンが備える各ネットワークインタフェースに対してネットワークアドレス を割り当てるように使用しなければなりません。また、一旦各ネットワークインタフェ ースに対し設定したネットワークアドレスを再定義したり、パラメータの設定を 変えたりすることも可能です。 .Pp 以下のオプションを使用可能です: .Bl -tag -width indent .It Ar address .Tn DARPA Ns -Internet ファミリでは、アドレスはホスト名データベース .Xr hosts 5 に登録されているホスト名であるか、もしくは インターネット標準の .Dq ドット表記 です。 +.Pp +CIDR 表現 (スラッシュ表現としても知られています) もまた、 +ネットマスクの表現に使用可能です。 +つまり、 +.Li 192.168.0.1/16 +のようなアドレスを指定可能です。 .\" ゼロックスネットワークシステム(tm)ファミリでは、 .\" アドレスは .\" .Ar net:a.b.c.d.e.f .\" という形式です。 .\" ここで .\" .Ar net .\" は割り当てるネットワーク番号(10進数)、 .\" 残りの .\" .Ar a .\" から .\" .Ar f .\" までは .\" ホスト番号を表す 6 バイトであり 16 進数で指定します。 .\" ホスト番号は 10Mb/s イーサネットインタフェースでは省略可能です。 .\" ホスト番号指定を省略した場合には、 .\" 一番目のインタフェースのハードウェア物理アドレスを .\" すべてのインタフェースにおいて使用します。 .\" .Tn ISO .\" ファミリでは、 .\" ゼロックスファミリと同じ長さのアドレスを、 .\" 長い 16 進数の文字列で指定します。 .\" 違いは、 .\" ドットが続いた場合にはそのバイトはゼロを表すことと、 .\" ドットはオプションであることです .\" (ドットはネットワークバイトオーダの長い数字列を .\" 注意深く扱うために使用します)。 .It Ar address_family 他のパラメータの解釈に影響するネットワーク .Ar "address family" を指定します。 インタフェースが異なるプロトコルの送信を異なる名前付け体系で 受けることがあるので、アドレスファミリを指定しておくことをお勧めします。 本コマンドでサポートされるプロトコルファミリは、 .Dq inet , .Dq inet6 , .Dq atalk , .Dq ether , .\".Dq iso , .Dq ipx .\" .Dq ns です。 .It Ar dest_address ポイントツーポイントリンクにおける他端のアドレスを指定します。 .It Ar interface インタフェースパラメータは、 .Dq name unit の形式で表現されます。 例えば .Dq en0 です。 .El .Pp .Nm では以下のパラメータが利用できます: .Bl -tag -width indent .It Cm add .Cm alias パラメータの別名です。 BSD/OS との互換性のために導入されました。 .It Cm alias 指定したインタフェースに、ネットワークアドレスを追加して指定します。 これはネットワーク番号を変更した際に、以前のアドレスに送られるパケットを 受けとりたい場合などに便利です。 アドレスが、 本インタフェースの最初のネットワークアドレスと同じサブネット上の場合、 ネットマスク 0xffffffff を指定する必要があります。 .It Fl alias 指定したネットワークアドレスを無効にします。本機能は、alias で不正なアドレスを 指定した場合や、すでに指定したアドレスが必要ない場合などに使用します。 誤った NS アドレスをホスト部分とともに指定した場合には、 NS アドレスを全て無効にすることにより再度ホスト部分を指定可能となります。 .It Cm anycast (inet6 のみ) 設定されるアドレスはエニーキャスト (anycast) アドレスであると指定します。 現在の仕様では、ルータのみがエニーキャストアドレスに設定可能です。 エニーキャストアドレスは、 出力 IPv6 パケットの送信元アドレスとしては使用されません。 .It Cm arp アドレス解決プロトコル (ARP) を用いてネットワークレベルのアドレスとリンクレベル のアドレスの対応を取ることを可能にします (デフォルト)。この機能は、 .Tn DARPA インターネットアドレスと 10Mb/s Ethernet アドレスの間の対応を取るように 作られています。 .It Fl arp アドレス解決プロトコルの使用を禁止します。 .It Cm broadcast ネットワークに対するブロードキャストアドレスを指定します。 ブロードキャストアドレスのデフォルト値は、 ホスト部のビットがすべて 1 になったアドレスです。 .It Cm debug ドライバ依存のデバッグモードを有効にします。 通常コンソールへのエラーログを有効にします。 .It Fl debug ドライバ依存のデバッグモードを無効にします。 .It Cm delete .Fl -alias パラメータの別名です。 .It Cm down 指定したネットワークインタフェースに .Dq down とマークします。 .Dq down と マークされたインタフェースに対しては、システムはメッセージの送信を行ない ません。可能であれば、そのインタフェースは受信も不可能となるように リセットされます。この動作は、そのインタフェースを用いる ルーティングを使用しないよう自動的に設定するものではありません。 .\" .It Cm ipdst .\" リモートネットワーク向け NS パケットをカプセル化している IP パケットを .\" 受信する、インターネットホストを指定するために使用します。 .\" 外見上 point to point リンクが構成され、 .\" 指定されたアドレスは、 .\" デスティネーションの NS アドレスとネットワークアドレスとされます。 .\" .Tn CLNP .\" パケットの IP カプセル化はこれとは異なった方法で実現されます。 .It Cm lladdr Ar addr インタフェースにリンクレベルアドレスを設定します。 例えばイーサネットインタフェースに新規 MAC アドレスを 設定するために使用可能ですが、 使用される機構はイーサネットインタフェースに限ったものではありません。 アドレス .Ar addr は、コロン区切りの 16 進数の連続で指定します。 本オプション指定時にインタフェースが既に up である場合、 インタフェースを一時的に down にしてから再度 up にします。 これは、下位のイーサネットハードウェアの受信フィルタが 正しくプログラムされたことを保証するためです。 .It Cm media Ar type ドライバがメディア選択能力を持つ場合、 インタフェースのメディアタイプを .Ar type に設定します。 インタフェースによっては、 複数の異なった物理メディアコネクタのうちのいずれかを 排他的に使用することをサポートします。 例えば、10Mb/s Ethernet インタフェースには .Tn AUI とツイストペアコネクタをサポートするものがあります。 メディアタイプを .Dq 10base5/AUI に設定すると、AUI ポートを現在のアクティブなコネクタとします。 また .Dq 10baseT/UTP に設定すると、ツイストペアをアクティブにします。 使用可能なタイプの完全なリストは、 インタフェースドライバ固有の文書やマニュアルページを参照してください。 .It Cm mediaopt Ar opts ドライバがメディア選択能力を持つ場合、 インタフェースのメディアオプションを設定します。 .Ar opts はコンマで区切ったオプションリストで、インタフェースに適用されます。 使用可能なオプションの完全なリストは、 インタフェースドライバ固有のマニュアルページを参照してください。 .It Fl mediaopt Ar opts インタフェースのメディアオプションを無効にします。 .It Cm vlan Ar vlan_tag インタフェースが vlan 擬似インタフェースの場合、vlan タグ値を .Ar vlan_tag に設定します。 この値は 16 ビット数値であり、vlan インタフェースから送られるパケットの 802.1Q vlan ヘッダの作成に使用されます。 .Cm vlan と .Cm vlandev は同時に設定される必要があることに注意してください。 .It Cm vlandev Ar iface インタフェースが vlan 擬似デバイスの場合、物理インタフェース .Ar iface を関連付けます。 vlan インタフェースから送信されるパケットは、 802.1Q vlan カプセル化付きで、指定された物理インタフェース .Ar iface へ向けて転換 (divert) されます。 親インタフェースが受信した 802.1Q カプセル化付きのパケットに 正しい vlan タグが付いていた場合、 そのパケットは関連付けられた vlan 擬似インタフェースへ転換されます。 vlan インタフェースは、 親インタフェースのフラグと親のイーサネットアドレスが割り当てられます。 .Cm vlandev と .Cm vlan は同時に設定される必要があります。 vlan インタフェースが既に物理インタフェースと関連付けられている場合、 このコマンドは失敗します。 別の物理インタフェースへ関連付けを変更するには、 既存の関連付けをまずクリアする必要があります。 .Pp 注: vlan インタフェースで .Ar link0 フラグをセットした場合、vlan 擬似インタフェースの振舞いが変わります: 親インタフェースが自身の vlan タグの挿入と取り出しをサポートすること、 vlan インタフェースが親に対して無修正でパケットを渡すべきことを、 .Ar link0 は vlan インタフェースに対して通知します。 .It Fl vlandev Ar iface ドライバが vlan 擬似ドライバの場合、物理インタフェース .Ar iface どドライバとの関連付けを解除します。 これにより、vlan インタフェースとその親との間のリンクを破壊し、 vlan タグとフラグとリンクアドレスをクリアし、 インタフェースをシャットダウンします。 .It Cm metric Ar n インタフェースのルーティングメトリックを .Ar n で指定します。初期値は 0 です。 ルーティングメトリックは、ルーティングプロトコル .Pq Xr routed 8 で使用されます。 .It Cm mtu Ar n そのインタフェースの最大転送単位 (mtu) を .Ar n に設定します。デフォルト値はインタフェースに依存します。 mtu はインタフェースに送られるパケットの大きさを制限するのに用いられます。 mtu を設定できなかったり、設定出来る値の範囲に制限のある インタフェースがあります。 .It Cm netmask Ar mask .\" (inet と ISO) (inet のみ) ネットワークをサブネットワークに細分割する際に、ネットワークアドレスとして リザーブするアドレスを指定します。 mask が指定する部分は、 アドレスのネットワーク部とサブネット部です。 サブネット部はアドレスのホスト部の一部です。 mask は、0x ではじまる16進数、 ドット表記のインターネットアドレス形式、 ネットワークテーブル .Xr networks 5 に記述されている仮想ネットワーク名のいずれかで指定できます。 mask での 32ビットアドレスにおける 1 であるビットの部分は、 ネットワーク部もしくはサブネット部として使用します。 0 であるビットの部分はホスト部として使用します。 mask は少なくともネットワーク部を含む必要があり、 サブネット部はネットワーク部に連続する必要があります。 +.Pp +ネットマスクはまた、CIDR 表現で、アドレスの後に指定可能です。 +更なる情報については、前述の +.Ar address +オプションを参照してください。 .It Cm prefixlen Ar len (inet6 のみ) .Ar len ビットを、ネットワークからサブネットワークへの分割用に予約すると、 指定します。 .Ar len は整数であることが必要であり、 文法的な理由で 0 から 128 の間であることが必要です。 現在の IPv6 の割り当て規則では、ほぼ常に 64 です。 本パラメータを省略すると、64 が使用されます。 .\" see .\" Xr eon 5 . .\" .It Cm nsellength Ar n .\" .Pf ( Tn ISO .\" のみ) .\" .Tn NSAP .\" に後続するローカル識別に使用するバイト数を指定します。 .\" この部分は .\" .Tn NET .\" (Network Entity Title) .\" として扱われます。 .\" バイト数のデフォルト値は 1 であり、US .\" .Tn GOSIP .\" 準拠です。 .\" ifconfig コマンドで設定するISO アドレスが、 .\" .Tn NSAP .\" です。 .\" 例えば .\" .Tn US GOSIP .\" では、20 文字の 16 進数を .\" .Tn ISO NSAP .\" において指定し、 .\" インタフェースに割り当てる必要があります。 .\" .Tn AFI .\" 37 タイプアドレスにおいて、数字が 1 とは異なると便利であるのは、 .\" それなりの理由があります。 .It Cm range Ar netrange Appletalk において .Ar netrange に返答するようにインタフェースを設定します。 書式は .Ar startnet Ns - Ns Ar endnet です。 Appletalk は netmask ではなくこの方法を使用しますが、 .Fx の内部においては netmask の集合として実装しています。 .It Cm remove .Fl alias パラメータの別名です。 BSD/OS との互換性のために導入されました。 .It Cm phase これに続く引数は、 インタフェースに接続された Appletalk ネットワークの バージョン (フェーズ) を指定します。 1 または 2 が許されています。 .It Cm link Ns Xo .Op Cm 0 Ns - Ns Cm 2 .Xc 指定したインタフェースのリンクレベルでの特殊な処理を有効にします。 3 つのオプション の実際の効果はインタフェース依存です。しかしながら、これらのオプションは、 一般的には特殊なオペレーションモードを選択するのに用いられます。この例として、 SLIP 使用時のデータ圧縮や、Ethernet カードのコネクタ選択を行います。 各ドライバごとのマニュアルページに 詳細が記してあるので、詳しくはそちらの方を参照して下さい。 .It Fl link Ns Xo .Op Cm 0 Ns - Ns Cm 2 .Xc 指定したインタフェースのリンクレベルでの特殊な処理を無効にします。 .It Cm up 指定したネットワークインタフェースに .Dq up とマークします。 本オプションは、 .Dq ifconfig down を行なった後にインタフェースを有効にするのに用いられます。 最初にインタフェースにアドレスを設定した場合には、自動的に本指定はされたものと して扱います。もし、down とマークされていたインタフェースがリセットされた場合、 ハードウェアは再初期化されます。 .El .Pp .Nm は引数としてネットワークインタフェース以外に何のオプションも与えられない場合、 ネットワークインタフェースの現在の設定状態を表示します。 プロトコルファミリが指定されている場合、 .Nm はプロトコルファミリに特有の情報についてのみ表示します。 .Pp ドライバがメディア選択をサポートする場合、 サポートされているメディアのリストが出力に含まれます。 .Pp オプションとして、インタフェース名の代りに .Fl L フラグを指定すると、IPv6 用のアドレスの生存時間が、 時刻オフセット文字列として表示されます .Pp .Fl a フラグを指定できます。そうすると、 .Nm はシステム上の全インタフェースを表示します。 .Fl d フラグはこれを down したインタフェースに限定し、 .Fl u フラグはこれは up したインタフェースに限定します。 引数を指定しないと、 .Fl a が暗黙的に指定されます。 .Pp .Fl l フラグを使用するとシステム上の使用可能な全インタフェースのリストを、 その他の情報は付加せずに表示します。 このフラグは他のフラグとは排他的ですが、 .Fl d (down したインタフェースのみをリスト) と .Fl u (up したインタフェースのみをリスト) は例外です。 .Pp スーパユーザのみがネットワークインタフェースの設定を変更できます。 .Sh 注 メディア選択システムは比較的新しく、いくつかのドライバのみサポートしています (必要があるものも限られています)。 .Sh 診断 指定したインタフェースが存在しない、 要求したアドレスが未知のものである、 ユーザがネットワークインタフェースの設定を変更する権限を持っていない、 といったメッセージを表示します。 .Sh バグ IPv6 ノード間のいくつかの基本的な通信用に、 IPv6 リンクローカルのアドレスが必要です。 これらを .Nm で手動で削除すると、カーネルが非常に奇妙な動作を示すことがあります。 よって、このような手動削除は、強く非推奨です。 .Sh 関連項目 .Xr netstat 1 , .Xr netintro 4 , .Xr rc 8 , .Xr routed 8 .\" .Xr eon 5 .Sh 歴史 .Nm コマンドは .Bx 4.2 から登場しました。 diff --git a/ja_JP.eucJP/man/man8/ppp.8 b/ja_JP.eucJP/man/man8/ppp.8 index 45444e6771..f100bb4b64 100644 --- a/ja_JP.eucJP/man/man8/ppp.8 +++ b/ja_JP.eucJP/man/man8/ppp.8 @@ -1,5467 +1,5515 @@ -.\" %FreeBSD: src/usr.sbin/ppp/ppp.8,v 1.209.2.21 2001/03/28 23:58:32 brian Exp % +.\" %FreeBSD: src/usr.sbin/ppp/ppp.8,v 1.209.2.22 2001/05/17 19:11:47 brian Exp % .\" -.\" $FreeBSD$ +.\" $FreeBSD: doc/ja_JP.eucJP/man/man8/ppp.8,v 1.48 2001/05/14 01:09:54 horikawa Exp $ .\" .\" WORD: expect string 受信待ち文字列[chat.8,ppp.8] .Dd 20 September 1995 .nr XX \w'\fC00' .Dt PPP 8 .Os .Sh 名称 .Nm ppp .Nd PPP (Point to Point Protocol) (別名 user-ppp) .Sh 書式 .Nm .Op Fl Va mode .Op Fl nat .Op Fl quiet .Op Fl unit Ns Ar N .Op Fl alias .Op Ar system ... .Sh 解説 本プログラムは、ユーザプロセスとして動作する .Em PPP パッケージです。 .Em PPP は通常、( .Xr pppd 8 でそうなっているように) カーネルの一部として実装されますが、 そのため、デバッグや動作の変更が少々難しい場合があります。 それに対し、この実装ではトンネルデバイスドライバ (tun) を利用して、 ユーザプロセスで .Em PPP を実現しています。 .Pp .Fl nat フラグ (または後方互換性のための .Fl alias フラグ) は、 .Dq nat enable yes と等価であり、 .Nm のネットワークアドレス変換機能を有効にします。 これにより .Nm は、内部 LAN 上の全マシンに対する NAT、 すなわちマスカレーディングエンジンとして動作します。 詳細は .Xr libalias 3 を参照してください。 .Pp .Fl quiet フラグを指定すると、 .Nm は起動時に静かになり、 モードとインタフェースを標準出力へ表示しなくなります。 .Pp .Fl unit フラグは、 .Nm が .Pa /dev/tun Ns Ar N のみのオープンを試みるように指定します。 通常、 .Nm は .Ar N に対して値 0 から開始し、成功するまで .Ar N を値 1 ずつ増加させて、トンネルデバイスのオープンを試みます。 デバイスファイルが存在しないために、3 回連続して失敗すると、諦めます。 .Pp .Nm は次の .Va mode を理解します: .Bl -tag -width XXX -offset XXX .It Fl auto .Nm は tun インタフェースをオープンし、 これを設定した後バックグラウンドになります。 出力データが tun インタフェース上で検出されるまでリンクはアップせず、 出力データが tun インタフェース上で検出されると .Nm はリンクをアップしようとします。 .Nm がリンクをアップしようとしている間に受信したパケット (最初のものを含みます) は、デフォルトで 2 分間キューにとどまります。 後述の .Dq set choked コマンドを参照してください。 .Pp .Fl auto モードでは、 コマンドラインには少なくとも 1 つの .Dq system を指定する必要があり (後述)、 インタフェース設定時に使用する相手の IP アドレスを指定する .Dq set ifaddr を、システムプロファイルで実行する必要があります。 通常、 .Dq 10.0.0.1/0 のようなものが適切です。例としては、 .Pa /usr/share/examples/ppp/ppp.conf.sample の .Dq pmdemand システムを参照してください。 .It Fl background この場合、 .Nm は相手との接続をすぐに確立しようとします。 成功すると、 .Nm はバックグラウンドになり、親プロセスは終了コード 0 を返します。 失敗すると、 .Nm は非 0 の結果で終了します。 .It Fl foreground フォアグラウンドモードでは、 .Nm は相手との接続をすぐに確立しようとしますが、デーモンにはなりません。 リンクはバックグラウンドモードで作成されます。 .Nm の起動を別のプロセスから制御したい場合に有用です。 .It Fl direct これは入力接続を受け付けるために使用します。 .Nm は .Dq set device 行を無視し、リンクにデスクリプタ 0 を使用します。 .Pp コールバックの設定を行うと、ダイヤルバック時に .Nm は .Dq set device 情報を使用します。 .It Fl dedicated このオプションは、専用線で接続されたマシンのためにデザインされています。 .Nm はデバイスを常にオープンに保ち、設定チャットスクリプトは一切使用しません。 .It Fl ddial .Fl auto モードと等価ですが、なんらかの理由でリンクが落ちた場合に .Nm が再度リンクをアップすることが違います。 .It Fl interactive これは no-op であり、 前述のフラグがどれも指定されなかった場合の動作を行います。 .Nm はコマンドラインで指定されたセクションをロードし、対話プロンプトを提供します。 .El .Pp .Po Pa /etc/ppp/ppp.conf に指定される .Pc 設定エントリ、すなわち system を、コマンドラインで 1 つ以上指定可能です。 起動時に .Nm は .Pa /etc/ppp/ppp.conf から .Dq default システムを読み込み、その後コマンドラインで指定した各 system を読み込みます。 .Sh 主な特徴 .Bl -diag .It 対話的なユーザインタフェースを提供 コマンドモードで利用する場合、ユーザがコマンドを 入力することで、簡単にリモートコンピュータとの接続の確立、 接続状態の確認、 接続の切断を行うことができます。 オプションとして、セキュリティ確保のために すべての機能をパスワードで保護することができます。 .It 手動と自動でのダイヤルをサポート 対話モードでは、直接デバイスと通信できるように .Dq term コマンドが用意されています。 リモートホストと接続されて、 .Em PPP での通信が始まったら、 .Nm はそれを検出して自動的にパケットモードに移行します。 ひとたびリモートホストとの接続に必要なコマンドシーケンスがわかったら、 後々の接続を簡単にするため、必要なダイヤル手順やログイン手順を定義した チャットスクリプトを書くことができます。 .It オンデマンドでのダイヤルアップをサポート .Fl auto モード (自動モード) では .Nm はデーモンとして動作し、 .Em PPP リンクを通して送られるパケットを待ちうけます。 パケットを検出すると、デーモンが自動的にダイヤルを行って接続を確立します。 .Fl ddial モード (直接ダイヤルモード) でも ほぼ同様に、自動ダイヤルと接続の確立を行います。 しかしながらこのモードは、送るべきパケットが存在しない場合にも、 リンクが切れていることを検出するといつでもリモートへダイヤルするという点が auto モードと異なります。 このモードは、電話料金よりも常時接続されていることが重視される場合に有用です。 3 番目の .Fl dedicated モード (専用線モード) も利用可能です。 このモードは 2 つのマシン間の専用線を対象にしています。 専用線モードでは .Nm は自発的に動作を終了することはありません - 終了するには .Dq quit all コマンドを診断ソケットを介して送る必要があります。 .Dv SIGHUP は LCP の再ネゴシエーションを強要し、 .Dv SIGTERM は終了を強要します。 .It クライアントコールバックをサポート .Nm は標準 LCP コールバックプロトコルならびに Microsoft コールバック制御プロトコル (ftp://ftp.microsoft.com/developr/rfc/cbcp.txt) を使用できます。 .It NAT、すなわちパケットエイリアシングをサポート パケットエイリアシング (別名: IP マスカレード) により、 未登録でプライベートなネットワーク上のコンピュータからも インターネットにアクセスすることが可能です。 .Em PPP ホストはマスカレードゲートウェイとして動作します。 送信パケットの IP アドレスと TCP や UDP のポート番号は どちらもエイリアスされ、返信パケットではエイリアスが元に戻されます。 .It バックグラウンド PPP 接続をサポート バックグラウンドモードでは、接続を確立するのに成功した場合に .Nm はデーモンになります。 それ以外の場合はエラーで終了します。 これにより、 接続が成功裏に確立した場合のみコマンドを実行するようなスクリプト をセットアップすることが出来ます。 .It サーバとしての PPP 接続をサポート ダイレクトモードでは、 .Nm は標準入力/標準出力からの .Em PPP 接続を受け入れるサーバとして動作させることができます。 .It "PAP と CHAP (rfc 1994, 2433 および 2759) による認証をサポート" PAP もしくは CHAP を用いることにより、Unix スタイルの .Xr login 1 手続きをスキップし、 .Em PPP プロトコルを代りに認証に使用することが可能です。 相手が Microsoft CHAP 認証を要求し、かつ .Nm が DES をサポートするようにコンパイルされている場合、適当な MD4/DES 応答がなされます。 .It RADIUS (rfc 2138) 認証をサポート PAP と CHAP の拡張である .Em \&R Ns No emote .Em \&A Ns No ccess .Em \&D Ns No ial .Em \&I Ns No n .Em \&U Ns No ser .Em \&S Ns No ervice は、集中データベースまたは分散データベースに、 ユーザごとに異なる接続特性を含んだ認証情報を、格納できます。 コンパイル時に .Pa libradius が利用可能な場合、利用するように設定すると、 .Nm はこれを使用して .Em RADIUS 要求を作成します。 .It 代理 arp (Proxy Arp) をサポート .Nm が相手のために 1 個以上の代理 arp エントリを作成するように、設定可能です。 LAN 上の各マシンでの設定を行わずに、 相手側から LAN へのルーティングを可能とします。 .It パケットのフィルタリングをサポート ユーザは 4 種類のフィルタを定義できます。 .Em in は受信パケットに対するフィルタです。 .Em out は送信パケットに対するフィルタです。 .Em dial はダイヤルを行うきっかけとなるパケットを定義するフィルタで、 .Em alive は接続を保持するためのパケットを定義するフィルタです。 .It トンネルドライバは bpf (Berkeley Packet Filter) をサポート .Em PPP リンクを流れるパケットを調べるために、 .Xr tcpdump 1 を使うことができます。 .It PPP オーバ TCP および PPP オーバ UDP をサポート デバイス名が .Em host Ns No : Ns Em port Ns .Xo .Op / Ns tcp|udp , .Xc 形式で指定された場合、 .Nm は通常のシリアルデバイスを使うのではなく、 データ転送のための TCP または UDP の 接続を開きます。 UDP 接続は、 .Nm を強制的に同期モードにします。 .It PPP オーバ ISDN をサポート .Nm がオープンすべきリンクとして 生の B チャネル i4b デバイスを指定すると、 .Xr isdnd 8 と対話して ISDN 接続を確立できます。 .It PPP オーバイーサネットをサポート (rfc 2516) .Nm が .No PPPoE: Ns Ar iface Ns Xo .Op \&: Ns Ar provider Ns .Xc の書式のデバイス指定を与えられ、 .Xr netgraph 4 が利用可能な場合、 .Nm は .Ar iface ネットワークインタフェースを使用し、 .Ar provider に対して .Em PPP オーバイーサネットを話そうとします。 +.Pp +.Xr netgraph 4 +をサポートしないシステム上では、 +.Xr pppoe 8 +のような外部プログラムを使用可能です。 .It "IETF ドラフトの Predictor-1 (rfc 1978) と DEFLATE (rfc 1979) 圧縮をサポート .Nm は VJ 圧縮の他に Predictor-1 と DEFLATE 圧縮もサポートしています。 モデムは通常 (例えば v42.bis のような) 組み込みの圧縮機能を持っており、 その結果システムは .\"(訳注)「転送データレートよりも」をここにいれたいと考えています。 .\" 2.2.1R 対象(1997/04/02) Takeshi MUTOH より高いデータレートで通信できます。 これは一般には良いことですが、より高速のデータによってシリアル回線からの 割り込みが増加します。 システムはこの割り込みをモデムと通信して処理しなくてはならないため、 システムの負荷と遅延時間が増加することになります。 VJ 圧縮とは異なり、Predictor-1 と DEFLATE 圧縮はリンクを通る .Em すべての ネットワークトラフィックをあらかじめ圧縮しておくことで、オーバヘッドを 最小にします。 .It Microsoft の IPCP 拡張をサポート (rfc 1877) Microsoft の .Em PPP スタックを使用するクライアント (つまり Win95, WinNT) との間で ネームサーバのアドレスと NetBIOS ネームサーバのアドレスを ネゴシエーションできます。 .It マルチリンク PPP をサポート (rfc 1990) 接続先への複数の物理的な回線をオープンし、すべてのリンクの 帯域幅を合わせてより高いスループットを得ることができます。 .It MPPE (draft-ietf-pppext-mppe) のサポート MPPE は、Microsoft 社の Point to Point 暗号化機構です。 .Nm を設定して、Microsoft Windows の仮想プライベートネットワーク (VPN) に参加できるようになります。現在のところ、 .Nm は、CHAP 81 認証機構からしか暗号鍵を取得することができません。 MPPE を動作させるためには、DES つきで .Nm をコンパイルしなくてはなりません。 .El .Sh パーミッション .Nm はユーザ .Dv root 、グループ .Dv network 、パーミッション .Dv 04554 でインストールされます。 デフォルトでは .Nm は、起動したユーザ ID が 0 でない場合には実行しません。 これは .Dq allow users コマンドを .Pa /etc/ppp/ppp.conf に記載することにより変更することが可能です。 通常ユーザとして実行する場合には、 .Nm はユーザ ID 0 に変わり、システムの経路表の変更と、 システムロックファイルの作成と、 ppp の設定ファイルの読み込みを行います。 すべての外部コマンド ("shell" や "!bg" で実行されます) は、 .Nm を起動したユーザ ID で実行されます。 ユーザ ID 0 にて正確になにが行われているのかに興味がある場合には、 ログ機能の .Sq ID0 を参照してください。 .Sh 始める前に 最初に .Nm を実行する時には、いくつかの初期設定を整える必要があります。 .Bl -bullet .It カーネルにトンネルデバイスが含まれていることが必要です (GENERIC カーネルではデフォルトで 1 つ含まれます)。 tun デバイスが含まれていない場合や、 複数の tun インタフェースが必要な場合、 次の行をカーネル設定ファイルに追加して、 カーネルを再構築する必要があります: .Pp .Dl pseudo-device tun N .Pp ここで .Ar N は .Em PPP 接続を行いたい最大の数です。 .It .Pa /dev ディレクトリにトンネルデバイスのエントリ .Pa /dev/tunN があるかどうかを調べてください。 ここで .Sq N は、0 から始まる tun デバイスの番号です。 もし無いようならば、"sh ./MAKEDEV tunN" を実行すれば作ることができます。 これにより 0 から .Ar N までの tun デバイスが作成されます。 .It あなたのシステムの .Pa /etc/group ファイルに .Dq network グループがあり、そのグループが .Nm を使うと想定されるすべてのユーザ名を含んでいることを確かめてください。 詳細は .Xr group 5 マニュアルページを参照してください。また、これらのユーザは .Pa /etc/ppp/ppp.conf ファイルで .Dq allow users コマンドを使用してアクセス権が与えられなければなりません。 .It ログファイルを作成します。 .Nm は .Xr syslog 3 を使用して情報を記録します。通常のログファイル名は .Pa /var/log/ppp.log です。 このファイルに出力を行うためには、次の行を .Pa /etc/syslog.conf ファイルに記述してください: .Bd -literal -offset indent !ppp *.*/var/log/ppp.log .Ed .Pp .Nm の実行形式にリンクを作成することにより、複数の .Em PPP ログファイルを持つことが可能です: .Pp .Dl # cd /usr/sbin .Dl # ln ppp ppp0 .Pp として .Pa /etc/syslog.conf で .Bd -literal -offset indent !ppp0 *.*/var/log/ppp0.log .Ed .Pp とします。 .Pa /etc/syslog.conf を更新した後に、 .Xr syslogd 8 に .Dv HUP シグナルを送ることをお忘れなく。 .It 厳密には .Nm の操作とは関係ありませんが、リゾルバが正しく働くように設定した方が 良いでしょう。 これは .Pq Xr named 8 を用いて ローカルな DNS サーバを設定するか、もしくは .Pa /etc/resolv.conf ファイルに適切な .Sq nameserver 行を加えることで行われます。 詳細は .Xr resolv.conf 5 のマニュアルを参照してください。 .Pp 他の方法として、もし接続先がサポートしている場合には .Nm が接続先にネームサーバのアドレスを尋ねて、自動的に .Pa /etc/resolv.conf を更新することができます。詳細は後述の .Dq enable dns コマンドと .Dq resolv コマンドとを参照してください。 .El .Sh 手動ダイヤル 次の例では、あなたのマシン名が .Dv awfulhak であるとして説明します。 .Nm を引数無しで起動すると (前述の .Sx パーミッション 参照) 次のプロンプトが表示されます: .Bd -literal -offset indent ppp ON awfulhak> .Ed .Pp プロンプトの .Sq ON の部分は常に大文字であるべきです。ここが小文字の場合、 .Dq passwd コマンドを使用してパスワードを入力しなければならないことを意味します。 実行中の .Nm に接続し、 まだ正しいパスワードを入力していない場合にのみこのような状態になります。 .Pp .Bd -literal -offset indent ppp ON awfulhak> set device /dev/cuaa0 ppp ON awfulhak> set speed 38400 .Ed .Pp 通常ハードウェアフロー制御 (CTS/RTS) を使用します。 しかし、特定の場合 (特定の PPP 可能な端末サービスに直接接続している場合に起り得ます)、 .Nm が通信リンクにデータを書き込もうとしたときに、 永遠に来ない CTS (送信時にクリア) シグナルを待つことにより .Nm がハングします。 直通線で接続できない場合は、 .Dq set ctsrts off で CTS/RTS をオフにしてみてください。 これが必要な場合、後述の .Dq set accmap の記述も参照してください - .Dq set accmap 000a0000 も必要かもしれません。 .Pp 通常、パリティは .Dq none に設定します。これが .Nm のデフォルトです。 パリティはどちらかというと古風なエラーチェック機構であり、 今となっては使用しません。 最近のモデムは各自のエラーチェック機構を持っており、 ほとんどのリンク層プロトコル ( .Nm はこれです) はより信頼できるチェック機構を使用します。 パリティは相対的に大きなオーバヘッドを持ちますので (トラフィックが 12.5% 増加します)、 .Dv PPP がオープンされると常に無効化 .Po Dq none に設定 .Pc されます。 しかし、ISP (インターネットサービスプロバイダ) によっては、 特定のパリティ設定を接続時 ( .Dv PPP がオープンする前) に使用するものがあります。 特に、Compuserve はログイン時に偶数パリティに固執しています: .Bd -literal -offset indent ppp ON awfulhak> set parity even .Ed .Pp ここで、現在のデバイス設定がどのようになっているか見られます: .Bd -literal -offset indent ppp ON awfulhak> show physical Name: deflink State: closed Device: N/A Link Type: interactive Connect Count: 0 Queued Packets: 0 Phone Number: N/A Defaults: Device List: /dev/cuaa0 Characteristics: 38400bps, cs8, even parity, CTS/RTS on Connect time: 0 secs 0 octets in, 0 octets out Overall 0 bytes/sec ppp ON awfulhak> .Ed .Pp ここでは、直接デバイスと通信するために term コマンドを使用可能です: .Bd -literal -offset indent ppp ON awfulhak> term at OK atdt123456 CONNECT login: myispusername Password: myisppassword Protocol: ppp .Ed .Pp 相手が .Em PPP で話しはじめると、 .Nm はそれを自動的に検出してコマンドモードに戻ります。 .Bd -literal -offset indent ppp ON awfulhak> # リンクは確立していません Ppp ON awfulhak> # 接続完了、LCP 完了 PPp ON awfulhak> # 認証完了 PPP ON awfulhak> # IP アドレス合意完了 .Ed .\" your end で「あなた側」 .Pp このようにならない場合、接続先がこちらのネゴシエーション開始を 待っている可能性があります。 強制的に .Nm に接続先への PPP 設定パケットの送出を開始させるためには .Dq ~p コマンドを使い、端末モードを抜けてパケットモードに移行して下さい。 .Pp それでもログインプロンプトが得られない場合、 Unix 的なログイン/パスワード認証ではなく、PAP または CHAP の認証を、 相手は要求している可能性が非常に高いです。 正しく設定するためには、プロンプトに戻り、 認証用の名前とキーを設定し、再度接続します: .Bd -literal -offset indent ~. ppp ON awfulhak> set authname myispusername ppp ON awfulhak> set authkey myisppassword ppp ON awfulhak> term at OK atdt123456 CONNECT .Ed .Pp ここで再度、ネゴシエーションを開始するように ppp に指定できます: .Bd -literal -offset indent ~p ppp ON awfulhak> # リンクは確立していません Ppp ON awfulhak> # 接続完了、LCP 完了 PPp ON awfulhak> # 認証完了 PPP ON awfulhak> # IP アドレス合意完了 .Ed .Pp これで接続されました! プロンプトの .Sq PPP が大文字に変化して、接続されたことを知らせます。もし 3 つの P の内 いくつかだけが大文字になっている場合には、すべての文字が大文字もしくは 小文字になるまで待ってください。もし小文字に戻った場合には、それは .Nm が接続先とのにネゴシエーションに成功しなかったことをを意味します。 この時点での問題解決の第一歩としては、次のようにし、再挑戦します。 .Bd -literal -offset indent ppp ON awfulhak> set log local phase lcp ipcp .Ed .Pp 詳細は、下記の .Dq set log コマンドの説明を参照してください。 この時点でも失敗する場合、 ログを有効にして再挑戦することが非常に重要です。 プロンプトの変化に注意し、あなたを助けてくれる人に報告することもまた重要です。 .Pp リンクが確立したら、show コマンドを使用することで、 どのように事態が進行しているのかが分ります: .Bd -literal -offset indent PPP ON awfulhak> show physical * モデム関連の情報がここに表示されます * PPP ON awfulhak> show ccp * CCP (圧縮) 関連の情報がここに表示されます * PPP ON awfulhak> show lcp * LCP (回線制御) 関連の情報がここに表示されます * PPP ON awfulhak> show ipcp * IPCP (IP) 関連の情報がここに表示されます * PPP ON awfulhak> show link * (高レベル) リンク関係の情報がここに表示されます * PPP ON awfulhak> show bundle * (高レベル) 論理接続関係の情報がここに表示されます * .Ed .Pp この時点で、マシンは接続先に対するホスト単位の経路 (host route) を持っています。 これはリンクの相手のホストとのみ接続可能であるという意味です。 デフォルト経路のエントリ (他の経路エントリを持たずに、全パケットを .Em PPP リンクの相手に送る ように、あなたのマシンに指示します)を追加したければ、 次のコマンドを入力してください。 .Bd -literal -offset indent PPP ON awfulhak> add default HISADDR .Ed .Pp .Sq HISADDR という文字列は、相手側の IP アドレスを表します。 既存の経路のために失敗する場合には、 .Bd -literal -offset indent PPP ON awfulhak> add! default HISADDR .Ed .Pp を用いることで既存の経路を上書きできます。 このコマンドは、実際に接続を作成する前に実行可能です。 新しい IP アドレスを接続時にネゴシエートする場合、これに従って .Nm がデフォルト経路を更新します。 .Pp ここで、(ping, telnet, ftp のような) ネットワークアプリケーションを、 あなたのマシンの別のウィンドウまたは端末で使用可能です。 現在の端末を再利用したい場合、 .Nm をバックグラウンドモードにするために、 標準のシェルのサスペンドとバックグラウンドコマンド (通常 .Dq ^Z の後に .Dq bg ) を使用可能です。 .Pp 使用可能コマンドの詳細は .Sx PPP コマンドリスト の節を参照してください。 .Sh 自動ダイヤル 自動ダイヤルを行うためには、ダイヤルとログインのチャットスクリプトを 用意しなければなりません。定義の例は .Pa /usr/share/examples/ppp/ppp.conf.sample を見てください ( .Pa /etc/ppp/ppp.conf の書式は非常に簡単です)。 各行は単一のコメント、インクルード、ラベル、コマンドのいずれかを含みます。 .Bl -bullet .It .Pq Dq # 文字で始まる行は、コメントとして扱われます。 コメント行と認識した場合、先行する空白は無視されます。 .It インクルードは語 .Sq !include から始まる行です。 1 つの引数 - インクルードするファイル - を持つ必要があります。 古いバージョンの .Nm との互換性のために、 .Dq !include ~/.ppp.conf を使用したいかもしれません。 .It ラベルは行頭から始まり、最後にコロン .Pq Dq \&: が続かなければなりません。 .It コマンド行は、最初の桁に空白かタブを含む必要があります。 .El .Pp .Pa /etc/ppp/ppp.conf ファイルには少なくとも .Dq default セクションが存在する必要があります。 このセクションは常に実行されます。 このファイルには 1 つ以上のセクションが含まれます。 セクション名は用途に応じて付けます。例えば、 .Dq MyISP はあなたの ISP を表したり、 .Dq ppp-in は入力の .Nm 構成を表したります。 .Nm を立ち上げる際に、接続先のラベル名を指定可能です。 .Dq default ラベルに関係づけられたコマンドが実行されてから、 接続先ラベルに関連づけられたコマンドが実行されます。 .Nm を引数無しで起動した場合、 .Dq default だけは実行されます。load コマンドを使用して、 .Pa /etc/ppp/ppp.conf のセクションを手動でロード可能です: .Bd -literal -offset indent ppp ON awfulhak> load MyISP .Ed .Pp セクションロード後には、 .Nm はいかなる動作も行わないことに注意してください。 これは、コマンドラインでラベルを指定した結果でも、 .Dq load コマンドを使用した結果でも同様です。 設定ファイル中で、そのラベルに対して指定されたコマンドのみが、実行されます。 一方、 .Nm を .Fl background , .Fl ddial , .Fl dedicated のいずれかのスイッチ付きで起動したときには、 .Nm が接続を確立するように、リンクモードが指示します。 更なる詳細については、後述の .Dq set mode コマンドを参照してください。 .Pp ひとたび接続が確立したなら、プロンプトの .Sq ppp は .Sq PPP に変わります: .Bd -literal -offset indent # ppp MyISP \&... ppp ON awfulhak> dial Ppp ON awfulhak> PPp ON awfulhak> PPP ON awfulhak> .Ed .Pp Ppp プロンプトは .Nm が認証フェースに入ったことを示します。PPp プロンプトは .Nm がネットワークフェーズに入ったことを示します。PPP プロンプトは .Nm がネットワーク層プロトコルのネゴシエーションに成功し、 使用可能状態にあることを示します。 .Pp もし .Pa /etc/ppp/ppp.linkup が利用可能ならば、 .Em PPP 接続が確立された時に、その内容が実行されます。 接続が確立された後のバックグラウンドでのスクリプト実行については、 提供されている .Pa /usr/share/examples/ppp/ppp.conf.sample (使用可能な置換文字列については、後述の .Dq shell と .Dq bg を参照してください) の .Dq pmdemand の例を参照してください。 同様に、接続が閉じられると、 .Pa /etc/ppp/ppp.linkdown ファイルの内容が実行されます。 これらのファイルのフォーマットは .Pa /etc/ppp/ppp.conf と同じです。 .Pp 以前のバージョンの .Nm では、デフォルト経路のような経路は .Pa ppp.linkup ファイルで追加し直す必要がありました。 現在では .Nm は、 .Dv HISADDR もしくは .Dv MYADDR が変化したときに、自動的に .Dv HISADDR もしくは .Dv MYADDR 文字列を含むすべての経路を更新する .Sq スティッキー経路 をサポートします。 .Sh バックグラウンドダイヤル .Nm を使って非対話的に接続を確立したい場合 (例えば .Xr crontab 5 エントリや .Xr at 1 ジョブから使うような場合) には、 .Fl background オプションを使います。 .Fl background が指定された場合、 .Nm はすぐに接続を確立しようとします。 複数の電話番号が指定された場合には、各電話番号が 1 回づつ試されます。 これらに失敗すると、 .Nm は即座に終了し、0 でない終了コードを返します。 接続に成功すると .Nm はデーモンになり、呼び出し側に終了コード 0 を返します。 デーモンは、リモートシステムが接続を終了した場合、 もしくは .Dv TERM シグナルを受け取った場合に、自動的に終了します。 .Sh ダイヤルオンデマンド デマンドダイヤル機能は .Fl auto または .Fl ddial オプションにて有効にされます。この場合にも .Pa /etc/ppp/ppp.conf で定義された接続先のラベルを指定しなければなりません。 これには、リモート接続先の IP アドレスを指定するための .Dq set ifaddr コマンドも書かれていなければなりません ( .Pa /usr/share/examples/ppp/ppp.conf.sample を参照してください)。 .Bd -literal -offset indent # ppp -auto pmdemand .Ed .Pp .Fl auto または .Fl ddial が指定された時に .Nm はデーモンとして動作しますが、 .Pa /etc/ppp/ppp.conf 中で .Dq set server コマンドを使うことで、設定を確認したり変更したりすることができます。 .Po たとえば、 .Dq set server +3000 mypasswd とすると .Pc 次のように診断ポートを通じて接続することができます。 .Bd -literal -offset indent # pppctl 3000 (tun0 を仮定) Password: PPP ON awfulhak> show who tcp (127.0.0.1:1028) * .Ed .Pp .Dq show who コマンドは現在 .Nm 自身に接続しているユーザの一覧を表示します。診断ソケットが閉じられる、 もしくは異なるソケットに変更された場合、すべての接続は即座に終了します。 .Pp .Fl auto モードにて 送信パケットが検出された時、 .Nm は (チャットスクリプトに基づいて) ダイヤルを行い、 通信相手に接続しようとします。 .Fl ddial モードでは回線がダウンしていることが確認された場合にはいつでも ダイヤルが行われます。 接続に失敗したら、デフォルトの動作では 30 秒間待ってから、 別の送信パケットが検出された時に接続しようとします。 .Pp この動作は .Dq set redial コマンドで変更できます。 .Pp .No set redial Ar secs Ns Xo .Oo + Ns Ar inc Ns .Op - Ns Ar max Ns .Oc Ns Op . Ns Ar next .Xc .Pp .Bl -tag -width attempts -compact .It Ar secs は、再び接続しようとするまでの秒数です。 引数がリテラル文字列 .Sq Li random の場合には、待ち時間を 1 秒以上から 30 秒以下の間でランダムに選びます。 .It Ar inc は秒数であり、 新規にダイヤルするときに .Ar secs に加えられます。 このタイムアウト値が .Ar secs に戻るのは、接続が成功裏に確立した後だけです。 .Ar inc のデフォルト値は 0 です。 .It Ar max は、 .Nm が .Ar secs を増加させる最大回数です。 .Ar max のデフォルト値は 10 です。 .It Ar next は電話番号リストの中の次の番号をダイヤルする前に待つ秒数です。( .Dq set phone コマンドを参照してください)。これのデフォルトは 3 秒です。 繰り返しますが、引数がリテラル文字列 .Sq Li random の場合には、待ち時間を 1 秒以上 30 秒以下の間でランダムに選びます。 .It Ar attempts は、受け取った個々の送信パケットに対して、何回接続を試みるのかを示す 数字です。 .It Ar attempts に 0 を指定すると、接続されるまで試みを続けます。 .Bd -literal -offset indent set redial 10.3 4 .Ed .Pp は個々の送信パケットに対して 4 回接続を試み、 番号間の待ち時間が 3 秒で、すべての番号を試した後に 10 秒待つことを表します。 複数の電話番号が指定されている場合でも、トータルのダイヤル回数は 4 回のままです。 (それぞれの番号を 4 回ダイヤルするのではありません)。 .Pp 代りに、 .Pp .Bd -literal -offset indent set redial 10+10-5.3 20 .Ed .Pp は、 .Nm に接続を 20 回試みさせます。最初の試みの後は、 .Nm は 10 秒待ちます。 次の試みの後は 20 秒待ちということを、 6 番目の試みの後では 1 分待つところまで行います。 次の 14 回の停止は、同じ 1 分間となります。 .Nm が接続し、切断した後、再度接続に失敗した場合、 タイムアウト値は再度 10 秒から開始します。 .Pp リンクの両端が .Nm の .Fl auto ダイヤルモードを利用している場合は、 ダイヤル間隔を変更しておくのが良いでしょう。 もし、リンクの両端が同じタイムアウト時間に設定されていて、 リンクが切れて両方に送信待ちのパケットがあった場合、 両方が同時に相手を呼び出しあうことになってしまいます。 場所によっては、シリアルリンクに信頼性がなく、 切れるべきでない時にキャリアが失われるかもしれません。 セッションの途中で予期せずキャリアが失われた場合、 .Nm にリダイヤルさせることができます。 .Bd -literal -offset indent set reconnect timeout ntries .Ed .Pp このコマンドは、キャリアが失われた時に .Ar timeout 秒の間隔を置いて .Ar ntries 回まで接続を再確立するよう .Nm に指示します。例えば、 .Bd -literal -offset indent set reconnect 3 5 .Ed .Pp は、予期せぬキャリア喪失の際に .Ar 3 秒待ってから再接続を試みるように .Nm に指示します。これは .Nm があきらめる前に .Ar 5 回まで行われます。 ntries のデフォルト値は 0 (再接続しない) です。 このオプションを使用する際には注意が必要です。 もしローカル側のタイムアウトがリモート側よりもわずかに長いと、 リモート側がタイムアウトにより回線を切断した場合に、 再接続機能が (指定した回数まで) 起動されてしまいます。 注: この文脈においては、多くの LQR を喪失するとキャリア喪失を引き起こし、 ひいては再接続を引き起こします。 .Fl background フラグが指定された場合、接続が行えるまで すべての電話番号が最大 1 回ダイヤルされます。 .Dq set redial コマンドにて、リダイヤル期間の後に、 再接続回数を指定します。 リダイヤル値が指定した電話番号数より少ない場合、 指定した電話番号で使用されないものが出来ます。 プログラムを終了させるには、次のように入力してください。 .Bd -literal -offset indent PPP ON awfulhak> close ppp ON awfulhak> quit all .Ed .Pp .Dq quit コマンドは .Xr pppctl 8 もしくは .Xr telnet 1 による接続を終了しますが、 プログラム自身は終了させません。 .Nm も終了させたい場合には、 .Dq quit all を実行してください。 .Sh PPP 接続の受け入れ (方法その 1) .Em PPP 接続要求を受け入れるには、次の手順にしたがってください。 .Bl -enum .It モデムと、 (必要であれば) .Pa /etc/rc.serial が正しく設定されていることを確認します。 .Bl -bullet -compact .It フロー制御にはハードウェアハンドシェイク (CTS/RTS) を使います。 .It モデムはエコーバックを行わず (ATE0) 、コマンドの結果も報告しない (ATQ1) ように設定されていなければなりません。 .El .Pp .It モデムが接続されているポートで .Xr getty 8 が起動されるように .Pa /etc/ttys を編集します。 例えば、次のように設定すれば良いでしょう: .Pp -.Dl ttyd1 "/usr/libexec/getty std.38400" dialup on secure +.Dl ttyd1 Qo /usr/libexec/getty std.38400 Qc dialup on secure .Pp .Xr getty 8 を起動するために .Xr init 8 プロセスに .Dv HUP シグナルを送るのを 忘れないでください: .Pp .Dl # kill -HUP 1 +.Pp +通常、あなたのモデムの DTR 速度を getty と同じに設定する必要があります: +.Bd -literal -offset indent +# ppp +ppp ON awfulhak> set device /dev/cuaa1 +ppp ON awfulhak> set speed 38400 +ppp ON awfulhak> term +deflink: Entering terminal mode on /dev/cuaa1 +Type `~?' for help +at +OK +at +OK +atz +OK +at +OK +~. +ppp ON awfulhak> quit +.Ed .It .Pa /usr/local/bin/ppplogin ファイルを次のような内容で作成します: .Bd -literal -offset indent #!/bin/sh exec /usr/sbin/ppp -direct incoming .Ed .Pp ダイレクトモード .Pq Fl direct では、 .Nm は標準入力と標準出力を使って動作します。クライアント動作の .Nm と同様に、 .Xr pppctl 8 を使用することで、構成された診断ポートに接続可能です。 .Pp ここで .Pa /etc/ppp/ppp.conf 中の .Ar incoming セクションが設定されていなければなりません。 .Pp .Ar incoming セクションに適当な .Dq allow users コマンドがあることを確かめておいてください。 .It 受け入れるユーザのアカウントを用意してください。 .Bd -literal ppp:xxxx:66:66:PPP Login User:/home/ppp:/usr/local/bin/ppplogin .Ed .Pp 詳細は .Xr adduser 8 と .Xr vipw 8 のマニュアル項目を参照してください。 .Dq accept dns および .Dq set nbns コマンドを使うことで IPCP によるドメインネームサーバと NetBIOS ネームサーバの ネゴシエーションを有効にすることが可能です。 下記の記述を参照してください。 .El .Pp .Sh PPP 接続の受け入れ (方法その 2) この方法は、 .Xr login 1 ではなく .Nm で接続の認証を行うという点が異なります。 .Bl -enum .It .Pa /etc/gettytab の default セクションに .Dq pp ケーパビリティを指定することで ppp を自動的に認識するように 設定してください。 .Bd -literal default:\\ :pp=/usr/local/bin/ppplogin:\\ ..... .Ed .It 上記の方法その 1 の最初の 3 手順と同じように、 シリアルデバイスを設定し、 .Xr getty 8 を有効にして、 .Pa /usr/local/bin/ppplogin を作成してください。 .It .Pa /etc/ppp/ppp.conf の .Sq incoming ラベル (もしくは .Pa ppplogin が用いるラベルならなんでも構いません) 下に .Dq enable chap か .Dq enable pap .Pq もしくはその両方 を加えてください。 .It .Pa /etc/ppp/ppp.secret に、受け入れるユーザそれぞれについて、エントリを作成してください。 .Bd -literal Pfredxxxx Pgeorgeyyyy .Ed .El .Pp これで、 .Xr getty 8 は (HDLC フレームヘッダを認識することで) ppp 接続を検出すると、すぐに .Dq /usr/local/bin/ppplogin を実行します。 .Pp 上記のように PAP もしくは CHAP を有効にすることは .Em 必須 です。そうしなければ、あらゆる人があなたのマシンにパスワード .Em なしに ppp セッションを確立することを許可し、 あらゆる種類の潜在的な攻撃に対して門戸を開いていることになります。 .Sh 内向き接続の認証 通常、接続の受信側は相手が相手自身を認証することを要求します。 これは通常 .Xr login 1 にて行われますが、代りに PAP か CHAP を使用可能です。 2 つのうちで CHAP の方がより安全ですが、 クライアントによってはサポートしていないものがあります。 どちらを使いたいか決めたら、 .Sq enable chap または .Sq enable pap を .Pa ppp.conf の適切なセクションに追加してください。 .Pp その後、 .Pa /etc/ppp/ppp.secret ファイルの設定を行う必要があります。 このファイルは、クライアントになりうるマシンごとに 1 行を含みます。 各行は 5 つまでのフィールドからなります: .Pp .Ar name Ar key Oo .Ar hisaddr Op Ar label Op Ar callback-number .Oc .Pp .Ar name と .Ar key は期待されるクライアントのユーザ名とパスワードを指定します。 .Ar key が .Dq \&* で PAP が使用される場合、 .Nm は認証時にパスワードデータベース .Pq Xr passwd 5 を検索します。 .Pa ppp.secret の如何なる .Ar name Ns No / Ar key の組み合わせにおいても適切でない返答をクライアントが与える場合、 認証は失敗します。 .Pp 認証に成功したならば、 .Pq 指定時には .Ar hisaddr を IP 番号ネゴシエーション時に使用します。詳細は .Dq set ifaddr コマンドを参照してください。 .Pp 認証に成功し .Ar label が指定された場合、現在のシステムラベルは .Ar label にマッチするように修正されます。 このことはファイル .Pa ppp.linkup と .Pa ppp.linkdown の後続のパーズに影響があります。 .Pp 認証に成功し .Ar callback-number が指定され .Dq set callback が .Pa ppp.conf で指定された場合、クライアントは指定された番号でコールバックされます。 CBCP が使用される場合、 .Dq set cbcp コマンドに渡すのと同様の形式で、 .Ar callback-number にもまた番号のリストまたは .Dq \&* を含むことが可能です。 この値は、 .Nm で後続する CBCP フェーズで使用します。 .Sh PPP オーバ TCP と PPP オーバ UDP (別名: トンネリング) シリアルリンク上以外の .Nm の使用方法として、 device にホストとポートを指定することにより、 TCP 接続を使用することが可能です: .Pp .Dl set device ui-gate:6669/tcp .Pp シリアルデバイスをオープンする代りに、 .Nm は指定されたマシンの指定されたソケットへの TCP 接続をオープンします。 .Nm は telnet プロトコルを使用しないこと、 telnet サーバとネゴシエーションできないことに注意を払うべきです。 受信マシン (ui-gate) 上に、 この ppp 接続を受信するポートを設定する必要があります。まず .Pa /etc/services を更新して、サービスを定義します: .Pp .Dl ppp-in 6669/tcp # Incoming PPP connections over tcp .Pp そして .Pa /etc/inetd.conf を更新して、このポートへの受信接続をどのように扱うかを .Xr inetd 8 に指示します: .Pp .Dl ppp-in stream tcp nowait root /usr/sbin/ppp ppp -direct ppp-in .Pp .Pa /etc/inetd.conf を更新した後には、 .Xr inetd 8 に .Dv HUP シグナルを送るのをお忘れなく。 ここではラベル名 .Dq ppp-in を使用します。 ui-gate (受信側) の .Pa /etc/ppp/ppp.conf エントリは次の内容を含みます: .Bd -literal -offset indent ppp-in: set timeout 0 set ifaddr 10.0.4.1 10.0.4.2 .Ed .Pp また、 .Pa /etc/ppp/ppp.linkup 中のエントリには、次のようなものを含まなくてはなりません。 .Bd -literal -offset indent ppp-in: add 10.0.1.0/24 HISADDR .Ed .Pp .Nm がネゴシエーションを行い、インタフェースにアドレスを割り当てて からだけしか経路を追加しないように、 .Pa ppp.linkup ファイル中には .Dq add コマンドを置く必要があります。 .Pp セキュリティのために PAP もしくは CHAP の設定をしたいかもしれません。 PAP を有効にするには次の行を追加します: .Bd -literal -offset indent enable PAP .Ed .Pp また、次のエントリを .Pa /etc/ppp/ppp.secret に作成する必要があります: .Bd -literal -offset indent MyAuthName MyAuthPasswd .Ed .Pp .Ar MyAuthPasswd が .Dq * の場合には、パスワードは .Xr passwd 5 データベースから検索されます。 .Pp awfulhak (起動側) の .Pa /etc/ppp/ppp.conf エントリは次の内容を含む必要があります: .Bd -literal -offset indent ui-gate: set escape 0xff set device ui-gate:ppp-in/tcp set dial set timeout 30 set log Phase Chat Connect hdlc LCP IPCP CCP tun set ifaddr 10.0.4.2 10.0.4.1 .Ed .Pp そして、 .Pa /etc/ppp/ppp.linkup ファイル中に経路の設定もつけます。 .Bd -literal -offset indent ui-gate: add 10.0.2.0/24 HISADDR .Ed .Pp PAP を有効にするのなら、 .Pa /etc/ppp/ppp.conf プロファイル中に、次のような設定も必要です。 .Bd -literal -offset indent set authname MyAuthName set authkey MyAuthKey .Ed .Pp 我々は、 ui-gate に 10.0.4.1 のアドレスを割り当て、 awfulhak に 10.0.4.2 のアドレスを割り当てようとしています。 接続をオープンするためには、次の内容をタイプするだけで良いです。 .Pp .Dl awfulhak # ppp -background ui-gate .Pp 結果として、 awfulhak にはネットワーク 10.0.2.0/24 への新たな「経路」が、 ui-gate にはネットワーク 10.0.1.0/24 への新たな「経路」が、 TCP 接続経由でそれぞれ作成されます。 ネットワークは実質的にブリッジされます - 下位レベルの TCP 接続はパブリックなネットワーク (例えばインターネット) を またがっても良いです。 また 2 つのゲートウェイ間では ppp トラフィックは 概念的に TCP ストリーム中でカプセル化されます (パケットがパケットに対応するわけではありません)。 .Pp この機構の大きな欠点は、同時に 2 つの「配送保証」機構が存在することです - この 2 つとは、下位レベルの TCP ストリームと .Em PPP リンク上で使用されるプロトコルであり、おそらくまた TCP でしょう。 パケット喪失が起ると、両者はそれぞれの方法で喪失した パケットを再送しようと するでしょう。 .Pp このオーバヘッドを避けるために、 トランスポートとして TCP の代りに UDP を使用できます。 これは単にプロトコルを "tcp" から "udp" に変えるだけで可能です。 トランスポートとして UDP を使用するとき、 .Nm は同期モードで動作します。 入力データがパケットに再構成されないという、別の利点もあります。 .Pp このように、トンネルされた設定を通してデフォルトの経路を追加する ときには注意してください。 デフォルトの経路 .Pq Pa /etc/ppp/ppp.linkup に追加されます が、最終的にはリンクのトンネル経由の TCP 接続を ルーティングすることになるのは良く起こることであり、 結果的に接続を狭めてしまうことになります。 これを避けるため、トンネル経由の接続の助けになるように、静的経路を 追加することを忘れないでください。 .Bd -literal -offset indent ui-gate: set escape 0xff set device ui-gate:ppp-in/tcp add ui-gate x.x.x.x ..... .Ed .Pp ここで、 .Dq x.x.x.x は、 .Dq ui-gate への経路が通常使用する IP アドレスです。 .Pp インターネットのような、公共のネットワークを通して接続を ルーティングさせる場合、データを暗号化する方が望ましいです。 MPPE プロトコルの助けを借りれば、それが可能になります。 しかし、現在のところ、MPPE が圧縮層として実装している (この点に関しては Microsoft 社に感謝します) ように、 トラフィックを圧縮することもできるというわけではありません。 MPPE 暗号化を有効にするには、次のような行をサーバ側の .Pa /etc/ppp/ppp.conf に追加してください。 .Bd -literal -offset indent enable MSCHAPv2 disable deflate pred1 deny deflate pred1 .Ed .Pp その際、 .Pa /etc/ppp/ppp.secret に必要なエントリを置いたことを確認してください (MSCHAPv2 はチャレンジコードベースです。そのため、 .Xr passwd 5 は使用しません)。 .Pp MSCHAPv2 および MPPE はデフォルトで受け取ることができます。 ですので、クライアント側では、何も変更を加えなくても動くはずです (ですが、プロファイル中に .Dq set authname と .Dq set authkey があることは確認してください)。 .Pp .Sh ネットワークアドレス変換 (パケットエイリアシング) .Fl nat .Pq または Fl alias コマンドラインオプションにより、 ネットワークアドレス変換 (別名、パケットエイリアシング) が有効になります。 これにより、 .Nm ホストがローカルエリアネットワークの他のコンピュータに対して マスカレードゲートウェイとして動作するようになります。 送信される IP パケットは、まるで .Nm ホストから来たかのようにエイリアスされ、 受信パケットは、それがローカルエリアネットワークの正しいマシンに 送られるようにエイリアスが戻されます。 パケットエイリアシングにより、 未登録でプライベートなサブネット上のコンピュータを 外部から見えないようにしつつ、 インターネットへアクセス可能とします。 一般に、 .Nm が正しく動作していることの確認は、 まず最初にネットワークアドレス変換を禁止して行います。 次に .Fl nat オプションを有効にして、 .Nm ホストの上で (ウェブブラウザや .Xr telnet 1 , .Xr ftp 1 , .Xr ping 8 , .Xr traceroute 8 などの) ネットワークアプリケーションの動作を確認します。 最後に、LAN 上の別のコンピュータの上で同様なアプリケーションの 動作を確認することになります。 .Nm ホストではネットワークアプリケーションが正しく動作するのに、 LAN 上の別のコンピュータでは動かないのであれば、マスカレードソフトウェアは 正しく動いているけれども、ホストが IP パケットをフォワーディングしないか、 ひょっとするとパケットが送られて来ていないかのどちらかです。 .Pa /etc/rc.conf で IP フォワーディングが有効にされていることと、 他のコンピュータで .Nm ホストがその LAN のゲートウェイとして 指定されていることを確認してください。 .Sh パケットのフィルタリング この実装では、パケットのフィルタリングがサポートされています。 .Em in フィルタ、 .Em out フィルタ、 .Em dial フィルタ、そして .Em alive フィルタの 4 種類のフィルタがあります。 ここでは基本的なことについて書くことにします。 .Bl -bullet .It フィルタ定義は次のような構文になっています。 .Pp set filter .Ar name .Ar rule-no .Ar action .Op !\& .Oo .Op host .Ar src_addr Ns Op / Ns Ar width .Op Ar dst_addr Ns Op / Ns Ar width .Oc .Ar [ proto Op src Ar cmp port .Op dst Ar cmp port .Op estab .Op syn .Op finrst .Op timeout Ar secs ] .Bl -enum .It .Ar name は .Sq in , .Sq out , .Sq dial , .Sq alive のいずれかです。 .It .Ar rule-no は .Sq 0 から .Sq 39 までの数値で、ルール番号を指定します。 ルールは .Ar rule-no の番号順に指定されます。 ただしルール .Sq 0 が指定されている場合のみです。 .It .Ar action は .Sq permit , .Sq deny を指定可能であり、 あるパケットがこれらのルールに一致した場合、 結びつけられた action が直ちに実行されます。 また .Ar action には .Sq clear も指定可能です。 この場合、このルールに結びつけられた action をクリアします。 また .Ar action には、現在のルール番号よりも大きなルール番号を指定可能です。 この場合には、あるパケットが現在のルールに一致した場合、 (次のルール番号の代りに) この新しいルールに対して次にパケットが一致するかを確認します。 .Pp .Ar action にはエクスクラメーションマーク .Pq Dq !\& を続けることが可能です。この場合、 .Nm は後続する一致の意味を反転させます。 .It .Op Ar src_addr Ns Op / Ns Ar width と .Op Ar dst_addr Ns Op / Ns Ar width は始点と終点の IP アドレスです。 .Op / Ns Ar width が指定された場合には、それによって適切なネットマスクのビット値を与え、 アドレスの範囲を指定することができます。 .Pp .Ar src_addr と .Ar dst_addr には、 .Dv MYADDR と .Dv HISADDR という値を使用可能です (これらの値の解説は .Dq bg を参照してください)。 これらの値を使用した場合、これらの値が変化するたびにフィルタが更新されます。 これは、後述の .Dq add コマンドの動作と似ています。 .It .Ar proto は .Sq icmp , .Sq igmp , +.Sq ipip , .Sq ospf , .Sq udp , .Sq tcp のうちのいずれか 1 つです。 .It .Ar cmp は .Sq \< , .Sq \&eq , .Sq \> のうちいずれか 1 つです。それぞれ、より小さい、等しい、 より大きいを意味します。 .Ar port はポート番号で指定するか、 .Pa /etc/services のサービス名で指定することができます。 .It .Sq estab , .Sq syn , .Sq finrst フラグは .Ar proto が .Sq tcp に設定されているときにのみ許可され、それぞれ TH_ACK、TH_SYN、および TH_FIN もしくは TH_RST という TCP フラグを表わします。 .It タイムアウト値は、現在のアイドルタイムアウトを最低でも .Ar secs 秒へと修正します。 タイムアウトを、alive フィルタと in/out フィルタの両方で指定すると、 in/out での値が使用されます。 タイムアウトを指定しないと、デフォルトタイムアウト ( .Ic set timeout を使用して設定するもので、デフォルトでは 180 秒になります) が使用されます。 .El .Pp .It 各フィルタはルール 0 から始まり、40 個までのルールをもつことができます。 規則のルールは、ルール 0 が定義されていなければ、有効にはなりません。 すなわち、デフォルトではすべてが通されます。 .It 定義されたルール集合中にマッチするものが無い場合、 パケットは破棄 (ブロック) されます。 フィルタにルールが存在しない場合、パケットは通過を許されます。 .It .Em PROTO_IP .Em PPP フレームヘッダを持つ UDP フレームに対しては、 ペイロードに基づいたフィルタリングを行なうことが可能です。 詳細については、後述の .Ar filter-decapsulation を参照してください。 .It すべての規則を消去するには、 .Dq set filter Ar name No -1 を使ってください。 .El .Pp .Pa /usr/share/examples/ppp/ppp.conf.sample . を参照してください。 .Sh アイドルタイマの設定 アイドルタイマを調べたり/設定するためには、それぞれ .Dq show bundle と .Dq set timeout コマンドを使ってください: .Bd -literal -offset indent ppp ON awfulhak> set timeout 600 .Ed .Pp タイムアウト時間は秒数で指定します。デフォルト値は timeout が 180 秒 .Pp 3 分 です。 アイドルタイマ機能を使わないようにするためには、 次のコマンドを利用してください。 .Bd -literal -offset indent ppp ON awfulhak> set timeout 0 .Ed .Pp .Fl ddial と .Fl dedicated モードではアイドルタイムアウトは無視されます。 .Fl auto モードでは、アイドルタイムアウトが発生すると .Nm プログラムは実行したままで .Em PPP セッションを終了します。別の引金となるパケットがきた時に リンクを再び確立しようとします。 .Sh Predictor-1 および DEFLATE 圧縮 .Nm は Predictor type 1 圧縮および deflate 圧縮をサポートしています。 デフォルトでは、 .Nm は、接続相手が同意 .Pq あるいは要求 した場合に、 この機能を使おうと (もしくは受け入れようと) します。 .Nm は deflate プロトコルを優先します。 これらの機能を使用したくない時には .Dq disable と .Dq deny のコマンドを参照してください。 .Pp .Dq disable deflate か .Dq deny deflate の一方を使用することにより、 方向ごとに異ったアルゴリズムを使用することができます。 .Pq 接続相手が両方のプロトコルをサポートしていると仮定しています。 .Pp デフォルトでは、DEFLATE についてネゴシエートするときには .Nm はウィンドウサイズとして 15 を使います。この動作を変更したい場合には .Dq set deflate コマンドを参照してください。 .Pp デフォルトでは無効にされ受け付けませんが、DEFLATE24 と呼ばれる特殊な アルゴリズムを使用することもできます。これは CCP ID 24 を ネゴシエーションに使う点を除いては DEFLATE と完全に同じものです。 これを使用することで .Nm は .Nm pppd バージョン 2.3.* と DEFLATE ネゴシエーションを成功させることができます。 .Sh IP アドレスの制御 .Nm は IP アドレスのネゴシエーションのために IPCP を使います。接続の両側は、自分が 使おうとするアドレスを提示し、要求された IP アドレスが受け入れ可能な ものであれば、相手に ACK (肯定応答) を返します。 受け入れることができなければ、別の IP アドレスの使用を促すために .Nm は相手に NAK (否定応答) を返します。 接続の両側が受け取った要求に同意し (ACK を送っ) た時、 IPCP はオープン状態にセットされ、ネットワーク層での接続が確立されます。 IPCP の動作を制御するために、この実装はローカルとリモートの IP アドレスを定義するための .Dq set ifaddr コマンドを持っています。 .Bd -ragged -offset indent .No set ifaddr Oo Ar src_addr Ns .Op / Ns Ar \&nn .Oo Ar dst_addr Ns Op / Ns Ar \&nn .Oo Ar netmask .Op Ar trigger_addr .Oc .Oc .Oc .Ed .Pp ここで、 .Sq src_addr はローカル側で使おうと思っている IP アドレスで、 .Sq dst_addr はリモート側が使用すべき IP アドレスです。 .Sq netmask は使用すべきネットマスクです。 .Sq src_addr のデフォルトは現在の .Xr hostname 1 のもの、 .Sq dst_addr のデフォルトは 0.0.0.0 であり、 .Sq netmask のデフォルトは .Sq src_addr に適したマスク値です。 .Sq netmask はデフォルトより小さくすることのみ可能です。 ほとんどのカーネルが POINTOPOINT インタフェースのネットマスクを 無視するので、便利な値は 255.255.255.255 でしょう。 .Pp 誤った .Em PPP の実装には、接続ネゴシエーションのために、 .Sq src_addr ではなく特別な IP アドレスを使用しなければならないものがあります。 この場合、 .Sq trigger_addr で指定した IP アドレスが使用されます。 相手がこの提案された番号に同意しない限り、経路表には影響しません。 .Bd -literal -offset indent set ifaddr 192.244.177.38 192.244.177.2 255.255.255.255 0.0.0.0 .Ed .Pp 上の例の意味は次の通りです: .Pp .Bl -bullet -compact .It 自分の IP アドレスとしてまず 0.0.0.0 を提案しますが、アドレス 192.244.177.38 のみは受け付けます。 .It 相手側のアドレスとして 192.244.177.2 を使うように要求し, 192.244.177.2 以外のどんなアドレスを使うことも許可しません。 相手側が別の IP アドレスを要求してきた時は、いつでも 192.244.177.2 を提案します。 .It 経路表のネットマスク値は 0xffffffff に設定されます。 .El .Pp これは、両側が既に決まった IP アドレスを持っている場合には うまくいきますが、多くの場合、一方がすべての IP アドレスを制御する サーバとして動作しており、もう一方はその方針に従います。 より柔軟な動作をさせるために、 .Dq set ifaddr コマンドで IP アドレス指定をもっと緩やかにすることが可能です: .Pp .Dl set ifaddr 192.244.177.38/24 192.244.177.2/20 .Pp スラッシュ .Pq Dq / に続く数字は、この IP アドレスで意味のあるビットの数を 表現しています。上の例は次のことを示しています。 .Pp .Bl -bullet -compact .It 可能なら自分のアドレスとして 192.244.177.38 を使おうとしますが、 192.244.177.0 から 192.244.177.255 の間の任意の IP アドレスも受け入れます。 .It 相手のアドレスとして 192.244.177.2 を使うことを希望しますが、 192.244.176.0 から 192.244.191.255 の間の任意の IP アドレスも許可します。 .It すでにお気づきと思いますが、 192.244.177.2 は 192.244.177.2/32 と書くことと 等価です。 .It 例外として、0 は 0.0.0.0/0 と等価であり、希望する IP アドレスは 特に無く、リモート接続先の選択に従うことを意味します。 0 を使用した場合は、接続が確立するまで、経路表のエントリは まったく設定されません。 .It 192.244.177.2/0 は、どんな IP アドレスでも受け入れる/許可することを 意味しますが、最初に 192.244.177.2 を使うように提案します。 .El .Pp .Sh インターネットサービスプロバイダと接続する プロバイダに接続する際には、次のステップを踏む必要があるでしょう: .Bl -enum .It .Dq set phone コマンドを使って、ダイヤルスクリプトにプロバイダの電話番号を記述します。 ダイヤルやリダイヤルに使用する電話番号は、 パイプ .Pq Dq \&| またはコロン .Pq Dq \&: で区切って複数指定することができます。例えば、次のようになります: .Bd -ragged -offset indent .No set phone Ar telno Ns Xo .Oo \&| Ns Ar backupnumber .Oc Ns ... Ns Oo : Ns Ar nextnumber .Oc Ns ... .Xc .Ed .Pp 最初のパイプで区切られたリストの番号は、 直前の番号でダイヤルもしくはログインスクリプトが失敗した場合のみ使用されます。 コロンで区切られた番号は、直前の番号の使用によりなにが起ったのかにかかわらず、 この順番で使用されます。例えば: .Bd -literal -offset indent set phone "1234567|2345678:3456789|4567890" .Ed .Pp この場合、まず 1234567 にダイヤルしてみます。 ダイヤルもしくはログインスクリプトに失敗したら、 次は 2345678 を使用します。 しかしこれはダイヤルもしくはログインスクリプトに失敗したとき *のみ* です。 このダイヤルの後、3456789 が使用されます。 4567890 は 345689 でダイヤルもしくはログインスクリプトに失敗したときのみ 使用されます。 2345678 のログインスクリプトが失敗したとしても、次の番号は 3456789 です。 必要な数だけ、パイプとコロンを使用可能です (しかし、通常はパイプのみかコロンのみであり両方の使用はないでしょう)。 次の番号へのリダイヤルまでのタイムアウトは、すべての番号にて使用されます。 リストが終了すると、 通常のリダイヤル期間だけ待ち、 最初から再開します。 .Dq set dial コマンドの \\\\T 文字列は選択された番号で置きかえられます。 (以降を参照してください)。 .It リダイヤルに関する設定は、 .Dq set redial で行います。 例えば回線の調子が悪かったり、 (最近では それほど多くないでしょうが) プロバイダがいつも話中だったりすると、 次のように設定したくなるかもしれません: .Bd -literal -offset indent set redial 10 4 .Ed .Pp これは最初の番号にリダイヤルを行う前に 10 秒待って、 4 回までダイヤルしてみるという意味になります。 .It .Dq set dial と .Dq set login コマンドを使ってログイン手続きを記述します。 .Dq set dial コマンドはモデムと通信してプロバイダへのリンクを確立するのに使われます。 例えば、次のようになります: .Bd -literal -offset indent set dial "ABORT BUSY ABORT NO\\\\sCARRIER TIMEOUT 4 \\"\\" \e ATZ OK-ATZ-OK ATDT\\\\T TIMEOUT 60 CONNECT" .Ed .Pp このモデム「チャット」文字列の意味は次の通りです。 .Bl -bullet .It \&"BUSY" または "NO CARRIER" を受信した場合には処理を中止します。 .It タイムアウトを 4 秒にセットします。 .It 文字列の受信待ちは行いません。 .It ATZ を送信します。 .It OK の受信待ちを行います。もし 4 秒以内に受信できなければ、 もう 1 度 ATZ を送信し、OK の受信待ちを行います。 .It ATDTxxxxxxx を送信します。xxxxxxx は 上記の電話番号リストの中の、次にダイヤルする番号です。 .It タイムアウトを 60 にセットします。 .It 文字列 CONNECT の受信待ちを行います。 .El .Pp 一旦接続が確立されると、ログインスクリプトが実行されます。 このスクリプトはダイヤルスクリプトと同じスタイルで書かれますが、 パスワードが記録されないように注意してください: .Bd -literal -offset indent set authkey MySecret set login "TIMEOUT 15 login:-\\\\r-login: awfulhak \e word: \\\\P ocol: PPP HELLO" .Ed .Pp このログイン「チャット」文字列の意味は次の通りです。 .Bl -bullet .It タイムアウトを 15 秒にセットします。 .It \&"login:" の受信待ちを行います。もし受信できなければ 復改文字を送信して、再び "login:" の受信待ちを行います。 .It \&"awfulhak" を送信します。 .It \&"word:" ("Password:" プロンプトの末尾) の受信待ちを行います。 .It .Ar authkey に現在設定されている値を送信します。 .It \&"ocol:" ("Protocol:" プロンプトの末尾) の受信待ちを行います。 .It \&"PPP" を送信します。 .It \&"HELLO" の受信待ちを行います。 .El .Pp .Dq set authkey コマンドのログは特別な方法でとられます。 .Ar command または .Ar chat のログが有効な時は、実際のパスワードは記録されません。 代りに .Sq ******** が記録されます。 .Pp ログインスクリプトはプロバイダによって大きく違うものになるでしょう。 始めてそれを設定するときには .Em チャットログを有効化 することで、あなたのスクリプトが予定通りに動いているかを 調べることができます。 .It シリアル回線と通信速度を指定するためには .Dq set device と .Dq set speed を使います。例えば次のようになります。 .Bd -literal -offset indent set device /dev/cuaa0 set speed 115200 .Ed .Pp .Fx では cuaa0 が 1 つめのシリアルポートになります。 .Ox で .Nm を実行している場合には cua00 が 1 つめです。 あなたのモデムが 28800 かそれ以上のビットレートで通信することが できるなら、シリアルポートの速度には 115200 を指定しておくべきでしょう。 一般に、シリアルポートの速度はモデムの速度の約 4 倍にしておきます。 .It .Dq set ifaddr コマンドで IP アドレスを定義します。 .Bl -bullet .It プロバイダがどの IP アドレスを使っているのか知っている場合には、 それをリモートアドレス (dst_addr) として使ってください。 知らない場合には、10.0.0.2/0 か何かを使ってください (以降を参照してください)。 .It 特定の IP アドレスをプロバイダから割り当てられている場合は、 それをローカルアドレス (src_addr) として使ってください。 .It プロバイダが IP アドレスを動的に割り当てる場合は、適当に控えめで 緩やかに記述した IP アドレスをローカルアドレスに選んでください。 10.0.0.1/0 が適切でしょう。 / に続く数値は、このアドレスのうち何ビットを重視しているかを示します。 もしもクラス C のネットワーク 1.2.3.0 上のアドレスを使うことを 主張したいのなら、1.2.3.1/24 と指定することができます。 .It プロバイダがあなたが提示した最初の IP 番号を受け付ける場合、 第 3, 4 の引数に .Dq 0.0.0.0 を指定してください。 これによりプロバイダが番号を割り当てます。 (3 つめの引数は、 .Sq src_addr に対してデフォルトのマスクよりも制約が緩いため、無視されます。) .El .Pp 自分の IP アドレスもプロバイダの IP アドレスも 知らない場合には、次の例のようにするとよいでしょう。 .Bd -literal -offset indent set ifaddr 10.0.0.1/0 10.0.0.2/0 0.0.0.0 0.0.0.0 .Ed .Pp .It ほとんどの場合、プロバイダはデフォルトルータでもあるでしょう。 この場合、次の行を .Pa /etc/ppp/ppp.conf に追加します。 .Bd -literal -offset indent add default HISADDR .Ed .Pp これは、 .Nm 接続先のアドレスが何であっても .Pq この例では 10.0.0.2 デフォルト経路として追加するように指示します。 この経路は .Sq スティッキー です。これは .Dv HISADDR の値が変わると、経路もそれに従って自動的に更新されるという意味です。 .Pp 以前のバージョンの .Nm では .Pa /etc/ppp/ppp.linkup ファイルにこれと似たエントリが必要でした。 .Sq スティッキー経路 の出現により、これはもはや必要ではなくなりました。 .It プロバイダが PAP/CHAP による認証を要求している場合は、 .Pa /etc/ppp/ppp.conf ファイルに次の行を追加してください: .Bd -literal -offset indent set authname MyName set authkey MyPassword .Ed .Pp デフォルトではどちらも受け付けられますので、ISP が何を要求しても大丈夫です。 .Pp PAP もしくは CHAP を使用する場合、ログインスクリプトはほとんどの場合、 必要とされないことを記述しておくべきでしょう。 .It 次のような行を加え、ISP にネームサーバアドレスを確認してください。 .Bd -literal -offset indent enable dns .Ed .Pp ローカル DNS を走らせている場合には、 .Dq resolv readonly を使わず、かつ、 .Dq resolv restore を .Pa /etc/ppp/ppp.linkdown に含めていないならば、 これを .Em やらない でください。 .Nm は単純に .Pa /etc/resolv.conf に nameserver 行を入れることで、ローカル DNS の使用を 出し抜いてしまうからです。 .El .Pp 現実の例を見たい場合には、 .Pa /usr/share/examples/ppp/ppp.conf.sample と .Pa /usr/share/examples/ppp/ppp.linkup.sample を参照してください。 ラベル pmdemand は、ほとんどのプロバイダで使用できるでしょう。 .Sh ログ機能 .Nm は次のログ情報を、 .Xr syslog 3 経由で、もしくはスクリーンに出力することができます: .Pp .Bl -tag -width XXXXXXXXX -offset XXX -compact .It Li All ロギング用ファシリティをすべて有効にします。 この場合、ログがたくさんできます。 `all' の最も一般的な使い方は、共通部分として使うことです。 この場合、すべてのファシリティを有効にしたあとで一部の ファシリティを削ったりします (`debug' や `timer' が通常は無効にするのに最適な ファシリティです)。 .It Li Async 非同期レベルパケットの 16 進ダンプ。 .It Li CBCP CBCP (CallBack Control Protocol) ログの生成。 .It Li CCP CCP パケットトレースの生成。 .It Li Chat .Sq dial , .Sq login , .Sq logout , .Sq hangup のチャットスクリプトのトレースログの生成。 .It Li Command コマンド実行のログ。 .It Li Connect 文字列 "CONNECT" を含むチャット行のログ。 .It Li Debug デバッグ情報のログ。 .It Li DNS DNS QUERY パケットのログ。 .It Li Filter ダイヤルフィルタに許可され、他のフィルタに拒否されたパケットのログ。 .It Li HDLC HDLC パケットの 16 進ダンプ。 .It Li ID0 ユーザ ID 0 で実行された全関数呼び出しを詳細に記録。 .It Li IPCP IPCP パケットトレースの生成。 .It Li LCP LCP パケットトレースの生成。 .It Li LQM LQR レポートの生成。 .It Li Phase フェーズ遷移ログの出力。 .It Li Physical 物理レベルパケットの 16 進ダンプ。 .It Li Sync 同期レベルパケットの 16 進ダンプ。 .It Li TCP/IP 全 TCP/IP パケットのダンプ。 .It Li Timer タイマ操作のログ。 .It Li TUN ログの各行に tun デバイスを含めます .It Li Warning 端末デバイスへの出力。端末が存在しない場合は、 .Dv LOG_WARNING を使用してログファイルに送ります。 .It Li Error 端末デバイスとログファイルへの出力で、 .Dv LOG_ERROR を使用します。 .It Li Alert ログファイルへの出力で、 .Dv LOG_ALERT を使用します。 .El .Pp .Dq set log コマンドで、ログの出力レベルを設定することができます。 また、複数のレベルを単一コマンドラインにて指定することも可能です。 デフォルトは、 .Dq set log Phase です。 .Pp スクリーンに直接ログを表示することも可能です。 文法は同じで、語 .Dq local が .Dq set log の直後に付くことだけが違います。 デフォルトは .Dq set log local (つまり、マスクされない警告、エラーと注意のみ出力) です。 .Pp .Dq set log Op local への最初の引数が .Sq + か .Sq - の文字で始まる場合、現在のログレベルを消去せずに修正します。例えば: .Bd -literal -offset indent PPP ON awfulhak> set log phase PPP ON awfulhak> show log Log: Phase Warning Error Alert Local: Warning Error Alert PPP ON awfulhak> set log +tcp/ip -warning PPP ON awfulhak> set log local +command PPP ON awfulhak> show log Log: Phase TCP/IP Warning Error Alert Local: Command Warning Error Alert .Ed .Pp レベル Warning, Error, Alert のメッセージログは .Dq set log Op local では制御できません。 .Pp .Ar Warning レベルは特別で、ローカルに表示可能な場合には記録されません。 .Sh シグナルハンドリング .Nm は次のシグナルを扱います: .Bl -tag -width "USR2" .It INT このシグナルを受信すると、現在の接続がもしあればそれを終了します。 .Fl auto もしくは .Fl ddial のモードではない場合、 .Nm は終了します。 .It HUP, TERM, QUIT .Nm を終了させます。 +.It USR1 +.Nm +に既存のサーバソケットを再度オープンさせ、すべての既存の診断ポートへの接続を +取り下げます。 +以前にオープン出来なかったソケットは、再度試されます。 .It USR2 .Nm に全サーバソケットを閉じさせ、すべての既存の診断ポートへの接続を 取り下げます。 +再度オープンするためには、 +.Dv SIGUSR1 +が使用できます。 .El .Pp .Sh マルチリンク PPP .Em PPP 相手に接続するのに複数の物理的なリンクを利用したいなら、 接続相手も .Em マルチリンク PPP プロトコルを理解する必要があります。 仕様の詳細は RFC 1990 を参照してください。 .Pp 接続先は、 .Dq 終点の選択 とその .Dq 認証 ID の組み合わせによって識別されます。 これらの一方、もしくは両方を指定することができます。 最低でも片方は指定しておくことが推奨されます。 そうでないと、すべてのリンクが実際に同一のプログラムに接続されていることを 確認する方法がなくなり、 混乱してロックアップを引き起こすことがあります。 ローカルには、これらの識別変数は .Dq set enddisc と .Dq set authname コマンドを用いることで指定されます。先立って接続相手と .Sq authname .Pq と Sq authkey について合意しておく必要があります。 .Pp マルチリンクの能力は .Dq set mrru コマンド (set maximum reconstructed receive unit) を用いることで 有効になります。一度マルチリンクが有効になれば、 .Nm は接続相手とマルチリンク接続のネゴシエーションを行います。 .Pp デフォルトでは .Po .Sq deflink と呼ばれる .Pc ただ 1 つの .Sq リンク のみが有効です。さらにリンクを作成するには .Dq clone コマンドが使われます。このコマンドは既存のリンクを複製します。 それは次の点を除いてすべての性質が同じものです: .Bl -enum .It 新しいリンクは .Dq clone コマンドラインで指定された独自の名前を持ちます。 .It 新しいリンクは .Sq interactive リンクです。そのモードは次の .Dq set mode コマンドで変更することができます。 .It 新しいリンクは .Sq closed の状態にあります。 .El .Pp すべての有効なリンクのまとめは、 .Dq show links コマンドを用いて見ることができます。 .Pp 一度リンクが作成されると、コマンドの使用方法が変わります。 すべてのリンク固有のコマンドの前には、 .Dq link Ar name プレフィックスをつけて、 コマンドを適用するリンクを指定する必要があります。 .Nm は十分賢いので、 利用可能なリンクが 1 つだけの場合には、 .Dq link Ar name プレフィックスは不要です。 .Pp コマンドの中には依然としてリンクの指定なしに使用できるものがあり、それは .Sq バンドル レベルの操作を行います。たとえば、2 つ以上のリンクが存在するとき .Dq show ccp はマルチリンクレベルの CPP 設定と統計を表示し .Dq link deflink show ccp は .Dq deflink のリンクレベルの同じ情報を表示します。 .Pp これらの情報を用いて、次の設定を用いることができます: .Pp .Bd -literal -offset indent mp: set timeout 0 set log phase chat set device /dev/cuaa0 /dev/cuaa1 /dev/cuaa2 set phone "123456789" set dial "ABORT BUSY ABORT NO\\sCARRIER TIMEOUT 5 \\"\\" ATZ \e OK-AT-OK \\\\dATDT\\\\T TIMEOUT 45 CONNECT" set login - set ifaddr 10.0.0.1/0 10.0.0.2/0 + set ifaddr 10.0.0.1/0 10.0.0.2/0 0.0.0.0 0.0.0.0 set authname ppp set authkey ppppassword set mrru 1500 - clone 1,2,3 - link deflink remove + clone 1,2,3 # 3 個の新規リンクを作成 - デフォルトを複製 + link deflink remove # デフォルトリンクを削除 (``deflink'' という名前) .Ed .Pp すべての複製が設定の最後で行われていることに注意してください。 一般にはリンクは最初に設定され、そして複製されます。 あなたが常にすべてのリンクがアップ状態であることを望む場合には、 設定の最後に次の行を追加することができます。 .Pp .Bd -literal -offset indent link 1,2,3 set mode ddial .Ed .Pp リンクが必要に応じてダイヤルされることを望む場合には、次のコマンドを 使うことができます。 .Pp .Bd -literal -offset indent link * set mode auto .Ed .Pp 上記の .Dq set device 行を取り除き、 .Dq clone コマンドに続けて次の内容を指定することで、 リンクを特定の名前に結びつけることもできます: .Pp .Bd -literal -offset indent link 1 set device /dev/cuaa0 link 2 set device /dev/cuaa1 link 3 set device /dev/cuaa2 .Ed .Pp どのコマンドが ( .Dq link コマンドを使用した) コンテキスト (文脈) を要求し、 どのコマンドがコンテキストをオプションとし、 そしてどのコマンドがコンテキストを一切とらないかを調べるには、 .Dq help コマンドを使用します。 .Pp .Nm が接続相手と .Em マルチリンク モードでネゴシエートすると、 .Nm はローカルドメインソケットを .Pa /var/run ディレクトリに作成します。このソケットは、 リンク情報 (実際のリンクファイル記述子も含む) を、異なる .Nm の間で受け渡しするために使われます。 この機能によって、 .Nm はシリアル回線の初期制御を行う必要なしに .Xr getty 8 から、もしくは直接 .Pa /etc/gettydefs から ( .Sq pp= ケーパビリティを用いて) 実行することが可能となっています。 ひとたび .Nm がマルチリンクモードのネゴシエーションを行うと、 .Nm は自分がオープンした リンクをすでに実行されている任意の他のプロセスに渡すことができます。 すでに実行されているプロセスがない場合、 .Nm はマスタとして振る舞い、ソケットを作成し、新たな接続を待ちます。 .Sh PPP コマンドリスト この節では利用可能コマンドとその効果をリストします。 .Nm セッションで対話的に使用することも、 設定ファイルで指定することも、 .Xr pppctl 8 もしくは .Xr telnet 1 セッションで指定することも可能です。 .Bl -tag -width 2h .It accept|deny|enable|disable Ar option.... これらのディレクティブは 最初の接続においてどのように相手とネゴシエートするかを .Nm に指示します。各 .Dq option は、accept/deny および enable/disable のデフォルトを持ちます。 .Dq accept は相手がこのオプションを要求したら、ACK を送ることを意味します。 .Dq deny は相手がこのオプションを要求したら、NAK を送ることを意味します。 .Dq enable はこのオプションを当方が要求することを意味します。 .Dq disable はこのオプションを当方が要求しないことを意味します。 .Pp .Dq option は次のいずれかです: .Bl -tag -width 2h .It acfcomp デフォルト: enable かつ accept。 ACFComp はアドレスおよびコントロールフィールド圧縮 (Address and Control Field Compression) を意味します。 LCP パケット以外は通常、 アドレスフィールド 0xff (全ステーションアドレス) と 制御フィールド 0x03 (番号付けされていない情報コマンド) を持ちます。 このオプションがネゴシエートされると、これらの 2 バイトは単に送信されなくなり、 流量が少なくなります。 .Pp 詳細は .Pa rfc1662 を参照してください。 .It chap Ns Op \&05 デフォルト: disable かつ accept。 CHAP はチャレンジ交換認証プロトコル (Challenge Handshake Authentication Protocol) を意味します。 CHAP もしくは PAP (後述) のどちらか一方のみネゴシエーション可能です。 CHAP では、認証者は「チャレンジ」メッセージを相手に送ります。 相手は一方向ハッシュ関数を使用して「チャレンジ」を暗号化し、 結果を送り返します。 認証者は同じことを行い結果を比較します。 この機構の利点は、接続を介してパスワードを送らないことです。 接続が最初に確立する時にチャレンジが行われます。 更なるチャレンジが行われるかもしれません。 相手の認証を行いたい場合は、 .Dq enable chap を .Pa /etc/ppp/ppp.conf に書き、相手のエントリを .Pa /etc/ppp/ppp.secret に書く必要があります。 .Pp クライアントとして CHAP を使用する場合、 .Dq AuthName と .Dq AuthKey を .Pa /etc/ppp/ppp.conf に指定するだけで良いです。 CHAP はデフォルトで accept されます。 .Em PPP の実装によっては、チャレンジの暗号化に MD5 ではなく "MS-CHAP" を使用するものがあります。 MS-CHAP は MD4 と DES の組み合わせです。もし .Nm が DES ライブラリの存在するマシン上で構築された場合 MS-CHAP 認証要求に応答しますが、要求はしません。 .It deflate デフォルト: enable かつ accept。 このオプションは圧縮制御プロトコル (Compression Control Protocol; CCP) に deflate 圧縮を使用するか否かを決定します。 使用されるアルゴリズムは .Xr gzip 1 プログラムが使用するものと同じです。 注: .Xr pppd 8 - 多くのオペレーティングシステムで使用可能な .Em PPP の実装 - との .Ar deflate 能力についてのネゴシエーションには問題があります。 .Nm pppd (バージョン 2.3.1) が .Ar deflate 圧縮のネゴシエーションを行おうとする CCP コンフィギュレーションタイプは、 .Pa rfc1979 に規定されたタイプ .Em 26 ではなくタイプ .Em 24 であり、誤っています。 タイプ .Ar 24 は実際には .Pa rfc1975 では .Dq PPP Magna-link Variable Resource Compression と指定されています! .Nm は .Nm pppd とネゴシエートする能力がありますが、 .Dq deflate24 が .Ar enable かつ .Ar accept されている場合のみです。 .It deflate24 デフォルト: disable かつ deny。 これは .Ar deflate のバリエーションで、 .Xr pppd 8 プログラムとのネゴシエーションを許可します。 詳細は上記の .Ar deflate セクションを参照してください。 これは .Pa rfc1975 に反するため、デフォルトでは disable となっています。 .It dns デフォルト: disable かつ deny。 このオプションは DNS ネゴシエーションを許可します。 .Pp .Dq enable にすることにより、 .Nm は接続相手が .Pa /etc/resolv.conf ファイルのエントリを確認することを要求します。 もし接続相手が当方の要求に否定応答をした場合 (新しい IP アドレスを 提案したら)、 .Pa /etc/resolv.conf ファイルは更新され、新しいエントリを確認するように要求を送ります。 .Pp .Dq accept にすることにより、 .Nm は接続相手からの DNS 検索要求を拒否せずに、返答します。 .Dq set dns コマンドの使用によって上書きされていない場合には、応答は .Pa /etc/resolv.conf から採られます。 .It enddisc デフォルト: enable かつ accept。 このオプションは、終点選択値をネゴシエートするか否かを制御します。 .Dq set enddisc が使用され .Ar enddisc が enable の場合のみ、当方の選択値を送ります。 .Ar enddisc が disable の場合、相手の選択値を拒否します。 .It LANMan|chap80lm デフォルト: disable かつ accept。 この認証プロトコルの使用は勧められません。 単一の CHAP タイプ (0x80) を装って、 2 つの異った機構 (LANMan と NT) を実装することにより、 部分的に認証プロトコルを侵害しているからです。 .Dq LANMan は単純な DES 暗号化機構を使用するものであり、 CHAP 代替としては最低の安全性のものです (それでも PAP よりは安全です)。 .Pp 更なる詳細は後述の .Dq MSChap の記述を参照してください。 .It lqr デフォルト: disable かつ accept。 このオプションはリンク品質要求 (Link Quality Request) を送信する、 もしくは受け入れるかどうかを決定します。 LQR は、モデムのキャリア検出を使用せずに、リンクダウンを .Nm に決定させるプロトコルです。 LQR が enable になっていると、 .Nm は LCP 要求の一部として .Em QUALPROTO オプション (後述の .Dq set lqrperiod を参照) を送ります。 接続相手が同意した場合、両端は同意した間隔で LQR パケットを交換し、 LQM ロギングを有効にすることで、詳細なリンク品質を監視することが 可能になります。 接続相手が同意しなかった場合、 .Nm は代りに ECHO LQR 要求を 送ります。これらのパケットは興味ある情報を何も渡しませんが、 .Em 必ず 接続相手に応答しなければなりません。 .Pp LQR, ECHO LQR のいずれを用いるにせよ、 .Nm は 5 つのパケットを送ったが確認応答が無い場合、6 つ目のパケットを送らずに 回線を切断します。 メッセージを .Em PHASE レベルで記録し、回線切断の原因が接続相手にあるものとして、適当な .Dq reconnect 値を使用します。 .It mppe デフォルト: enable かつ accept。 これは、Microsoft 社の Point to Point 暗号化機構です。 MPPE の鍵のサイズは、40, 56, 128 ビットです。 .Dq set mppe コマンドを参照してください。 .It MSChapV2|chap81 デフォルト: disable かつ accept。 標準 CHAP (タイプ 0x05) と非常に似ていますが、長さ 16 バイト固定の チャレンジコードを送ることと、チャレンジコードを暗号化するのに、 標準の MD5 機構ではなく MD4, SHA-1 そして DES を混合して使用する 点が異なります。 .It MSChap|chap80nt デフォルト: disable かつ accept。 この認証プロトコルの使用は勧められません。 単一の CHAP タイプ (0x80) を装って、 2 つの異った機構 (LANMan と NT) を実装することにより、 部分的に認証プロトコルを侵害しているからです。 標準の CHAP (タイプ 0x05) に非常に良く似ていますが、 チャレンジを固定 8 バイト長で発行し、 標準の MD5 機構ではなく MD4 と DES を組み合わせてチャレンジを暗号化するところが違います。 LANman 用の CHAP タイプ 0x80 もまたサポートされています - 詳細は .Dq enable LANMan を参照してください。 .Pp .Dq LANMan と .Dq NT の両方が CHAP タイプ 0x80 を使用しますので、両方を .Dq enable にして認証者として動作するときには、 相手が誤った方のプロトコルを使用して応答した場合には、 .Nm は最大 3 回相手に再チャレンジします。 これにより、相手が両方のプロトコルを使用する機会を与えます。 .Pp 逆に、両プロトコルを .Dq enable にして .Nm が被認証者となる場合、チャレンジに答えるたびに使用プロトコルを交換します。 .Pp 注: LANMan のみが enable にされた場合、 .Xr pppd 8 (バージョン 2.3.5) は被認証者としては誤った動作を行います。 NT と LANMan の両方の応答を行いますが、 NT の応答のみ使用すべきことも指示してしまうのです。 .It pap デフォルト: disable かつ accept。 PAP はパスワード認証プロトコル (Password Authentication Protocol) を 意味します。 CHAP (前述) もしくは PAP のどちらか一方のみネゴシエーション可能です。 PAP では、ID とパスワードが相手に送られ続け、 認証されるか接続が終了されるまでこれが続きます。 これは比較的良くないセキュリティ機構です。 接続が最初に確立した時のみ実行可能です。 相手の認証を行いたい場合は、 .Dq enable pap を .Pa /etc/ppp/ppp.conf に書き、相手のエントリを .Pa /etc/ppp.secret に書く必要があります (ただし、後述の .Dq passwdauth と .Dq set radius オプションを参照)。 .Pp クライアントとして PAP を使用する場合、 .Dq AuthName と .Dq AuthKey を .Pa /etc/ppp/ppp.conf に指定するだけで良いです。 PAP はデフォルトで accept されます。 .It pred1 デフォルト: enable かつ accept。 このオプションは圧縮制御プロトコル (Compression Control Protocol; CCP) に Predictor 1 圧縮を使用するかどうかを決定します。 .It protocomp デフォルト: enable かつ accept。 このオプションは PFC (プロトコルフィールド圧縮) のネゴシエートするために使用されます。 この機構により、 プロトコルフィールド数が 2 オクテットから 1 オクテットに減ります。 .It shortseq デフォルト: enable かつ accept。 このオプションは .Nm がマルチリンクモードのネゴシエーション時に .Pq 12 ビットの 短いシーケンス番号を要求し、そして受け入れるかどうかを決定します。 これは、当方の MMRU が設定されたときのみ (マルチリンクが有効になっているときのみ) 適用されます。 .It vjcomp デフォルト: enable かつ accept。 このオプションは Van Jacobson ヘッダ圧縮を使用するかどうかを決定します。 .El .Pp 次に示すオプションは、実際には相手とネゴシエートしません。 それゆえ accept および deny は意味を持ちません。 .Bl -tag -width 20 .It filter-decapsulation デフォルト: disable。 本オプションを enable にすると、 .Nm は UDP フレームを検査し、 .Em PPP フレームをペイロードとして持っているか否かを見ます。 これが真である場合、パケット自身に対してではなく、ペイロードに対して、 すべてのフィルタを適用します。 .Pp .Em PPP リンク上で PPPoUDP トラフィックを送りたい場合で、 UDP ラッパではなく、 実際のデータに基いて賢いことをリンクにやらせたい場合に有用です。 .Pp UDP フレームのペイロードは、如何なる方法であっても圧縮してはなりません。 圧縮した場合には、 .Nm はペイロードを解釈できません。 ですから、UDP リンクに対する .Nm の起動の際には、設定中で .Ic disable vj pred1 deflate と .Ic deny vj pred1 deflate を行なうことを推奨します。 .It idcheck デフォルト: enable。 低レベルな LCP, CCP, IPCP 設定トラフィックを交換するときに、 すべての応答の識別子フィールドはその要求の識別子フィールドと 同一であることが予定されています。デフォルトでは .Nm は予定された識別子フィールドを持たないすべての応答パケットを 捨て、それぞれのログレベルで報告します。もし .Ar idcheck が disable になっている場合、 .Nm は識別子フィールドを無視します。 .It keep-session デフォルト: disable。 .Nm がマルチリンクサーバとして動作するとき、別の .Nm インスタンスが最初に各接続を受け付けます。 リンクが (別の .Nm によって制御されている) 既存のバンドルに属すと判定すると、 .Nm はこのリンクを当該別プロセスへ移管します。 .Pp リンクが tty デバイスである場合かこのオプションが enable されている場合、 .Nm は終了せず、自己のプロセス名を .Dq session owner に変え、リンクを制御する方の .Nm が処理を完了してアイドルプロセスの方へシグナルを返すまで待ちます。 リンク資源が再利用可能であると .Nm の親がみなす結果により生じる混乱を、これにより防ぎます。 .Pp .Pa /etc/ttys にエントリがある tty デバイスの場合、別の .Xr getty 8 の開始を防ぐために、これが必要です。 .Xr sshd 8 のようなプログラムリンクの場合、子供の死による .Xr sshd 8 の終了を防ぐために、これが必要です。 .Nm は親の要件を判断できませんので (tty の場合を除く)、 状況に応じて手動で本オプションを設定する必要があります。 .It loopback デフォルト: enable。 .Ar loopback が enable の場合、 .Nm は自動的に .Em PPP インタフェースと同じ終点アドレス宛に送出されたパケットを ループバックします。 disable の場合、 .Nm がパケットを送ると、おそらく他の終点からの ICMP リダイレクトとなります。 インタフェースがデフォルト経路であるため、 ループバック経路を必要とすることを避けたい場合、 このオプションを enable にすると便利です。 .It passwdauth デフォルト: disable。 このオプションを enable にすることにより、 PAP 認証コードが呼び出し側を認証する時に、 .Pa /etc/ppp/ppp.secret ファイル中でみつからない場合、パスワードデータベース ( .Xr passwd 5 参照) を使用します。 .Pa /etc/ppp/ppp.secret は常に、最初に調べられます。 .Xr passwd 5 からパスワードを調べ、かつそのクライアントに対して IP アドレスもしくは ラベルを指定したい場合には、 .Pa /etc/ppp/ppp.secret ファイル中のクライアントのパスワードとして .Dq \&* を用いてください。 .It proxy デフォルト: disable。 このオプションを enable にすることにより、 .Nm に相手のために代理 ARP をさせます。 .Dv HISADDR と .Dv HISADDR がいるローカルネットワークの .Dv MAC アドレスを使用して、 .Nm が ARP 表に単一エントリを作成することを意味します。 これにより、 相手自身がその LAN に接続されたかのような状態で、 LAN に接続された他のマシンと相手とが 通信できるようになります。 .Dv HISADDR が LAN からのアドレスではない場合、代理エントリは作成できません。 .It proxyall デフォルト: disable。 このオプションを enable にすることにより、 .Nm に代理 ARP エントリを追加させます。 追加されるエントリは、 tun インタフェースによってルーティングされる すべてのクラス C もしくはそれ以下のサブネットの中の、全 IP アドレスです。 .Pp 代理 arp エントリは、 .Dq add コマンドによって追加されたスティッキー経路に対してのみ作成されます。( .Dq set ifaddr コマンドによって作成された) インタフェースアドレス自身に対しては、代理 arp エントリは作成されません。 .It sroutes デフォルト: enable。 .Dq add コマンドが .Dv HISADDR もしくは .Dv MYADDR という値とともに用いられると、エントリは .Sq スティック経路 リストに格納されます。 .Dv HISADDR もしくは .Dv MYADDR が変更される度に、このリストが経路表に適用されます。 .Pp このオプションを disable にすると、 スティッキー経路が適用されなくなります。 .Sq スティック経路 リストは依然として保守されます。 .It Op tcp Ns Xo .No mssfixup .Xc デフォルト: enable。 このオプションは、 .Nm に、出力 TCP SYN パケットを調整するように指示し、 インタフェース MTU が許可しているサイズを受信セグメントサイズの 最大値が超えないようにします。 .It throughput デフォルト: enable。 このオプションを有効にすると、 .Nm はスループット統計を収集します。 ずれ動く 5 秒間のウィンドウにおいて入出力が検査され、 現在、最良時、総計の数値が保持されます。 このデータは関連する .Em PPP 層が終了するときに出力され、また .Dq show コマンドで表示することで得られます。スループット統計は .Dq IPCP と .Dq physical のレベルで利用可能です。 .It utmp デフォルト: enable。 通常ユーザが PAP もしくは CHAP で認証された時で、 .Nm が .Fl direct モードで実行されている時は、このユーザのエントリが utmp ファイルおよび wtmp ファイルに作成されます。 このオプションを disable にすると、 .Nm は utmp および wtmp のエントリを作成しません。 通常、 ユーザがログインしかつ認証することを要求する場合のみ必要です。 .It iface-alias デフォルト: .Fl nat が指定された場合 enable。 このオプションは、 インタフェースのアドレスを交換するのではなく、 インタフェースに新規アドレスを追加するように、 .Nm に指示します。 ネットワークアドレス変換が有効な場合のみ .Pq Dq nat enable yes 、本オプションを enable にできます。 .Pp 本オプションを enable にすると、 .Nm は古いインタフェースアドレスのトラフィックを NAT エンジン .Pq Xr libalias 3 参照 を通すようになり、( .Fl auto モードでは) 最初に PPP リンクを立ち上げたプロセスが正しく接続できるようにします。 .Pp .Dq nat enable no として NAT を disable すると、 .Sq iface-alias も disable します。 .El .Pp .It add Ns Xo .Op !\& .Ar dest Ns Op / Ns Ar nn .Op Ar mask .Op Ar gateway .Xc .Ar dest は宛先 IP アドレスです。 ネットマスクは .Ar /nn によってビット数で指定するか、もしくは .Ar mask を用いて IP 番号で指定します。 .Ar 0 0 ならびにマスクなしの .Ar 0 はデフォルト経路を意味します。 .Ar 0 の代りにシンボル名 .Ar default を使うことが可能です。 .Ar gateway は、 .Ar dest マシン/ネットワークに至る、次のホップのゲートウェイです。 詳細は .Xr route 8 コマンドを参照してください。 .Pp 宛先にシンボル名 .Sq MYADDR と .Sq HISADDR を使用可能であり、 .Ar gateway には .Sq HISADDR を使用可能です。 .Sq MYADDR はインタフェースアドレスに置き換えられ、 .Sq HISADDR はインタフェースの宛先 (相手の) アドレスに置き換えられます。 .Pp .Ar add!\& コマンド .Po .Dq !\& に注意 .Pc 使用時には、経路が存在する場合には .Sq route change コマンド (詳細は .Xr route 8 参照) にて経路を更新します。 .Pp .Dq HISADDR , .Dq MYADDR , .Dq DNS0 , .Dq DNS1 のいずれかを含む経路は .Sq スティッキー と見なされます。これらはリスト (リストを見るには .Dq show ipcp コマンドを使用します) に格納され、 .Dv HISADDR .Dq MYADDR , .Dq DNS0 , .Dq DNS1 のいずれかの値が変更される度に、経路表の関連するエントリが更新されます。 この機能は .Dq disable sroutes を使用することで無効にできます。 .It allow user Ns Xo .Op s .Ar logname Ns No ... .Xc このコマンドは .Nm と設定ファイルへのアクセスを制御します。 設定ファイルのラベルと .Nm 実行モードにより、 ユーザレベルでのアクセスも可能です。 例えば、 .Fl background モードでは、ユーザ .Sq fred のみがラベル .Sq fredlabel にアクセスできるように、 .Nm を構成したいかもしれません。 .Pp ユーザ ID 0 はこれらのコマンドの対象外です。 .Bl -tag -width 2h .It allow user[s] Ar logname... デフォルトでは、ユーザ ID 0 のみが .Nm へのアクセスを許されています。 このコマンドを指定することで、 .Dq allow users が記載されているセクションに列挙されているユーザは、 そのセクションへのアクセスが可能となります。 .Sq default セクションは 常に最初にチェックされます (スタートアップ時に常にロードされる唯一の セクションです)。 あるセクションの中では、複数の .Dq allow users コマンドは、加算的です。 しかしながら、あるセクション中で許可されたユーザ群は、 .Sq default セクションで許可されたユーザ群を上書きします。 ですから、デフォルトユーザを .Sq default セクションで指定し、新しいユーザリストをあるラベルに指定することで、 あるラベル以外のすべてにアクセスを許すといったことが可能です。 .Pp ユーザ .Sq * が指定されると、全ユーザにアクセスが許されます。 .It allow mode Ns Xo .Op s .Ar mode Ns No ... .Xc デフォルトでは全 .Nm モードが使用可能です。 このコマンドが使用されると、 このコマンドが指定されたラベルのロードに許されるアクセス .Ar mode が制限されます。 .Dq allow users コマンドと同様、 各 .Dq allow modes コマンドは先行するコマンドに優先し、 .Sq default セクションは常に最初にチェックされます。 .Pp 使用可能なモードは次の通りです: .Sq interactive , .Sq auto , .Sq direct , .Sq dedicated , .Sq ddial , .Sq background , .Sq * 。 .Pp マルチリンクモードで動作するときには、 現在存在する回線モードを許可するセクションをロード可能です。 .El .Pp .It nat Ar command Op Ar args このコマンドは .Nm 組込みのネットワークアドレス変換機能 (マスカレーディングや IP エイリアシングとしても知られています) を 制御するために使用します。 NAT は、外部インタフェースでのみ動作し、 .Fl direct フラグと共に使用してもおそらく意味がありません。 .Pp 後方互換性のために、語 .Dq alias を .Dq nat の代りに使用可能です。 あなたのシステムで nat を有効にすると (コンパイル時に削除できます)、 次のコマンドが使用可能となります: .Bl -tag -width 2h .It nat enable yes|no このコマンドは、ネットワークアドレス変換を有効もしくは無効にします。 .Fl nat コマンドラインフラグは .Dq nat enable yes と同じ意味です。 .It nat addr Op Ar addr_local addr_alias このコマンドには、 .Ar addr_alias のデータを .Ar addr_local へリダイレクトします。 少数の実 IP アドレスを持ち、 それらをゲートウェイの後の特定のマシンにマップしたい場合に有用です。 .It nat deny_incoming Op yes|no yes に設定すると、 エイリアシングリンクがまだ存在しないところでは、 このコマンドは全パケットを拒否します。 .Dq エイリアシングリンク が何であるかについては、 .Xr libalias 3 の .Sx 概念の背景 節を参照してください。 .Pp どのような状況において .Xr libalias 3 がエイリアシングリンクを作成したか、気をつける必要があります。 .Dq set filter または .Dq nat target のコマンドを使用して、更にネットワークを保護する必要があるかもしれません。 .It nat help|? このコマンドは、使用可能な nat コマンドのまとめを表示します。 .It nat log Op yes|no このオプションは、NAT の様々な統計と情報がファイル .Pa /var/log/alias.log に記録されるようにします。 .It nat port Ar proto Ar targetIP Ns Xo .No : Ns Ar targetPort Ns .Oo .No - Ns Ar targetPort .Oc Ar aliasPort Ns .Oo .No - Ns Ar aliasPort .Oc Oo Ar remoteIP : Ns .Ar remotePort Ns .Oo .No - Ns Ar remotePort .Oc Ns .Oc .Xc このコマンドは、 .Ar aliasPort への入力の .Ar proto 接続を、 .Ar targetIP の .Ar targetPort へリダイレクトします。 .Ar proto は、 .Dq tcp または .Dq udp です。 .Pp ポート番号の範囲は、前述のように指定可能です。 範囲は同じ大きさであることが必要です。 .Pp .Ar remoteIP が指定された場合、この IP 番号から来たデータのみがリダイレクトされます。 .Ar remotePort は、 .Dq 0 .Pq すべての送信元ポート か、もう一方の範囲と同じ大きさのポート範囲です。 .Pp あなたのゲートウェイの後のマシンでインターネット電話等を実行したい場合に、 このオプションは有用です。 しかし、送信元ホストと宛先ポートにつき 内部マシン 1 台のみに接続可能という制限があります。 .It "nat proxy cmd" Ar arg Ns No ... このコマンドは、 .Nm に特定の接続に対する代理をさせ、 これらの接続を指定したサーバにリダイレクトします。 使用可能なコマンドについての詳細は .Xr libalias 3 の .Fn PacketAliasProxyRule の記述を参照してください。 .It nat same_ports yes|no 有効になると、 ネットワークアドレス変換エンジンに対して、 出力パケットのポート番号をできるだけ変更しないように指示します。 RPC や LPD といった、 ウェルノウンポート (well known port) からの接続を要求する プロトコルをサポートするのに有用です。 .It nat target Op Ar address アドレスを指定したときは、そのアドレスをターゲットアドレスとして設定し、 指定しないときは、ターゲットアドレスの設定をクリアします。 ターゲットアドレスは、デフォルトでどのように受信パケットを NAT するかを指定するために libaliases が使用します。 ターゲットアドレスが設定されていないか、または .Dq default が与えられている場合、パケットは変更されないまま内部ネットワークに ルーティングされるようになります。 .Pp ターゲットアドレスを .Dq MYADDR に設定することもでき、その場合、libaliases はすべてのパケットを 内部ネットワークにリダイレクトします。 .It nat use_sockets yes|no 有効になると、 ネットワークアドレス変換エンジンにソケットを作成させ、 正しい ftp データ入力や IRC 接続を保証できるようになります。 .It nat unregistered_only yes|no 登録されていない送信元アドレスの出力パケットのみを、変更します。 RFC1918 によると、登録されていない送信元アドレスは 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16 です。 .El .Pp これらのコマンドはソース配布物の .Pa README.alias ファイル中でも議論されています。 .Pp .It Op !\& Ns Xo .No bg Ar command .Xc 指定した .Ar command を、次の語を置換した後に、バックグラウンドで実行します: .Bl -tag -width PEER_ENDDISC .It Li AUTHNAME これは、ローカルの .Ar authname の値と置き換えられます。後述の .Dq set authname コマンドを参照してください。 .It Li COMPILATIONDATE これは、 .Nm がコンパイルされた日付と置き換えられます。 .It Li DNS0 & DNS1 これは、それぞれプライマリ DNS サーバ、セカンダリ DNS サーバの IP アドレスに置き換えられます。IPCP によりネームサーバが ネゴシエーションされた場合、このマクロの値は変わります。 .It Li ENDDISC これは、ローカルの終点選択値と置き換えられます。 後述の .Dq set enddisc コマンドを参照してください。 .It Li HISADDR これは、相手の IP 番号と置き換えられます。 .It Li INTERFACE これは、使用中のインタフェース名と置き換えられます。 .It Li LABEL これは、最後に使用したラベル名と置き換えられます。 ラベルは、 .Nm のコマンドラインから .Dq load または .Dq dial のコマンドから指定するか、 .Pa ppp.secret ファイルから指定可能です。 .It Li MYADDR これは、ローカルインタフェースに割り当てられた IP 番号と置き換えられます。 .It Li PEER_ENDDISC これは、相手の終点選択番号と置き換えられます。 .It Li PROCESSID これは、現在のプロセス ID と置き換えられます。 .It Li VERSION これは、 .Nm の現在のバージョン番号と置き換えられます。 .It Li USER これは、PAP もしくは CHAP で認証されたユーザ名と置き換えられます。 通常、この変数は -direct モードでのみ割り当てられます。 この値は、utmp ロギングが有効になっているかどうかに関わらず、利用可能です。 .El .Pp これらの置換は .Dq set proctitle コマンドによっても実行されます。 .Pp コマンド実行中に .Nm を停止させたい場合は、 .Dq shell コマンドを使用してください。 .It clear physical|ipcp Op current|overall|peak... .Dq physical もしくは .Dq ipcp 階層で、指定されたスループット値をクリアします。 .Dq modem を指定する場合にはコンテキストが与えられなければなりません (後述の .Dq link コマンドを参照)。 第 2 引数が与えられない場合、すべての値がクリアされます。 .It clone Ar name Ns Xo .Op \&, Ns Ar name Ns .No ... .Xc 指定されたリンクを複製し、引数の .Ar name に関連づけた新しいリンクを作成します。 このコマンドは、リンクが 1 つしかない場合 (この場合にはそのリンクがデフォルトになります) を除いて後述の .Dq link コマンドから使用する必要があります。 リンクは下記の .Dq remove コマンドで削除できます。 .Pp デフォルトのリンク名は .Dq deflink です。 .It close Op lcp|ccp Ns Op !\& 引数が与えられないと、適切なプロトコル層がダウンし、リンクが閉じられます。 .Dq lcp が指定されると LCP 層がダウンしますが、 .Nm をオフラインにはしません。例えば .Dq slirp のようなものを使用すれば、 .Dq term .Pq 後述 を使用して相手のマシンと会話できます。 .Dq ccp が指定されると適切な圧縮層が閉じられます。 .Dq !\& が使用されると、圧縮層はクローズ状態のままとなります。 使用されない場合には、STOPPED 状態へ再度入り、 相手が更なる CCP ネゴシエーションを開始するのを待ちます。 なにが起きようとも、ユーザを .Nm から切り離すことはありませんし、 .Nm を終了させることもありません。 後述の .Dq quit を参照してください。 .It delete Ns Xo .Op !\& .Ar dest .Xc このコマンドは指定した .Ar dest IP アドレスの経路を削除します。 .Ar dest に .Sq ALL が指定された場合、 現在のインタフェースの経路表の非直接エントリと .Sq スティッキー経路 がすべて削除されます。 .Ar dest に .Sq default が指定された場合、デフォルト経路が削除されます。 .Pp .Ar delete!\& コマンドが使用された場合 .Po 最後の .Dq !\& に注意 .Pc 、存在しない経路について .Nm は文句を言わなくなります。 .It dial|call Op Ar label Ns Xo .No ... .Xc このコマンドは、 .Dq load label の次に .Dq open を指定することと同等です。後方互換性のために提供されています。 .It down Op Ar lcp|ccp 適切な階層をダウンさせますが、 綺麗な方法ではなく、下位層が使用不能になったように見えます。 オープン状態にある有限状態機械でこのコマンドを使用することは、 丁寧ではないとされています。 引数が与えられない場合、すべてのリンクが閉じられます (コンテキストが与えられない場合にはすべてのリンクが終了されます)。 .Sq lcp が指定された場合、 .Em LCP 層は終了されますが、デバイスはオフラインに移行せず、 リンクも閉じられません。 .Sq ccp が指定された場合、 関連する圧縮層のみが終了されます。 .It help|? Op Ar command 利用可能なコマンドをリストします。 .Ar command を指定した場合、このコマンドの使用方法を表示します。 .It iface add Ns Xo .Op !\& .Ar addr Ns Op / Ns Ar bits .Op Ar peer .Xc .It iface add Ns Xo .Op !\& .Ar addr .Ar mask .Ar peer .Xc このコマンドは、 .Nm が使用するインタフェースを制御します。 .Ar command は次のいずれかです: .Bl -tag -width 2h .It iface add Ns Xo .Op !\& .Ar addr Ns Op / Ns Ar bits .Op Ar peer .Xc 指定された .Ar addr mask peer の組み合わせをインタフェースに追加します。 .Ar mask を指定する代りに、 .Ar /bits を使用可能です .Pq addr との間に空白を入れてはなりません 。指定したアドレスが既に存在する場合、 .Dq !\& を使用していない限りコマンドは失敗します - この場合、 以前のインタフェースアドレスエントリは新しいもので置き換えられ、 ネットマスクと相手のアドレスの変更を許します。 .Pp .Ar addr のみが指定されると、 .Ar bits はデフォルト値 .Dq 32 になり、 .Ar peer はデフォルト値 .Dq 255.255.255.255 になります。 このアドレス (ブロードキャストアドレス) は、 相手のアドレスとして複数存在することを .Nm が唯一許すものです。 .It iface clear .Nm が OPENED 状態または .Fl auto モードの場合にこのコマンドを使用すると、 IPCP ネゴシエートされたアドレス以外の全アドレスが インタフェースから削除されます。 .Nm が OPENED 状態でも .Fl auto モードでもない場合、全インタフェースアドレスが削除されます。 .Pp .It iface delete Ns Xo .Op !\& Ns .No |rm Ns Op !\& .Ar addr .Xc このコマンドは、指定した .Ar addr をインタフェースから削除します。 .Dq !\& が指定されると、現在そのアドレスがインタフェースに割り当てられていなくても、 エラーは報告されません (削除も行われません)。 .It iface show インタフェースの現在の状態と現在のアドレスを表示します。 .Dq ifconfig INTERFACE を実行することと、ほとんど同じです。 .It ident Op Ar text Ns No ... .Ar text を使用して、相手に対してリンクを自己証明 (identify) します。 .Ar text が空の場合、リンクの自己証明は無効化されます。 前述の .Ic bg コマンドに使用できる語はすべて使用可能です。 .Nm が相手に対して自己証明する場合についての詳細は、 .Ic sendident コマンドを参照してください。 .It iface help Op Ar sub-command このコマンドを .Ar sub-command 無しで起動すると、利用可能な .Dq iface サブコマンドと、おのおのの短い書式を表示します。 .Ar sub-command 付きで起動すると、指定した sub-command の書式のみを表示します。 .El .It Op data Ns Xo .No link .Ar name Ns Op , Ns Ar name Ns .No ... Ar command Op Ar args .Xc コマンドが影響を与えるリンクを特定したい場合に、このコマンドを 任意の他のコマンドのプレフィックスとして使うことができます。 これはマルチリンクモードで .Dq clone コマンドを使って複数のリンクを作成した後でのみ適用されます。 .Pp .Ar name は存在するリンク名を指定します。 .Ar name がコンマ区切りのリストの場合には、 .Ar command はそれぞれのリンクに対して実行されます。 .Ar name が .Dq * の場合には、 .Ar command はすべてのリンクに対して実行されます。 .It load Op Ar label Ns Xo .No ... .Xc .Pa ppp.conf ファイルから指定された .Dq label (複数指定可) をロードします。 .Dq label が指定されない場合、 .Dq default ラベルが仮定されます。 .Pp .Ar label セクションが .Dq set mode , .Dq open , .Dq dial のいずれのコマンドも使用しない場合、 .Nm はすぐに接続を確立しようとはしません。 .It open Op lcp|ccp|ipcp これは .Dq close の反対のコマンドです。 閉じられているリンクのうち、2 番目以降の .Ar demand-dial リンク以外、全リンクがすぐに立ち上がります - 2 番目以降の .Ar demand-dial リンクは、どのような .Dq set autoload コマンドが使用されたかに依存して立ち上ります。 .Pp LCP 層がすでにオープンされているときに .Dq lcp 引数を指定すると、LCP は再度ネゴシエートされます。 したがって、種々の LCP オプションを変更したあとで .Dq open lcp コマンドを用いることで、変更を有効にすることができます。 LCP が再度ネゴシエートされた後、 同意したあらゆる認証が実行されます。 .Pp .Dq ccp 引数が用いられると、関連する圧縮層がオープンされます。 すでにオープンされている場合には、再度ネゴシエートされます。 .Pp .Dq ipcp 引数が用いられると、リンクが通常通り起動されます。すでに IPCP が オープンされている場合には、IPCP は再度ネゴシエートされ、 ネットワークインタフェースが再設定されます。 .Pp このようにして PPP の状態機械を再オープンするのは、 おそらく良い手段ではありません。 接続相手が正しく振る舞わない可能性があるためです。 しかしながら、強制的に CCP もしくは VJ 辞書をリセットする手段としては 便利です。 .It passwd Ar pass すべての .Nm コマンドセットにアクセスするために要求されるパスワードを指定します。 このパスワードは診断ポート ( .Dq set server コマンド参照) に接続するときに必要です。 .Ar pass は .Dq set server コマンドラインで指定します。 .Ar command ログが有効でも、値 .Ar pass は記録されず、文字列 .Sq ******** が記録されます。 .It quit|bye Op all .Dq quit が制御接続もしくはコマンドファイルから実行されると、 ppp はすべての接続を閉じた後に終了します。その他の場合、 つまりユーザが診断ソケットから接続している場合には、 単にその接続が失われます。 .Pp .Ar all 引数が与えられた場合、 .Nm はコマンドがどこから発行されたかに関わらず、 すべての存在する接続を閉じて終了します。 .It remove|rm このコマンドは与えられたリンクを消去します。 これはマルチリンクモードでのみ有用です。リンクは消去する前に .Dv CLOSED 状態になっていなければなりません。 .It rename|mv Ar name このコマンドは与えられたリンクの名前を .Ar name に変更します。 .Ar name がすでに他のリンクで使用されている場合には、失敗します。 .Pp デフォルトリンクの名前は .Sq deflink です。これを .Sq modem , .Sq cuaa0 , .Sq USR のいずれかに変更すると、ログファイルの可読性が向上するかも知れません。 .It resolv Ar command このコマンドは .Nm が行なう .Xr resolv.conf 5 ファイルの操作を制御します。 .Nm の起動時に、以後の参照に備え、このファイルの内容をメモリに読み込み 保持します。 .Ar command は次のいずれかです。 .Bl -tag -width readonly .It Em readonly .Pa /etc/resolv.conf を読み込み専用とします。 .Dq dns が有効にされている場合、 .Nm は、接続相手との間でネームサーバのネゴシエーションを試みます。 ネゴシエーションの結果は、マクロ .Dv DNS0 , .Dv DNS1 を通じて利用可能となります。 このコマンドは、 .Dq resolv writable コマンドの反対です。 .It Em reload .Pa /etc/resolv.conf をメモリに再ロードします。 例えば、DHCP クライアントが .Pa /etc/resolv.conf を上書きする場合などに、このコマンドが必要になります。 .It Em restore .Pa /etc/resolv.conf を、起動時に読み込んだ元のバージョンか、もしくは .Dq resolv reload コマンドで最後に読み込んだ状態のものに戻します。 このコマンドは、 .Pa /etc/ppp/ppp.linkdown ファイルの中でうまく使えることがあります。 .It Em rewrite .Pa /etc/resolv.conf ファイルを書き換えます。 このコマンドは、 .Dq resolv readonly コマンドが既に使用されていても動作します。 他のコマンドが完了するまで .Pa /etc/resolv.conf の更新を遅らせたい場合に、 .Pa /etc/ppp/ppp.linkup の中でうまく使えることがあります。 .It Em writable .Dq dns が有効になっており、DNS の ネゴシエーションが成功した場合に、 .Nm が .Pa /etc/resolv.conf を更新できるようにします。 これは .Dq resolv readonly コマンドの反対です。 .El .It save このオプションは (まだ) 実装されていません。 .It sendident このコマンドは、 .Nm に対し、相手に対して自己証明するように指示します。 リンクは、LCP 状態以上であることが必要です。( .Ic ident コマンドによって) 自己証明の設定がなされていない場合、 .Ic sendident は失敗します。 .Pp 自己証明の設定がなされている場合、 設定拒否を送信または受信するときか、 ネゴシエーションが失敗したときか、 LCP が OPENED 状態になるときのいずれかのときに、 .Nm は自動的に自己証明します。 .Pp 受信した自己証明パケットは、LCP ログに記録し (詳細は .Ic set log を参照してください)、これに対する応答は行いません。 .It set Ns Xo .Op up .Ar var value .Xc このオプションは次に示す変数の設定のために使用します: .Bl -tag -width 2h .It set accmap Ar hex-value ACCMap は非同期制御文字マップ (Asyncronous Control Character Map) を 意味します。 これはいつも相手とネゴシエートされ、デフォルト値は 16 進数で 00000000 です。 このプロトコルが必要なのは、 (XON/XOFF などの) 特定の文字を終点間で受渡すことに依存するハードウェアを 使用する場合です。 .Pp XON/XOFF については .Dq set accmap 000a0000 を使用します。 .It set Op auth Ns Xo .No key Ar value .Xc クライアントモードでの PAP または CHAP のネゴシエーションで使用される 認証キー (もしくはパスワード) を、指定した値に設定します。 ダイヤルまたはログインスクリプトの .Sq \eP シーケンスで使用するパスワードもまた指定します。 これにより実際のパスワードは記録されません。 .Ar command または .Ar chat のログが有効な場合、セキュリティの観点から、 .Ar value は .Sq ******** として記録されます。 .Pp .Ar value の最初の文字がエクスクラメーションマーク .Pq Dq !\& の場合、 .Nm は残りの文字列を、 .Dq authname と .Dq authkey の値を確定するために実行すべきプログラムとして扱います。 .Pp 実行するプログラムを得るために .Ar value をパーズする際には、 .Dq !\& が二重 .Pq Dq !!\& である場合、単一のリテラル .Dq !\& として扱います、そうでない場合、 .Dq !\& を無視します。また、前述の .Dq !bg コマンドと同様に特殊な名前を置換します。 プログラムを実行すると、 .Nm はこのプログラムに対して次の 3 行の入力を与えます。 各行の末尾には改行文字が置かれます。 .Bl -bullet .It CHAP チャレンジで送られたホスト名。 .It CHAP チャレンジで送られたチャレンジ文字列。 .It ローカルに定義された .Dq authname 。 .El .Pp そして、出力として次の 2 行を待ちます。 .Bl -bullet .It CHAP 応答と共に送るための .Dq authname 。 .It .Dq authkey 。これは、チャレンジと要求 ID で暗号化したもの であり、この結果は CHAP 応答パケットに含めて送られます。 .El .Pp .Nm をこのように設定するとき、 ホストチャレンジは ASCII の数値もしくは文字であることを 想定しています。 指定されたチャレンジに対する適切な秘密情報を計算するために、 通常は、暗号化デバイスまたは Secure ID カードが必要です。 .It set authname Ar id クライアントモードでの PAP または CHAP のネゴシエーションで使用される 認証 ID を設定します。 .Pp CHAP を enable にして .Fl direct モードで利用すると、 .Ar id は初期認証チャレンジで用いられ、通常はローカルマシン名に設定されます。 .It set autoload Xo .Ar min-percent max-percent period .Xc これらの設定はマルチリンクモードでのみ適用され、 デフォルト値はそれぞれ 0, 0, 5 です。 1 つ以上の .Ar demand-dial .Po .Fl auto としても知られる .Pc モードのリンクが存在する場合、 .Nm が最初に tun デバイスからデータを読むときには最初のリンクのみが 有効になっています。 次の .Ar demand-dial リンクが開かれるのは、現在のバンドルの .Ar period 秒間のスループットがバンドルの総バンド幅の最低 .Ar max-percent パーセントであるときに限られます。 現在のバンドルの .Ar period 秒間のスループットがバンドルの総バンド幅の .Ar min-percent パーセント以下に減少したとき、最後のアクティブな リンクでない場合、 .Ar demand-dial リンクはダウンします。 .Pp バンドルのスループットは、 内向きおよび外向きのトラフィックの最大値として計測されます。 .Pp デフォルト値では .Ar demand-dial リンクは 1 つだけオープンされます。 .Pp デバイスによっては物理バンド幅を判定できないものがありますので、 .Dq set autoload が正しく動作するためには、(後述の) .Dq set bandwidth コマンドを使用する必要がある場合があります。 .It set bandwidth Ar value 本コマンドは、接続のバンド幅を、秒あたりのビット数で設定します。 .Ar value は 0 より大きいことが必要です。 現在、前述の .Dq set autoload コマンドのみが使用します。 .It set callback Ar option Ns No ... 引数が与えられない場合、コールバックは disable になります。 そうでない場合には、 .Nm は与えられた .Ar option でコールバックを要求します (もしくは .Ar direct モードでは受け付けます)。 クライアントモードでは、 .Ar option の否定応答が返されると、 .Nm は他に選択肢がなくなるまで別の .Ar option 要求を出します ( .Ar option のひとつとして .Dq none を指定していた場合を除きます)。 サーバモードでは、 .Nm は与えられるプロトコルをなんでも受け付けますが、 クライアントがいずれかひとつを要求する .Em 必要があります 。コールバックをオプションにしたいのであれば、オプションとして .Ar none を指定する必要があります。 .Pp .Ar option は下記の通りです (優先度順): .Pp .Bl -tag -width Ds .It auth コールバック応答側は、認証に基づいてコールバック番号を 決定することが求められます。 .Nm がコールバック応答側である場合、番号は .Pa /etc/ppp/ppp.secret 中の接続先エントリの 5 番目のフィールドで指定されます。 .It cbcp Microsoft コールバック制御プロトコルが用いられます。後述の .Dq set cbcp を参照してください。 .Pp クライアントモードで .Ar cbcp をネゴシエートしたい場合でありかつ、 CBCP ネゴシエーション時にサーバがコールバック無しを要求することを許したい場合、 コールバックオプションとして .Ar cbcp と .Ar none の両方を指定する必要があります。 .It E.164 *| Ns Xo .Ar number Ns Op , Ns Ar number Ns .No ... .Xc コールバック要求側が .Ar number を指定します。 .Nm がコールバック応答側である場合、 .Ar number は許可する番号をコンマで区切って並べたリスト、もしくは 任意の番号を許可するという意味の .Dq \&* とします。 .Nm がコールバック要求側である場合、1 つの数字だけを指定します。 .Pp .Dq \&* を用いる場合、このオプションはとても危険なものとなることに 注意してください。 というのは、悪意あるコールバック要求者が、最初の認証なしに 電話すべき番号として任意の (国際通話番号も可能です) 番号を 伝えることができるからです。 .It none 接続相手がコールバックをまったく望まない場合、 .Nm はそのことを受け入れ、接続を終了するのではなく コールバックせずに処理を続けます。 コールバックをオプションにしたいのであれば、 (1 個以上の他のコールバックオプションに加えて) これも指定する必要があります。 .El .Pp .It set cbcp Oo .No *| Ns Ar number Ns Oo .No , Ns Ar number Ns ...\& Oc .Op Ar delay Op Ar retry .Oc 引数が与えられない場合、CBCP (Microsofts CallBack Control Protocol) は disable です。言い換えれば .Dq set callback コマンドで CBCP を設定すると .Nm が CBCP フェーズでコールバック要求を行わなくなります。 そうでない場合、 .Nm は与えられた電話番号 .Ar number を使おうとします。 .Pp サーバモード .Pq Fl direct では、 .Dq \&* を使わない限り .Nm はクライアントがこれらの番号の 1 つを使うことを主張します。 .Dq \&* を使った場合には、クライアントが番号を指定するものと想定します。 .Pp クライアントモードでは .Nm は与えられた番号 (そのうち接続相手と合意可能なもの) を使用しようとします。 .Dq \&* が指定された場合には、 .Nm 接続相手が番号を指定するものと想定します。 .It set cd Oo .No off| Ns Ar seconds Ns Op !\& .Oc 通常、オープンしたデバイスのタイプにより、 .Nm はキャリアの存在をチェックします。 .Bl -tag -width XXX -offset XXX .It 端末デバイス ログインスクリプト完了後、1 秒間キャリアがチェックされます。 このパラメータが設定されていない場合、 デバイスがキャリアをサポートしていない (ほとんどの .Dq laplink ヌルモデムケーブルの場合がそうです) と .Nm は仮定し、この事実をログに取って、キャリアのチェックを止めます。 .Pp 仮想端末 (pty) は TIOCMGET ioctl をサポートしていないため、 デバイスが仮想端末であることを検知した場合、 端末デバイスはすべてのキャリア検出をオフにします。 .It ISDN (i4b) デバイス 6 秒間、1 秒ごとに 1 回キャリアの検出を行ないます。 6 秒後にキャリアが設定されない場合、接続の試みは失敗したと見なされ、 デバイスはクローズされます。 i4b デバイスの場合、キャリアが常に要求されます。 .It PPPoE (netgraph) デバイス 5 秒間、1 秒ごとに 1 回キャリアの検出を行ないます。 5 秒後にキャリアが設定されない場合、接続の試みは失敗したと見なされ、 デバイスはクローズされます。 PPPoE デバイスの場合、キャリアが常に要求されます。 .El .Pp 他のすべてのデバイスタイプはキャリアをサポートしていません。 デバイスをオープンするときにキャリアを設定すると警告が出ます。 .Pp モデムによっては、接続が確立してからキャリア信号線がアサートされるまで 1 秒以上かかるものがあります。この遅れを増やせない場合、 .Nm はそのデバイスがキャリアをアサートできないと見なすので、 .Nm はリンクのドロップを検出できないことになります。 .Pp .Dq set cd コマンドはデフォルトのキャリアの動作を上書きします。 .Ar seconds は、ダイヤルスクリプトが完了してからキャリアが利用可能か判断する前に、 .Nm が待つべき秒数の上限を指定します。 .Pp .Dq off が指定されると、 .Nm はデバイスのキャリアを確認しません。そうでない場合、 キャリアが検出されるか .Ar seconds の秒数が経過するまで、 .Nm はログインスクリプトへは進みません。このとき、 .Ar seconds の秒数が経過した時点で、 .Nm はデバイスがキャリアを設定できないと想定します。 .Pp 引数を与えない場合、キャリア設定はデフォルトの値に戻ります。 .Pp .Ar seconds の直後にエクスクラメーションマーク .Pq Dq !\& がある場合、 .Nm はキャリアを .Em 要求 します。 .Ar seconds 秒後にキャリアが検知されないと、リンクは切断されます。 .It set choked Op Ar timeout これは .Nm がすべての未送出パケットを破棄する前に 送出キュー詰まりを保持する秒数を設定します。 .Ar timeout が 0 以下もしくは .Ar timeout が指定されない場合、デフォルト値の .Em 120 秒 に設定されます。 .Pp 送出キュー詰まりは .Nm がローカルネットワークから特定の数の送出パケットを読み込んだが、 リンク失敗 (接続相手がビジーなど) のためにデータを送れない場合に 発生します。 .Nm はパケットを無限には読み込みません。代りに .Em 30 パケット (マルチリンクモードでは .Em 30 No + .Em nlinks No * .Em 2 パケット) まで読み込み、 .Ar timeout 秒経過するか、1 つ以上のパケットが送られるまで ネットワークインタフェースの読み込みを停止します。 .Pp .Ar timeout 秒が経過すると、すべての未送出パケットは破棄されます。 .It set ctsrts|crtscts on|off ハードウェアフロー制御をセットします。 デフォルトではハードウェアフロー制御は .Ar on です。 .It set deflate Ar out-winsize Op Ar in-winsize DEFLATE アルゴリズムの、 デフォルトの出力ウィンドウサイズと入力ウィンドウサイズを設定します。 .Ar out-winsize および .Ar in-winsize は、 .Em 8 から .Em 15 までの値をとる必要があります。 .Ar in-winsize が指定されると、 .Nm はこのウィンドウサイズの使用を強要し、相手が他の値を示しても受け入れません。 .It set dns Op Ar primary Op Ar secondary .Dq accept dns コマンドで使用される、DNS 上書きを設定します。 詳細については前述の .Dq accept コマンドの記述を参照してください。本コマンドは .Dq enable dns を使用して要求される IP 番号には影響を与えません。 .It set device|line Xo .Ar value Ns No ... .Xc .Nm が使用するデバイスを、指定された .Dq value に設定します。 .Pp すべての ISDN デバイスとシリアルデバイスの名前は .Pa /dev/ から始まることが仮定されています。 ISDN デバイスは通常 .Pa i4brbchX という名前であり、シリアルデバイスは通常 .Pa cuaXX という名前です。 .Pp .Dq value が .Pa /dev/ から始まらない場合、エクスクラメーションマーク .Pq Dq !\& から始めるか、 .No PPPoE: Ns Ar iface Ns Xo .Op \&: Ns Ar provider Ns .Xc -の形式であるか、 +の形式 ( +.Xr netgraph 4 +が有効なシステム上) であるか、 .Sm off .Ar host : port /tcp|udp .Sm on の形式である必要があります。 .Pp エクスクラメーションマークで始まる場合、 デバイス名の残りはプログラム名として扱われ、 そのデバイスがオープンされるときにそのプログラムが実行されます。 標準入出力およびエラーは .Nm にフィードバックされ、それらが通常デバイスであるかのように読み書きされます。 .Pp .No PPPoE: Ns Ar iface Ns Xo .Op \&: Ns Ar provider Ns .Xc 指定が与えられる場合、 .Nm は、指定された .Ar iface インタフェースを使用して .Em PPP オーバイーサネット接続を作成しようとします。 この際 .Xr netgraph 4 を使用します。 .Xr netgraph 4 が使用不能の場合、 .Nm は .Xr kldload 2 を使用してロードしようとします。 これが失敗する場合には、OpenBSD で利用できる .Xr pppoe 8 のような外部プログラムを使用する必要があります。 与えられた .Ar provider は、PPPoE Discovery Initiation (PADI) パケット中で サービス名として渡されます。 provider が与えられないと、空の値が使用されます。 さらなる詳細は .Xr netgraph 4 と .Xr ng_pppoe 8 を参照してください。 .Pp .Ar host Ns No : Ns Ar port Ns Oo .No /tcp|udp .Oc 指定が与えられる場合、 .Nm は、指定された .Ar host の指定された .Ar port と接続しようとします。 .Dq /tcp または .Dq /udp のサフィックスがない場合、デフォルトは .Dq /tcp となります。 詳細は上述の .Em PPP オーバ TCP と PPP オーバ UDP の節を参照してください。 .Pp 複数の .Dq value を指定した場合、 .Nm は成功するか全デバイスについて実行し終るまで、順番にオープンを試みます。 .It set dial Ar chat-script 相手へダイヤルする際に使用されるチャットスクリプトを指定します。 後述の .Dq set login コマンドも参照してください。 チャットスクリプトのフォーマットの詳細については、 .Xr chat 8 と設定ファイルの例を参照してください。 次の特殊な .Sq value をチャットスクリプトに指定可能です: .Bl -tag -width 2n .It \ec .Sq 送信 文字列の最後の文字として使用した場合、 改行を追加してはならないことを意味します。 .It \ed チャットスクリプトがこのシーケンスに出会うと、2 秒待ちます。 .It \ep チャットスクリプトがこのシーケンスに出会うと、1/4 秒待ちます。 .It \en 改行文字と置き換えられます。 .It \er 復改文字と置き換えられます。 .It \es 空白文字と置き換えられます。 .It \et タブ文字と置き換えられます。 .It \eT 現在の電話番号と置き換えられます (後述の .Dq set phone 参照)。 .It \eP 現在の .Ar authkey 値と置き換えられます (前述の .Dq set authkey 参照)。 .It \eU 現在の .Ar authname 値と置き換えられます (前述の .Dq set authname 参照)。 .El .Pp 2 つのパーザがこれらのエスケープシーケンスを検査することに注意してください。 .Sq チャットのパーザ にエスケープ文字を見せるには、 .Sq コマンドパーザ からエスケープする必要があります。 つまり、2 つのエスケープを使用する必要があります。例えば次のようにします: .Bd -literal -offset indent set dial "... ATDT\\\\T CONNECT" .Ed .Pp チャットスクリプトから外部コマンドを実行することもできます。 そうするためには、 受信待ち文字列または送信文字列の最初の文字をエクスクラメーションマーク .Pq Dq !\& にします。 リテラルのエクスクラメーションマークが必要な場合には、二重 .Dq !!\& にすれば、単一のリテラル .Dq !\& として扱われます。 コマンドが実行されると、標準入力と標準出力がオープンデバイス ( .Dq set device 参照) に向けられ、標準エラー出力が .Nm に読まれて受信待ち文字列もしくは送信文字列に置き換えられます。 .Nm が対話モードで実行されている場合、ファイルデスクリプタ 3 は .Pa /dev/tty に接続されます。 .Pp 例えば (読み易さのために折り返しています); .Bd -literal -offset indent set login "TIMEOUT 5 \\"\\" \\"\\" login:--login: ppp \e word: ppp \\"!sh \\\\-c \\\\\\"echo \\\\-n label: >&2\\\\\\"\\" \e \\"!/bin/echo in\\" HELLO" .Ed .Pp は次のチャットシーケンスになります (ダイヤル前の .Sq set log local chat コマンドによる出力): .Bd -literal -offset indent Dial attempt 1 of 1 dial OK! Chat: Expecting: Chat: Sending: Chat: Expecting: login:--login: Chat: Wait for (5): login: Chat: Sending: ppp Chat: Expecting: word: Chat: Wait for (5): word: Chat: Sending: ppp Chat: Expecting: !sh \\-c "echo \\-n label: >&2" Chat: Exec: sh -c "echo -n label: >&2" Chat: Wait for (5): !sh \\-c "echo \\-n label: >&2" --> label: Chat: Exec: /bin/echo in Chat: Sending: Chat: Expecting: HELLO Chat: Wait for (5): HELLO login OK! .Ed .Pp 複数レベルのネストについて、 エスケープ文字の使用方法に (再度) 注意してください。 ここでは、4 つのパーザが動作してます。 1 番目は、オリジナルの行をパーズし、3 つの引数として読みます。 2 番目は、第 3 引数を 11 個の引数として読みます。 ここで、 .Dq \&- 記号がエスケープされていることが重要です。 そうでなければパーザは、 受信待ち-送信-受信待ちのシーケンスとして見てしまいます。 .Dq !\& 文字を見付けると、実行パーザは最初のコマンドを 3 つの引数として読み、 .Xr sh 1 自身が .Fl c 以降の引数を展開します。 我々は出力をモデムに送り返したいので、 1 番目の例では出力をファイルデスクリプタ 2 (stderr) にリダイレクトして .Nm 自身に送信および記録させ、 2 番目の例では単に stdout に出力して直接モデムに出力させます。 .Pp もちろん全体を、組み込みのものではなく外部の .Dq chat コマンドに実行させることが可能です。 良い代替方法については .Xr chat 8 を参照してください。 .Pp 実行される外部コマンドは、 .Dq !bg コマンドと同様に、特殊語の展開対象となります。 .It set enddisc Op label|IP|MAC|magic|psn value このコマンドは、ローカル終点の選択値を設定します。 LCP ネゴシエーションの前に設定された場合であり、 .Dq disable enddisc コマンドを使用していない場合、 .Nm は LCP 終点選択値オプションを使用して、相手に情報を送ります。 次の選択値を設定可能です。 .Bl -tag -width indent .It Li label 現在のラベルが使用されます。 .It Li IP 当方のローカル IP 番号を使用します。 LCP は IPCP より前にネゴシエートされますので、 IPCP 層が後からこの値を変更することが可能です。 その場合、手動でリセットしない限り、終点の選択値は古い値のままとなります。 .It Li MAC 前述の .Ar IP オプションに似ていますが、 ローカル IP 番号に関係する MAC アドレスが使用される点が異なります。 ローカル IP 番号がどのイーサネットインタフェースにも存在しない場合、 本コマンドは失敗します。 .Pp ローカル IP 番号のデフォルトは、 マシンホスト名がなんであれ、その名前になりますので、通常 .Dq set enddisc mac を .Dq set ifaddr コマンドよりも先に実行します。 .It Li magic 20 桁の乱数が使用されます。 マジックナンバを使用するときには注意が必要です。 .Nm の再開や別の .Nm を使ったリンク作成においては、別のマジックナンバを使用するため、 同じバンドルに属すとは相手に認識されないのです。 このため、 .Fl direct 接続では使えません。 .It Li psn Ar value 指定された .Ar value が使用されます。 .Ar value は、絶対的な公衆スイッチネットワーク番号の先頭に 国コードを付けたものであるべきです。 .El .Pp 引数が与えられない場合、終点の選択値はリセットされます。 .It set escape Ar value... このオプションは前述の .Dq set accmap オプションに似ています。 リンクを経由する時に .Sq エスケープ される文字を指定するために使用します。 .It set filter dial|alive|in|out Ar rule-no Xo .No permit|deny|clear| Ns Ar rule-no .Op !\& .Oo Op host .Ar src_addr Ns Op / Ns Ar width .Op Ar dst_addr Ns Op / Ns Ar width -.Oc [ tcp|udp|ospf|igmp|icmp Op src lt|eq|gt Ar port +.Oc [ tcp|udp|ospf|ipip|igmp|icmp Op src lt|eq|gt Ar port .Op dst lt|eq|gt Ar port .Op estab .Op syn .Op finrst .Op timeout Ar secs ] .Xc .Nm は 4 つのフィルタセットをサポートします。 .Em alive フィルタは接続を活性状態に保つパケットを指定します - アイドルタイマをリセットします。 .Em dial フィルタは、 .Fl auto モード時に .Nm にダイヤルさせるパケットを指定します。 .Em in フィルタは、マシンに入力可能なパケットを指定します。 .Em out フィルタは、マシンから出力可能なパケットを指定します。 .Pp フィルタリングが行われるのは、 出力パケットでは NAT エンジンによる IP 変更前であり、 入力パケットでは NAT エンジンによる IP 変更後です。 デフォルトでは、すべての空のフィルタセットは全パケットの通過を許可します。 ルールは .Ar rule-no に従って順番に処理されます (ルール番号を .Ar action に指定してスキップする場合を除きます)。 各セットに対し 40 までのルールを指定可能です。 指定されるセットにおけるどのルールにもマッチしないパケットは破棄されます。 .Em in と .Em out のフィルタでは、パケットをドロップすることを意味します。 .Em alive フィルタでは、アイドルタイマをリセットしないことを意味します (これは .Ar in Ns No / Ns Ar out フィルタが .Dq timeout 付きである場合でもです)。 .Em dial フィルタではダイヤルさせることにはならないことを意味します。 ダイヤルを引き起こさないパケットは、 キューされるのではなく、捨てられることに注意してください。 上述の .Sx パケットのフィルタリング の節を参照してください。 .It set hangup Ar chat-script デバイスを閉じる前にこれをリセットする時に使用する、 チャットスクリプトを指定します。 通常は不要であるべきですが、 閉じる時に自己を正しくリセットできないデバイスに対して使用できます。 .It set help|? Op Ar command 利用可能な set コマンドのまとめを表示するか、 .Ar command が指定されると、コマンドの使用方法を表示します。 .It set ifaddr Oo Ar myaddr Ns .Op / Ns Ar \&nn .Oo Ar hisaddr Ns Op / Ns Ar \&nn .Oo Ar netmask .Op Ar triggeraddr .Oc Oc .Oc このコマンドは、IPCP ネゴシエーションの間使用される IP アドレスを指定します。 アドレスのフォーマットは次の通りです。 .Pp .Dl a.b.c.d/nn .Pp ここで .Dq a.b.c.d は希望する IP アドレスであり、 .Ar nn はこのうち何ビットが有効であるかを示します。 .No / Ns Ar nn が省略された場合、デフォルトの .Dq /32 になります。 ただし IP アドレスが 0.0.0.0 である場合には、マスクのデフォルトは .Dq /0 です。 .Pp 相手に動的な IP 番号を割り当てたい場合、 .Ar hisaddr に IP 番号の範囲として .Bd -ragged -offset indent .Ar \&IP Ns Oo \&- Ns Ar \&IP Ns Xo .Oc Ns Oo , Ns Ar \&IP Ns .Op \&- Ns Ar \&IP Ns .Oc Ns ... .Xc .Ed .Pp のフォーマットを指定できます。例えば: .Pp .Dl set ifaddr 10.0.0.1 10.0.1.2-10.0.1.10,10.0.1.20 .Pp は .Dq 10.0.0.1 のみをローカル IP 番号としてネゴシエートしますが、 指定された 10 個の IP 番号から 相手に割り当てを行います。 相手がこれらの番号のうちの 1 つを要求し、この番号が未使用な場合には、 .Nm は相手の要求を認めます。 相手がリンクを再確立して前回割り当てていた IP 番号を使用したい場合に有用です (既存の TCP と UDP の接続を保存します)。 .Pp 相手が要求した IP 番号が範囲外もしくは使用中の場合、 .Nm は範囲内の未使用 IP 番号をランダムに指示します。 .Pp .Ar triggeraddr が指定された場合、この値が .Ar myaddr の代りに IPCP ネゴシエートで使用されます。 ただし、 .Ar myaddr の範囲のアドレスのみ受け入れられます。 これが有用なのは、相手が .Dq 0.0.0.0 を要求しない限り IP アドレスを割り当てようとしない .Dv PPP 実装とネゴシエートするときです。 .Pp .Fl auto モードでは設定ファイルの .Dq set ifaddr 行を読んだ直後に .Nm がインタフェースを構成することに注意してください。 他のモードではこれらの値は IPCP ネゴシエーションで使用され、 IPCP 層がアップするまでこれらのインタフェースは構成されません。 .Pp .Po PAP か CHAP が .Dq enable である場合 .Pc クライアントが自己証明をした後では、 .Ar HISADDR 引数は .Pa ppp.secret ファイルの第 3 引数で上書きされうることに注意してください。 .Sx 内向き接続の認証 の節を参照してください。 .Pp どの場合でも、インタフェースが既に構成されている場合には、 .Nm はインタフェースの IP 番号を保存して、 既にバインドされているソケットが正しいままであるようにします。 .It set ifqueue Ar packets どのリンクへもデータが送信できない状態のとき、 .Nm がトンネルインタフェースから読み込むパケット数の最大値を 指定します。 .Nm が利用できるリンクの束よりもトンネルインタフェースがはるかに 高速となりそうな場合に、送出データのフロー制御のために このキューの制限は必要になります。 .Ar packets にリンクの数よりも小さな値を設定した場合、 その設定に関わらず .Nm はリンクの数までは読み込みます。これにより、遅延の問題が回避されます。 .Pp .Ar packets のデフォルトの値は .Dq 30 です。 .It set ccpretry|ccpretries Oo Ar timeout .Op Ar reqtries Op Ar trmtries .Oc .It set chapretry|chapretries Oo Ar timeout .Op Ar reqtries .Oc .It set ipcpretry|ipcpretries Oo Ar timeout .Op Ar reqtries Op Ar trmtries .Oc .It set lcpretry|lcpretries Oo Ar timeout .Op Ar reqtries Op Ar trmtries .Oc .It set papretry|papretries Oo Ar timeout .Op Ar reqtries .Oc これらのコマンドは .Nm が有限状態機械 (Finite State Machine; FSM) に要求パケットを送る前に 待つ秒数を指定します。 .Ar timeout のデフォルトは、全 FSM において 3 秒です (ほとんどの場合十分です)。 .Pp .Ar reqtries を指定すると、 相手から応答を受信しなくても諦めるまでに設定要求を作成する回数を、 .Nm に指示します。 デフォルトの試行回数は、CCP, LCP, IPCP の場合 5 回であり、 PAP と CHAP の場合 3 回です。 .Pp .Ar trmtries を指定すると、 相手の応答を待つことを諦めるまでに終了要求を作成する回数を、 .Nm に指示します。 デフォルトの試行回数は 3 回です。 認証プロトコルは終了されませんので、 PAP や CHAP に対して指定することは不正です。 .Pp 合意できない相手とのネゴシエーションを避けるために、 どのようなネゴシエーションセッションであっても諦めたり層をクローズする前には、 .Nm は最大で .Ar reqtries の設定値の 3 倍までのみ送信します。 .It set log Xo .Op local .Op +|- Ns .Ar value Ns No ... .Xc このコマンドにより現在のログレベルを修正できます。 詳細はログ機能の節を参照してください。 .It set login chat-script この .Ar chat-script はダイヤルスクリプトを補います。 もし両方が指定された場合、ダイヤルスクリプトの後で、 ログインスクリプトが実行されます。 ダイヤルスクリプト中で使用可能なエスケープシーケンスはここでも使用可能です。 .It set logout Ar chat-script このコマンドは、 ハングアップスクリプトが呼ばれる前にログアウトのために使用される、 チャットスクリプトを指定します。 通常では必要ないでしょう。 .It set lqrperiod Ar frequency このコマンドは、 .Em LQR または .Em ECHO LQR のパケットが送信される頻度 .Ar frequency を秒で指定します。デフォルトは 30 秒です。 相手に LQR 要求を送りたい場合には、 .Dq enable lqr コマンドもまた使用する必要があります。 .It set mode Ar interactive|auto|ddial|background 指定したリンクにおけるモード .Sq mode を変更できます。通常マルチリンクモードでのみ有用ですが、 単一リンクモードでも使用可能です。 .Pp .Sq direct または .Sq dedicated のリンクを変更することはできません。 .Pp 注: コマンド .Dq set mode auto を発行し、ネットワークアドレス変換が enable にされていた場合、後で .Dq enable iface-alias を行うと便利です。 .Nm が必要なアドレス変換を行うようにすることにより、 相手が当方に新しい (動的な) IP アドレスを割り当てたとしても、 リンクがアップすると接続のトリガとなるプロセスが接続できるようにします。 .It set mppe {40|56|128} このオプションは、鍵の長さを選択します。デフォルトは 128 です。 .It set mrru Op Ar value このオプションを設定すると、 マルチリンクプロトコルまたは MP としても知られる、 マルチリンク PPP ネゴシエーションを有効にします。 MRRU (Maximum Reconstructed Receive Unit) の値にはデフォルトはありません。 引数を指定しないと、マルチリンクモードは無効にされます。 .It set mru Op Ar value デフォルトの MRU (最大受信単位; Maximum Receive Unit) は 1500 です。 この値を増加させた場合、相手は MTU を増加させても *かまいません*。 デフォルトの MRU より減らすことは意味がありません。 なぜなら、 .Em PPP プロトコルでは少なくとも 1500 オクテットのパケットを 受信できなければ *ならない* からです。 引数が指定されないと、1500 が仮定されます。 .It set mtu Op Ar value デフォルトの MTU は 1500 です。 ネゴシエーション時に、(296 バイト未満でなければ) 相手が望むいかなる MRU および MRRU も受け付け可能です。 MTU が設定されると、 .Nm は .Ar value よりも小さい MRU/MRRU の値を受け付けなくなります。 ネゴシエーションが完了すると、 相手がより大きな MRU/MRRU を要求していたとしても、 インタフェースに対して MTU が割り当てられます。 当方のパケットサイズを制限するのに有用です (よりよくバンド幅を共有できるようになりますが、 ヘッダデータが増えるというコストがかかります)。 .Pp .Ar value を指定しないと、1500 または相手が要求した値が使用されます。 .It set nbns Op Ar x.x.x.x Op Ar y.y.y.y このオプションは、相手の要求によって返される Microsoft NetBIOS ネームサーバの値を設定します。 値を指定しないと、 .Nm はそのような要求を拒否するようになります。 .It set openmode active|passive Op Ar delay デフォルトでは、 .Ar openmode は常に、1 秒の .Ar delay をもって .Ar active となります。 この場合、 .Nm は回線が設定されてから 1 秒が経過したなら いつでも LCP/IPCP/CCP のネゴシエーションを開始します。 相手がネゴシエーションを開始するのを待ちたい場合は、値 .Dq passive を使用します。 直ちにもしくは 1 秒以上待ってからネゴシエーションを開始したい場合、 .Ar delay を秒単位で指定します。 .It set parity odd|even|none|mark 回線のパリティを設定できます。デフォルト値は .Ar none です。 .It set phone Ar telno Ns Xo .Oo \&| Ns Ar backupnumber .Oc Ns ... Ns Oo : Ns Ar nextnumber .Oc Ns ... .Xc ダイヤルおよびログインのチャットスクリプトで使用される \\\\T 文字列が 置き換えられる電話番号を指定できます。 複数の電話番号をパイプ .Pq Dq \&| もしくはコロン .Pq Dq \&: で区切って指定可能です。 .Pp パイプの後の番号がダイヤルされるのは、 直前の番号へのダイヤルもしくはログインのスクリプトが失敗した場合のみです。 回線の切断の理由にかかわらず、 コロンで区切られた番号は順番に試行されます。 .Pp 複数の番号を指定した場合、接続が確立するまで .Nm はこのルールに基づいてダイヤルします。 再試行の最大値は、後述の .Dq set redial で指定します。 .Fl background モードでは各番号は最大 1 回試行されます。 .It set Op proc Ns Xo .No title Op Ar value .Xc .Xr ps 1 が表示する現在のプロセスタイトルを、 .Ar value に従って変更します。 .Ar value が指定されないと、元のプロセスタイトルが回復されます。 シェルコマンドが行うすべての語置換 (前述の .Dq bg コマンドを参照してください) は、ここでも行われます。 .Pp プロセスタイトル中に USER が必要な場合、 .Dq set proctitle コマンドは .Pa ppp.linkup 中に登場する必要があることに注意してください。 .Pa ppp.conf が実行されているときには、分からないからです。 .It set radius Op Ar config-file このコマンドは RADIUS サポートを (組み込まれていれば) 有効にします。 .Ar config-file は、 .Xr radius.conf 5 に記述されている radius クライアント設定ファイルを参照します。 PAP または CHAP が .Dq enable にされている場合、 .Nm は .Em \&N Ns No etwork .Em \&A Ns No ccess .Em \&S Ns No erver として振舞い、設定されている RADIUS サーバを使用して認証し、 .Pa ppp.secret ファイルやパスワードデータベースによる認証は行いません。 .Pp PAP と CHAP のいずれも有効になっていない場合、 .Dq set radius は効果がありません。 .Pp .Nm は、RADIUS 応答中の、次の属性を使用します: .Bl -tag -width XXX -offset XXX .It RAD_FRAMED_IP_ADDRESS 相手の IP アドレスは指定された値に設定されました。 .It RAD_FRAMED_IP_NETMASK tun インタフェースのネットマスクは指定された値に設定されました。 .It RAD_FRAMED_MTU 指定された MTU が LCP ネゴシエーションで合意された相手の MRU より 小さい場合であり、 *かつ* 設定された MTU のいずれよりも小さい場合 ( .Dq set mru コマンド参照)、 tun インタフェースの MTU は指定した値に設定されます。 .It RAD_FRAMED_COMPRESSION 受信した圧縮タイプが .Dq 1 の場合、 .Dq disable vj 設定コマンドが指定されていたとしても、IPCP ネゴシエーションにおいて .Nm は VJ 圧縮を要求します。 .It RAD_FRAMED_ROUTE 受信した文字列は、 .Ar dest Ns Op / Ns Ar bits .Ar gw .Op Ar metrics という書式であると期待します。 指定した metrics は無視されます。 .Dv MYADDR と .Dv HISADDR は、 .Ar dest と .Ar gw の正当な値として理解されます。 .Dq default を .Ar dest に使用可能であり、デフォルト経路を指定します。 .Dq 0.0.0.0 は、 .Ar dest に対する .Dq default と同じであると解釈され、 .Ar gw に対する .Dv HISADDR と同じであると解釈されます。 .Pp 例えば、戻り値 .Dq 1.2.3.4/24 0.0.0.0 1 2 -1 3 400 は 1.2.3.0/24 ネットワークへは .Dv HISADDR を介するという経路表エントリになり、 戻り値 .Dq 0.0.0.0 0.0.0.0 または .Dq default HISADDR は .Dv HISADDR 行きのデフォルト経路になります。 .Pp すべての RADIUS の経路は、 すべてのスティッキーな経路が適用された後で適用されます。 これにより、RADIUS の経路が、設定済みの経路に優先します。 これは、 .Dv MYADDR または .Dv HISADDR というキーワードを含まない RADIUS の経路にもあてはまります。 .Pp .El RADIUS サーバから受信した値は、 .Dq show bundle を使用して見られます。 .It set reconnect Ar timeout ntries (CD の喪失もしくは LQR の失敗により) 予想外の回線切断となった場合、 指定した .Ar timeout の後に接続が再確立されます。 回線は最大 .Ar ntries 回、再接続されます。 .Ar ntries のデフォルトは 0 です。 .Ar timeout に .Ar random を指定すると、1 から 30 秒の間の任意時間の停止となります。 .It set recvpipe Op Ar value ルーティングテーブルの RECVPIPE 値を設定します。 最適な値は、MTU 値を 2 倍した値を丁度越える値です。 .Ar value が指定されないまたは 0 の場合、デフォルトの、カーネルが制御する値を使用します。 .It set redial Ar secs Ns Xo .Oo + Ns Ar inc Ns .Op - Ns Ar max Ns .Oc Ns Op . Ns Ar next .Op Ar attempts .Xc .Nm に .Ar attempts 回のリダイヤルを指示できます。 1 より大きな数を指定した場合 (前述の .Ar set phone 参照)、 各番号にダイヤルする前に、 .Ar next だけ停止します。 最初の番号に戻ってダイヤル開始する前に .Ar secs だけ停止します。リテラル値 .Dq Li random を .Ar secs および .Ar next のところで使用でき、1 から 30 秒の間の任意時間の停止となります。 .Pp .Ar inc が指定されると、 .Nm が新規番号を試すたびに、この値が .Ar secs に加えられます。 .Ar secs が増加されるのは、最大 .Ar max 回だけです。 .Ar max のデフォルト値は 10 です。 .Ar attempts が経過した後でも .Ar secs の遅延は効果があるので、 すぐに手動でダイヤルしても何も起ってないように見えるかもしれません。 すぐにダイヤルする必要がある場合、 .Dq !\& を .Dq open キーワードの直後に付けます。 更なる詳細については、前述の .Dq open の記述を参照してください。 .It set sendpipe Op Ar value ルーティングテーブルの SENDPIPE 値を設定します。 最適な値は、MTU 値を 2 倍した値を丁度越える値です。 .Ar value が指定されないまたは 0 の場合、デフォルトの、カーネルが制御する値を使用します。 .It "set server|socket" Ar TcpPort Ns No \&| Ns Xo -.Ar LocalName Ns No |none +.Ar LocalName Ns No |none|open|closed .Op password Op Ar mask .Xc このコマンドは .Nm に指定したソケットもしくは .Sq 診断ポート にてコマンド接続の入力を listen するように指示します。 .Pp 語 .Ar none は .Nm に既に存在するソケットを閉じさせ、ソケット設定を消させます。 +語 +.Dq open +は +.Nm +にポートを再度オープンさせます。 +語 +.Dq closed +は +.Nm +にオープンしているポートを閉じさせます。 .Pp ローカルドメインソケットを指定したい場合、 .Ar LocalName に絶対ファイル名を指定します。そうしないと、TCP ポートの名前もしくは番号 であると解釈されます。 ローカルドメインソケットに使用される 8 進 umask を指定可能です。 umask の詳細については .Xr umask 2 を参照してください。TCP ポート名がどのように変換されるかについては .Xr services 5 を参照してください。 .Pp このソケットにクライアントが接続するときに使用されねばならないパスワードも 指定可能です ( 前述の .Dq passwd 変数を使用します)。 パスワードが空文字列として指定される場合、 クライアントが接続するときにパスワードを必要とされません。 .Pp ローカルドメインソケットが指定される場合、ソケット名中の最初の .Dq %d シーケンスは現在のインタフェースユニット番号で置換されます。 複数接続のために同一のプロファイルを使用したい場合に便利です。 .Pp 同様の方法で TCP ソケットの前に .Dq + 文字を付けることができます。 この場合、現在のインタフェースユニット番号が、ポート番号に加算されます。 .Pp .Nm をサーバソケットと共に使用する場合、通信機構として .Xr pppctl 8 コマンドを使用することが好ましいです。 現在 .Xr telnet 1 も使用可能ですが、将来リンク暗号化が実装されるかもしれませんので、 .Xr telnet 1 は避けてください。 .Pp 注: +.Dv SIGUSR1 +と .Dv SIGUSR2 -も、診断ソケットと相互に作用します。 +は、診断ソケットと相互に作用します。 .It set speed Ar value シリアルデバイスの速度を指定します。 速度指定が .Dq sync の場合、 .Nm はデバイスを同期デバイスとして扱います。 .Pp デバイスタイプによっては、 同期または非同期のいずれかであることが分るものがあります。 これらのデバイスでは、不正な設定を上書きして、 この結果に対する警告を記録します。 .It set stopped Op Ar LCPseconds Op Ar CCPseconds このオプションが指定されると、 指定した FSM (有限状態機械; Finite State Machine) が停止状態になってから .Dq seconds で指定した秒数だけ停止したのち、 .Nm はタイムアウトします。 このオプションは、 相手が終了要求を送り我々が終了確認応答を送ったにもかかわらず 実際には接続を閉じない場合に、有用かもしれません。また、 .Dq set openmode passive を使用した場合に相手が指定時間内に Configure Request を送らないことを タイムアウト検出する場合には、便利かもしれません。 .Dq set log +lcp +ccp を使用すると、 .Nm は適切な状態遷移を記録します。 .Pp デフォルト値は 0 であり、 停止状態による .Nm のタイムアウトは発生しません。 .Pp この値は openmode の遅延 (上述の .Dq set openmode 参照) より小さくなってはなりません。 .It set timeout Ar idleseconds Op Ar mintimeout このコマンドはアイドルタイマの値を指定します。 更なる詳細については .Sx アイドルタイマの設定 というタイトルの節を参照してください。 .Pp .Ar mintimeout が指定された場合、 最短でも指定された秒数だけリンクがアップしていないと、 .Nm はアイドルアウトしません。 .It set urgent Xo .Op tcp|udp|none .Oo Op +|- Ns .Ar port .Oc No ... .Xc このコマンドは、データ転送時に .Nm が優先するポートを制御します。 デフォルトの優先 TCP ポートは、ポート 21 (ftp control), 22 (ssh), 23 (telnet), 513 (login), 514 (shell), 543 (klogin), 544 (kshell) です。 優先 UDP ポートは、デフォルトではありません。 詳細は .Xr services 5 を参照してください。 .Pp .Dq tcp も .Dq udp も指定しないと、 .Dq tcp が仮定されます。 .Pp .Ar port を指定しないと、優先ポートリストがクリアされます ( .Dq tcp または .Dq udp を指定すると、そのリストのみがクリアされます)。 最初の .Ar port 引数にプラス .Pq Dq \&+ またはマイナス .Pq Dq \&- のプレフィックスを付けた場合、現在のリストが修正されますが、 そうでない場合には、再割り当てされます。 プラスのプレフィックス付きまたはプレフィックス無しの .Ar port はリストに追加され、マイナスのプレフィックス付きの .Ar port はリストから削除されます。 .Pp .Dq none が指定された場合、優先ポートリスト全体が無効になり、 .Dv IPTOS_LOWDELAY パケットも特別扱いされなくなります。 .It set vj slotcomp on|off このコマンドは .Nm に VJ スロット圧縮をネゴシエートするか否かを指示します。 デフォルトではスロット圧縮は .Ar on です。 .It set vj slots Ar nslots このコマンドは最初の .Ar slots 番号を指定します。 .Nm は VJ 圧縮が enable されている時には、 これを使用して相手とネゴシエートします (前述の .Sq enable コマンドを参照してください)。 デフォルト値は 16 です。 .Ar nslots は .Ar 4 以上 .Ar 16 以下の値です。 .El .Pp .It shell|! Op Ar command .Ar command が指定されない場合、 .Dv SHELL 環境変数で指定されるシェルが起動されます。 そうでなければ指定された .Ar command が実行されます。 語の置換は、前述の .Dq !bg コマンドと同様の方法で行われます。 .Pp 文字 ! を使用する場合、コマンドとの間に空白が必要です。 このコマンドはフォアグラウンドで実行されることに注意してください - .Nm はプロセスが終了するまでは実行を続けません。 バックグラウンドでコマンド処理を行いたい場合には、 .Dv bg コマンドを使用してください。 .It show Ar var このコマンドを使用して、次の内容を確認できます: .Bl -tag -width 2n .It show bundle 現在のバンドル設定を表示します。 .It show ccp 現在の CCP 圧縮統計を表示します。 .It show compress 現在の VJ 圧縮統計を表示します。 .It show escape 現在のエスケープ文字を表示します。 .It show filter Op Ar name 指定したフィルタの現在のルールをリストします。 .Ar name を指定しないと、全フィルタが表示されます。 .It show hdlc 現在の HDLC 統計を表示します。 .It show help|? 利用可能な show コマンドのまとめを表示します。 .It show iface 現在のインタフェース情報 .Po Dq iface show と同じです .Pc を表示します。 .It show ipcp 現在の IPCP 統計を表示します。 .It show layers 現在使用中のプロトコル層を表示します。 .It show lcp 現在の LCP 統計を表示します。 .It show Op data Ns Xo .No link .Xc 高レベルリンク情報を表示します。 .It show links 利用可能な論理リンクのリストを表示します。 .It show log 現在のログ値を表示します。 .It show mem 現在のメモリ統計を表示します。 .It show physical 現在の下位レベルリンク情報を表示します。 .It show mp マルチリンク情報を表示します。 .It show proto 現在のプロトコルの総計を表示します。 .It show route 現在の経路表を表示します。 .It show stopped 現在の stopped タイムアウト値を表示します。 .It show timer アクティブアラームタイマを表示します。 .It show version .Nm の現在のバージョン番号を表示します。 .El .Pp .It term 端末モードに移行します。 キーボードからタイプした文字はデバイスに送られます。 デバイスから読んだ文字はスクリーンに表示されます。 .Nm の相手が認識された時には、 .Nm は自動的にパケットモードを有効にし、コマンドモードに戻ります。 .El .Pp .Sh 更に詳細について .Bl -bullet .It 設定ファイルの例を読んでください。良い情報源です。 .It 何が利用できるかについては、 .Dq help , .Dq nat \&? , .Dq enable \&? , .Dq set \&? , .Dq show \&? コマンドを使って、オンライン情報を取得してください。 .It 次の URL に有用な情報があります: .Bl -bullet -compact .It http://www.FreeBSD.org/FAQ/userppp.html .It http://www.FreeBSD.org/handbook/userppp.html .El .Pp .El .Pp .Sh 関連ファイル .Nm は、4 つのファイル .Pa ppp.conf , .Pa ppp.linkup , .Pa ppp.linkdown , .Pa ppp.secret を参照します。 これらのファイルは .Pa /etc/ppp に置かれます。 .Bl -tag -width 2n .It Pa /etc/ppp/ppp.conf システムのデフォルト設定ファイル。 .It Pa /etc/ppp/ppp.secret 各システム用の認証設定ファイル。 .It Pa /etc/ppp/ppp.linkup .Nm がネットワークレベルの接続を確立した時に実行されるファイル。 .It Pa /etc/ppp/ppp.linkdown .Nm がネットワークレベルの接続を閉じる時にチェックするファイル。 .It Pa /var/log/ppp.log ログとデバッグ情報のファイル。このファイル名は .Pa /etc/syslogd.conf にて指定されます。詳細は .Xr syslog.conf 5 を参照してください。 .It Pa /var/spool/lock/LCK..* tty ポートをロックするためのファイル。詳細は .Xr uucplock 3 を参照してください。 .It Pa /var/run/tunN.pid tunN デバイスに接続されている .Nm プログラムのプロセス ID (pid) 。 ここで .Sq N はデバイスの番号です。 .It Pa /var/run/ttyXX.if このポートで使われている tun インタフェース。 このファイルも .Fl background , .Fl auto , .Fl ddial のいずれかのモードの時のみ作成されます。 .It Pa /etc/services サービス名でポート番号が指定されている場合に、ポート番号を取得します。 .It Pa /var/run/ppp-authname-class-value マルチリンクモードでは、 相手の認証名称 .Pq Sq authname と相手の終点選択クラス .Pq Sq class と相手の終点選択値 .Pq Sq value を使用して、ローカルドメインソケットが生成されます。 終点選択値はバイナリ値であってもかまわないため、 実際のファイル名を判定するために 16 進数に変換されます。 .Pp このソケットは、別の .Nm のインスタンスとリンクを受け渡しを行うために使用します。 .El .Pp .Sh 関連項目 .Xr at 1 , .Xr ftp 1 , .Xr gzip 1 , .Xr hostname 1 , .Xr isdnd 8 , .Xr login 1 , .Xr tcpdump 1 , .Xr telnet 1 , .Xr kldload 2 , .Xr libalias 3 , .Xr syslog 3 , .Xr uucplock 3 , .Xr netgraph 4 , .Xr crontab 5 , .Xr group 5 , .Xr passwd 5 , .Xr radius.conf 5 , .Xr resolv.conf 5 , .Xr syslog.conf 5 , .Xr adduser 8 , .Xr chat 8 , .Xr getty 8 , .Xr inetd 8 , .Xr init 8 , .Xr ng_pppoe 8 , .Xr named 8 , .Xr ping 8 , .Xr pppctl 8 , .Xr pppd 8 , .Xr pppoe 8 , .Xr route 8 , .Xr sshd 8 , .Xr syslogd 8 , .Xr traceroute 8 , .Xr vipw 8 .Sh 歴史 元のプログラムは .An Toshiharu OHNO Aq tony-o@iij.ad.jp が作成し、 .Fx 2.0.5 に .An Atsushi Murai Aq amurai@spec.co.jp が提出しました。 .Pp 1997 年中に .An Brian Somers Aq brian@Awfulhak.org が本格的な修正をし、 11 月に .Ox に移植されました (2.2-RELEASE の直後です)。 .Pp 1998 年初頭にマルチリンク ppp サポートが追加されたときに、 ほとんどのコードを .An Brian Somers が書き直しました。 diff --git a/ja_JP.eucJP/man/man8/watch.8 b/ja_JP.eucJP/man/man8/watch.8 index 56f37f8448..29f6f93ba7 100644 --- a/ja_JP.eucJP/man/man8/watch.8 +++ b/ja_JP.eucJP/man/man8/watch.8 @@ -1,102 +1,100 @@ .\" .\" @(#)watch.8 1.1 (FreeBSD) 2/17/95 -.\" %FreeBSD: src/usr.sbin/watch/watch.8,v 1.18.2.1 2000/12/08 15:29:03 ru Exp % +.\" %FreeBSD: src/usr.sbin/watch/watch.8,v 1.18.2.2 2001/05/09 21:18:45 olgeni Exp % .\" -.\" $FreeBSD$ +.\" $FreeBSD: doc/ja_JP.eucJP/man/man8/watch.8,v 1.8 2001/05/14 01:10:01 horikawa Exp $ .\" .Dd February 17, 1995 .Dt WATCH 8 .Os .Sh 名称 .Nm watch .Nd 別の tty 線を覗き見る .Sh 書式 .Nm .Op Fl ciotnW .Op Ar tty .\" watch [-ciotnW] [] .Sh 解説 .Nm は、特定の tty を通して流れてくる全てのデータをスーパユーザに 提供します。 .Nm は、標準出力に出力します。 .Pp 以下のようなオプションがあります。 .Bl -tag -width indent .It Fl c 閉じられた時点で再接続を行います。 .Nm によって観察されている tty が閉じられたならば、自動的に同じ tty に 再接続します。 このオプションが指定されていない時は、 .Nm は対話モードで実行されている時には新しい tty を要求し、 tty 制御を行わずに実行されている場合は終了します。 .It Fl i 対話モードにします。 対話モードは、 .Nm が tty から実行された場合のデフォルトです。 出力がファイルにリダイレクションされている時は、 このオプションを指定することで対話モードにできます。 .It Fl o あふれが発生した場合、再接続します。 観察している tty があふれた時の .Nm の振舞いは、観察している tty が閉じられた時の振舞いに似ています。 詳しい情報は、 .Xr snp 4 を見てください。 .It Fl t tty の観察を始めた時の日付と時間を表示します。 .It Fl n 観察する tty を対話的に変更できなくします。 これは、 による変更要求と、 現在の tty が閉じられたりあふれを起こした場合の自動プロンプトともに 無効にします。 プロンプトが表示される全ての場合、 .Nm -.\"(訳注)実際は文中の語でしたが、ここでは.Nmを使いました。 -.\" 2.2.1R 対象(1997/04/28) Takeshi MUTOH は終了します。再接続フラグは、このオプションに影響されません。 .It Fl W 観察している tty への書き込みを許可します。 .It Ar tty tty は、仮想 tty デバイスや仮想コンソールやシリアル線などのように、 tty 形式のデバイスとして指定しなければなりません。 名前には、前に .Pa /dev/ をつけても構いません。 .El .Sh 操作 対話的モードで実行中は、全てのユーザの入力は以下のものを除いて、 捨てられます。 .Pp .Bl -tag -width "XXXX" -compact .It Sy "" .Nm の終了。 .It Sy "" 画面の消去。 .It Sy "" 除き見る tty の変更。 .El .Sh 制限事項 スーパユーザだけが、 .Nm を実行できます。 .Sh 関連項目 .Xr pty 4 , .Xr sio 4 , .Xr snp 4 .Sh バグ 端末エミュレーション機能はありません。 全てのユーザの出力はそのままの形で再構成されます。 .Sh 作者 .An Ugen J.S. Antsilevich Aq ugen@NetVision.net.il .Sh 歴史 .Nm は、 .Fx 2.1 で、はじめて導入されました。 diff --git a/ja_JP.eucJP/man/man9/style.9 b/ja_JP.eucJP/man/man9/style.9 index d0fc2ce350..51e5efd34d 100644 --- a/ja_JP.eucJP/man/man9/style.9 +++ b/ja_JP.eucJP/man/man9/style.9 @@ -1,575 +1,606 @@ .\" Copyright (c) 1995 FreeBSD Inc. .\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" .\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL [your name] OR CONTRIBUTORS BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" %FreeBSD: src/share/man/man9/style.9,v 1.32.2.8 2001/03/06 19:08:22 ru Exp % +.\" %FreeBSD: src/share/man/man9/style.9,v 1.32.2.10 2001/05/17 02:06:16 obrien Exp % .\" .Dd December 14, 1995 .Dt STYLE 9 .Os FreeBSD .Sh 名称 .Nm style .Nd カーネルソースファイルのスタイルガイド .Sh 解説 このファイルは .Fx ソースツリーのカーネルソースに好ましいスタイルを明記しています。 これはユーザランドのコードスタイルの手引きでもあります。 +.\" $ と FreeBSD を続けるとキーワード置換されるので、\& を挿入 +.\" 2001/05/23 horikawa@jp.FreeBSD.org .Bd -literal /* * FreeBSD のためのスタイルガイドです。 - * KNF (Kernel Normal Form, カーネル標準書式) に基づいています。 + * CSRG の KNF (Kernel Normal Form, カーネル標準書式) に基づいています。 + * + * @(#)style 1.14 (Berkeley) 4/28/95 + * $\&FreeBSD: src/share/man/man9/style.9,v 1.32.2.10 2001/05/17 02:06:16 obrien Exp $ */ /* * とても重要な 1 行のコメントはこのようにします。 */ /* 殆どの 1 行のコメントはこのようにします。 */ /* * 複数行にわたるコメントはこのようにします。実際の文章を書きます。実際の * 段落に見えるように埋めていきます。 */ .Ed .Pp +著作権ヘッダの後には空行を 1 行入れ、ソースファイルには +.Va rcsid +を付けます。 +バージョン管理システムの ID タグは、ファイル中に 1 個のみあるべきです +(このファイルでは違いますが)。 +C/C++ ソースファイル以外はこの例に従いますが、 +C/C++ ソースファイルは以降の例に従います。 +外部から入手したファイルの +すべての VCS (バージョン管理システム) リビジョン識別子は、維持します。 +これには、ファイルの来歴を示す複数の ID も含みます。 +一般的に、`$' も含めて、ID はそのままとします。 +ほとんどの非 FreeBSD の VCS ID は、 +コメント中ではタブでインデントされているでしょう。 +.Bd -literal +#ifndef lint +#if 0 +static char sccsid[] = "@(#)style 1.14 (Berkeley) 4/28/95"; +#endif +static const char rcsid[] = + "$\&FreeBSD: src/share/man/man9/style.9,v 1.32.2.10 2001/05/17 02:06:16 obrien Exp $"; +#endif /* not lint */ +.Ed +.Pp +この後に空行を 1 行付けます。 +.Pp カーネルのインクルードファイル (すなわち、sys/*.h) が初めに来ます。 通常、 または のどちらかが必要ですが、 両方は必要ないでしょう。 をインクルードしており、 依存関係は問題ありません。 .Bd -literal #include /* 角括弧による非ローカルインクルード */ .Ed .Pp ネットワークプログラムである場合は、 次にネットワークインクルードファイルを置きます。 .Bd -literal #include #include #include #include #include .Ed .Pp それから空行を置き、/usr インクルードファイルを続けます。 /usr インクルードファイルはソートされているべきです。 .Bd -literal #include .Ed .Pp グローバルなパス名は /usr/include/paths.h で定義されています。 プログラムにローカルなパス名はローカルディレクトリの pathnames.h に入れます。 .Bd -literal #include .Ed .Pp それから、空行があって、ユーザインクルードファイルが来ます。 .Bd -literal #include "pathnames.h" /* " " によるローカルインクルード */ .Ed .Pp アプリケーションインタフェースを実装している場合を除き、 実装の名前空間で #define したり名前を定義したりしてはいけません。 .Pp .Dq Li 安全でない マクロ (副作用を持っているもの) の名前と、 明らかな定数のマクロの名前はすべて大文字です。 式のように展開されるマクロは、単一のトークンにするか外側に括弧をつけます。 .Ql #define とマクロ名の間にタブ文字を 1 個入れます。 マクロがある関数のインライン展開である場合は、 関数名は全て小文字で、マクロはすべて大文字の同じ名前を持ちます。 .\" XXX 上記は名前が同じマクロを #undef すれば関数を使える .\" という ANSI のスタイルと衝突します。 .\" これは MALLOC() については言えないし、インライン関数を使う時の .\" 一般的なやりかたではありません。 マクロが 1 行以上必要な場合は、ブレース .Po .Sq \&{ と .Sq \&} .Pc を使用します。 バックスラッシュは右揃えします。こうすると読みやすくなります。 マクロが複合文をカプセル化する場合には、それを .Dq Li do ループで囲みます。 これにより、 .Dq Li if 文で安全に使用できます。 最後の文の終端のセミコロンは、 マクロではなくマクロの実施時に付けられるべきです。 これにより、清書器やエディタで文法解析しやすくなります。 .Bd -literal #define MACRO(x, y) do { \e variable = (x) + (y); \e (y) += 2; \e } while(0) .Ed .Pp 列挙値は全て大文字を使用します。 .Bd -literal enum enumtype { ONE, TWO } et; .Ed .Pp 構造体の中で変数を宣言する時には、 使用順、サイズ順、アルファベット順にソートして宣言します。 最初の区分は通常適用しませんが、例外があります。 各宣言は、それぞれ独立した行にて行います。 最初の語の後にタブ文字を 1 個置きます、すなわち .Ql int^Ix; と .Ql struct^Ifoo *x; です。 .Pp 重要な構造体は、それが使用されるファイルの先頭で宣言されるか、 複数のソースファイルで使用される場合は別のヘッダファイルで宣言されるべきです。 構造体がヘッダファイルで宣言されている場合には、 それら構造体の使用は、宣言とは分けられるべきで、かつ "extern" であるべきです。 .Bd -literal struct foo { struct foo *next; /* 使用中の foo リスト */ struct mumble amumble; /* mumble のコメント */ int bar; }; struct foo *foohead; /* グローバルな foo リストの先頭 */ .Ed .Pp 可能な時には必ず、あなた自身でリストを操作するのではなく、 .Xr queue 3 マクロを使用してください。 従って、前の例をより良く書くと次のようになります。 .Bd -literal #include struct foo { LIST_ENTRY(foo) link; /* foo リスト用のキューマクロの糊 */ struct mumble amumble; /* mumble のコメント */ int bar; }; LIST_HEAD(, foo) foohead; /* グローバルな foo リストの先頭 */ .Ed .Pp 構造体の型に typedef を使用する事は避けてください。 使用してしまうと、 構造体へのポインタを不透明 (opaque) に使用することが、 アプリケーションにとって不可能となります。 通常の struct タグを使用すると、これが可能となり、かつ有益です。 規約が typedef を要求する場合には、その名前を構造体タグに一致させます。 標準 C または .Tn POSIX によって明示されたものを除いては、 .Dq Li \&_t で終る typedef を避けてください。 .Bd -literal /* 構造体名と typedef を一致させます */ typedef struct _bar { int level; } BAR; .Ed .Pp 全ての関数はどこかでプロトタイプされます。 .Pp 私的な関数 (すなわち、他のどこでも使用されない関数など) の関数プロトタイプは、 最初のソースモジュールの先頭に置かれます。 単一のソースモジュールにローカルな関数は、 .Ql static で宣言されるべきです。 .Pp カーネルの別の部分から使用される関数は、 関連のあるインクルードファイルの中でプロトタイプされます。 .Pp 複数のモジュールでローカルに使用される関数は、 .Pa extern.h 等の分離したヘッダファイルの中に置かれます。 .Pp 一般にソースファイルが K&R 旧約聖書コンパイラで コンパイル可能である (べき) 時にのみ、 インクルードファイル の __P マクロを使用します。 新しいコードでの __P マクロの使用は反対されていますが、 既存のファイルに対する修正はそのファイルの規約と首尾一貫しているべきです。 .Pp ファイルの 50% かそれ以上を巻き込んだ修正の場合は、 一般にコードは .Dq 新しいコード とみなすことができます。 これは既存のコードの慣例を破り、 現在のスタイルガイドラインを使用するのに十分です。 .Pp カーネルはパラメータの型に関連付けられた名前を持ちます。 例えば、カーネル内でこのように使用します。 .Bd -literal void function(int fd); .Ed .Pp ユーザランドのアプリケーションに対して見えるヘッダファイルの中では、 可視のプロトタイプは、 型を伴った保護された名前を使用するか、 型だけで名前を使用しないかのどちらかが必要です。 保護された名前の使用がより望ましいです。 例えば、このように使用します。 .Bd -literal void function(int); .Ed .Pp または .Bd -literal void function(int _fd); .Ed .Pp プロトタイプは関数名の行揃えを行なうために、タブの後に追加のスペース文字を 置いても構いません。 .Bd -literal static char *function(int _arg, const char *_arg2, struct foo *_arg3, - struct bar *_arg4); + struct bar *_arg4); static void usage(void); /* * 全ての主要なルーチンはそれが何をするのかを簡潔に記述した * コメントを持つべきです。"main" ルーチンの前のコメントは * そのプログラムが何をするのかを記述するべきです。 */ int main(int argc, char *argv[]) { long num; int ch; char *ep; .Ed .Pp 一貫性のために、オプションの解析には getopt が使用されるべきです。 getopt 呼び出しと switch 文では、オプションをソートすべきですが、 switch 文のカスケードの一部の場合は例外です。 switch 文のカスケード要素は FALLTHROUGH コメントを持つべきです。 数値の引数は精度をチェックされるべきです。 到達できないコードは NOTREACHED コメントを持つべきです。 .Bd -literal while ((ch = getopt(argc, argv, "abn")) != -1) switch (ch) { /* switch をインデント */ case 'a': /* case はインデントしない */ aflag = 1; /* FALLTHROUGH */ case 'b': bflag = 1; break; case 'n': num = strtol(optarg, &ep, 10); if (num <= 0 || *ep != '\e0') { warnx("illegal number, -n argument -- %s", optarg); usage(); } break; case '?': default: usage(); /* NOTREACHED */ } argc -= optind; argv += optind; .Ed .Pp 予約語 (if, while, for, return, switch) の後にスペースを入れます。 何も伴わないかただ 1 つの文を伴う制御文は、ブレースを使用しません。 1 つの文が 複数行である文の場合には、これは許されます。 無限ループは while ではなく for で行ないます。 .Bd -literal for (p = buf; *p != '\e0'; ++p) ; /* 何もなし */ for (;;) stmt; for (;;) { z = a + really + long + statement + that + needs + two lines + gets + indented + four + spaces + on + the + second + and + subsequent + lines; } for (;;) { if (cond) stmt; } if (val != NULL) val = realloc(val, newsize); .Ed .Pp for ループの各部は空のまま残しても構いません。 異常に複雑なルーチンでない限りは、ブロックの中に宣言を置いてはなりません。 .Bd -literal for (; cnt < 15; cnt++) { stmt1; stmt2; } .Ed .Pp インデントは 8 文字のタブです。 第 2 レベルのインデントは 4 文字のスペースです。 .Bd -literal while (cnt < 20) z = a + really + long + statement + that + needs + two lines + gets + indented + four + spaces + on + the + second + and + subsequent + lines. .Ed .Pp 空白文字を行末に追加してはいけません。 また、インデントを形成するためには、タブとその後にスペースのみを使用します。 タブが生み出す以上のスペースや、タブの前のスペースは使用しません。 .Pp ブレースの終了と開始は else と同じ行に置かれます。 必要でないブレースは省いても構いません。 .Bd -literal if (test) stmt; else if (bar) { stmt; stmt; } else stmt; .Ed .Pp 関数名の後はスペースを空けません。 コンマの後にはスペースを持ちます。 .Sq \&( または .Sq \&[ の後ろまたは .Sq \&] または .Sq \&) の前にはスペースを空けません。 .Bd -literal - if (error = function(a1, a2)) + error = function(a1, a2); + if (error != 0) exit(error); .Ed .Pp 単項演算子はスペースを要求しませんが、二項演算子は要求します。 優先順位が要求する場合または文が括弧なしでは混乱する場合以外は、 括弧は使用しません。 他人はあなたよりも混乱しやすいかもしれないということを覚えておいてください。 あなたは以下を理解できますか? .Bd -literal a = b->c[0] + ~d == (e || f) || g && h ? i : j >> 1; k = !(l & FLAGS); .Ed .Pp 成功時には 0 で、または .Xr sysexits 3 にあらかじめ定義してある値で exit するべきです。 .Bd -literal exit(EX_OK); /* * "Exit 0 on success." (成功時は 0 で終了) * の様に明白なコメントは避けてください */ } .Ed .Pp 関数の型は、関数自身に先行する行にあるべきです。 .Bd -literal static char * function(int a1, int a2, float fl, int a4) { .Ed .Pp 関数の中で変数を宣言する時には、サイズ順に、次にアルファベット順に ソートして宣言します。 1 行に複数の宣言は可能です。 -リンケージのスコープが常にグローバルになるため、 -関数の中での関数の宣言は推奨されません。 行が溢れる場合は、型の予約語を再度使用します。 .Pp 宣言時に変数を初期化することによってコードを 不明瞭にしない様に注意してください。 この機能は良く考えて使用してください。 初期化に関数呼び出しを使用しないでください。 .Bd -literal struct foo one, *two; double three; int *four, five; char *six, seven, eight, nine, ten, eleven, twelve; four = myfunction(); .Ed .Pp 他の関数の内部で関数を宣言しないでください。 ANSI C によると、このような宣言は、宣言のネスティングによらず、 ファイルスコープになります。 ローカルスコープに見えるものの中にファイルの宣言を隠すことは好ましくなく、 良いコンパイラは苦情を言います。 .Pp キャストと sizeof 演算子の後にはスペースを続けません。 この規則は .Xr indent 1 が理解しないことに注意してください。 .Pp NULL は、好まれるヌルポインタ定数です。 コンパイラが型を知っている文脈、例えば代入では、 (type *)0 または (type *)NULL の代わりに、NULL を使用します。 他の文脈では、特に全ての関数の引数では、 (type *)NULL を使用します。 (関数のプロトタイプがスコープ外かもしれない場合に、 キャストはいろいろな引数にとって必須で、その他の引数にとっても必要です。) ポインタは NULL と比較します。例えば、 .Bd -literal !(p = f()) .Ed .Pp ではなく、このように使います。 .Bd -literal (p = f()) == NULL .Ed .Pp 真理値ではない場合、テストには '!' を使用しないでください。 例えば、下記のように使います。 .Bd -literal if (*p == '\e0') .Ed .Pp 下記のようには使いません。 .Bd -literal if (!*p) .Ed .Pp void * を返すルーチンでは、 戻り値をどのポインタ型にもキャストしてはなりません。 .Pp .Xr err 3 または .Xr warn 3 を使用し、勝手に作らないでください。 .Bd -literal if ((four = malloc(sizeof(struct foo))) == NULL) err(1, (char *)NULL); if ((six = (int *)overflow()) == NULL) errx(1, "Number overflowed."); return (eight); } .Ed .Pp 古いスタイルの関数宣言はこのようになっています。 .Bd -literal static char * function(a1, a2, fl, a4) int a1, a2; /* int 型も宣言します、デフォルトにしないこと */ float fl; /* double と float の違いに気を付けてください */ int a4; /* 出てきた順に宣言します */ { .Ed .Pp あなたが明確に K&R との互換性を必要とする場合以外は、 ANSI の関数宣言を使用してください。 +長いパラメータリストの折り返しには、 +4 個の空白による通常のインデントを付けます。 .Pp 可変個数の引数はこのようにします。 .Bd -literal #include void vaf(const char *fmt, ...) { va_list ap; va_start(ap, fmt); STUFF; va_end(ap); /* void 型の関数に return は不要です */ } static void usage() { /* 関数がローカル変数を持たない場合、空行をいれます */ .Ed .Pp fputs/puts/putchar 等ではなく、 .Xr printf 3 を使用してください。 これは速くて大抵はきれいで、言うまでもなくつまらないバグを避けます。 .Pp 使用法 (usage) の文はマニュアルページの書式の様であるべきです。 使用法の文は、次の構造であるべきです: .Pp .Bl -enum .It オペランドの無いオプションが、最初にアルファベット順に、 1 組の大括弧 .Po .Sq \&[ と .Sq \&] .Pc でくくられます。 .It オプションとそのオペランドがこれもアルファベット順に続き、 それぞれのオプションとその引数を 1 組の大括弧でくくります。 .It 必須の引数 .Pq もしあれば が続き、 コマンドラインで指定されるべき順で一覧されます。 .It 最後に、 すべての任意の引数が指定されるべき順で、 すべて大括弧の中に一覧されます。 .El .Pp 縦棒 .Pq Sq \&| は、二者択一のオプションまたは引数を分割し、 同時に使用するオプションと引数は、単一の大括弧でくくります。 .Pp .Bd -ragged -offset 4n "usage: f [-aDde] [-b b_arg] [-m m_arg] req1 req2 [opt1 [opt2]]\en" "usage: f [-a | -b] [-c [-dEe] [-n number]]\en" .Ed .Bd -literal (void)fprintf(stderr, "usage: f [-ab]\en"); exit(EX_USAGE); } .Ed .Pp 新しい中心的なカーネルのコードは、適度にスタイルガイドに従うべきです。 サードパーティが保守するモジュールやデバイスドライバのためのガイドラインは より緩やかですが、最低限内部的には彼らの一貫したスタイルであるべきです。 .Pp ソースリポジトリの文体の変更 (空白文字の変更を含む) は困難で、 正当な理由なしには避けるべきです。 リポジトリの中のおおよそ .Xr style 9 に適合しているコードは、この適合から離れてはなりません。 .Pp 可能な時にはいつでも、 コードはコードチェッカ (例えば、 .Xr lint 1 または "gcc -Wall") を 通過し、発生する警告は最小限となるべきです。 .Sh 関連項目 .Xr indent 1 , .Xr lint 1 , .Xr err 3 , .Xr sysexits 3 , .Xr warn 3 .Sh 歴史 このページは .Tn BSD 4.4-Lite2 release の src/admin/style/style ファイルに大きく基づいていて、 現在の実装と .Fx プロジェクトの要望を反映して、更新してあります。 diff --git a/ja_JP.eucJP/man/man9/uio.9 b/ja_JP.eucJP/man/man9/uio.9 index 6cdf408476..7119c4ee1a 100644 --- a/ja_JP.eucJP/man/man9/uio.9 +++ b/ja_JP.eucJP/man/man9/uio.9 @@ -1,176 +1,176 @@ .\" .\" Copyright (c) 1997 Joerg Wunsch .\" .\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" .\" THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY EXPRESS OR .\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES .\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. .\" IN NO EVENT SHALL THE DEVELOPERS BE LIABLE FOR ANY DIRECT, INDIRECT, .\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT .\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, .\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY .\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .\" -.\" %FreeBSD: src/share/man/man9/uio.9,v 1.5.2.1 2000/12/08 14:59:20 ru Exp % -.\" $FreeBSD$ +.\" %FreeBSD: src/share/man/man9/uio.9,v 1.5.2.2 2001/05/16 02:05:57 dd Exp % +.\" $FreeBSD: doc/ja_JP.eucJP/man/man9/uio.9,v 1.4 2001/05/14 01:10:24 horikawa Exp $ .\" " .Dd February 2, 1997 .Os .Dt UIO 9 .Sh 名称 .Nm uio , .Nm uiomove .Nd デバイスドライバ入出力ルーチン .Sh 書式 .Fd #include .Fd #include .Pp .Bd -literal struct uio { struct iovec *uio_iov; int uio_iovcnt; off_t uio_offset; int uio_resid; enum uio_seg uio_segflg; enum uio_rw uio_rw; struct proc *uio_procp; }; .Ed .Ft int .Fn uiomove "caddr_t buf" "int howmuch" "struct uio *uiop" .Sh 解説 .Fn uiomove 関数は、ユーザ空間とカーネル空間の境界を越えることさえ可能で、 バッファと入出力ベクタ間のデータ転送の実行に使用されます。 .Pp 文字型デバイスのドライバに渡された、あらゆる .Xr read 2 , .Xr write 2 , .Xr readv 2 ないし .Xr writev 2 システムコールの結果として、適切なドライバの .Em read または .Em write エントリが .Fa "struct uio" 構造体のポインタを渡されて呼び出されます。 転送のリクエストは、この構造体の中にエンコードされます。 ドライバ自身もこの構造体の中のデータを取り出すために .Fn uiomove を使用するべきです。 .Pp uio 構造体の各フィールドは下記のとおりです。 .Bl -tag -width "uio_iovcntX" -compact .It Dv uio_iov 処理すべき入出力ベクタの配列です。 散在的な入出力の場合には、一つ以上のベクタとなるでしょう。 .It Dv uio_iovcnt 存在している入出力ベクタの数を示します。 .It Dv uio_offset デバイスのオフセットです。 .It Dv uio_resid 処理すべきバイト数です。 .It Dv uio_segflg 以下のフラグの中の一つです。 .Bl -tag -width "UIO_USERISPACEX" -compact .It Dv UIO_USERSPACE 入出力ベクタはプロセスのアドレス空間を指しています。 .It Dv UIO_SYSSPACE 入出力ベクタはカーネルのアドレス空間を指しています。 .It Dv UIO_USERISPACE 入出力ベクタはプロセスのアドレス空間の命令領域を指しています。 .It Dv UIO_NOCOPY オブジェクト中に既にデータがあり、コピーしません。 .El .It Dv uio_rw 要求された転送の方向を示し、 .Dv UIO_READ または .Dv UIO_WRITE です。 .It Dv uio_procp プロセスに関連付けられた .Li struct proc 構造体へのポインタです。 .Dv uio_segflg がプロセスのアドレス空間との転送をすべきであると示している場合に 使用されます。 .El .Sh 具体例 考え方として、ドライバはデータのためのプライベートなバッファの保守を行ない、 このバッファの最大サイズのデータのかたまりの要求を処理します。 下記のバッファの取り扱いはとても簡略化されていて 恐らく動きません(バッファのポインタは部分的な読み込みの場合進みません)し、 uio の取り扱いを実際にやって見せているだけだ、ということに注意してください。 .Bd -literal /* MIN() の定義はこの中にあります */ #include #define BUFSIZE 512 static char buffer[BUFSIZE]; static int data_available; /* 読み込めるデータ量 */ static int fooread(dev_t dev, struct uio *uio, int flag) { int rv, amnt; while (uio->uio_resid > 0) { if (data_available > 0) { amnt = MIN(uio->uio_resid, data_available); if ((rv = uiomove((caddr_t)buffer, amnt, uio)) != 0) goto error; data_available -= amnt; } else { tsleep(...); /* より良い時期まで待つ */ } } return 0; error: /* エラーのクリーンアップをここで行なう */ return rv; } .Ed .Sh 戻り値 .Fn uiomove は プロセスのアドレス空間との転送の場合に、 .Xr copyin 9 または .Xr copyout 9 によって引き起こされた .Er EFAULT を返すことがあります。 .Sh 関連項目 .Xr read 2 , .Xr readv 2 , .Xr write 2 , .Xr writev 2 , .Xr copyin 9 , .Xr copyout 9 , .Xr sleep 9 .Sh 歴史 uio の仕組みはある早期のバージョンの .Ux で登場しました。 .Sh 作者 このマニュアルページは .An J\(:org Wunsch が書きました。