diff --git a/ja/man/man1/a2p.1 b/ja/man/man1/a2p.1 index 47c2e7b869..6b3481ac8a 100644 --- a/ja/man/man1/a2p.1 +++ b/ja/man/man1/a2p.1 @@ -1,218 +1,218 @@ .rn '' }` .\" jpman %Id: a2p.1,v 1.3 1997/07/22 14:10:51 konuma Stab % ''' %Header: /home/ncvs/src/gnu/usr.bin/perl/x2p/a2p.1,v 1.1.1.1 1994/09/10 06:27:55 gclarkii Exp % ''' ''' %Log: a2p.1,v % ''' Revision 1.1.1.1 1994/09/10 06:27:55 gclarkii ''' Initial import of Perl 4.046 bmaked ''' ''' .\" Revision 1.1.1.1 1993/08/23 21:30:10 nate .\" PERL! .\" ''' Revision 4.0 91/03/20 01:57:11 lwall ''' 4.0 baseline. ''' ''' Revision 3.0 89/10/18 15:34:22 lwall ''' 3.0 baseline ''' ''' Revision 2.0.1.1 88/07/11 23:16:25 root ''' patch2: changes related to 1985 awk ''' ''' Revision 2.0 88/06/05 00:15:36 root ''' Baseline version 2.0. ''' ''' .de Sh .br .ne 5 .PP \fB\\$1\fR .PP .. .de Sp .if t .sp .5v .if n .sp .. .de Ip .br .ie \\n.$>=3 .ne \\$3 .el .ne 3 .IP "\\$1" \\$2 .. ''' ''' Set up \*(-- to give an unbreakable dash; ''' string Tr holds user defined translation string. ''' Bell System Logo is used as a dummy character. ''' .tr \(*W-|\(bv\*(Tr .ie n \{\ .ds -- \(*W- .if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch .if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch .ds L" "" .ds R" "" .ds L' ' .ds R' ' 'br\} .el\{\ .ds -- \(em\| .tr \*(Tr .ds L" `` .ds R" '' .ds L' ` .ds R' ' 'br\} .TH A2P 1 LOCAL .SH 名称 a2p - Awk から Perl へのトランスレータ .SH 書式 .B a2p [options] filename .SH 解説 .I a2p はコマンドラインで指定された (あるいは標準入力からの) awk スクリプトを とり、同等の働きをする .I perl スクリプトを標準出力に出力します。 .Sh オプション オプションには以下のものがあります: .TP 5 .B \-D デバッグフラグをセットします。 .TP 5 .B \-F awk スクリプトが常にこの -F スイッチ付きで実行されることを指定します。 .TP 5 .B \-n 入力を分割して配列に格納する必要がない場合、 入力フィールドの名前を指定します。 例えば、パスワードファイルを処理する awk スクリプトを変換する場合、 このように指定します: .sp a2p -7 -nlogin.password.uid.gid.gcos.shell.home .sp フィールド名の区切りには任意のデリミタが使用できます。 .TP 5 .B \- a2p は、入力が常に指定した数のフィールドから成っていることを仮定します。 .Sh 考察 a2p は人間と同じぐらいうまい変換はできませんが、 大抵の場合はそこそこうまく処理します。 場合によっては、 生成された perl スクリプトを吟味し、少し手を加えたいと思うことも あるでしょう。 以下にいくつかの場合を、順不同で説明します。 .PP 文字列を表す式のまわりに int() を付け、 数値として解釈されるようにする awk イディオムが あります (その引数は常に整数型なのですが)。 これは一般に perl では不要ですが、 a2p は引数が常に整数となるかどうか判断できないので、 このイディオムはそのまま残します。 ユーザはこれを取り除くことができます。 .PP perl では数値比較と文字列比較は区別されています。 awk ではどちらにも同じ演算子が用いられ、 実行時にどちらの比較を行うかが決定されます。 この点で a2p は awk エミュレーションを完全には行おうとしません。 その代わり、a2p はどちらの種類の比較を行おうとしているのか推測します。 これはほとんどの場合正しいものですが、だまされることもあります。 推測を行った部分には \*(L"#???\*(R" というコメントが付与されますので、 それらの部分を調べ、中身をチェックすべきです。 ユーザは、少なくとも一度は \-w スイッチ付きで perl を走らせるとよいでしょう。 こうすると、eq を使うべきところで == を使っている場合に警告を受けます。 .PP 存在しない配列要素でも、単にそれを参照しただけで存在するようになるか、 という点で、perl は awk の動作をエミュレートしようとしません。 何らかの理由で、このメカニズムに依存して後続の for...in のために ヌルエントリを作成しようとする場合、 perl ではヌルエントリは作成されません。 .PP a2p が、(Fld1, Fld2, Fld3...) のような、変数のリストへの代入を行う行を 分割する場合、 上に述べた \-n オプションを用いて再度 a2p を走らせた方がいいかもしれません。 これにより、スクリプト内のフィールドに名前を付けます。 そうではなく、分割して配列に格納する場合、 その分割はおそらくどこかでフィールド数を参照しているでしょう。 .PP awk の exit ステートメントは必ずしも exit せず、 END ブロックがあればそこへ処理が移ります。 ある条件下で END ブロックをバイパスするような細工を END ブロックに 仕掛けてある awk スクリプトは、 END ブロック内の条件文を取り除き、perl スクリプトから直接 exit するように 修正することで簡単化できます。 .PP -perl には 2 種類の配列、すなわち数値でインデクスされる配列と連想配列とが +perl には 2 種類の配列、すなわち数値でインデックスされる配列と連想配列とが あります。 通常、awk の配列は連想配列に変換されますが、 -もしそのインデクスが常に数値であるとわかったら、 +もしそのインデックスが常に数値であるとわかったら、 配列添字の {...} を [...] に変更できます。 連想配列に対する繰り返し処理は関数 keys() を用いて行われますが、 数値配列に対してはそうではありません。 問題となっている配列の繰り返し操作を行うあらゆるループ構造を 修正する必要があるかもしれません。 .PP awk は起動時、OFMT の値が %.6g であると仮定しています。 perl でこれに相当する変数 $# は、初期値として %.20g を持っています。 OFMT のデフォルト値を用いる場合は $# を明示的に設定して下さい。 .PP awk スクリプトでは、行の先頭付近で行分割 (split) 操作が暗黙的に 繰り返されます。 場合によっては、全体レコードをテストする何らかの条件文より下に これを移動させることができます。 そうすることで無用な行分割処理を避けることができます。 .PP 美的理由から配列の基底 $[ を元々の 1 から perl でのデフォルトである 0 に 変更したいこともあるでしょう。 しかし、全ての配列添字式だけでなく、全ての substr() および index() 関数も 適合するように修正しなければならないことを忘れないで下さい。 .PP "# awk は馬鹿だからこうやって工夫してます" といった気の利いたコメントは、 そのまま修正されずに渡されます。 .PP awk スクリプトはしばしばシェルスクリプトに埋め込まれ、 awk の入出力がパイプで接続されます。 こういったシェルスクリプトのラッパーも perl スクリプトに取り込める場合が かなりあります。 perl なら入出力パイプを開始でき、 awk が自分ではできなかった他の処理も行うことができるからです。 .PP 特殊変数 RSTART および RLENGTH を参照するスクリプトは、 これらの変数を定義するパターン照合のスコープの中で参照されている限り、 変数 $`, $&, $' を参照することで簡単化できる場合がかなりあります。 .PP 生成された perl スクリプトには、 getline および print に関する awk の意味規則に対処するための サブルーチンが定義されている場合があります。 a2p は通常、効率よりも正確さを選ぶからです。 ほとんどの場合、ご丁寧に意味規則に対処してくれるサブルーチンを捨てて、 もっと効率的なコードに書き換えることができます。 .PP 効率を上げるために、 サブルーチンで最後に実行される return ステートメントから キーワード return を取り除くことができる場合があります。 a2p は最も一般的な場合は見つけますが、 稀にある埋め込まれたブロックを解析したりしません。 .PP ARGV[0] は $ARGV0 に変換されますが、ARGV[n] は $ARGV[$n] に変換されます。 ARGV[0] を含めて繰り返し処理を行おうとするループは、 うまくいきません。 .SH 環境変数 a2p は環境変数を参照しません。 .SH 作者 Larry Wall .SH 関連ファイル .SH 関連項目 perl perl コンパイラ/インタプリタ .br s2p sed から perl へのトランスレータ .SH 診断 .SH バグ 実行時にオペランドを調べることで、文字列演算か数値演算かの選択で awk の エミュレーションを行うことは可能でしょうが、 プログラムは肥大し、非効率的になるでしょう。 なお、a2p の推測はほとんど常に正しく行われます。 .PP awk 文法ツリー用の領域は現在のところ静的に確保しており、 不足する可能性があります。 .rn }` '' diff --git a/ja/man/man1/at.1 b/ja/man/man1/at.1 index c88338bf3f..5f89bbe4ce 100644 --- a/ja/man/man1/at.1 +++ b/ja/man/man1/at.1 @@ -1,262 +1,262 @@ .\" %Id: at.man,v 1.4 1995/10/05 06:18:48 joerg Exp % .\" jpman %Id: at.1,v 1.3 1997/08/05 18:36:01 george Stab % .Dd April 12, 1995 .Dt "AT" 1 .Os "FreeBSD 2.1" .Sh 名称 .Nm at, batch, atq, atrm .Nd あとでジョブを実行させるためのキューの設定、確認、ジョブの削除をおこなう .Sh 書式 .Nm at .Op Fl V .Op Fl q Ar queue .Op Fl f Ar file .Op Fl mldbv .Ar time .Pp .Nm at .Op Fl V .Fl c Ar job Op Ar job ... .Pp .Nm atq .Op Fl V .Op Fl q Ar queue .Op Fl v .Pp .Nm atrm .Op Fl V .Ar job .Op Ar job ... .Pp .Nm batch .Op Fl V .Op Fl q Ar queue .Op Fl f Ar file .Op Fl mv .Op Ar time .Sh 解説 .Nm at と .Nm batch ユーティリティは、標準入力もしくは指定したファイルからコマンドを読み 込み、あとで .Xr sh 1 を使って実行します。 .Pp コマンドの各機能を以下に示します: .Bl -tag -width indent .It Nm at コマンドを、引数で指定した時間に実行します。 .It Nm atq ユーザの、実行待ち状態のジョブのリストを表示します。 スーパーユーザが実行した場合は全員のジョブが表示されます。 .It Nm atrm 指定したジョブを削除します。 .It Nm batch ロードアベレージが特定の値以下になったときにジョブを実行 します。この値は、デフォルトでは 1.5 です。 この値は .Nm atrun によって指定可能です。 .El .Pp .Nm at では、様々な形式の時間を .Ar time として受け付けます。 時刻は .Ar HHMM もしくは .Ar HH:MM の形で指定します (もしこの時刻が過ぎていた場合は、次の日のその時刻に設定されます)。また、 .Nm midnight , .Nm noon , .Nm teatime (4pm) も受け付けますし、時刻の後ろに .Nm am もしくは .Nm pm をつけた時間も受け付けます。日付は、 .Ar \%month-name day およびオプションの .Ar year の形で受け付けます。 .Ar MMDDYY 、 .Ar MM/DD/YY 、 .Ar DD.MM.YY も受け付けます。 日付の指定は時刻の指定の後に記述します。 .Op Nm now .Nm + Ar count \%time-units のような形式で時間を指定することも可能です。time-units は時間の単位で、 .Nm minutes , .Nm hours , .Nm days , .Nm weeks のいずれかです。時間のサフィックスの .Nm today はジョブを今日に設定すること、 .Nm tommorow はジョブを明日に設定することを意味します。 たとえば、今から 3 日後の午後 4 時にジョブを走らせるためには .Nm 4PM + 3 days と指定します。7 月 31 日の午前 10 時の場合は .Nm 10am Jul 31 と指定します。明日の午前 1 時は .Nm 1am tomorrow です。 .Pp .Nm at と .Nm batch では、標準入力または .Fl f オプションで指定したファイルからコマンドを読み込み、実行します。 ワーキングディレクトリと環境変数 ( .Ev TERM , .Ev TERMCAP , .Ev DISPLAY および .Nm _ は除く)、umask は実行時のものが保持されます。 .Nm at もしくは .Nm batch が .Xr su 1 で起動されたシェルから実行された場合は、カレントの userid を保持します。 出力結果が得られた場合は、 その標準出力と標準エラー出力がメールで送られます。メールは .Xr sendmail 8 を使って送られます。もし .Nm at が .Xr su 1 -で起動されたシェルから実行された場合は、そのログインシェルのオーナが +で起動されたシェルから実行された場合は、そのログインシェルの所有者が メールを受けることになります。 .Pp -スーパーユーザはどんな場合でもこれらのコマンドを実行できます。 +スーパユーザはどんな場合でもこれらのコマンドを実行できます。 その他のユーザは .Pa /var/at/at.allow と .Pa /var/at/at.deny のファイルによって実行できるか決められます。 .Pp もし .Pa /var/at/at.allow が存在するならば、その中にユーザ名を記述されたユーザだけが .Nm at の実行を許可されます。 .Pp もし .Pa /var/at/at.allow が存在しなかったら、 .Pa /var/at/at.deny がチェックされ、その中にユーザ名が記述されていないすべてのユーザが .Nm at の実行を許可されます。 .Pp もし両方ともなければ、スーパーユーザだけが .Nm at を実行できます。 これがデフォルトの設定です。 .Pp 空の .Pa /var/at/at.deny は全てのユーザがこれらのコマンドを使用できることを意味します。 .Sh オプション オプションとしては以下のものがあります: .Bl -tag -width indent .It Fl V 標準エラー出力にバージョン番号を出力します。 .It Fl q Ar queue 指定したキューを用います。キューの名称は単一の文字からなります。 有効なキューの名前は .Nm a から .Nm z と .Nm A から .Nm Z です。 .Nm at のデフォルトのキューは .Nm c で、 .Nm batch のデフォルトのキューは .Nm E です。 キューの文字が後の方であればあるほど nice 値が上がります。 もし大文字のキューがジョブに対して指定されたならば、時間を指定して batch が実行されたものとして扱われます。 もし .Nm atq でキューが指定されたときは、そのキューだけの実行待ちのジョブを表示します。 .It Fl m 出力がなかった場合でも、ジョブの完了時にメールをユーザに送ります。 .It Fl f Ar file 標準入力のかわりにファイルからジョブを読み込みます。 .It Fl l .Nm atq のエイリアス。 .It Fl d .Nm atrm のエイリアス。 .It Fl b .Nm batch のエイリアス。 .It Fl v atq の場合は、キューの中の実行されたがまだ削除されていないジョブを 表示します。さもなければジョブが実行される時間を表示します。 .It Fl c コマンドラインにリストされたジョブを標準出力に出力します。 .Sh 関連ファイル .Bl -tag -width /var/at/jobs/.lockfile -compact .It Pa /var/at/jobs ジョブファイルを保管しておくディレクトリ .It Pa /var/at/spool 出力ファイルを保管しておくディレクトリ .It Pa /var/run/utmp ログインレコード .It Pa /var/at/at.allow 許可属性の設定 .It Pa /var/at/at.deny 不許可属性の設定 .It Pa /var/at/jobs/.lockfile ジョブ作成のロックファイル .El .Sh 関連項目 .Xr cron 8 , .Xr nice 1 , .Xr umask 2 , .Xr sh 1 , .Xr sendmail 8 , .Xr atrun 8 .Sh バグ .Pa /var/run/utmp が利用できないか不正であった場合、もしくは .Nm at が実行された時にユーザがログインしていない場合、 メールは環境変数 .Nm LOGNAME で表される userid に出されます。 もし定義されていないか空ならばカレントの userid になります。 .Pp ユーザ同士でリソースの競合がある場合は現実装の .Nm at と .Nm batch は適当ではありません。 もしあなたのサイトがこのような場合にあてはまるのなら、 .Nm nqs のようなバッチシステムを検討してください。 .Sh 作者 at のほとんどの部分は Thomas Koenig, ig25@rz.uni-karlsruhe.de によって作成されました。 時間の構文解析部分は David Parsons, orc@pell.chi.il.us によって作成されました。 diff --git a/ja/man/man1/bison.1 b/ja/man/man1/bison.1 index 7716ef6dfb..a91b57fa88 100644 --- a/ja/man/man1/bison.1 +++ b/ja/man/man1/bison.1 @@ -1,354 +1,354 @@ .TH BISON 1 local .\" jpman %Id: bison.1,v 1.3 1997/08/20 12:18:34 horikawa Stab % .SH 名称 bison \- GNU プロジェクト パーサ・ジェネレータ (yacc 置き換え) .SH 書式 .B bison [ .BI \-b " file-prefix" ] [ .BI \-\-file-prefix= file-prefix ] [ .B \-d ] [ .B \-\-defines ] [ .B \-k ] [ .B \-\-token-table ] [ .B \-l ] [ .B \-\-no-lines ] [ .B \-n ] [ .B \-\-no-parser ] [ .BI \-o " outfile" ] [ .BI \-\-output-file= outfile ] [ .BI \-p " prefix" ] [ .BI \-\-name-prefix= prefix ] [ .B \-r ] [ .B \-\-raw ] [ .B \-t ] [ .B \-\-debug ] [ .B \-v ] [ .B \-\-verbose ] [ .B \-V ] [ .B \-\-version ] [ .B \-y ] [ .B \-\-yacc ] [ .B \-h ] [ .B \-\-help ] [ .B \-\-fixed-output-files ] file .SH 解説 .I bison は .IR yacc (1) 風のパーサ・ジェネレータです。 .IR yacc 用に作成された入力ファイルについて上位互換になっているはずです。 .PP 入力ファイルは .I yacc の流儀に従い、末尾は .BR .y で終わるべきです。 .IR yacc と異なり、生成されるファイルの名前は固定ではなく、 -入力ファイルのプレフィクスが用いられます。 +入力ファイルのプレフィックスが用いられます。 例えば、 .B parse.y という名前の文法記述ファイルからは、 .IR yacc のような .BR y.tab.c ではなく、 .BR parse.tab.c というファイル名のパーサが生成されます。 .PP ここに示す .I bison のオプション説明は、正式なドキュメントである .B bison.texinfo マニュアルの .B Invocation ノードからの抜粋です。 .PP .I bison は、従来の単一文字オプションと覚えやすい長形式オプション名の 両方をサポートしています。 長形式のオプション名は .BR \- ではなく .B \-\- で指定します。 一意に決められる限り、オプション名は略して記述して構いません。 .BR \-\-file-prefix のように引数を取る長形式オプションの場合、 オプション名とその引数とを .BR = で連結します。 .SS オプション .TP .BI \-b " file-prefix" .br .ns .TP .BI \-\-file-prefix= file-prefix .I bison -の全ての出力ファイルで用いるプレフィクスを指定します。 +の全ての出力ファイルで用いるプレフィックスを指定します。 出力ファイルの名前は、あたかも入力ファイルが \fIfile-prefix\fB.c\fR という名前であったかのように決められます。 .TP .B \-d .br .ns .TP .B \-\-defines 追加の出力ファイルを書き出します。 このファイルには、 少数の .B extern 変数宣言に加え、 文法記述で定義されたトークンの型名や セマンティックバリューの型 .BR YYSTYPE を定義するマクロが含まれます。 .sp パーサの出力ファイルが \fIname\fB.c\fR ならば、この追加出力ファイルの名前は \fIname\fB.h\fR となります。 .sp .B yylex の定義を別のソースファイルに記述したい場合は、 この出力ファイルが必ず必要になります。 なぜなら、 .B yylex はトークンの型コードや変数 .BR yylval を参照可能である必要があるからです。 .TP .B \-r .br .ns .TP .B \-\-raw \fIname\fB.h\fR ファイルのトークン番号は通常、Yacc 互換の置き換えです。 このオプションを指定すると、 それに代わって Bison のトークン番号が出力されます。 (Yacc では、単一文字トークンを除き、トークン番号は 257 から始まります。 Bison は全てのトークンについて、3 から始まる連番を割り当てます。) .TP .B \-k .br .ns .TP .B \-\-token-table 出力ファイル \fIname\fB.tab.c\fR が トークン名のリストをその番号順に含むようにします。 このリストは配列 .IR yytname で定義されます。また、 .IR YYNTOKENS , .IR YYNNTS , .IR YYNRULES , .IR YYNSTATES がそれぞれ #define されます。 .TP .B \-l .br .ns .TP .B \-\-no-lines パーサファイルにプリプロセッサコマンド .B #line を入れません。 通常 .I bison はパーサファイルに .B #line を挿入し、C コンパイラおよびデバッガがエラーとソースファイル、 つまり文法ファイルとを結びつけられるようにします。 このオプションを指定すると、エラーはパーサファイルと結びつけられ、 自分の責任で独立したソースファイルとして取り扱うようになります。 .TP .B \-n .br .ns .TP .B \-\-no-parser パーサコードを出力に生成せず、宣言のみ生成します。 生成された \fIname\fB.tab.c\fR ファイルには 定数宣言のみ含まれます。 更に、変換した全てのアクションを含む switch 文本体 を含むファイル \fIname\fB.act\fR を生成します。 .TP .BI \-o " outfile" .br .ns .TP .BI \-\-output-file= outfile 出力するパーサファイルの名前を .I outfile とします。 .sp .B \-v オプションおよび .B \-d オプションのところで述べたように、 この他の出力ファイルの名前は .I outfile から作られます。 .TP .BI \-p " prefix" .br .ns .TP .BI \-\-name-prefix= prefix パーサで使われる外部シンボルの名前を変更し、 .BR yy ではなく .I prefix で始まるようにします。 名前を変更されるシンボルの正確なリストは以下の通り。 .BR yyparse , .BR yylex , .BR yyerror , .BR yylval , .BR yychar , .BR yydebug .sp 例えば .BR "\-p c" と指定すると、これらは .BR cparse , .BR clex 等という名前になります。 .TP .B \-t .br .ns .TP .B \-\-debug マクロ .B YYDEBUG の定義をパーサファイルに出力し、デバッグ機能がコンパイルされるようにします。 .TP .B \-v .br .ns .TP .B \-\-verbose 追加の出力ファイルを書き出します。 このファイルには、 パーサの状態と、その状態で各先読みトークンに対してどういう動作を行うか、 に関する詳細説明が含まれます。 .sp このファイルには、演算子の順位によって解決したものと 解決していないものを合わせた、 全ての競合についても記述されています。 .sp このファイルの名前は、パーサの出力ファイル名から .B .tab.c あるいは .B .c を取り除き、代わって .B .output を付けたものになります。 .sp 従って、入力ファイルが .BR foo.y ならパーサファイルはデフォルトでは .B foo.tab.c となり、その結果、詳細出力ファイル名は .BR foo.output となります。 .TP .B \-V .br .ns .TP .B \-\-version .I bison のバージョン番号を出力して終了します。 .TP .B \-h .br .ns .TP .B \-\-help .I bison のオプション要約を表示して終了します。 .TP .B \-y .br .ns .TP .B \-\-yacc .br .ns .TP .B \-\-fixed-output-files .BR "\-o y.tab.c" と等価です。つまり、パーサ出力ファイルは .BR y.tab.c となり、他の出力ファイルは .B y.output および .BR y.tab.h となります。 このオプションの目的は、 .IR yacc の出力ファイル名規則を真似ることです。 従って、次のシェルスクリプトは .IR yacc の代用となります: .sp .RS .ft B bison \-y $* .ft R .sp .RE .PP 以前のリリースとの互換性のため、 長形式オプションは `\-\-' のほか、`+' で始めることもできます。 ただしこれは POSIX.2 標準と非互換であるため、 将来 `+' サポートはなくなるでしょう。 .SH 関連ファイル /usr/share/misc/bison.simple 単純なパーサ .br /usr/share/misc/bison.hairy 複雑なパーサ .SH 関連項目 .IR yacc (1) .br .I bison のソースディストリビューションに .B bison.texinfo として含まれている .IR "Bison Reference Manual" .SH 診断 メッセージ自身で理解できるようになっています。 diff --git a/ja/man/man1/cksum.1 b/ja/man/man1/cksum.1 index 00e2c29558..8e0f6ac345 100644 --- a/ja/man/man1/cksum.1 +++ b/ja/man/man1/cksum.1 @@ -1,188 +1,188 @@ .\" Copyright (c) 1991, 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. .\" .\" @(#)cksum.1 8.2 (Berkeley) 4/28/95 .\" %Id: cksum.1,v 1.1.1.1.8.6 1997/11/09 16:11:13 obrien Exp % .\" jpman %Id: cksum.1,v 1.4 1997/08/10 18:27:42 horikawa Stab % .\" .Dd April 28, 1995 .Dt CKSUM 1 .Os BSD 4.4 .Sh 名称 .Nm cksum .Nd ファイルのチェックサムとブロックカウントを表示する .Sh 書式 .Oo .Fl o Ar \&1 Xo .No \&| .Ar \&2 .No \&| .Ar \&3 .Xc .Oc .Op Ar file ... .Nm sum .Op Ar file ... .Sh 解説 .Nm cksum ユーティリティは、各入力ファイルに対して、 空白で区切られた 3 つのフィールドを標準出力に出力します。 これら 3 フィールドはそれぞれ、 チェックサム .Tn CRC 、ファイル中のオクテット数、そしてファイル名です。 ファイルが一つも指定されない場合は標準入力が用いられ、 ファイル名は表示されません。 .Pp .Nm sum ユーティリティは .Nm cksum ユーティリティと同じですが、 以降で解説するデフォルトで歴史的アルゴリズム 1 を使用する点が異なります。 互換性のためだけに提供されています。 .Pp オプションは以下の通りです: .Bl -tag -width indent .It Fl o デフォルトの(より優れた)アルゴリズムに代えて、 歴史的なアルゴリズムを用います。 .Pp アルゴリズム 1 は .Xr sum 1 のアルゴリズムとして歴史的な .Bx システムにおいて、また、 .Fl r オプション付きで用いる場合の .Xr sum アルゴリズムとして歴史的な .At V システムにおいて用いられてきたものです。 これは加算のたびに右ローテーションを行う 16 ビットチェックサムであり、 -オーバーフローは無視されます。 +算出あふれは無視されます。 .Pp アルゴリズム 2 はデフォルトの .Xr sum アルゴリズムとして歴史的な .At V システムで用いられてきたものです。 これは 32 ビットのチェックサムであり、以下のように定義されます: .Bd -unfilled -offset indent s = sum of all bytes; r = s % 2^16 + (s % 2^32) / 2^16; cksum = (r % 2^16) + r / 2^16; .Ed .Pp アルゴリズム 3 は一般に .Ql 32bit CRC アルゴリズムと呼ばれているものです。これは 32-bit チェックサムです。 .Pp アルゴリズム 1, 2 のいずれも、デフォルトアルゴリズムと同じフィールドを 標準出力に書き出します。 ただし、ファイルサイズはバイト単位ではなくブロック単位となります。 歴史的理由から、アルゴリズム 1 ではブロックサイズは 1024、 アルゴリズム 2 では 512 となっています。 ブロックに満たない部分は切り上げられます。 .El .Pp デフォルトで用いられる .Tn CRC は、 ネットワークの規格 .St -iso8802-3 における .Tn CRC エラーチェックに用いられる多項式に基づいています。 .Tn CRC チェックサムエンコーディングは、次の生成多項式で定義されます: .Pp .Bd -unfilled -offset indent G(x) = x^32 + x^26 + x^23 + x^22 + x^16 + x^12 + x^11 + x^10 + x^8 + x^7 + x^5 + x^4 + x^2 + x + 1 .Ed .Pp 数学的には、与えられたファイルに対応する .Tn CRC 値は次の手順で定義されます。 .Bd -filled -offset indent 評価される .Ar n ビットは、2 を法とする .Ar n Ns \-1 次多項式 M(x) の係数とみなされます。 これらの .Ar n ビットはファイルから得られますが、 ファイルの最初のオクテットの最上位ビットを最上位、 最後のオクテットの最下位ビットを最下位とします。 (必要なら)ゼロビットを埋めてオクテット単位に取りまとめ、 ファイルの長さをバイナリ値で表現した 1 個あるいは それ以上のオクテット(最下位オクテットが先)がそれに続きます。 この整数を表現可能な最小個数のオクテットが用いられます。 .Pp M(x) は x^32 倍(すなわち 32 ビットの左シフト)し、 2 を法として G(x) で割ります。 その結果 31 次以下の剰余 R(x) が得られます。 .Pp R(x) の係数は 32 ビットのビット列と見なされます。 .Pp そのビット列を反転した結果が CRC です。 .Ed .Pp .Nm cksum および .Nm sum ユーティリティは成功時には 0 を、エラー発生時には正の値を返します。 .Sh 関連項目 .Xr md5 1 .Rs デフォルトの計算方法は、次の .Tn ACM 論文で疑似コードを用いて記述されているものと等価です。 .Rs .%T "Computation of Cyclic Redundancy Checks Via Table Lookup" .%A Dilip V. Sarwate .%J "Communications of the \\*(tNACM\\*(sP" .%D "August 1988" .Re .Sh 規格 .Nm cksum ユーティリティは .St -p1003.2-92 を満していると考えられています。 .Sh 歴史 .Nm cksum ユーティリティは .Bx 4.4 から登場しました。 diff --git a/ja/man/man1/csh.1 b/ja/man/man1/csh.1 index 7db0b373dc..5a2ead2d67 100644 --- a/ja/man/man1/csh.1 +++ b/ja/man/man1/csh.1 @@ -1,2190 +1,2190 @@ .\" Copyright (c) 1980, 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. .\" .\" @(#)csh.1 8.2 (Berkeley) 1/21/94 .\" jpman %Id: csh.1,v 1.2 1997/04/08 00:35:51 h-nokubi Stab % .\" %Id: csh.1,v 1.5.2.1 1997/02/28 07:54:29 mpp Exp % .\" .\" Japanese translation for jpman-0.2 checked by jpman project 96.12.23 .\" .Dd January 21, 1994 .Dt CSH 1 .Os BSD 4 .Sh 名称 .Nm csh .Nd C 言語ライクな文法を持つシェル(コマンドインタプリタ) .Sh 書式 .Nm csh .Op Fl bcefimnstvVxX .Op arg ... .Nm csh .Op Fl l .Sh 解説 .Nm csh は、履歴(参照: .Nm ヒストリ置換 の項)、ジョブ制御(参照: .Nm ジョブ の項)、対話的なファイル名とユーザ名の補完(参照: .Nm ファイル名補完 の項)、C 言語ライクな文法を特徴とするコマンドインタプリタです。 対話的なログイン・シェル、また シェル・スクリプトのコマンド・プロセッサの両方の用途で使われます。 .Ss 引数リスト処理 シェルへの最初の引数(第 0 引数)が .Ql Fl \& で始まる場合、シェルはログイン・シェルとなります。 シェルを .Ql Fl l フラグを指定して起動することでもログイン・シェルにできます。 .Pp 残りのフラグは以下のように解釈されます: .Bl -tag -width 5n .It Fl b このフラグは、オプションの処理を強制的に中断させる場合に使用します。この フラグ以降の引数はすべて、オプションではない引数として処理されます。 これにより、シェル・スクリプトに混乱やごまかしを行わずにオプションを 渡すことが可能になります。 set-user ID スクリプトは本オプションなしでは実行できません。 .It Fl c コマンドを本フラグの次にくる 1 つの引数から読み込みます。 この引数は省略できません。残りの引数は .Ar argv に代入されます。 .It Fl e 起動したコマンドが異常終了したり、0 でない終了ステータスを返したときに、 ただちにシェルを終了します。 .It Fl f 起動したユーザのホーム・ディレクトリにある .Pa \&.cshrc を捜さず、また読み込まないため高速に起動します。 .It Fl i たとえ端末上で実行されていなくても、対話的に動作しプロンプトを表示します。 入力と出力が端末である場合、本オプションなしでもシェルは対話的に動作します。 .It Fl l ログイン・シェルとなります。( .Fl l が、指定された唯一のフラグの場合にのみ有効です。) .It Fl m シェルは、実効ユーザに属していなくても .Pa .cshrc をロードします。 .Xr su 1 は .Fl m をシェルに渡すことができます。 .It Fl n コマンドの解析は行いますが、実行しません。シェル・スクリプトの 文法検査に役立ちます。 .It Fl s 標準入力からコマンドを読み込みます。 .It Fl t 入力から1行だけ読み込み、それを実行します。改行の直前に .Ql \e を置くことで、次の行への継続を行うことができます。 .It Fl v .Ar verbose 変数を設定します。これにより、ヒストリ置換された状態のコマンド行を 表示するようになります。 .It Fl x .Ar echo 変数を設定します。これにより、実行直前に、実行するコマンドを 表示するようになります。 .It Fl V .Pa .cshrc を実行するより前に .Ar verbose 変数を設定します。 .It Fl X .Pa .cshrc を実行するより前に .Ar echo 変数を設定します。 .El .Pp .Fl X に対する .Fl x の関係は、ちょうど .Fl V に対する .Fl v の関係に相当します。 .Pp フラグ引数の処理のあと、もし引数が残っていて、かつ、 .Fl c 、 .Fl i 、 .Fl s 、 .Fl t のいずれのフラグも指定されていなければ、残っている最初の引数は コマンドファイル名であるとみなされます。シェルはこのファイルをオープンし、 `$0' による置換に備えてファイル名を保存します。多くのシステムは version 6 または version 7 の標準のシェルを使っており、また、それらの シェル・スクリプトは本シェルとは互換性がないので、 スクリプトの先頭の文字が `#' でない場合、 つまりスクリプトがコメントから始まらない場合、 本シェルはそれらの `標準' シェルを起動して実行します。 残りの引数は変数 .Ar argv に初期値として設定されます。 .Pp .Nm csh は、実行開始に際し、まず、ファイル .Pa /etc/csh.cshrc を読み込み実行します。ログイン・シェルであれば、さらに、ファイル .Pa \&/etc/csh.login を読み込み実行します。 次にシェルを起動したユーザの .Ar ホーム ・ディレクトリにあるファイル .Pa \&.cshrc を読み込み実行します。ログイン・シェルであるなら、 さらに、同じディレクトリのファイル .Pa \&.login を読み込み、実行します。 .Pa \&.login の通常の使い方としては、ユーザが CRT 画面の設定のために ``stty crt'' を実行したり、 .Xr tset 1 を実行したりするために用いられます。 .Pp 通常、シェルはプロンプト `% ' を表示し、端末からコマンドを読み込みます。 引数の処理やコマンド・スクリプトを含むファイルの処理については後述します。 .Pp シェルは以下の動作を繰り返します: 読み込んだ行を .Ar 単語 に分解します。この単語の列をコマンド履歴に格納し、解析します。 最後にその行の各コマンドを実行します。 .Pp ログイン・シェルが終了するとき、ユーザの .Ar ホーム ・ディレクトリのファイル .Pa .logout と .Pa /etc/csh.logout を読み込み実行します。 .Ss 字句構造 シェルは、読み込んだ行を空白とタブを区切りとして単語に分割します。ただし、 以下の例外があります。文字 `&' `\&|' `;' `<' `>' `(' `)' は独立した単語となります。`&&'、`\&|\&|'、`<<'、`>>' のように 2つ繰り返されている場合はペアで1単語を形成します。 これらのメタキャラクタは、直前に `\e' を置くことによって、単語の一部としたり、 特別な意味を無視させることができます。改行の直前に `\e' を置くと、 単一の空白と等価になります。 .Pp 対応したクォート記号 `'\|'、`\*(ga'、`"'、に狭まれた文字列は、単語の一部分となります。 このような文字列中のメタキャラクタやブランク、 タブによって単語が分割されることはありません。 これらのクォートの意味はあとで説明します。 `\'' または `"' の内側で改行文字の直前に `\e' を置くと、 改行文字そのものになります。 .Pp シェルの入力が端末からではない場合、 `#' 文字から改行まではコメントとして扱われます。 直前に `\e' を置くか `\`'、`\''、`"" でクォートすることにより、 この意味を抑制することができます。 .Ss コマンド 単純コマンドは単語の列であり、最初の単語が実行すべきコマンドを示します。 `\&|' 記号で区切られた、単純コマンドあるいは単純コマンドの列は パイプラインを形成します。パイプラインの各コマンドの出力は、次のコマンドの 入力に接続されます。パイプラインの列を `;' によって区切ることで逐次実行が 行えます。パイプラインの列に続けて `&' を置くと、そのパイプラインの終了を 待つことなく、次のパイプラインが実行されます。 .Pp 上記のいずれかを `('と`)' で囲むことにより、単純コマンドを形成することが できます (これはパイプライン等の構成要素として使えます)。 また、パイプラインを `\&|\&|' または `&&' で区切ることにより、C 言語のように、第2のパイプラインが第1のパイプラインが失敗あるいは 成功したときにのみ実行させることができます( .Em 式 の項参照)。 .Ss ジョブ シェルはパイプラインの各々に対し .Ar ジョブ を一つづつ関連付けます。シェルは、現在実行中のジョブの一覧表を保持しており、 これは、 .Ar jobs コマンドによって表示することができます。 ジョブには整数の番号が割り当てられます。ジョブが `&' を用いて非同期に 起動された場合、シェルは以下のような出力を行います: .Bd -filled -offset indent .Op 1 1234 .Ed .Pp これは、非同期に起動したジョブがジョブ番号 1 であり、プロセスID が 1234 である (トップレベルの) プロセスを 1 つ持っていることを示します。 .Pp もし、あるジョブを実行中に他のことをしたくなった場合、 .Nm ^Z キー (control-Z) を押すことにより実行中のジョブに STOP シグナルを 送信することができます。通常、シェルはそのジョブが停止した(Stopped)ことを 出力し、プロンプトを表示します。ここで、停止したジョブの状態を操作することが できます。つまり、 .Ar bg コマンドにより停止したプロセスを .Em バックグラウンド で走行させたり、他のコマンドを実行してから、停止していたジョブを .Ar fg コマンドにより .Em フォアグラウンド で再実行させることなどができます。 .Nm ^Z は即座に効力を発揮し、インタラプトと同様に、それまで待たされていた 出力とまだ読み込まれていない入力は捨てられます。 ほかに特殊キーとして .Nm ^Y があり、これを押すと、プログラムが .Xr read 2 によって読み込もうとした時点で STOP シグナルが送信されます。 これは、実行中のジョブに対していくつかの入力を先に入力しておき、 先行入力を読み終えた時点でジョブを停止させたいときに便利です。 .Pp バックグラウンドで実行しているジョブが端末からの入力を試みた場合、その ジョブは停止します。通常、バックグラウンドジョブが端末に出力することは 可能ですが、これは、コマンド ``stty tostop'' により禁止することができます。 もし、この tty オプションを指定したなら、バックグラウンドで実行している ジョブは、端末から入力を試みたときと同様に、端末に出力を試みたときに 停止します。 .Pp シェルでジョブを参照するにはいくつかの方法があります。文字 `%' は ジョブ名を表すのに用いられます。番号 1 のジョブを参照する場合は `%1' とします。 単にジョブ名を入力した場合、そのジョブはフォアグラウンドに移動されます。 すなわち`%1' は `fg %1' と等価で、番号 1 のジョブをフォアグラウンドで 実行させます。同様に `%1 &' は番号 1 のジョブをバックグラウンドで 走行させます。ジョブはそのジョブを起動したときにタイプされた文字列の 先頭部分によって参照することもできます。ただし、この先頭部分は あいまいでない必要があります。すなわち、`%ex' は、`ex' という文字列で 始まる名前のサスペンドされたジョブが一つしかない場合に限り、サスペンドされた .Xr ex 1 のジョブを再開します。文字列 .Ar string を含むジョブが一つしかない場合、`%?string' と入力することで、 それを指定することもできます。 .Pp シェルは現在のジョブと直前のジョブを覚えています。jobs コマンドの 出力では、`+' 記号が付加されているのが現在のジョブ、`\-' 記号が 付加されているのが直前のジョブです。`%+' は現在のジョブ、`%\-' は 直前のジョブの省略形です。後述する .Ar ヒストリ の文法から類推される記法として、`%%' があります。 これもまた現在のジョブの省略形です。 .Pp ジョブ制御機構を用いるには、 .Xr stty 1 のオプション .Ic new を設定しておく必要があります。ジョブ制御機構は、 .Em 新型 の端末ドライバの実装の上に構築されているからです。 新型の端末ドライバにより、ジョブを停止させるためのシグナルを キーボードから入力できるわけです。 新型の端末ドライバのオプション設定については stty(1) を参照してください。 .Ss 状態通知 シェルは、プロセスが状態の変化を起こすと、すぐにそれを検知します。通常、 プロンプトが表示される直前にのみ、あるジョブが停止し、それ以上処理が 進まなくなったことを通知します。これは、ユーザの仕事を邪魔しないように するためです。 しかしながら、シェル変数 .Ar notify をセットすることにより、シェルにバックグラウンド・ジョブの状態が 変化したことをただちに通知させることができます。 また、シェルコマンド .Ar notify により、特定のジョブの状態の変化をただちに通知させる ようにマークすることもできます。引数なしの .Ar notify は現在のプロセスに対してマークをつけます。 バックグラウンド・ジョブの開始直後に単に `notify' と打つと そのジョブをマークします。 .Pp 停止したジョブがある状態でシェルを終了しようとすると、`You have stopped jobs.' という警告を受けます。このとき、 .Ar jobs コマンドによりどのジョブが停止中であるのかを確認することができます。 警告を受けた直後に .Ar jobs コマンドで確認した場合と、 警告を受けた直後にもう一度シェルを終了させようとした場合には、 シェルは2度目の警告を行わず、停止中のジョブは終了させてから シェルを終了します。 .Ss ファイル名補完 シェル変数 .Ar filec がセットされてファイル名補完機能が有効になっている場合、 ( .Ic set の項参照) .Nm csh はファイル名やユーザ名の補完を対話的に行います。文字列に続けて エスケープ文字 (エスケープキー、または control-[) キーを端末から 入力することにより補完が行われます。 たとえば、以下のファイルがカレント・ディレクトリにあったとします。 .Bd -literal -offset indent DSC.OLD bin cmd lib xmpl.c DSC.NEW chaosnet cmtest mail xmpl.o bench class dev mbox xmpl.out .Ed .Pp ここで、以下のように入力します。 .Pp .Dl % vi ch .Pp このとき、 .Nm csh は ``ch'' を補完し、それにマッチする唯一のファイル名 ``chaosnet'' にします。補完後の入力行は以下のようになります。 .Pp .Dl % vi chaosnet .Pp 以下のように入力した場合は、 .Pp .Dl % vi D .Pp .Nm csh は、次のように補完を行います。 .Pp .Dl % vi DSC. .Pp ここで、端末ベルを鳴らし、補完が完了しなかったことをユーザに伝えます。 なぜなら、``D'' で始まるファイル名が複数あったからです。 .Pp 不完全なファイル名に続いて end-of-file 文字(通常は control-D)を入力すると、 名前の補完を行うかわりに、その名前にマッチするファイル名の一覧を出力します。 たとえば、以下のように入力すると、 .Pp .Dl % vi D .Pp ``D'' で始まるファイル名の一覧が以下のように出力されます: .Pp .Dl DSC.NEW DSC.OLD .Pp このとき、入力行は変化しません。 .Pp エスケープ文字と、end-of-file 文字を用いる同様の機構は、 ユーザ名を補完する場合にも用いることができます。この場合、``~'' で 名前を開始します。たとえば、次のように入力すると、 .Pp .Dl cd ~ro .Pp 以下のように補完されます。 .Pp .Dl cd ~root .Pp シェル変数 .Ar nobeep をセットすることにより、複数の候補があったり、補完に 失敗した場合に端末ベルを鳴らすのを禁止することができます。 .Pp 通常、そのディレクトリにあるすべてのファイル名が補完の候補となります。 ある特定の拡張子を持つファイルを補完の候補から外すのに、変数 .Ar fignore を用いる ことができます。以下のコマンドで、変数 .Ar fignore を設定すると、 .Pp .Dl % set fignore = (.o .out) .Pp 以下のように入力した場合に、 .Pp .Dl % vi x .Pp 次のように補完が行われます。 .Pp .Dl % vi xmpl.c .Pp つまり、"xmpl.o" と "xmpl.out" が無視されて補完が行われました。もし、 .Ar fignore で無視するように指定されたファイル名しか補完の対象になり得なかった場合、 .Ar fignore の設定は無視されます。また、 .Ar fignore は end-of-file 文字によるファイル名の一覧には影響を与えません。 一覧ではすべてのファイル名が出力されます。 .Ss 置換 ここからは、シェルが入力に対して行うさまざまな置換を、 処理が行われる順に記述します。 .Ss ヒストリ置換 ヒストリ置換は、以前に入力されたコマンド中の単語を、 新たなコマンドの一部として置き換えることで、 コマンドの繰り返し実行を容易にしたり、直前のコマンドの引数を次のコマンドで 再び使用したり、直前に入力した行の綴り間違いを修正する際に、 タイプ入力の手間を減らし、自信をもって修正できるようにするための機能です。 ヒストリ置換は文字 `!' により始まり、入力ストリームの .Ar どの位置にでも 置くことができます(ただし、入れ子にすることは .Nm できません )。`\e' を `!' の前に置くことにより、`!' の特殊な意味を打ち消すことが できます。また、利便のために、`!' の直後に空白、タブ、改行文字、 `='、`(' が続いた場合、ヒストリ置換は行われず、入力された文字がそのまま 用いられます(ヒストリ置換は、入力行が `\*(ua' で始まっている場合にも 起こります。これについては後述します)。入力行にヒストリ置換が含まれている 場合は、実行直前にヒストリ置換を行った結果が端末に出力されます。 .Pp 端末から入力された、1つあるいはそれ以上の単語からなるコマンドは ヒストリ・リストに記録されます。ヒストリ置換は、この記録された 単語の列を入力ストリームに挿入することにより行われます。 ヒストリ・リストの大きさは、変数 .Ar history により制御されます。直前のコマンドは .Ar history の値に関わらず必ず 保存されます。記録されているコマンドは 1 から順にイベント番号が 割り当てられます。 .Pp .Ar history コマンドにより、以下の出力が得られたとします: .Bd -literal -offset indent \09 write michael 10 ex write.c 11 cat oldwrite.c 12 diff *write.c .Ed .Pp コマンドはイベント番号とともに出力されています。必ずしもイベント番号を 用いる必要はありませんが、プロンプト文字列に `!' を埋めることにより、 現在のイベント番号を .Ar プロンプト 中に表示させることができます。 .Pp 現在のイベント番号が 13 だとすると、以前のイベントを指定するには、 イベント番号を用いて `!11' としたり、 相対指定を用いて `!\-2' としたり(同じイベントを表します)する方法があります。 また、コマンドの単語の先頭部分を用いて指定することもできます。例えば、`!d' でイベント番号 12 を指定したり、 `!wri' でイベント番号 9 を指定できます。また、 ある文字列を含むコマンドを指定するのに `!?mic?' (これはイベント番号 9 の コマンドを示します)のような記法も使えます。これらの記法は、指定された イベントの各単語を単一の空白で区切った単語列に置換します。特殊な 場合として、`!!' は直前のコマンドを参照します。すなわち、`!!' だけを 入力することは直前のコマンドの .Ar 再実行 を意味します。 .Pp あるイベント中のいくつかの単語だけを指定するために、イベント指定に続けて `:' と単語指示子を書くことができます。イベントの単語は 0 から順に番号が 振られています。最初の単語(通常はコマンドです)が 0 で、2番目の単語 (第1引数)が 1 ということになります。基本的な単語指示子は以下のとおりです: .Pp .Bl -tag -width Ds -compact -offset indent .It \&0 最初の(コマンド)単語 .It Ar n .Ar n 番目の単語 .It \*(ua 最初の引数(すなわち 1 と同じ) .It $ 最後の引数 .It % 直前の .No \&? Ns Ar s Ns \&? 検索でマッチした単語 .It Ar \&x\-y .Ar x 番目から .Ar y 番目までの単語 .It Ar \&\-y .Ar `\&0\-y\' の省略形 .It * `\*(ua\-$' の省略形。イベントが1語のみからなる場合は空になる .It Ar x* .Ar `x\-$\' の省略形 .It Ar x\- .Ar `x*\' から最後の単語を除いたもの。 .El .Pp イベント指定と単語指示子とを区切る `:' は、引数選択子が `\*(ua'、`$'、`*'、 `\-'、`%' で始まっている場合には省略することができます。 単語指示子の直後に、 `:' に続けて 修飾子を複数個置くことができます。以下の修飾子が定義されています: .Pp .Bl -tag -width Ds -compact -offset indent .It h パス名の最後の要素を削除します(head) .It r 最後の `.xxx' 要素を削除します(root) .It e `.xxx' 以外の部分を削除します(extension) .It s Ns Ar /l/r/ Substitute .Ar l を .Ar r で置換します(substitution) .It t 最後の要素を残して、それより前のパス名の要素全てを削除します。 .It \&& 直前の修飾子の作用を繰り返します。 .It g 上記の修飾子の直前に置き、変更を、各単語に1回だけ及ぼすことを指定します。 例) `g&' .It a 上記の修飾子の直前に置き、一つの単語に対して可能な限り繰り返して 変更を行います。変更が全単語に及ぶようにするには `g' と組み合わせて使います。 .It p 置換結果を表示しますが、実行はしません(print only) .It q さらに置換が行われないように、置換結果をクォートします(quote) .It x q と同様ですが、空白、タブ、改行によって単語を分割します .El .Pp `g' が指定されなかった場合、適用可能な最初の単語のみが修飾子の影響を受けます。 置換については、適用可能な単語がなかった場合にはエラーとなります。 .Pp 置換(s/l/r/) における左辺 ( .Ar l ) は、エディタなどで使うような正規表現ではなく単なる文字列です。`/' のかわりに自由な文字を区切りに指定することができます。`\e' によって、 .Ar l または .Ar r 中の区切り文字をクォートすることができます。右辺 ( .Ar r ) 中の文字 `&' は 左辺の文字列に置換されます。`&' もまた `\e' によって クォートすることができます。 空の左辺値 .Ar l (`//') の場合、直前の左辺値 .Ar l または、 .No \&`!? Ns Ar s Ns ?' 中のコンテキストスキャン文字列 .Ar s から左辺値が取られます。置換指定の直後に改行がくる場合には、 最後の区切り文字を省略することができます。 コンテキストスキャンの後ろ側の文字 `?' も、直後に改行がくる場合、 同様に省略できます。 .Pp ヒストリは、 `!$' のようにイベント指定なしで参照することができます。 同じ行においてそれ以前にヒストリ参照が行われた場合はそのイベントを、 さもなければ直前のコマンドが参照されます。`!?foo?\*(ua !$' は `?foo?' に マッチするイベントの最初と最後の単語に置換されます。 .Pp 入力行の最初の非空白文字が `\*(ua' の場合、特殊なヒストリ参照の省略形であると みなします。これは `!:s\*(ua' と等価で、直前に入力したコマンド行の 文字列置換を行うことができます。たとえば、`\*(ualb\*(ualib' は 直前のコマンドの `lib' の綴り間違いを修正します。 最後に、後ろに続く文字とヒストリ置換とを隔離するために、 ヒストリ置換を `{' と `}' によって囲むことができます。`ls -ld ~paul' なる コマンドを実行した直後に`!{l}a' と 入力することで、`ls -ld ~paula' に展開されます。一方、`{}' を 使わずに `!la' とした場合は `la' で始まるイベントを検索します。 .Pp .Ss \' と \&" によるクォート 文字列を `\'' または `"' によって クォートすることにより、残りの置換のすべてあるいは一部を 抑制することができます。`'' によってクォートされた文字列には 本マニュアルのこれ以降に説明する置換が適用されません。`"' によって クォートされた文字列は、後述するように一部の置換が適用されます。 .Pp どちらのクォートの結果も単一の単語 (の全体または一部) となります。 ただし、`"' クォートされたコマンド置換は複数の単語になる特殊な場合が 一つだけあります(後述の .Em コマンド置換 の項を参照)。 `\'' クォートの場合は、このようなことはありません。 .Ss エイリアス置換 シェルはエイリアス(別名定義)を管理しており、 .Ar alias コマンドと .Ar unalias コマンドに より設定、表示、修正等を行うことができます。コマンド行がスキャンされたあと、 個々のコマンドに解析され、各コマンドの最初の単語に対応するエイリアスが あるかどうかチェックします。もし存在すれば、入力されたコマンド行の内容を 直前のコマンドとみなして、エイリアスの内容をヒストリ展開します。 コマンド行全体は展開結果と置き換えられます。エイリアスの内容が ヒストリ参照を含まなかった場合、入力したコマンド行の引数は変更せずに 残されます。 .Pp `ls' に対するエイリアスが `ls -l' だった場合、`ls /usr' は `ls -l /usr' に展開されます。この場合、エイリアスにはヒストリ参照がなかったため、 引数の `/usr' は変更せずに残されました。`lookup' に対するエイリアスが `grep !\*(ua /etc/passwd' だった場合、`lookup bill' は `grep bill /etc/passwd' に展開されます。 .Pp エイリアスが展開された場合、展開結果に対して単語分割とエイリアス検索が 再度行われます。展開結果の最初の単語が展開前の最初の単語と同一になった場合、 再度エイリアス検索が行われることはありません。それ以外の、エイリアスによる ループは検出され、エラー扱いとなります。 .Pp このメカニズムによってエイリアスでパーサのメタ記法を利用できます。 よって `alias print \'pr \e!* \&| lpr\'' とエイリアスすることで .Ar pr の 引数をプリンタに出力させるというようなことができます。 .Ss 変数置換 シェルは変数を管理しており、それらは 0 個またはそれ以上の単語のリストを 値として持ちます。変数のうちいくつかはシェルがセットしたり参照したりします。 たとえば、変数 .Ar argv はシェルへの引数を保持しており、この変数の値である単語は、特殊な方法で 参照されます。 .\" #### jpman kuma 96.12.05 here checked ... TO BE CONTINUED .Pp 変数の値は .Ar set および .Ar unset コマンドにより参照、変更することができます。シェルが 参照する変数のうちいくつかは、それがセットされているかどうかだけが重要 であり、値が何であっても意味を持たないものがあります。たとえば、変数 .Ar verbose は入力行がエコーされるかどうかを制御する変数であり、この変数を セットすることは、 .Nm csh に .Fl v オプションを指定したのと同じ意味になります。 .Pp 変数を数値として扱う操作もあります。`@' コマンドによって変数に対して数値演算 を適用し、演算結果を変数に代入することができます。しかしながら、変数の 値はつねに文字列として表現されます。数値演算の場合、空文字列は 0 と みなし、変数の値が複数の単語からなる場合 2 番目以降の単語は無視されます。 .Pp 入力行にエイリアス置換を行い、構文解析を行ったあと、コマンドが実行される 前に文字 `$' をキーとして変数置換を行います。`$' の直前に `\e' を置くことにより、変数置換を抑制することができます。 ただし、`"' クォート中では変数置換は .Em 必ず 行われますが、`\'' クォート中では .Em 決して行われません。 `\*(ga' クォートのなかはさらにあとで解釈されるため(後述の .Nm コマンド置換 の項を参照)、ここでは変数置換は行いません。`$' の直後に空白、タブ、 改行がくる場合、`$' はそのまま残されます。 .Pp 入出力リダイレクトは変数置換より前に解釈され、別々に変数置換が行われます。 それ以外のコマンド名と引数は同時に展開されます。このため、最初の 単語(コマンド)が展開の結果、複数の単語となったり、展開された結果の 最初の単語がコマンド名、それ以外が引数の一部になることもあります。 .Pp `"' でクォートされておらず、変数置換に `:q' 修飾子も指定されなかった 場合には、変数置換の結果にコマンドとファイル名置換が 行われます。`"' クォート内では複数の単語からなる値を持つ変数は、各単語を 1つの空白で区切った単一の単語 (の一部) に展開されます。`:q' 修飾子が 指定された場合は、各単語は 1 つの空白で区切られ、 この後のコマンドとファイル名置換を抑止するために、個々にクォートされた 単語の列に展開されます。 .Pp 変数置換には以下の形式があります。特に記述していない場合、 セットされていない変数の参照はエラーになります。 .Pp .Bl -tag -width Ds -compact -offset indent .It $name .It ${name} .\" #### modified by kuma 96.12.21 #### 変数 .Ar name の値の各単語を一つの空白文字で区切ったものに展開されます。中括弧は .Ar 変数名 と後続する文字を分離し、後続する文字が変数名の一部と解釈されないように するために用いられます。シェル変数は 20 文字までの名前を持ちます。 変数名の先頭はアルファベットで、それ以降はアルファベット、数字、 アンダースコアを使用することができます。 .Ar name という名前のシェル変数は存在しないが、同名のセットされた環境変数が 存在する場合には、その値に置換されます(ただし、環境変数に対しては .Nm : 修飾子と以降に説明する書式を 用いることはできません)。 .It $name Ns Op selector .It ${name Ns [ selector ] } 変数 .Ar name の値のうちいくつかの単語を選択して展開します。 .Ar selector は 1 つの数字、範囲を示す2つの数字を `\-' でつないだもの、あるいはそのような 結果になる変数置換のいずれかです。単語は 1 から順序づけられています。 範囲の最初の数字が省略された場合は 1 が用いられます。範囲の第2の数字が 省略された場合は `$#name' が用いられます。selector として `*' が用いられた 場合には、すべての単語に展開されます。範囲の第2の数字が省略されるか、 単語数より小さい場合には、範囲が空になってもエラーとはなりません。 .It $#name .It ${#name} 変数の値の単語数に展開されます。 この機能は後述する `$argv[selector]' で有用です。 .It $0 コマンドを読み込んでいるファイル名に展開されます。ファイル名が不明の場合は エラーとなります。 .It $number .It ${number} `$argv[number]' と等価です。 .It $* `$argv[*]' と等価です。 修飾子 `:e'、`:h'、`:t'、`:r'、`:q'、`:x' や `:gh'、`:gt'、`:gr' を適用することができます。中括弧`{' `}' で 囲まれている場合は、中括弧内に修飾子が存在しなければなりません。 現在の csh の実装では、各 `$' 展開につき1つの修飾子のみ指定することができます。 .El .Pp 以下の置換を行なう場合は `:' 修飾子を指定することはできません。 .Bl -tag -width Ds -compact -offset indent .It $?name .It ${?name} 変数 name がセットされていれば `1' に、さもなければ `0' に展開されます。 .It $?0 現在の入力ファイル名がわかっていれば `1' に、不明ならば `0' に展開されます。 .It \&$\&$\& 親のシェルの (10進の) プロセス番号に展開されます。 .It $! そのシェルから起動された最後のバックグラウンド・プロセスの (10進の) プロセス番号に展開されます。 .It $< 標準入力から1行を読み込み、その内容に展開されます。読み込んだ内容の解釈は 行いません。スクリプト中でキーボードからの入力を受けるのに用いられます。 .El .Ss コマンドとファイル名置換 残りの置換であるコマンド置換とファイル名置換は、 組み込みコマンドの引数に対しては 適用されたり、されなかったりします。 .\" #### changed by kuma 96.12.21 #### すなわち、式の中で評価が行われない部分に関しては 以下の置換が行なわれません。組み込みコマンドではないコマンドにおいては、 コマンド名は引数とは別に置換が行なわれます。 .\" #### changed by kuma 96.12.21 #### コマンド名に対する置換が生じるのは一連の置換処理の最後の方で、 入出力リダイレクトの設定後、メインシェルの子供の中で行われます。 .Ss コマンド置換 コマンド置換は、コマンドを `\*(ga' で囲むことによって指示します。 コマンドからの 出力は空白、タブ、改行によって単語に分割され、空の単語を削除したあとに 元の文字列と置換されます。 `"' の内部では、改行のみが単語分割の区切りとして扱われ、空白とタブは そのまま残されます。 .Pp どちらの場合も、コマンドの出力の最後の改行は単語の区切りとはならず、単に 削除されます。 よってコマンド置換によって、コマンドの出力が完全な一行であっても、 単語の一部分のみを生成することが可能です。 .Ss ファイル名置換 単語が文字 `*'、 `?'、 `['、 `{' を含んでいるか、単語の先頭文字が `~' の .\" #### modified by kuma 96.12.21 #### 場合、その単語はファイル名展開(あるいはグロブ(glob)と呼ばれます)の 候補となります。 .\" #### modified by kuma 96.12.21 #### 候補となった単語はパターンとみなされ、パターンにマッチするファイル名が アルファベット順にソートされた列に置換されます。 ファイル名置換を含む単語の列がどれもファイル名にマッチしなかった場合には エラーとなりますが、 すべての単語パターンがマッチする必要はありません。 メタキャラクタ`*'、 `?'、`[' のみがパターンマッチ文字であり、`~' と `{' は省略形といったほうが近いで しょう。 .Pp ファイル名マッチにおいて、ファイル名先頭、または `/' の直後の `.' は、 `/' と同様に明示的にマッチさせなければなりません(`*' や `?' は これらにマッチしません)。 `*' は、空文字列を含むどのような文字列にもマッチします。`?' は、 どのような1文字にもマッチします。 .Sq Op ... は、括弧のなかで指定した文字のいずれかにマッチします。 .Sq Op ... 内では、文字の対を `\-' でつなぐことで、 文字の範囲を指定することができます(両側の文字も含まれます)。 .Pp ファイル名の先頭の `~' はホーム・ディレクトリを示すのに用いられます。 単独で用いられた場合には、シェルを起動したユーザのホーム・ディレクトリ .\" #### modified by kuma 96.12.21 #### (変数 .Ar home の値に反映されているとおり)に展開されます。`~' に続けてアルファベット、 数字、`-' からなる単語が続いた場合は、その単語をユーザ名とみなして、 そのユーザのホーム・ディレクトリに展開されます。たとえば、ユーザ ken の ホーム・ディレクトリが `/usr/ken' ならば、`~ken' は `/usr/ken' に、 `~ken/chmach' は `/usr/ken/chmach' に展開されます。 直後にアルファベットと `/' 以外が続く`~'と、ファイル名の先頭にない `~' は 変更されずにそのまま残されます。 .Pp メタ記法 `a{b,c,d}e' は `abe ace ade' の短縮形です。 .\" #### modified by kuma 96.12.21 #### この記法の左から右への出現順序は保存されます。 展開結果は下位のレベルで個別にソートされ、出現順序は保存されます。 この記法は入れ子にすることができます。 source のホーム・ディレクトリが `/usr/source' ならば、 `~source/s1/{oldls,ls}.c' は `/usr/source/s1/oldls.c /usr/source/s1/ls.c' に展開されます。このとき oldls.c や ls.c が 存在しなくともエラーにはなりません。同様に、`../{memo,*box}' は `../memo ../box ../mbox' 等に展開されます(`memo' と `*box' の 展開結果がいっしょに ソートされたりしていないことに注意してください)。特殊な場合として、 単独の`{' と `}'、`{}' は変更されずにそのまま残されます。 .Ss 入出力 コマンドの標準入出力は、以下の方法によりリダイレクトすることができます: .Pp .Bl -tag -width Ds -compact -offset indent .It < name ファイル .Ar name (変数、コマンド、ファイル名展開を受けます)をオープンし、 コマンドの標準入力とします。 .It << word .Ar word と同一の行が出現するまで、シェルの入力を読み込みます。 .Ar word は変数、ファイル名、コマンド置換を受けません。シェル入力の行は 読み込まれるとすぐに .Ar word と比較されます(置換を行う前に)。その後、 .Ar word に `\e'、`"'、`\''、`\*(ga' クォートが出現しないなら、読み込まれた行には 変数置換と .\" #### ^^^^^^^ `\'' だと思う(1次チェック者のコメント?jpman kuma 961205) .\" #### kuma agree with you, changed as specified 96.12.22 コマンド置換が適用されます。この置換を抑制するために、`\e' によって `$'、`\e'、`\*(ga' をクォートすることができます。コマンド置換において、 すべての空白、タブ、改行は保存されますが、最後の改行は削除されます。 読み込んだ行はすべて中間的なファイルに保存され、コマンドの標準入力として 用いられます。 .It > name .It >! name .It >& name .It >&! name ファイル .Ar name を標準出力として用います。ファイルが存在しなければ作成され、 すでにファイルが存在すればその内容は切り捨てられ、以前の内容は失われます。 .Pp 変数 .Ar noclobber がセットされている場合、ファイルが存在しないか文字型特殊ファイル (端末や `/dev/null' のような) でなければエラーになります。これは、 すでに存在するファイルを思いがけず削除してしまうことを防止します。`!' を 用いた形式を使うと、この検査を抑制することができます。 .Pp `&' を用いた形式では、標準出力とともに標準エラー出力もファイルへ リダイレクトされます。 .Ar name .\" #### modified by kuma 96.12.21 #### は、 `<' の入力ファイル名の場合と同様の展開を受けます。 .It >> name .It >>& name .It >>! name .It >>&! name `>' と同様に、ファイル .Ar name を標準出力として用います。ただし、コマンドの出力はファイルへ追加されます。 変数 .Ar noclobber がセットされている場合、 ファイルが存在しなければエラーとなります(`!' を用いることで、 この検査を抑制することができます)。 他は `>' と同様です。 .El .Pp コマンドは、シェルが起動されたときの環境を、入出力リダイレクトと パイプラインによって変更したもののなかで実行されます。以前のいくつかの シェルとは異なり、 シェルコマンドファイルから起動されたコマンドは、デフォルトでは標準入力に よってシェルコマンドファイル自体にアクセスすることはできません。 かわりに、シェルが起動した環境の標準入力をそのまま受け継いでいます。 `<<' 機構はインラインデータのために用いるべきです。 このように制限することにより、 シェルコマンドスクリプトをパイプラインの一部として用いることができます。 バックグラウンドで実行されているコマンドの標準入力も .Pa /dev/null 等にリダイレクトされることは .Ar なく 、シェルの標準入力をそのまま受け継いでいます。もし標準入力が端末で、 コマンドが端末から読み込もうとした場合、そのプロセスはブロックされ、 シェルはユーザにそのことを通知します(参照: .Sx ジョブ の項)。 .Pp 標準エラー出力もパイプにリダイレクトすることができます。単純に `\&|' の かわりに `\&|&' を使います。 .Ss 式 .\" #### modified by kuma 96.12.21 #### いくつかの組み込みコマンド(後述します)は、引数として式を取ります。式は C 言語のものと類似しており、同じ優先順位を持ちます。式は .Nm @、 .Ar exit、 .Ar if、 .Ar while コマンド中で用います。以下の演算子が使用可能です: .Bd -ragged -offset indent \&|\&| && \&| \*(ua & == != =~ !~ <= >= < > << >> + \- * / % ! ~ ( ) .Ed .Pp 上記の演算子は右にいくほど優先順位が高くなっています。 `==' `!=' `=~' `!~'、`<=' `>=' `<' `>'、`<<' `>>'、`+' `\-'、 `*' `/' `%' の 5グループは各グループ内では同じ優先度です。 `=='、`!='、`=~'、`!~' は文字列の比較を行い、他の演算子は数値演算を 行います。`=~'、`!~' は `!='、`==' と同様ですが、右辺を .Ar パターン (`*'、`?'、`[...]' を含んだ) とみなして、左辺とのパターンマッチが行われます。 これにより、シェル スクリプトにおいてパターンマッチのみが必要な局面では .Ar switch ステートメントを使わずに済ませることができます。 .Pp 先頭が `0' の文字列は 8 進数の数値とみなされます。空または省略された引数 は `0' とみなされます。すべての演算結果は 10 進数数値の文字列となります。 式の 2 つの要素が同一の単語中に出現してはいけません。つまり、 .\" #### modified by kuma 96.12.21 #### 要素の前後が、構文解析において特殊な意味を持つ `&'、`\&|'、`<'、`>'、`('、`)' でない場合は、 その要素は空白で囲まれていることが必要です。 .Pp 数式中では、`{' と `}' で囲んだコマンドと、 以下のファイル検査演算子を用いることができます。 ファイル検査演算子は .Fl l .Ar name の形式で、 .Ic l は以下のうちのいずれかです: .Bd -literal -offset indent r 読み込みアクセス w 書き込みアクセス x 実行アクセス e 存在 o 所有 z サイズがゼロ f 通常ファイル d ディレクトリ .Ed .Pp 指定された name は、コマンド、ファイル名置換を適用したのちに 実ユーザの権限において検査されます。ファイルが存在しないか、 アクセス不可なら演算結果は false すなわち `0' になります。 コマンド実行においては、コマンドが成功したなら演算結果は true `1' に、 コマンドが 0 以外の終了ステータスを返してきたら、すなわち、 失敗なら演算結果は false `0' になります。 終了ステータスの値自体を知りたい場合は、コマンドを式以外の文脈で実行し、変数 .Ar status の値を調べます。 .Ss 制御構造 シェルにはコマンドファイル(シェル・スクリプト)中で、 あるいは(制限されてはいるが、便利な方法で)端末から、 制御の流れを変更するためのいくつかのコマンドがあります。 これらのコマンドはシェルに入力を読み直させたり、 スキップさせたりすることができます。実装の制限上、 これらのコマンドを書くことのできる位置に制限があります。 .Pp .Ic foreach、 .Ic switch、 .Ic while、 文、および、 .Ic if\-then\-else の .Ic if ステートメントは、 後述するように入力行の単一の単純コマンドとして現れる必要があります。 .Pp シェルの入力がシーク不可能な場合、 シェルは繰り返しが必要なときには入力をバッファに保存し、 .\" #### modified by kuma 96.12.23 #### この内部バッファに対してシークを行います(このため、シーク不可能な入力の場合も、 後方への goto が可能です)。 .Ss 組み込みコマンド 組み込みコマンドは通常シェルのプロセス内部で実行されます。 ただし、組み込みコマンドがパイプラインの最後以外に用いられた場合は、 サブシェル上で実行されます。 .Pp .Bl -tag -width Ds -compact -offset indent .It Ic alias .It Ic alias Ar name .It Ic alias Ar name wordlist 1行目の形式はすべてのエイリアスを出力します。2 行目の形式は .Ar name に対応したエイリアスの値を出力します。最後の形式は .Ar wordlist を .Ar name のエイリアスとして登録します。 .Ar wordlist にはコマンド置換、ファイル名置換が適用されます。 .Ar name として .Ar alias または .Ar unalias を指定することはできません。 .Pp .It Ic alloc .Nm csh が獲得したメモリのうちの使用量と空き容量を表示します。 なんらかの引数をつけると、ブロックサイズごとの使用中/空ブロック数を表示します。 ブロックサイズは 8、16、32、.. となります。 本コマンドの出力はシステムによって異なります。 VAX 以外のシステムは、異なるメモリ管理を行っているかもしれないからです。 .Pp .It Ic bg .It Ic bg \&% Ns Ar job ... 現在のジョブあるいは指定されたジョブをバックグラウンドに移動します。 もしそれらのジョブが停止されていたなら、実行が再開されます。 .Pp .It Ic break 最も内側の .Ic foreach または .Ic while ループに対応する .Ic end の後へ脱出します。同じ行にある残りのコマンドは実行されます。複数の .Ic break を同一行に記述することで複数レベルの脱出が行えます。 .Pp .It Ic breaksw .Ic switch から脱出し、 .Ic endsw のあとで実行を再開します。 .Pp .It Ic case Ar label : .Ic switch ステートメントのラベルを指定します。 .Pp .It Ic cd .It Ic cd Ar name .It Ic chdir .It Ic chdir Ar name .\" #### modified by kuma 96.12.23 #### シェルの作業ディレクトリをディレクトリ .Ar name に変更します。引数が指定されなかった場合には、 ユーザのホーム・ディレクトリに変更します。 カレント・ディレクトリにディレクトリ .Ar name がない場合(かつ .Ar name が `/'、`./'、`../' で始まっていない場合)、変数 .Ic cdpath の各要素のサブディレクトリとして .Ar name がないかどうかを調べます。最後に、シェル変数 .Ar name に `/' で始まる値が設定されているなら、 その値のディレクトリが存在しないかを調べます。 .Pp .It Ic continue 最も内側の .Ic while または .Ic foreach ループの先頭に戻ります。戻る前に、同じ行に記述されたコマンドが実行されます。 .Pp .It Ic default : .Ic switch ステートメントのデフォルトを指定します。 .Ic default は、すべての .Ic case ラベルのあとに出現しなければなりません。 .Pp .It Ic dirs ディレクトリ・スタックを表示します。 スタックの先頭(カレント・ディレクトリ)を左端にして表示します。 .Pp .It Ic echo Ar wordlist .It Ic echo Fl n Ar wordlist 指定された単語を空白で区切った文字列をシェルの標準出力に書き出します。 .Fl n オプションが指定されなければ、最後に改行が出力されます。 .Pp .It Ic else .It Ic end .It Ic endif .It Ic endsw .Ic foreach、 .Ic if、 .Ic switch、 .Ic while ステートメントの項を参照してください。 .Pp .It Ic eval Ar arg ... ( .Xr sh 1 と同様)引数をシェルへの入力であるとみなして読み込み、 現在のシェルのコンテキストで実行します。 コマンド置換や変数置換の結果として生成されたコマンド列を実行する場合に用いられます。 通常は、それらの置換に先立って文法解析が行われてしまうからです。 .Ic eval の使い方の例が .Xr tset 1 にあります。 .Pp .It Ic exec Ar command 指定された command を現在のシェルと置き換えて実行します。 .Pp .It Ic exit .It Ic exit Ar (expr ) 1行目の形式では変数 .Ic status の値、2 行目の形式では式 .Ic expr の値を返り値としてシェルを終了します。 .Pp .It Ic fg .It Ic fg % Ns Ar job ... 現在のジョブあるいは指定されたジョブをフォアグラウンドに移動します。 停止していたジョブは実行を再開します。 .Pp .It Ic foreach Ar name (wordlist) .It ... .It Ic end 変数 .Ic name に .Ic wordlist の各値を順次セットしながら対応する .Ic end までのコマンドを繰り返し実行します( .Ic foreach と .Ic end .\" #### modified by kuma 96.12.23 #### は単独で行に置かなければなりません)。組み込みコマンド .Ic continue を使って中途でループの次の繰り返しを実行させたり、 .Ic break コマンドによって中途でループを脱出させたりすることができます。 このコマンドが端末から読み込まれる場合、ループすべての内容が(プロンプト ? を表示しながら)読み込まれてから実行が開始されます。 端末からループ中でタイプ・ミスした場合は修正できます。 .Pp .It Ic glob Ar wordlist .Ic echo コマンドと似ていますが、`\e' によるエスケープは解釈されず、 .\" #### modified by kuma 96.12.23 #### 単語はヌル文字によって区切られます。プログラムから、 シェルをファイル名置換のために利用する場合に便利です。 .Pp .It Ic goto Ar word .Ic word にファイル名置換、およびコマンド置換が適用されたのち、それを `label' とみなします。シェルは可能なかぎり入力を遡って読み直し、`label:' のある行を検索し、そこから実行を開始します。 ラベルの前には空白またはタブを置くことが可能です。 .Pp .It Ic hashstat コマンドを検索するのに、 内部キャッシュがどの程度効率的に働いているか (そして .Ic exec をどの程度回避できているかを)を表示します。 .\" #### modified by kuma 96.12.23 #### .Em path の要素のうち、ハッシュ関数がヒットの可能性を示すものと、 `/' で始まらないものについて .Ic exec が試みられます。 .Pp .It Ic history .It Ic history Ar n .It Ic history Fl r Ar n .It Ic history Fl h Ar n ヒストリのリストを表示します。数字 .Ar n が指定された場合には、最近の .Ar n 個のイベントが表示されます。 .Fl r オプションは表示順序を逆にします。 .\" #### modified by kuma 96.12.23 #### すなわち、最も古いものを先に表示するのではなく、 最も新しいものを先に表示します。 .Fl h オプションを指定すればイベント番号が省略されます。これは .Ic source コマンドで \-h を使って読み込むためのファイルを生成する場合に用いることができます。 .Pp .It Ic if ( Ar expr ) No command .\" #### modified by kuma 96.12.23 #### 指定された式が true と評価されたなら、単一のコマンド .Ar command が実行されます。 .Ar command .\" #### modified by kuma 96.12.23 #### に対する変数置換は、実行に先だって .Ic if コマンドの残りの部分と同時に行なわれます。 .Ar command は単純コマンドのみが許され、パイプライン、コマンドリスト、括弧でくく られたコマンドであってはいけません。入出力リダイレクションは式 .Ar expr が false と評価され、それゆえ .Ar command が実行 .Sy されなかった 場合にも処理されます(これはバグです)。 .Pp .It Ic if ( Ar expr ) Ic then .It ... .It Ic else if ( Ar expr2 ) Ic then .It ... .It Ic else .It ... .It Ic endif 式 .Ar expr が true なら最初の .Ic else までのコマンドが実行されます。さもなければ、式 .Ar expr2 が true なら次の .Ic else までのコマンドが実行されます。 いくつでも .Ic else-if の対を繰り返すことができます。最後に 1 つの .Ic endif が必要です。 最後の .Ic else 部分はあってもなくてもかまいません。 (単語 .Ic else と .Ic endif は入力行の最初に置く必要があります。また、 .Ic if は行内に単独で、または .Ic else のあとに置く必要があります)。 .Pp .It Ic jobs .It Ic jobs Fl l アクティブなジョブの一覧を出力します。 .Fl l .\" #### modified by kuma 96.12.23 #### オプションを指定すると、通常の情報に加えてプロセス ID も出力します。 .Pp .It Ic kill % Ns Ar job .It Ic kill Ar pid .It Ic kill Fl sig Ar pid ... .It Ic kill Fl l TERM(terminate) シグナルあるいは指定したシグナルを、 指定されたジョブまたはプロセスに送ります。 シグナルは番号または名前で指定できます(名前は .Pa /usr/include/signal.h にある名前から `SIG' を取り除いたものです)。 シグナル名の一覧を ``kill \-l'' により表示できます。 kill にはデフォルト動作はなく、 単に `kill' を実行しても現在のジョブにシグナルが送られるようなことはありません。 送るシグナルが TERM(terminate) または HUP(hangup) の場合、 CONT(continue) シグナルも同時に送られます。 .Pp .It Ic limit .It Ic limit Ar resource .It Ic limit Ar resource maximum-use .It Ic limit Fl h .It Ic limit Fl h Ar resource .It Ic limit Fl h Ar resource maximum-use 現在のプロセスと、それが生成するプロセスのそれぞれについて、 .\" #### modified by kuma 96.12.23 #### -指定されたリソース +指定された資源 .Ar resource を、指定された .Ar maximum-use を超えて使用しないように設定します。 .Ar maximum-use が指定されなかった場合、現在の制限値が表示されます。 .Ar resource が指定されなかった場合、すべての制限値が表示されます。 .Fl h オプションが指定された場合、 現在の制限値のかわりにハードリミットの表示/設定を行います。 .\" #### modified by kuma 96.12.23 #### ハードリミットは現在の制限値の上限の値です。 スーパーユーザのみがハードリミットを増加させることができます。 一般ユーザは現在の制限値を可能な範囲で増減することができます。 .Pp .\" #### modified by kuma 96.12.23 #### -現在のところ、制御可能なリソースは、 +現在のところ、制御可能な資源は、 .Ar cputime (各プロセスが使うことのできる最大の CPU 秒数)、 .Ar filesize (1つのファイルの最大サイズ)、 .Ar datasize ( .Xr sbrk 2 .\" #### modified by kuma 96.12.23 #### を用いてプログラムのテキスト領域の末尾を超えて増加させることのできる data+stack 領域の最大サイズ)、 .Ar stacksize .\" #### modified by kuma 96.12.23 #### (自動的に拡張されるスタックの最大サイズ)、 .Ar coredumpsize (最大のコアファイルのサイズ)です。 .Pp 最大値 .Ar maximum-use は、(整数あるいは浮動小数の) 数値とそれに続くスケールファクタによって指定します。 .Ar cputime 以外の制限値のデフォルトのスケールファクタは `k' あるいは `kilobytes'(1024 バイト)です。 .\" #### modified by kuma 96.12.23 #### スケールファクタとして `m' あるいは `megabytes' を使用することもできます。 .Ar cputime のデフォルトのスケールファクタは `seconds'(秒)です。 `m'(分)、`h'(時間) をスケールファクタとして指定したり、 `mm:ss' 形式で分秒を指定したりすることができます。 .Pp .\" #### modified by kuma 96.12.23 #### -リソース名 +資源名 .Ar resource とスケールファクタを指定する際には、 .\" #### modified by kuma 96.12.23 #### 一意に決定できるなら、名前の先頭部分だけを指定することができます .\" #### jpman kuma: not found in freebsd-2.1.5-RELEASE manpage (st を stacksize のかわりに用いる等)。 .Pp .It Ic login ログイン・シェルを終了し、 .Pa /usr/bin/login と置き換えます。これは .Xr sh 1 との互換性のために用意されたログオフの手段です。 .Pp .It Ic logout ログイン・シェルを終了します。 .Ic ignoreeof がセットされている場合に便利です。 .Pp .It Ic nice .It Ic nice Ar +number .It Ic nice Ar command .It Ic nice Ar +number command 1 行目の形式は、シェルのスケジューリング・プライオリティを 4 に設定します。 2 行目の形式は、プライオリティを指定された値 .Ar number に設定します。残りの 2 つの形式は、コマンド command をプライオリティ 4 または指定した .Ar number で実行します。 .\" #### modified by kuma 96.12.23 #### 大きい数値を指定するとプロセスが利用できる CPU がその分少なくなります。 スーパーユーザのみがプライオリティとして負の値を `nice \-number ...' のように指定することができます。 .Ar command はつねにサブシェルで実行され、 単純な .Ic if .\" #### modified by kuma 96.12.23 #### 文のコマンドと同様の制限を受けます。 .Pp .It Ic nohup .It Ic nohup Ar command 1 行目の形式は、シェル・スクリプト内で使用し、 スクリプトのそれ以降で hangup シグナルを無視するように設定します。 2 行目の形式は、指定されたコマンドが、 hangup シグナルを無視するように設定して実行します。 `&' をつけて実行されたプログラムは、 .Ic nohup を指定して実行したのと同様に hangup シグナルを無視します。 .Pp .It Ic notify .It Ic notify % Ns Ar job ... 現在のジョブまたは指定されたジョブの状態が変化したときに、 .\" #### modified by kuma 96.12.23 #### コマンド待ちかどうかに関わりなく即座に通知するように指定します。 通常は、プロンプトが表示される直前に通知が行われます。 シェル変数 .Ic notify が指定されている場合は、すべてのジョブに対して同様の設定が行われます。 .Pp .It Ic onintr .It Ic onintr Fl .It Ic onintr Ar label 割り込みに対するシェルの動作を制御します。1行目の形式は、 シェルをデフォルトの動作、すなわち、スクリプトの実行が中断される、 またはコマンド入力状態に戻るように設定します。 2 行目の形式は、すべての割り込みを無視するように設定します。 3行目の形式は、シェルが割り込みを受けるか、 チャイルドプロセスが割り込みによって停止した場合に goto label が実行されるように設定します。 .Pp シェルがバックグラウンドで、かつ、 シグナルを無視するように設定して実行されている場合は、 .Ic onintr は効力を持たず、 割り込みはシェルとそこから起動されるすべてのコマンドで 引続き無視されます。 最後に .Ic onintr 文はシステムのスタートアップ・ファイル (/etc/csh.cshrc、/etc/csh.login) 中でも、 割り込みが禁止されているので無視されます。 .Pp .It Ic popd .It Ic popd Ar +n ディレクトリ・スタックをポップし、 新たにスタックの先頭になったディレクトリにカレント・ディレクトリを変更します。 引数 .Ns \`+ Ar n Ns \' が指定された場合、スタックの .Ar n 番目の要素が捨てられます。ディレクトリ・スタックの要素は、 スタックの先頭から 0 から順に番号がつけられます。 .Pp .It Ic pushd .It Ic pushd Ar name .It Ic pushd Ar n 引数を指定しなかった場合、 .Ic pushd はスタックの先頭の 2 つの要素を入れ替えます。引数 .Ar name が指定された場合、 .Ic cd と同様にカレント・ディレクトリを変更したあと、 古いカレント・ディレクトリ .\" cwd の typo だと思うが わからない .\" (as in .\" .Ic csw ) .\" #### kuma agree with you on 96.12.23 #### をディレクトリ・スタックにプッシュします。 数字引数が指定された場合、ディレクトリ・スタックの .Ar n 番目の要素が スタックの先頭にくるようにローテートし、 カレント・ディレクトリをその要素が指すディレクトリに変更します。 ディレクトリ・スタックの要素は、スタックの先頭から 0 から順に番号がつけられます。 .Pp .It Ic rehash 変数 .Ic path に指定されているディレクトリ内の、ファイルに関するハッシュ・テーブルを 再計算させます。ログイン中に、新しいコマンドが .Ic path に含まれるディレクトリに追加された場合、 .\" #### modified by kuma 96.12.23 #### rehash コマンドを実行する必要があります。 これは、あなたが個人的なディレクトリの一つにコマンドを追加したか、 システムの管理者がシステム・ディレクトリの内容を変更したような 場合にのみ必要です。 .Pp .It Ic repeat Ar count command 指定されたコマンド .Ar command を .Ar count 回繰り返し実行します。 .Ar command .\" #### modified by kuma 96.12.23 #### に指定するものは、先の一行 .Ic if 文で指定する .Ar command と同様の制限を受けます。 入出力リダイレクションは .Ar count が たとえ 0 であっても、必ず 1回だけ処理されます。 .Pp .It Ic set .It Ic set Ar name .It Ic set Ar name Ns =word .It Ic set Ar name[index] Ns =word .It Ic set Ar name Ns =(wordlist) 1 行目の形式はすべてのシェル変数の値を表示します。 複数の単語からなる値を持つ変数は括弧で囲まれた値のリストで表示します。 2 行目の形式は、 .Ar name に空文字列を設定します。3 行目の形式は .Ar name に単一の単語 .\" #### modified by kuma 96.12.23 .Ar word を設定します。4 行目の形式は .Ar name の .Ar index 番目の要素に .Ar word を設定します。 .Ar index 番目の要素はすでに存在していなければなりません。5 行目の形式は .Ar name に .Ar wordlist で指定した単語列を設定します。すべての形式で、 値にはコマンド置換とファイル名置換が適用されます。 .Pp 複数の変数を設定するために、set コマンドへの引数を繰り返すことができます。 ただし、引数に対する変数展開処理は、代入処理に先だって行われます。 .Pp .It Ic setenv .It Ic setenv Ar name .It Ic setenv Ar name value 1 行目の形式はすべての環境変数の一覧を出力します。 これは .Xr printenv 1 と等価です。 3 行目の形式は環境変数 .Ar name に値 .Ar value を設定します。2 行目の形式は環境変数 .Ar name .\" #### modified by kuma 96.12.23 #### に空文字列を設定します。最も一般的に用いられる環境変数である .Ev USER , .Ev TERM , .Ev PATH は .Nm csh の起動時にシェル変数 .Ar user , .Ar term , .Ar path にそれぞれ設定され、 .Nm csh から実行するプログラムの環境変数には、シェル変数 .Ic user , .Ic term , .Ic path の値が反映されます。そのため、これらの変数を明示的に .Ic setenv する必要はありません。 .Pp .It Ic shift .It Ic shift Ar variable (リスト)変数 .Ic argv .\" #### modified by kuma 96.12.23 #### の各要素を左にシフトし、 .Ic argv Ns Bq 1 の値を捨てます。 .Ic argv に値が設定されていないか、 1 つ以上の要素を持たない場合にはエラーになります。 2 行目の形式は、指定された変数 .Ar variable に対して同様の処理を行います。 .Pp .It Ic source Ar name .It Ic source Fl h Ar name シェルは、指定されたファイル .Ar name からコマンドを読み込みます。 .Ic source コマンドはネストすることができます。あまりに深くネストさせると、 .\" #### modified by kuma 96.12.23 #### ファイル識別子を使い切ってしまう場合があります。いずれかのレベルの .Ic source コマンド中でエラーが発生すると、ネストしているすべての .Ic source コマンドが中断されます。通常、 .Ic source の実行中に実行されたコマンドはヒストリに記録されませんが、 \-h オプションを指定することにより、 ファイルに記述してあるコマンドを実行せずに、 ヒストリにのみ記録することができます。 .Pp .It Ic stop .It Ic stop % Ns Ar job ... バックグラウンドで走行中の現在のジョブ、あるいは指定されたジョブを停止します。 .Pp .It Ic suspend シェル自身を停止させます。 .Ic ^Z でストップ・シグナルを送られたかのように振舞います。 .Xr su 1 によって起動したシェルを停止する場合によく用いられます。 .Pp .It Ic switch Ar (string) .It Ic case Ar str1 : .It \ \ \ \ \&... .It Ic \ \ \ \ breaksw .It \ \ \ \ \&... .It Ic default : .It \ \ \ \ \&... .It Ic \ \ \ \ breaksw .It Ic endsw .\" #### modified by kuma 96.12.23 #### 各 .Ic case ラベルを順に、指定された文字列 .Ar string でマッチングを行います。 .Ar string には、まず、コマンド置換とファイル名置換が行われます。 .Ic case ラベルには変数置換が行われ、ファイル名メタキャラクタの `*'、`?'、`[...]' を用いることができます。 .\" #### modified by kuma 96.12.23 #### .Ic default ラベルが出てくるまでにどの .Ic case ラベルともマッチしなかった場合は、 .Ic default ラベルの直後から実行が始まります。 .Ic case ラベルと .Ic default ラベルは行の最初に書かれなければなりません。 .Ic breaksw コマンドによって .Ic endsw 以降のコマンドから実行が再開されます。 .Ic breaksw を用いない場合は、 C 言語の場合と同様に、 .Ic case ラベル、 .Ic default ラベルを通過して実行が続けられます。 .Ic default がなく、どのラベルもマッチしなかった場合には、 .Ic endsw 以降から実行が再開されます。 .Pp .It Ic time .It Ic time Ar command 1 行目の形式では、 シェルとそのチャイルドプロセスが使用した時間が表示されます。 .\" #### modified by kuma 96.12.23 #### 2 行目の形式では、指定された単純コマンドの実行時間が計測され、 .\" #### modified by kuma 96.12.23 #### 変数 .Ic time の項で説明する形式で、使用時間情報の要約が表示されます。 必要ならば、コマンド終了時に時間を表示するための追加のシェルが生成されます。 .Pp .It Ic umask .It Ic umask Ar value ファイル作成マスクを表示(第 1 の形式)または設定(第 2 の形式)します。 マスクは 8 進数で与えます。一般的な値としては、 グループにすべての権限を与え、 そのほかには読み込みと実行のみを許可する 002 や、 所有者以外には読み込みと実行しか許可しない 022 があります。 .Pp .It Ic unalias Ar pattern .Ar pattern にマッチするすべてのエイリアスを削除します。 `unalias *' とすることですべてのエイリアスを削除することができます。 削除するものがなかった場合にもエラーにはなりません。 .Pp .It Ic unhash 実行プログラムの位置検索を高速化する内部ハッシュ・テーブルの使用を禁止します。 .Pp .It Ic unlimit .It Ic unlimit Ar resource .It Ic unlimit Fl h .It Ic unlimit Fl h Ar resource -リソースの制限を解除します。 +資源の制限を解除します。 .Ar resource -が指定されない場合、すべてのリソースに対する制限が解除されます。 +が指定されない場合、すべての資源に対する制限が解除されます。 .Fl h が指定された場合、対応するハードリミットが解除されます。 これはスーパーユーザのみが行うことができます。 .Pp .It Ic unset Ar pattern 指定された .Ar pattern にマッチするすべての変数を削除します。 `unset *' と指定するとすべての変数が削除され、 悲惨な結果を生じることがあります。 .Ic unset するものがない場合もエラーになりません。 .Pp .It Ic unsetenv Ar pattern 指定された .Ar pattern にマッチするすべての環境変数を削除します。前述の .Ic setenv の項と .Xr printenv 1 を参照してください。 .Pp .It Ic wait すべてのバックグラウンドジョブの終了を待ちます。 対話的にシェルが実行されている場合、 インタラプトにより wait を停止することができます。 このとき、シェルはいまだに終了していないジョブの名前とジョブ番号を表示します。 .It Ic which Ar command .\" #### modified by kuma 96.12.23 #### .Ar command を指定したとき、シェルが実行するコマンドの位置を表示します。 .Pp .It Ic while Ar (expr) .It \&... .It Ic end 指定された式の評価結果がゼロでないかぎり、 .Ic while と対応する .Ic end の間のコマンドを繰り返し実行します。 .Ic break や .Ic continue によりループを終了したり、途中から繰り返しを再開させたりすることができます。 ( .Ic while と .Ic end は、その行に単独で書かれなければなりません。)入力が端末の場合、 .Ic foreach ステートメントの場合と同様に、 ループのすべてを入力するまでプロンプトが表示され、 すべての入力を終えた時点でループが実行されます。 .Pp .It Ic % Ns Ar job 指定されたジョブをフォアグラウンドに移動します。 .Pp .It Ic % Ns Ar job Ic & 指定されたジョブをバックグラウンドで再開実行させます。 .Pp .It Ic @ .It Ic @ Ar name Ns = Ns expr .It Ic @ Ar name[index] Ns = Ns expr 1 行目の形式は、すべてのシェル変数の値を表示します。2 行目の形式は、 指定された名前 .Ar name の変数に式 .Ar expr の値を代入します。式のなかに `<'、`>'、`&'、`|'を含んでいる場合、 少なくともそのような部分は `(' と `)' で囲まれている必要があります。 3 行目の形式は、変数の .Ar index 番目の要素に式 .Ar expr の値を代入します。 .Ar name と、その .Ar index 番目の要素はすでに存在していなければいけません。 .El .Pp C 言語と同様に、演算子 `*='、`+=' 等が利用可能です。 変数名と演算子の間の空白はあってもなくてもかまいません。 しかしながら、式の各要素の間には空白が必須です。 さもなければ、単一の単語とみなされてしまいます。 .Pp 特別な後置演算子 `+\|+' と `\-\|\-' により変数の値を 1 だけ増加させたり、 減少させたりすることができます。たとえば、`@ i++' のように使います。 .Ss 定義済み変数と環境変数 以下の変数は、シェルにとって特別な意味があります。これらのうち、 .Ar argv、 .Ar cwd、 .Ar home、 .Ar path、 .Ar prompt、 .Ar shell、 .Ar status はシェルが設定します。そのうち、 .Ar cwd と .Ar status 以外の変数の設定はシェルの起動時にのみ行われます。 そのような変数は、ユーザが明示的に変更しないかぎり、 値が変化することはありません。 .Pp シェルは、環境変数 .Ev USER をシェル変数 .Ar user に、 .Ev TERM を .Ar term に、 .Ev HOME を .Ar home にそれぞれコピーします。また、 これらのシェル変数が再度セットされた場合は環境変数にコピーしなおします。 環境変数 .Ev PATH も同様に扱われます。サブシェルは環境変数によって .Ar path の値を得て、もしそれが変更されれば環境変数にコピーしなおすので .Ar \&.cshrc 以外での .Ar path 変数の設定について気をつける必要はありません。 .Bl -tag -width histchars .It Ic argv シェルへの引数が設定されます。位置パラメータは argv の値に展開されます。 すなわち、 `$1' は `$argv[1]' の値に置換されます。 .It Ic cdpath .Ar chdir .\" #### modified by kuma 96.12.23 #### コマンドにおいてサブディレクトリを検索するためのディレクトリのリストです。 .It Ic cwd .\" #### modified by kuma 96.12.23 #### カレント・ディレクトリのフルパス名です。 .It Ic echo .Fl x オプションが指定された場合にセットされます。セットすることにより、 コマンドが実行される前にコマンド名とその引数が表示されるようになります。 .\" #### modified by kuma 96.12.23 #### 組み込みコマンド以外では、表示の前にすべての展開が行われます。 組み込みコマンドではコマンド置換とファイル名置換が行われる前に表示されます。 なぜなら、これらの置換は選択的に行われるからです。 .It Ic filec ファイル名補完を有効にします。 .It Ic histchars ヒストリ置換に用いる文字を文字列で指定します。 指定した文字列の最初の文字はヒストリ置換文字(デフォルトは `!')、 2 文字目は簡易置換文字(デフォルトは `\*(ua') を指定します。 .It Ic histfile ヒストリをセーブ/リストアするパス名を指定できます。 .It Ic history ヒストリ・リストのサイズを指定します。 このサイズを超えたコマンド履歴は削除されます。 あまりに大きな値を設定すると、シェルがメモリを使いつくすかもしれません。 最後に実行したコマンドは .Ar history の値にかかわらず、つねにヒストリ・リストに保存されます。 .It Ic home .\" #### modified by kuma 96.12.23 #### シェルを起動したユーザのホーム・ディレクトリです。 起動時に環境変数から設定されます。 ファイル名置換において .Sq Pa ~ は本変数を参照して展開されます。 .It Ic ignoreeof セットされると、端末のファイル終端(EOF)を無視するようになります。 間違って control-D を押してシェルを終了させてしまうのを防ぐことができます。 .It Ic mail シェルがメールの到着をチェックするためのメールファイルを指定します。 コマンド実行が完了しプロンプトが表示されるときに、 .\" #### modified by kuma 96.12.23 #### 指定された時間が経過していればメイル到着のチェックが行われます。 最終修正時刻が最終アクセス時刻以降の場合、 シェルは `You have new mail' と出力します。 .Pp .Ar mail の値の最初の単語が数値の場合には、 その数値でメール検査の間隔を秒単位で指定します。 指定がなかった場合のデフォルト値は 10分です。 .Pp 複数のメールファイルが指定された場合、 メールが到着していた場合のメッセージは `New mail in .Ar name Ns ' となります。ここで、 .Ar name は到着したメールが あるファイル名です。 .It Ic noclobber .Sx 入出力 の項で説明したように、 出力リダイレクトによって意図せずにファイルを削除しないように制限したり、 `>>' リダイレクトがすでに存在するファイルにしか適用できないようにします。 .It Ic noglob セットされると、ファイル名展開が禁止されます。 ファイル名を扱わないシェルスクリプト内や、すでにファイル名展開を行ったあとで、 それ以上の展開を望まない場合に設定します。 .It Ic nonomatch .\" #### modified by kuma 96.12.23 #### セットされると、ファイル名展開の結果が空になってもエラーとせず、 展開前のパターンをそのまま残します。 .\" #### modified by kuma 96.12.23 #### ただし、`echo [' のような、 展開前のパターンが文法的に正しくない場合はエラーになります。 .It Ic notify セットされると、シェルがジョブの終了を随時報告するようになります。 通常はプロンプトの表示直前にのみ報告が行われます。 .It Ic path .\" #### modified by kuma 96.12.23 #### path 変数の各単語は、コマンドファイルを検索すべきディレクトリ名を表します。 空の単語はカレント・ディレクトリを示します。 .Ar path 変数が設定されて いない場合、フルパス指定によるコマンド実行のみが可能になります。 通常の検索パスは `.'、`/bin'、`/usr/bin' です。しかし、これらの値はシステムによって異なります。 スーパーユーザのデフォルトの検索パスは `/etc'、`/bin'、`/usr/bin' です。 .Fl c オプションも .Fl t オプションも指定されなかった場合、 シェルは .Ar path 変数で指定されたディレクトリの内容をハッシュ・テーブルに保存します。 ハッシュ・テーブルは、起動時に .Ar \&.cshrc を読み込んだ後と .Ar path 変数を再設定した時に再構築されます。 シェルの実行中に、 新しいコマンドがハッシュされているディレクトリに追加された場合は、 .Ic rehash コマンドによりハッシュを再構築しなければなりません。 .\" #### modified by kuma 96.12.23 #### さもなければ、コマンドが見付からない可能性があります。 .It Ic prompt 端末上で対話的に実行されているシェルにおいて、 .\" #### modified by kuma 96.12.23 #### コマンド読み込み時に表示される文字列を指定します。 `!' が含まれる場合、現在のイベント番号に置換されます。 `\e' を指定することにより、この解釈を抑制することができます。 デフォルトの値は `% 'です。スーパーユーザの場合は `# ' となります。 .It Ic savehist ログアウト時にファイル ~/.history に保存されるコマンド履歴の数を指定 します。 .\" #### modified by kuma 96.12.23 #### この値で指定される数のイベントが保存されます。 起動時に、シェルは ~/.history の内容を読み込みます。あまりに 大きな値を指定すると、シェルの起動が遅くなる場合があります。 .Ar savehist がセットされているだけの場合は .Ar history に指定された値を使用します。 .It Ic shell シェルのフルパス名を示します。実行属性が立っているが、 .\" #### modified by kuma 96.12.23 #### システムが起動できないファイルを 実行する際に起動するシェルとして用いられます(後述の .Sx 非組み込みコマンドの実行 の項を参照)。システム依存の値で初期化されます。 .It Ic status 最後に実行したコマンドの終了ステータス値を保持します。 異常終了した場合は、値に 0200 が加算されます。 組み込みコマンドが失敗した場合は `1' に、成功した場合は `0' になります。 .It Ic time .\" #### modified by kuma 96.12.23 #### コマンドの自動計時を制御します。値が設定されている場合、 コマンドがその値よりも長く CPU 秒数を消費した場合には、 コマンド終了時にユーザ時間、システム時間、実時間と、 利用率すなわちユーザ+システム時間と実時間のパーセンテージが出力されます。 .It Ic verbose .Fl v コマンドラインオプションが指定されていた場合にセットされます。 ヒストリ置換が行われたあと、コマンドの内容が出力されます。 .El .Ss 非組み込みコマンドの実行 実行すべきコマンドが組み込みコマンドでなかった場合、シェルはコマンドを .Xr execve 2 システムコールによって起動しようとします。シェル変数 .Ar path .\" #### modified by kuma 96.12.23 #### の各単語は、シェルがコマンドを実行しようとするディレクトリ名を表します。 .Fl c オプションも .Fl t オプションも指定されなかった場合、 .\" #### modified by kuma 96.12.23 #### シェルはそれらのディレクトリ内にあるファイル名のハッシュ値を計算し、 シェル内部のテーブルに格納します。これは、 コマンドが存在する可能性のあるディレクトリだけで .Ic exec を試みるようにするためです。 この近道によって、サーチ・パスにたくさんのディレクトリが指定されている時、 コマンドの位置決定が著しく高速化されます。 この機能が( .Ic unhash .\" #### modified by kuma 96.12.23 #### コマンドによって)停止されている場合、または .Fl c または .Fl t オプションが起動時に指定された場合、または .Ar path .\" #### modified by kuma 96.12.23 #### 中の単語で `/' から始まらないものについては、ハッシュが用いられることはありません。 この場合は、 .Ar path の要素にコマンドラインで指定されたコマンドを連結した名前を持つ ファイルを実行しようと試みます。 .Pp 括弧で囲まれたコマンドは、つねにサブシェルによって実行されます。ですから、 .Pp .Dl (cd ; pwd) ; pwd .Pp はホーム・ディレクトリの値を表示しますが、カレント・ディレクトリ(ホーム・ .\" #### modified by kuma 96.12.23 #### ディレクトリの後に表示されます)は移動しません。 一方、 .Pp .Dl cd ; pwd .Pp を実行すると、カレント・ディレクトリがホーム・ディレクトリに移動します。 括弧で囲まれたコマンドは、現在のシェルのカレント・ディレクトリに 影響を与えずにコマンドを実行する場合にしばしば用いられます。 .Pp 実行属性が立っているにもかかわらず、 システムによって実行可能ではないファイルは シェルコマンドファイルであるとみなし、 サブシェルを起動してそのファイルを読み込ませます。 .Pp .Ic shell という名前のエイリアスが存在する場合、 エイリアスの値はシェルコマンドファイルを実行する場合の 引数リストの前に挿入されます。エイリアスの値の最初の単語は シェルのフルパス名でなければいけません(たとえば `$shell')。 .\" #### modified by kuma 96.12.23 #### これはエイリアス展開としては特別のもので、かなり後の時点に行われ、 引数リストを修正せずに、その前に単語を挿入するための手段を提供します。 .Ss シグナル処理 シェルは、通常 .Ar quit シグナルを無視します。バックグラウンドのジョブ( .Ic \&& または .Ic bg または .Ic %... & .\" #### modified by kuma 96.12.23 #### によるコマンド)はキーボードから入力されたシグナルに影響されません (hangup も含みます)。他のシグナルに対する挙動は親の環境を引き継ぎます。 シェル・スクリプトでの interrupt と terminate シグナルに対する処理は .Ic onintr によって制御することができます。ログイン・シェルは .Ar terminate シグナルを捕捉します。それ以外のシェルでは、 .Ar terminate シグナルはシェルの親の状態に従ってチャイルドプロセスに渡されます。 ログイン・シェルが .Pa \&.logout ファイルを読み込んでいる間は interrupt は無視されます。 .Sh 作者 William Joy。 ジョブ制御とディレクトリ・スタックは J.E. Kulp of IIASA, Laxenburg, Austria によって、 .\" #### modified by kuma 96.12.23 #### 現在とは異なる文法のものが実装されました。 ファイル名補完は Ken Greer, HP Labs が、 .\" #### modified by kuma 96.12.23 #### 8 bit クリーンな実装は Christos S. Zoulas, Cornell University によって行われました。 .Sh 関連ファイル .Bl -tag -width /etc/passwd -compact .It Pa ~/.cshrc シェルが起動されるときに読み込まれる。 .It Pa ~/.login ログイン・シェルの場合、ログイン時に `.cshrc' の後に読み込まれる。 .It Pa ~/.logout ログイン・シェルにおいてログアウト時に読み込まれる。 .It Pa /bin/sh 標準シェル。`#' で始まらないシェル・スクリプトの実行に用いる。 .It Pa /tmp/sh* `<<' の処理に用いられる一時ファイル。 .It Pa /etc/passwd `~name' 展開時に用いられるホーム・ディレクトリに関する情報を得る。 .El .Sh 制限事項 .\" #### modified by kuma 96.12.23 #### 単語の長さは 1024 文字に制限されます。引数リストは、システムによって 10240 文字に制限されています。ファイル名展開を含む引数の数は、 引数リストの文字数の 6 分の 1 に制限されています。 コマンド置換の結果は、引数リストと同数の制限があります。 ループ検出のため、1 行に対するエイリアス展開は 20 回までに制限されています。 .Sh 関連項目 .Xr sh 1 , .Xr su 1 , .Xr access 2 , .Xr execve 2 , .Xr fork 2 , .Xr killpg 2 , .Xr pipe 2 , .Xr setrlimit 2 , .Xr sigvec 2 , .Xr umask 2 , .Xr wait 2 , .Xr tty 4 , .Xr a.out 5 , .Xr environ 7 .br .Em An introduction to the C shell .Sh 歴史 .Nm csh は .Bx 3 で追加されました。 .\" #### modified by kuma 96.12.23 #### コマンドインタプリタとしては、履歴(参照: .Sx ヒストリ置換 )、ジョブ制御 (参照: .Sx ジョブ .\" #### modified by kuma 96.12.23 #### 参照)、対話的なファイル名補完とユーザ名補完(参照: .Sx ファイル名補完 .\" #### modified by kuma 96.12.23 #### )、C言語ライクな文法を採用して実装した最初のものです。 これらの機構にいくつかの追加機能(といくらかのバグの可能性)を 持つシェルは、現在ではたくさんあります。 これらは usenet から入手することができます。 .Sh バグ コマンドが停止状態から復帰したとき、もしそのコマンドが起動したときの ディレクトリとカレント・ディレクトリが異なるなら、 シェルはコマンドを起動したときのカレント・ディレクトリの値を表示します。 .\" #### modified by kuma 96.12.23 #### これは、そのジョブが内部的にディレクトリを変更した場合は誤解(間違った情報) を与える可能性があります。 .Pp シェルの組み込みコマンドは中断(suspend)も再開もできません。 `a ; b ; c' のようなコマンド列も適切には中断することができません。 たとえば、 `b' の実行を中断した場合には、 すぐに `c' の実行が開始されてしまいます。これは .Ar alias としてコマンド列を指定している場合に特に目立ちます。 このようなコマンド列は `()' で囲んでサブシェルで実行されるようにすることによって、 適切に停止させることが可能になります(`( a ; b ; c )'のように)。 .Pp プロセスを起動したあとの端末出力の制御が貧弱です。おそらく、 このために、 .\" #### modified by kuma 96.12.23 #### もっと良い仮想端末インタフェースを開発したいと考える人がいても何ら不思議はないです。 仮想端末インタフェース上なら、 もっと おもしろい端末出力の制御が可能になるでしょう。 .Pp .\" #### modified by kuma 96.12.23 #### シェル関数をシミュレートするために、エイリアスを不格好に用いてしまうことが よくあります。シェル関数がサポートされるべきです。 .Pp ループ中のコマンド入力において、 `?' プロンプトに続けて入力された内容はヒストリに残りません。 制御構造は組み込みコマンドとして解釈されるのではなく、 文法的に解釈するようにするべきです。これにより制御コマンドをどこにでも 置けるようになり、`\&|', `&', `;' との組み合わせが 自由にできるようになります。 .Pp コマンド置換の出力にも `:' 修飾子が適用できるべきです。 .Pp .\" #### modified by kuma 96.12.23 #### ファイル名補完機構の実装は不細工かつ非効率的です。 diff --git a/ja/man/man1/cu.1 b/ja/man/man1/cu.1 index 6b7ea49a19..9122d5e51b 100644 --- a/ja/man/man1/cu.1 +++ b/ja/man/man1/cu.1 @@ -1,325 +1,324 @@ ''' %Id: cu.1,v 1.1 1993/08/04 19:31:53 jtc Exp % .\" jpman %Id: cu.1,v 1.2 1997/03/28 10:54:42 mutoh Stab % .TH cu 1 "Taylor UUCP 1.06" .SH 名称 cu \- 別のマシンと接続する .SH 書式 .B cu [ options ] [ system | phone | "dir" ] .SH 解説 .I cu コマンドは、他のシステムを呼び出し、ダイヤルイン端末として働きます。 本コマンドは、 エラーチェックを行わない、 簡単なファイル転送プログラムとしても使用できます。 .I cu は、1 つの引数を、オプションとともに指定可能です。引数として指定する 文字列が "dir" の場合には、cu はポートとの直接接続を行ないます。 本オプションは、ユーザがポートへのライトアクセスを行なう場合にのみ 使用され、通常はモデム等の設定のために用いられます。 引数が数字の場合には、その引数は電話番号として解釈されます。そうで ない場合には、その引数は呼びだすシステム名として解釈されます。 .B \-z または .B \-\-system オプションは、数字で始まるシステム名を引数で指定する場合に指定しなけ ればならないものであり、 .B \-c または .B \-\-phone オプションは、数字以外の記号で始まる電話番号を引数で指定する場合に指 定しなければなりません。 .I cu は、UUCP設定ファイルに記述されたポートを用います。もし単にシステム名 だけが引数で与えられた場合、そのシステムへの発呼に最も適したポートが 選ばれます。 .B \-p,\-\-port,\-l,\-\-line,\-s や .B \-\-speed オプションが指定された場合、ポート選択を制御することが可能です。 リモートシステムとの間でコネクションが設定された場合、 .I cu は 2 プロセスを fork します。1 プロセスは、ポートからのデータ読みだしと 端末へのデータ書き込みを行ない、もう 1 プロセスは、端末からのデータ読み 出しとポートへのデータ書き込みを受け持ちます。 .I cu は、通信中に使用可能なコマンドがあります。 それらのコマンドはすべて、エスケープ文字から始まります。 エスケープ文字は、デフォルトでは .B ~ (チルダ)です。エスケープ文字は、行頭において入力された場合にのみ認識 されます。エスケープ文字を行頭に含むデータをリモートホストに送り たい場合には、当該エスケープ文字を 2 回入力しなければなりません。全 てのコマンドは、1 文字か、もしくは .B % 文字(パーセント記号)に続く複数文字です。 .I cu では、以下のコマンドを使用できます。 .TP 5 .B ~. 通信を終了します。 .TP 5 .B ~! command シェル経由でコマンドを実行します。コマンドが指定されない場合には、 シェルが起動されます。 .TP 5 .B ~$ command コマンドを起動します。その結果、標準出力に出力されたデータを、リ モートシステムに送ります。 .TP 5 .B ~| command コマンドを起動します。リモートシステムからの出力 データをこのコマンドの標準入力とします。 .TP 5 .B ~+ command コマンドを起動します。リモートシステムからの出力 データをこのコマンドの標準入力とします。そして、コマンドから標準出力に出力さ れたデータを、リモートシステムに送ります。 .TP 5 .B ~#, ~%break 可能であればブレーク信号を送ります。 .TP 5 .B ~c directory, ~%cd directory ローカルディレクトリを変更します。 .TP 5 .B ~> file ファイルをリモートシステムに送ります。本コマンドは、ファイルを通信路を 経由して、ファイルをダンプするのに用いられます。この場合、リモートシス テムがこの動作を想定して動作しているものとみなして動作しますので、注意 して下さい。 .TP 5 .B ~< リモートシステムからファイルを受信します。このコマンドを実行すると、 .I cu コマンドは、ローカルファイル名と、ファイル転送のためにリモート側で実 行すべきコマンドの入力を促します。本コマンドは、 .B eofread 変数で指定される文字を受信するまでデータ受信を継続します。 .TP 5 .B ~p from to, ~%put from to ファイルをリモート Unix システムに送信します。本コマンドは、リモート システムがファイルを受信するために必要なコマンドを自動的に起動します。 .TP 5 .B ~t from to, ~%take from to リモート Unix システムから、ファイルを取得します。本コマンドは、リモート システムからファイルを送信するために必要なコマンドを自動的に起動します。 .TP 5 .B ~s variable value .I cu の変数を、指定した値に設定します。値が指定されなかった場合、変数は .B true に設定されます。 .TP 5 .B ~! variable .I cu の変数を .B false に設定します。 .TP 5 .B ~z cu セッションをサスペンドします。この機能は、そんなに多くのシステムで サポートされているわけではありません。 ^Z によってジョブをサスペンドできるシステムでは、 .B ~^Z も、セッションをサスペンドします。 .TP 5 .B ~%nostop XON/XOFF 制御を無効にします。 .TP 5 .B ~%stop XON/XOFF 制御を有効にします。 .TP 5 .B ~v 全ての変数と、その変数に設定された値を表示します。 .TP 5 .B ~? 使用可能なすべてのコマンドを表示します。 .I cu は、いろんな変数を備えています。これらの環境変数一覧は、 .B ~v コマンドを用いて表示することができ、 .B ~s もしくは .B ~! コマンドを用いて設定することが可能です。 .TP 5 .B escape エスケープ文字。初期値は .B ~ (チルダ)です。 .TP 5 .B delay この変数が true の場合には、 .I cu はエスケープ文字を受信してからローカルシステム名を出力するまでに 1 秒のウェイトが入ります。デフォルトでは true です。 .TP 5 .B eol 行末文字として認識される文字の一覧を表示します。エスケープ文字は 以下のいずれかが現れた後にしか認識されません。デフォルトでは、 -キャリッジリターン +復帰 および、^U, ^C, ^O, ^D, ^S, ^Q, ^R の各文字です。 .TP 5 .B binary ファイルを送信する時に、バイナリデータを転送するかしないかを設定します。 本変数が false の場合には、ファイル中のニューライン記号はすべて、キャリッ ジリターンに変換されます。 デフォルトでは false です。 .TP 5 .B binary-prefix .B binary 変数が true の状態でファイル転送を行う時に、 バイナリ文字を送る前に使われる文字列の設定を決めます。 デフォルトでは ^V に設定されます。 .TP 5 .B echo-check リモートシステムのエコーバックをチェックすることで、ファイル転送のチェ ックをするかどうか決めます。しかし、あまりちゃんと動かないでしょう。 デフォルトでは false です。 .TP 5 .B echonl ファイル中の1行を送信した後に検出しようとする文字を設定します。 -デフォルトでは、キャリッジリターンです。 +デフォルトでは、復帰文字です。 .TP 5 .B timeout エコーバックもしくは .B echonl 文字の検出をタイムアウトとする時間を秒単位で設定します。 デフォルトでは 30 です。 .TP 5 .B kill エコーチェックが失敗した場合に、1 行削除に使う文字を設定します。 デフォルトでは ^U です。 .TP 5 .B resend エコーチェックが失敗しつづけた場合に、1 行を再送する回数を設定します。 デフォルトでは 10 です。 .TP 5 .B eofwrite .B ~> コマンドを用いてファイルを送信し終った場合に、最後に送信する文字列を 設定します。デフォルトでは、^D です。 .TP 5 .B eofread .B ~< コマンドを用いてファイルを受信する場合に、検出する文字列を設定します。 デフォルトでは $ です。この文字列は、典型的なシェルプロンプトです。 .TP 5 .B verbose ファイル転送時に、転送情報を表示するかどうか設定します。デフォルトで は true です。 .SH オプション .I cu. コマンドでは、以下のオプションが指定可能です。 .TP 5 .B \-e, \-\-parity=even 偶数パリティを用います。 .TP 5 .B \-o, \-\-parity=odd 奇数パリティを用います。 .TP 5 .B \-\-parity=none パリティは用いません。 .B \-e と .B \-o が同時に指定された場合もパリティなしになります。 .TP 5 .B \-h, \-\-halfduplex 文字のローカルエコーを許可します(半二重モード)。 .TP 5 .B \-\-nostop XON/XOFF 制御を無効にします。デフォルトでは有効です。 .TP 5 .B \-E char, \-\-escape char エスケープ文字を指定します。初期値は .B ~ (チルダ)です。 .B \-E '' とすることにより、エスケープ文字を無視できます。 .TP 5 .B \-z system, \-\-system system 発呼先のシステムを指定します。 .TP 5 .B \-c phone-number, \-\-phone phone-number 発呼先の電話番号を指定します。 .TP 5 .B \-p port, \-\-port port 使用するポートを指定します。 .TP 5 .B \-a port .B \-\-port port と同じです。 .TP 5 .B \-l line, \-\-line line 使用する回線を、デバイス名で指定します。本オプションは、UUCP 設定ファイル に記述されていないポートを用いて通信を行なう場合に使用されます。当該デバ イスには、write パーミッションが許可されていることが必要になります。 .TP 5 .B \-s speed, \-\-speed speed 通信速度(ボーレート)を設定します。 .TP 5 .B \-# # に位置するのは数字です。 .B \-\-speed # と同じです。 .TP 5 .B \-n, \-\-prompt 使用する電話番号の問い合わせプロンプトを出力します。 .TP 5 .B \-d デバッグモードに入ります。これは .B \-\-debug all と同様です。 .TP 5 .B \-x type, \-\-debug type 特定のデバッグタイプを有効にします。タイプとしては、abnormal, chat, handshake, uucp-proto, proto, port, config, spooldir, execute, incoming, outgoing があります。 .I cu では、abnormal, chat, handshake, port, config, incoming, outgoing が意味を持ちます。 本オプションでは、コンマで区切ることで複数のデバッグタイプが指定可能です。そして、 .B \-\-debug オプションは、1回のコマンド起動で複数回指定可能です。 また、タイプとして数字を指定することも可能です。例えば、 .B \-\-debug 2 という指定は、 .B \-\-debug abnormal,chat と同じ意味です。 .B \-\-debug all は、すべてのデバッグオプションが指定されたのと同じです。 .TP 5 .B \-I file, \-\-config file -使用するコンフィギュレーションファイルの指定を行ないます。ただし、本オ -プションは、 +使用する設定ファイルの指定を行ないます。ただし、本オプションは、 .I cu のコンパイル条件によっては使用できないことがあります。 .TP 5 .B \-v, \-\-version バージョンを表示し、終了します. .TP 5 .B \-\-help ヘルプメッセージを表示し、終了します。 .SH バグ 本プログラムは、あまり良好に動作しません。 .SH 関連ファイル ファイル名は、コンパイル環境や設定ファイルの内容によって変わることが あります。ここに挙げるのは、一例でしかありません。 .br /etc/uucp/config - 設定ファイル .SH 作者 Ian Lance Taylor diff --git a/ja/man/man1/dialog.1 b/ja/man/man1/dialog.1 index 37c8ec858b..0114a78dd9 100644 --- a/ja/man/man1/dialog.1 +++ b/ja/man/man1/dialog.1 @@ -1,282 +1,280 @@ .TH DIALOG 1 "10 January 1994" .\" jpman %Id: dialog.1,v 1.3 1997/07/27 11:54:02 horikawa Stab % .SH 名称 dialog \- シェルスクリプトからダイアログボックスを表示する .SH 書式 .B dialog --clear .br .BI "dialog --create-rc " file .br .B dialog [ .BI "\-\-title " title ] [ .B \-\-clear ] [ .BI "\-\-hline " line ] [ .BI "\-\-hfile " file ] .B box-options .SH 解説 .B dialog はシェルスクリプトから、 質問形式、メッセージ表示形式など、 いろいろな種類のダイアログボックスを表示するプログラムです。 現在サポートされているイアログボックスは 以下のとおりです。 .LP .BR yes/no " ボックス、" " menu" " ボックス、" " input" " ボックス、" .BR message " ボックス、" " text" " ボックス、" " info" " ボックス、" .BR checklist " ボックス、" " program" " ボックス" .SH オプション .TP .B \-\-clear 終了時に画面をクリアします。 .TP .BI \-\-create-rc " file" .B dialog はランタイムコンフィグレーションをサポートしています。 .I file -にサンプルのコンフィグレーションファイルを書き出します。 +にサンプルの設定ファイルを書き出します。 .TP .BI \-\-title " title" ダイアログボックスの最上行に表示する文字列 .I title を指定します。 .TP .BI \-\-hline " line" ダイアログボックスの最下行に表示する文字列 .I line を指定します。 .TP .BI \-\-hfile " file" ? キーか F1 キーをタイプしたときに 表示する .I file を指定します。 .TP .B ボックスオプション .TP .BI \-\-yesno " text height width" 縦 .I height 横 .I width のサイズの .BR yes/no ダイアログボックスを表示します。 .I text で指定された文字列はダイアログボックスの内部に 表示されます。 この文字列が長すぎて、1行で表示できない場合は、 自動的に複数行に分割されます。 .I text が文字列 .I "\en" もしくは改行文字 .I `\en\' を含んでいる場合、その場所で 改行します。 このダイアログボックスは ユーザに yes あるいは no という返答を求める 際に役に立ちます。 ダイアログボックスは .B Yes と .B No のボタンを持っており、 .IR TAB キーで選択することができます。 .TP .BI \-\-msgbox " text height width" .B message ボックスは .B yes/no ボックスと似ていますが、 .B message ボックスの場合、 .B OK ボタンしか表示されません。 このダイアログボックスを使って、メッセージを表示 することができます。 ユーザはこのメッセージを読んだ後、 .I ENTER キーを押して、 .B dialog を終了し、シェルスクリプトの実行を続けることになります。 .TP .BI \-\-infobox " text height width" .B info ボックスは基本的に .B message ボックスと同じですが、メッセージを表示すると すぐに終了します。 .B dialog の終了時に画面はクリアされません。 メッセージはシェルが後で画面をクリアするまで残ります。 これは終了までに時間のかかる処理を行うことを、 ユーザに知らせるときに便利です。 .TP .BI \-\-inputbox " text height width" .B input ボックスはユーザに文字列を入力させる ときに役に立ちます。入力時に .I バックスペース キーを 押すことで、タイプミスを訂正することができます。 入力文字列がダイアログボックスより長くなった 場合は、入力フィールドがスクロールします。 終了時には入力された文字列を .IR stderr に出力します。 .TP .BI \-\-textbox " file height width" .B text ボックスは、テキストファイルの内容をダイアログボックスの中に 表示するためのものです。これは簡単なテキストファイルビュアーの ようなものです。 表示中は、 .IR UP/DOWN "、" PGUP/PGDN "、" HOME/END キーを使ってファイル中を移動できます。 1 行がダイアログボックスより長い場合は、 .I LEFT/RIGHT で左右にスクロールできます。 より便利に使うために、 前方検索、後方検索の機能も実装されています。 .IP "\fB\-\-menu \fItext height width menu-height \fR[ \fItag item \fR] \fI..." .B menu ボックスは、その名のとおりダイアログボックスにリストを表示して ユーザに選ばせるものです。 各メニューは .I tag と .I item で構成されます。 .I tag は他の項目と区別するためのものです。 .I item はその項目が表す内容を短く記述したものです。 ユーザは .I UP/DOWN キー、または .I tag の先頭文字、 .I 1-9 を押すことで項目を選べます。 .I menu-height は一度に表示できるメニューの数を設定します。 .I menu-height より多くの項目がある場合、メニューがスクロールします。 .B dialog を終了するとき、 選択されたメニューの .I tag が .I stderr に出力されます。 .TP .BI \-\-prgbox " command height width" .B program ボックスは .B command の出力をダイアログボックスに表示します。 .IP "\fB\-\-checklist \fItext height width list-height \fR[ \fItag item status \fR] \fI..." .B checklist ボックスは、 メニューから項目を選ぶという点で .B menu ボックスと似ていまが、 項目のなかから 1 つを選ぶのではなく、 ユーザが各項目をオン・オフに設定することができます。 各項目のオン・オフの初期設定は .I status で設定できます。 終了時には、 ステータスがオンになっている項目の .I tag が .I stderr に出力されます。 .SH ランタイムコンフィグレーション .TP 4 1. -以下のように、サンプルのコンフィグファイルを作成します。 +以下のように、サンプルの設定ファイルを作成します。 .LP .in +1i "dialog --create-rc " .TP 4 2. .B dialog -は以下のように読み込むコンフィグファイルを決定します。 +は以下のように読み込む設定ファイル決定します。 .RS .TP 4 a) 環境変数 .B DIALOGRC -が設定されている場合、その値はコンフィグレーション -ファイル名として扱われます。 +が設定されている場合、その値は設定ファイル名として扱われます。 .TP 4 b) (a) で指定されたファイルが存在しなかった場合、 .I $HOME/.dialogrc -がコンフィグレーションファイルとして扱われます。 +が設定ファイルとして扱われます。 .TP 4 c) (b) のファイルが存在しなかった場合、 デフォルトの設定で起動します。 .RE .TP 4 3. -サンプルのコンフィグレーションファイルを編集して、 +サンプルの設定ファイルを編集して、 2 を参考に .B dialog が見付けることができる場所にコピーします。 .SH 環境変数 .TP 15 .B DIALOGRC -独自に設定をする場合は、コンフィグレーション -ファイル名を指定します。 +独自に設定をする場合は、設定ファイル名を指定します。 .SH 関連ファイル .TP 20 .I $HOME/.dialogrc -デフォルトのコンフィギュレーションファイル +デフォルトの設定ファイル .SH 診断 .BR dialog が .BR Yes か .BR OK を押されて終了した場合は 0 を、 .BR No か .BR Cancel を押されて終了した場合は 1 を返します。 また、 .B dialog の内部でエラーが起こるか、 .B dialog を .I ESC キーを押して終了させた場合、-1 を返します。 .SH 関連項目 .B dialog(3) .SH バグ .I タブ キャラクタを含むテキストファイルを .B text ボックス で表示すると、うまく表示されません。 テキストファイルの中の .I タブ キャラクタは 事前にスペースに変換しておかなくてはなりません。 .TP 画面の書き換えには時間がかかります。 .SH 作者 Savio Lam (lam836@cs.cuhk.hk) diff --git a/ja/man/man1/ed.1 b/ja/man/man1/ed.1 index 325013ebd9..55ebd8c0b4 100644 --- a/ja/man/man1/ed.1 +++ b/ja/man/man1/ed.1 @@ -1,966 +1,966 @@ .\" %Id: ed.1,v 1.8.2.2 1998/01/24 14:07:29 helbig Exp % .\" jpman %Id: ed.1,v 1.2 1997/06/09 15:03:56 jsakai Stab % .TH ED 1 "21 May 1993" .SH 名称 .\" ed, red \- text editor ed \- 行指向のテキストエディタ .SH 書式 ed [-] [-sx] [-p \fIstring\fR] [\fIfile\fR] .\" .LP .\" red [-] [-sx] [-p \fIstring\fR] [\fIfile\fR] .SH 解説 .B ed は、行指向のテキストエディタです。 本コマンドを用いることで、テキストファイルの生成、表示、変更その他の操作を 行なうことができます。 .\" .B red .\" is a restricted .\" .BR ed : .\" it can only edit files in the current .\" directory and cannot execute shell commands. .I file 引数を指定して本コマンドを起動すると、ファイル .I file のコピーをエディタのバッファに読み込みます。 以後の変更はそのコピーに対して行なわれ、 .I file で指定したファイル自身が直接変更されることはありません。 .B ed コマンドを終了する際、 .I `w' コマンドで明示的にセーブしなかった変更点はすべて失われます。 編集は、 .I コマンド モードと .I 入力 モードの 2 つの異なるモードを使い分けて行ないます。 .B ed を起動したら、まずコマンドモードに入ります。 本モードでは、標準入力からコマンドを読み込み、それを実行することで エディタバッファの内容操作を行ないます。 典型的なコマンドは、以下のようなものです。 .sp .RS ,s/\fIold\fR/\fInew\fR/g .RE .sp これは、編集しているテキストファイル中に .I old という文字列があったら、これらをすべて文字列 .IR new に置き換えるコマンドです。 .I `a' (append)、 .I `i' (insert)、あるいは .I `c' (change) といった入力コマンドが入力された場合、 .B ed は入力モードに移行します。これが、ファイルにテキストを追加する 主たる方法です。 このモードでは、コマンドを実行することはできません。 そのかわり、標準入力から入力されたデータは、 直接エディタバッファへと書き込まれます。行は、改行キャラクタまで のテキストデータおよび、最後の .IR 改行 キャラクタを含むデータから構成されます。 ピリオド 1 つだけ (\fI.\fR) の行を入力すると、入力モードを終了します。 すべての .B ed コマンドは、全ての行もしくは指定した範囲の行の操作が可能です。例えば、 .I `d' コマンドは指定した行を削除し、 .I `m' コマンドは指定した行を移動します。 上に示した例のように、置換によってある行の一部分のみを変更することは 可能ですが、 .I `s' コマンドは、一度に全部の行にわたって変更を行なうことも可能です。 一般的には、 .B ed コマンドは、0 個以上の行番号および、それに連なる 1 文字コマンドから 成り立ちます。場合によっては追加のパラメータをもつこともあります。 いうなれば、コマンドは以下の構造を持ちます。 .sp .RS .I [address [,address]]command[parameters] .RE .sp 行番号はコマンドの操作対象行あるいは対象行範囲を示します。 行番号の指定個数が、コマンドが受け付け可能な個数よりも少ない場合には、 デフォルトの行番号が採用されます。 .SS オプション .TP 8 -s 診断メッセージを抑制します。本オプションは、 .BR ed の入力がスクリプトによって行なわれる場合に有効です。 .TP 8 -x 続く読み書きの際に行なわれる暗号化に用いる鍵の入力を促します ( .I `x' コマンドを参照して下さい)。 .TP 8 .RI \-p \ string コマンドプロンプトとして表示する文字列を指定します。 コマンドプロンプトは、コマンドモードで .I `P' コマンドを実行することで、表示する/しないを切り替えることが可能です。 .TP 8 .I file 編集対象のファイルを指定します。 .I file 名の先頭に感嘆符 (!) が付加されていた場合、そのファイル名はシェルコマンドと して解釈されます。この場合、編集対象のテキストは、 .I file で指定したコマンドを実行した結果、標準出力に出力されるデータです。 先頭が感嘆符で始まるファイルを編集する場合には、ファイル名の先頭に バックスラッシュ (\\) を付加して下さい。 感嘆符以外の文字で始まるファイル名については、編集対象のファイル名は .I file となります。 .SS 行指定 行は、バッファ内の行番号で表現されます。 .B ed は .I 現在行 と呼ばれるものを管理しており、 コマンドに行番号が指定されない場合は、 現在行がデフォルト行として用いられます。 ファイルが最初に読み出された直後は、現在行はファイルの最後の行となります。 一般的に、現在行はコマンドが操作した最後の行となります。 行番号は、以下の一覧のうち 1 つおよび、補助的に付加される 相対行番号 (オフセット) から構成されます。 相対行番号は、任意の数字の組合せと演算子、そして空白文字を含みます ( 例えば .IR + , .I - や .IR ^ が演算子に含まれます ) 。 行番号は、左から右に解釈され、それらの演算子を含む値は、現在行からの相対行番 号と解釈されます。 行番号の表現に関して上記の規則が適用される中で、行番号 .I 0 ( ゼロ ) に関しては、例外的な扱いがされます。 これは「最初の行より前」を意味し、 それが正しい意味を持つ場合は常に利用可能です。 行範囲は、カンマもしくはセミコロンで区切られた 2 つのアドレスで示されます。 最初に指定される行番号は、次に指定される行番号を超える値を指定して はいけません。行範囲指定で行番号が 1 つしか指定されなかった場合には、次に 指定されるアドレスと最初に指定されたアドレスが同じものであるとみなされ ます。ここで 2 つを超える数の行番号が指定されると、最後の 2 つの行番号で 決定される範囲がコマンド実行対象になります。行番号の指定を 1 つだけしか 想定していないコマンドの場合、最後の 1 つの行番号の行がコマンド実行対象 となります。 コンマで区切られた各行番号は、現在行からの相対行を指し示します。 セミコロンで区切られている場合は、範囲の始めの行は現在行が設定され、 範囲の終りは始めの行からの相対行で表わされます。 行番号の指定には、以下のシンボルが使用可能です。 .TP 8 \&. バッファ中の現在行を表します。 .TP 8 $ バッファ中の最終行を表します。 .TP 8 n The バッファ内の .IR n 行目を表します。 .I n は、 .I [0,$] の間です。 .TP 8 - or ^ 1 行前の行です。 相対行指定 .I -1 と同等であり、複数指定することで効果を累積することが可能です。 .\" --- という指定をすることで、2 行前を示すことができます。 .\" ↑原文中に無いのでコメントアウト sakai@jp.freebsd.org (Jun 9,1997) .TP 8 -\fIn\fR or ^\fIn\fR .IR n 行前の行を表します。 .I n は、負でない整数です。 .TP 8 + 次の行を表します。 これは、 .I +1 と同様であり、- と同様の累積的指定が可能です。 .TP 8 +\fIn\fR or whitespace\fIn\fR .I n 行後ろの行を表します。 .I n は、負でない整数です。 .I n の前に .I whitespace ( 空白文字 ) を付加して指定した場合も .I +n と解釈されます。 .\" ↓原文中に無いのでコメントアウト sakai@jp.freebsd.org (Jun 9,1997) .\" ただし、空白文字による指定を行なった場合は、単独では現在行からの相対行数を .\" 指定することはできず、相対行指定の基準となる行をその前に指定しなければなり .\" ません。 .TP 8 , \fRor\fB % バッファの最初から最後までを表します。これは、 .I 1,$ と指定した場合と同等です。 .TP 8 ; バッファ中の現在行から最後の行までを表します。これは、 .I .,$ と指定した場合と同等です。 .TP 8 .RI / re/ 指定された正規表現 .IR re を含む、(現在行よりも後ろの) 次の行を表します。 必要であれば、文字列検索はテキスト先頭に折り返し、 現在行に達するまで検索を行ないます。 // は、最後に行なった検索を繰り返します。 .TP 8 .RI ? re? The 指定した正規表現 .I re を含む、現在行より前の行を表します。 必要であれば、文字列検索はテキストの最後に折り返し、 現在行に達するまで検索を行ないます。 ?? は、最後に行なった検索を繰り返します。 .TP 8 .RI \' lc .I `k' (mark) コマンドでマークをつけた行を表します。 .I lc は、英小文字です。 .SS 正規表現 正規表現はテキストを選択する際に用いるパターンです。 例えば次の .B ed コマンド .sp .RS g/\fIstring\fR/ .RE .sp は .IR string を含む全ての行を表示します。 正規表現は .I `s' コマンドで古いテキストを新しいテキストで置き換える際にも用いられます。 文字リテラルを指定するのに加え、 正規表現は文字列のクラスを表現することができます。 このようにして表現された文字列は、それに対応する正規表現に「マッチする」と 言います。 ある正規表現が一つの行の中の複数の文字列にマッチする場合、 マッチする部分のうち最も左にあって最も長いものが選択されます。 正規表現を組み立てる際には以下のシンボルが用いられます: .TP 8 c 以下に挙げるものを除く任意の文字 .I c は、その文字自身にマッチします。 このような文字には `{', '}', `(', `)', `<', `>' を含みます。 .TP 8 \fR\e\fIc\fR バックスラッシュでエスケープした文字 .IR c は、その文字自身にマッチします。 ただし `{', '}', `(', `)', `<', `>' を除きます。 .TP 8 \fR.\fR 任意の一文字にマッチします。 .TP 8 .I [char-class] 文字クラス .IR char-class に含まれる任意の一文字にマッチします。 文字クラス .IR char-class に `]' を含めるには、文字 `]' を最初の文字に指定します。 文字の範囲を指定するには、範囲の最後の文字との間を `-' でつなぎます。 例えば `a-z' は小文字全体を表します。 以下のようなリテラル表記も、文字集合を指定するために文字クラス .I char-class で使用することができます: .sp \ \ [:alnum:]\ \ [:cntrl:]\ \ [:lower:]\ \ [:space:] .PD 0 \ \ [:alpha:]\ \ [:digit:]\ \ [:print:]\ \ [:upper:] .PD 0 \ \ [:blank:]\ \ [:graph:]\ \ [:punct:]\ \ [:xdigit:] .sp 文字クラス .IR char-class の最初あるいは最後の文字として `-' が用いられると、 それはその文字自身にマッチします。 文字クラス .I char-class 中のこれ以外の文字は全て、それら自身にマッチします。 .sp 以下の形式の文字クラス中のパターン: .sp \ \ [.\fIcol-elm\fR.] or, .PD 0 \ \ [=\fIcol-elm\fR=] .sp は .IR locale (5) に沿って解釈されます (現在のところサポートされません)。ここで .I col-elm は .I collating element です。詳しい説明は .IR regex (3) を参照して下さい。 .TP 8 [^\fIchar-class\fR] 文字クラス .IR char-class に含まれない、改行以外の任意の一文字にマッチします。 文字クラス .IR char-class は上で定義しています。 .TP 8 ^ `^' が正規表現の最初の文字である場合、 その正規表現は行頭でのみマッチします。 それ以外の場合、`^' はそれ自身にマッチします。 .TP 8 $ `$' が正規表現の最後の文字である場合、 その正規表現は行末でのみマッチします。 それ以外の場合、`$' はそれ自身にマッチします。 .TP 8 \fR\e<\fR これに続く単一文字の正規表現あるいはその部分式が、 単語の先頭でのみマッチするようにします (この機能は利用できない 場合があります)。 .TP 8 \fR\e>\fR これに続く単一文字の正規表現あるいはその部分式が、 単語の末尾でのみマッチするようにします (この機能は利用できない 場合があります)。 .TP 8 \fR\e(\fIre\fR\e)\fR 部分式 (subexpression) .IR re を定義します。部分式はネストできます。 これ以降、\fI`\en'\fR ( .I n は [1,9] の範囲の数) の形式の後方参照は、 .I n 番目の部分式にマッチしたテキストに展開されます。 例えば、正規表現 `\e(.*\e)\e1' は、 同じ文字列が隣接しているような任意の文字列にマッチします。 部分式は左側のデリミタから順に番号が振られます。 .TP 8 * 直前にある単一文字の正規表現あるいはその部分式のゼロ回以上の繰り返しに マッチします。 `*' が正規表現あるいはその部分式の最初の文字として用いられた場合、 `*' はその文字自身にマッチします。 `*' 演算子は時に予期しない結果をもたらすことがあります。 例えば、正規表現 `b*' は文字列 `abbb' の先頭に マッチします (部分文字列 `bbb' ではありません)。 これはヌルへのマッチが最も左にあるマッチだからです。 .TP 8 \fR\e{\fIn,m\fR\e}\fR or \fR\e{\fIn,\fR\e}\fR or \fR\e{\fIn\fR\e}\fR 直前にある単一文字の正規表現あるいはその部分式の、 .I n 回以上 .I m 回以下の繰り返しにマッチします。 .I m が省略された場合、 .I n 回以上の繰り返しにマッチします。 更にコンマも省略された場合、ちょうど .I n 回の繰り返しにのみマッチします。 .LP 各 .IR regex (3) の実装によって、更にいくつかの正規表現演算子が定義されていることがあります。 .SS コマンド 全ての .B ed コマンドは、1 文字からなりますが、追加パラメータが必要なコマンドもあります。 コマンドのパラメータが複数の行にわたる場合には、そのパラメータを含めたコマンド の終りを含む行を除き、行末にバックスラッシュ (\\) を付加して下さい。 一般的には、1 行ごとに 1 コマンドを入れることが許されています。 しかしながら、ほとんどのコマンドは、コマンド実行を行なった後のデータ更新 その他を確認するために、 .I `p' (print)、 や .I `l' (list)、 .I `n' (enumerate), のような表示系のコマンドを同時に指定できます。 インタラプト (一般的には ^C) を入力することで、現在実行しているコマンドを 強制終了し、コマンドモードに戻すことができます。 .B ed は、以下のコマンドを使用できます。コマンド実行時に何の指定もない場合の デフォルトの行番号もしくは行範囲が括弧内に示されています。 .TP 8 (.)a 指定した行の後にテキストを追加します。 テキストは入力モードで入力されていきます。 現在行番号は、入力された最後の行に設定されます。 .TP 8 (.,.)c バッファ内の指定した行を変更します。指定した行のデータは、バッファから消去 され、そこに対してテキストデータを入力するようになります。 テキストは入力モードで入力されていきます。 現在行番号は、入力した最後の行に設定されます。 .TP 8 (.,.)d 指定した範囲をバッファから削除します。 削除した範囲の後に行が続いている場合、現在行番号は、その行に設定されます。 そうでない場合には、現在行番号は、削除された範囲の前の行に設定されます。 .TP 8 .RI e \ file .I file を編集し、デフォルトのファイル名を設定します。 もし .I file が指定されなかった場合には、デフォルトのファイル名が使用されます。 本コマンド実行時に、それまで別のファイルを編集していた場合には、 その内容はすべて消去され、新しいファイルが読み込まれます。 現在行番号は、入力された最後の行に設定されます。 .TP 8 .RI e \ !command command で指定されたコマンドを実行し、その結果として標準出力へ 出力されたデータを編集します (後述する .RI ! command を参照して下さい)。 デフォルトのファイル名は変更されません。 本コマンド実行時に、それまで別のファイルを編集していた場合には、 その内容はすべて消去され、標準出力へ出力されたデータが読み込まれます。 現在行番号は、入力された最後の行に設定されます。 .TP 8 .RI E \ file 無条件で .I file で指定したファイルを読み込み、編集します。 .I e コマンドと動作は似ていますが、すでにバッファ上のデータに変更が加えられ ている場合でも、警告を出さずに指定したファイルを読み込む点が異なります。 現在行番号は、入力された最後の行に設定されます。 .TP 8 .RI f \ file デフォルトファイル名を .I file に設定します。 .I file 名が指定されない場合には、デフォルトファイル名が表示されます。 .TP 8 .RI (1,$)g /re/command-list .I command-list で指定されたコマンドを、指定した正規表現 .IR re に一致する各行に対して実行します。 現在行番号は、 .I command-list で指定されたコマンドが実行される前に、指定した正規表現に一致した行 に設定されます。 .I `g' コマンドが終了した場合、現在行番号は最後にコマンドが実行された行に 設定されます。 .I command-list で指定されるコマンドは、1 行ごとに 1 つずつ書かれる必要があります。各コマンド 行の終りには、一番最後のコマンド行を除いてはバックスラッシュ (\\) を記述する 必要があります。 以下のコマンドを除くすべてのコマンドを指定可能です。 .IR `g', .IR `G', .IR `v', .IR `V'. コマンドリスト中の空行は、 .I `p' コマンドと同等に扱われます。 .TP 8 .RI (1,$)G /re/ 指定した正規表現 .IR re に一致した行に対して、対話編集を行ないます。 指定した正規表現に一致する文字列を含む行があると、その行を表示し、現在行番号を 設定します。 そして、ユーザに .I command-list の入力を促します。 .I `G' コマンドが終了した場合、現在行番号は、 .IR command-list で編集された最後の行に設定されます。 .I command-list の記述形式は、 .I `g' コマンドで指定するものと同じです。改行のみの場合は、コマンド実行をしない ( ヌルコマンドリストを指定した ) ものとみなされます。 `&' 文字のみを入力した場合には、 直前に実行した ( ヌルコマンドリストではない ) コマンドを再実行します。 .TP 8 H エラーメッセージの出力の有無を切り替えます。 デフォルトでは、エラーメッセージは出力されません。 ed スクリプトを作成する場合、スクリプトのデバッグのために、本コマンドを 最初に実行することをおすすめします。 .TP 8 h 最後に表示されたエラーメッセージを表示します。 .TP 8 (.)i 編集バッファ中の現在行の前に、テキストを挿入します。 テキストは入力モードで入力されていきます。 現在行番号は、入力された最後の行に設定されます。 .TP 8 (.,.+1)j 指定した範囲の行を 1 行に連結します。指定した行はバッファから削除され、 その行の内容を含む 1 行に置き換えられます。 現在行番号は、置き換えられた行に設定されます。 .TP 8 .RI (.)k lc 行に、英小文字 .I lc で指定したマークをつけます。 その後、マークをつけられた行は、コマンド中で .I 'lc (つまり、シングルクォートと .I lc ) として指定できるようになります。 マークは、その行が削除されるかもしくは変更されるかしない限り、消えることは ありません。 .TP 8 (.,.)l 指定した範囲の行の内容を見やすく表示します。 もし 1 つの行が 1 画面以上を占める場合 ( 例えばバイナリファイルを見ている 場合など ) `--More--' プロンプトが最下行に表示されます。 次の画面を表示する前に .B ed はリターンキーが入力されるまで待ちます。 現在行番号は、表示された最後の行に設定されます。 .TP 8 (.,.)m(.) 指定した範囲の行をバッファ内で移動します。指定した行は、 コマンドの右辺で指定した行の後ろに 移動されます。移動先の行としては、 .IR 0 (ゼロ) が指定可能です。 現在行番号は、移動された最後の行に設定されます。 .TP 8 (.,.)n 指定した行の内容を、行番号つきで表示します。 現在行番号は、表示された最後の行に設定されます。 .TP 8 (.,.)p 指定した範囲の行の内容を表示します。 現在行番号は、表示された最後の行に設定されます。 .TP 8 P コマンドプロンプト表示の有無を切り替えます。 コマンド起動時のオプション \fI-p string\fR でプロンプトが指定されていなければ、 コマンドプロンプトの表示はデフォルトでオフになっています。 .TP 8 q ed を終了します。 .TP 8 Q 無条件に ed を終了します。 このコマンドは .I q コマンドと似ていますが、まだファイルに書き出されていない 変更があっても警告せずに終了する点が異なります。 .TP 8 .RI ($)r \ file .I file で指定されたファイルを、指定した行の後ろに読み込みます。 .I file が指定されない場合、デフォルトのファイル名が読み込みに使用されます。 このコマンドに先だってデフォルトのファイル名が設定されていない場合、 デフォルトのファイル名には、 .I file で指定されたものが設定されます。 それ以外の場合、デフォルトのファイル名は変更されません。 現在行番号は、読み込まれたファイルの最後の行に設定されます。 .TP 8 .RI ($)r \ !command command で指定されたコマンドを実行し、その結果として標準出力へ出力された データを指定した行の後ろに読み込みます (後述する .RI ! command を参照して下さい)。 デフォルトのファイル名は変更されません。現在行番号は、読み込まれた最後の行の 行番号に設定されます。 .HP .RI (.,.)s /re/replacement/ .PD 0 .HP .RI (.,.)s /re/replacement/\fRg\fR .HP .RI (.,.)s /re/replacement/n .br 指定した行のテキスト中の、正規表現 .I re に一致する文字列を、文字列 .IR replacement に置き換えます。 デフォルトでは、それぞれの行で最初に一致した文字列のみを置き換えます。 .I `g' (global) サフィックスが指定された場合、一致した文字列はすべて置き換えられます。 .I `n' サフィックス ( .I n は正の整数) が指定された場合、 .I n 回目に一致した文字列だけを置き換えます。 指定した範囲で一度も文字列の置換が起こらなかった場合、エラーとみなされます。 現在行番号は、最後に置換が発生した行に設定されます。 .I re および .I replacement は、スペースおよび改行を除くすべてのキャラクタを用いて区切ることが 可能です (後述する .I `s' コマンドを見て下さい)。 最後のデリミタのうち 1 つか 2 つが省略された場合、 最後に文字列置換が発生した行は、 .I `p' コマンドが指定された場合と同様に表示されます。 .I replacement 中のエスケープされていない `&' は、一致した文字列と置き換えられます。 キャラクタシーケンス \fI`\em'\fR( .I m は [1,9] の範囲の整数です ) は、一致した文字列の .IR m 番目の後方参照で置き換えられます。 .I replacement の中に入る文字が `%' のみだった場合、 最後に行なった置換の .I replacement が使用されます。 改行を .I replacement に指定したい場合は、バックスラッシュを用いてエスケープすれば可能です。 .TP 8 (.,.)s 最後の置換を繰り返します。 この形式の .I `s' コマンドは、回数を示すサフィックス .I `n' もしくは、他の .IR `r' 、 .IR `g' 、 .I `p' のどのキャラクタとの組合せも可能です。 .I `n' が指定されると、 .I n 回目に一致した文字列だけが置換されます。 .I `r' サフィックスが指定されると、最後の置換が発生した文字列の変わりに、 最後に指定した正規表現が使用されます。 .I `g' サフィックスは、最後の置換で用いたグローバルサフィックスの使用の 有効/無効を切り替えます。 .I `p' サフィックスは、最後の置換に指定されたプリントサフィックスを反転します。 現在行番号は、最後に置換が発生した行に設定されます。 .TP 8 (.,.)t(.) 指定した範囲の行を、コマンド文字の右辺に指定した行番号の後に コピー (つまり転送) します。コピー先の行番号としては、 .IR 0 (ゼロ) の指定が許されています。 現在行番号は、コピーした一番最後の行の行番号に設定されます。 .TP 8 u 最後に実行したコマンドの実行結果を取り消し、現在行番号を、取り消したい コマンドが実行される前のものに戻します。 グローバルコマンドである .IR `g' 、 .IR `G' 、 .IR `v' 、 .I `V' については、その改変は 1 コマンドで行なわれたとして扱います。 .I `u' は自分自身の動作を取り消すこともできます。 .TP 8 .RI (1,$)v /re/command-list 指定した範囲の行のうち、指定した正規表現 .I re と一致する文字列が含まれていない行について、 .I command-list で指定したコマンドを実行します。 これは .I `g' コマンドに動作が似ています。 .TP 8 .RI (1,$)V /re/ 指定した範囲の行のうち、指定した正規表現 .IR re に一致する文字列が含まれていない行について、対話編集を行ないます。 これは .I `G' コマンドに動作が似ています。 .TP 8 .RI (1,$)w \ file 指定した範囲の行を、 .IR file で指定したファイルに書き出します。 それまで .I file に格納されていた内容は、警告なしに消去されます。 デフォルトファイル名が設定されていない場合、デフォルトファイル名は .IR file に設定されます。それ以外の場合では、デフォルトファイル名は変更されません。 ファイル名が指定されなかった場合には、デフォルトファイル名が使用されます。 現在行番号は変更されません。 .TP 8 .RI (1,$)wq \ file 指定した範囲の行を .IR file で指定したファイルに書き出し、 .I `q' コマンドを実行します。 .TP 8 .RI (1,$)w \ !command 指定した範囲の行の内容を .I `!command' の標準入力に書き出します (! command については、以下の説明を参照して下さい)。 デフォルトファイル名および現在行番号は変更されません。 .TP 8 .RI (1,$)W \ file 指定した範囲の行の内容を、 .IR file で指定したファイルの後ろに追加書き込みします。 .I `w' コマンドと似ていますが、指定したファイルにそれまで格納されていた内容 がなくなることはありません。 現在行番号は変更されません。 .TP 8 x 以降の読み書きで用いられる暗号化鍵の入力を促します。 改行のみが入力されると、暗号化は解除されます。 それ以外の場合、キー読み込み中のエコーは抑制されます。 暗号化および復号化は bdes(1) アルゴリズムを用いて行われます。 .TP 8 .RI (.+1)z n 指定した行から一度に .I n 行だけスクロールします。 .I n が指定されない場合には、現在のウィンドウサイズだけスクロールします。 現在行番号は、最後に表示した行の行番号に設定されます。 .TP 8 .RI ! command .I command で指定したコマンドを、 .IR sh (1) 経由で実行します。 .I command の最初の文字が `!'の場合には、その文字は直前に .I `!command' で実行したコマンド文字列が格納されます。 .I command 文字列をバックスラッシュ(\\)でエスケープした場合には、 .B ed は処理を行ないません。 しかし、エスケープされない .I `%' 文字があった場合には、その文字列はデフォルトファイル名に置き換えられます。 シェルがコマンド実行から戻ってきた場合には、`!' が標準出力に出力されます。 現在行番号は変更されません。 .TP 8 ($)= 指定された行の行番号を表示します。 .TP 8 (.+1)newline 指定した行を表示します。そして、現在行番号を表示した行のものに 設定します。 .SH 関連ファイル .TP 20 /tmp/ed.* バッファファイル .PD 0 .TP 20 ed.hup -端末がハングアップした場合に、 +端末が回線切断した場合に、 .B ed がバッファ内容を書き出すファイル .SH 関連項目 .IR vi (1), .IR sed (1), .IR regex (3), .IR bdes (1), .IR sh (1). USD:12-13 B. W. Kernighan and P. J. Plauger, .I Software Tools in Pascal , Addison-Wesley, 1981. .SH 制限 .B ed は .I file 引数に対してバックスラッシュエスケープ処理を施します。 つまり、ファイル名中でバックスラッシュ (\\) を前につけた文字は、 リテラルとして解釈されます。 (バイナリではない) テキストファイルの最後が改行文字で終っていない場合、 .B ed はそれを読み書きする際に改行文字を追加します。 バイナリファイルの場合は、 .B ed はこのような改行文字追加は行いません。 1 行あたりのオーバヘッドは整数 4 つ分です。 .SH 診断 エラーが発生すると、 .B ed は `?' を表示し、コマンドモードに戻るか、スクリプトによる実行のエラーの場合には プログラムを終了します。 最後のエラーメッセージについての説明は、 .I `h' (help) コマンドを用いることで表示可能です。 .I `g' (global) コマンドは、検索や置換が失敗したというエラーを隠蔽します。 そのため、スクリプトの中で条件つきコマンド実行を行なわせるのによく使われます。 例えば .sp .RS g/\fIold\fR/s//\fInew\fR/ .RE .sp は、出現した文字列 .I old をすべて文字列 .I new に置き換えます。 .I `u' (undo) コマンドがグローバルコマンドリスト内で実行された場合、コマンドリストは 1 度だけの実行になります。 診断が無効にされていないと、 .B ed を終了しようとする場合やバッファ内のデータを書き出さずに他のファイルを 編集しようとする場合にエラーになります。 その場合でも、同一のコマンドを 2 回入力すると、コマンドは成功します。 しかし、それまでの未保存の編集結果は、すべて失われます。 .SH 歴史 .I ed コマンドは Version 1 AT&T UNIX で登場しました。 diff --git a/ja/man/man1/find.1 b/ja/man/man1/find.1 index 9f79e50709..9c053c4f5b 100644 --- a/ja/man/man1/find.1 +++ b/ja/man/man1/find.1 @@ -1,497 +1,497 @@ .\" Copyright (c) 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. .\" .\" @(#)find.1 8.4 (Berkeley) 4/1/94 .\" %Id: find.1,v 1.4.2.4 1998/02/01 07:36:15 steve Exp % .\" jpman %Id: find.1,v 1.4 1997/09/23 14:13:10 horikawa Stab % .\" .Dd April 1, 1994 .Dt FIND 1 .Os .Sh 名称 .Nm find .Nd ディレクトリツリーを再帰的に下ってファイルを捜す .Sh 書式 .Nm find .Op Fl H | Fl L | Fl P .Op Fl Xdx .Op Fl f Ar file .Op Ar file ... .Ar expression .Sh 解説 .Nm find は、 .Ar file に対してディレクトリツリーを再帰的に下って、 ツリー上の各ファイルについて .Ar expression (後に示す ``プライマリ'' と ``演算子'' から構成されます) で指定された処理を実行します。 .Pp オプションとしては以下のものがあります: .Pp .Bl -tag -width Ds .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 (`` ' ''), double quotes (`` " ''), backslash (``\e''), space, tab, newline) が含まれるファイル名 が使われた場合、診断メッセージを標準エラー出力に表示して、 そのファイル名をスキップします。 .It Fl d ファイルに対する処理順序を深さ優先の探索方式にします。 すなわち、ディレクトリ自体に 対する処理を行う前に、ディレクトリ内の個々のファイルに対して処理を 実行します。デフォルトでは、ディレクトリは最初に処理されます。 (デフォルトの方式は幅優先探索方式ではないです。) .It Fl f Ar file 明示的にファイルを指定します。ファイル名の先頭が ``\-'' で始まっていたり、 あとで述べる .Ar expression の指定と混同してしまうようなファイル名を指定したりするときに使用します。 (ファイルはオプション直後のオペランドとしても指定可能です。) .It Fl x ディレクトリツリーを下って行くとき、最初に file のあったファイルシステムとは 異なるファイルシステム上のファイルに対する処理になる場合は、実行しないように します。 .El .Sh プライマリ .Bl -tag -width Ds .It Ic -atime Ar n 最後にファイルがアクセスされた時刻と、 .Nm find を起動した時刻との差(24 時間単位で切り上げます)が .Ar n 日であれば、真とします。 .It Ic -ctime Ar n 最後にファイルのステータスが変更された時刻と、 .Nm find を起動した時刻の差 (24 時間単位で切り上げます) が .Ar n 日であれば、真とします。 .It Ic -delete 見付けたファイルやディレクトリを消去します。常に真を返します。 現在の作業ディレクトリから .Nm は再帰的にディレクトリツリーを下ります。 セキュリティ上の理由から、 "." からの相対パス名に ``/'' 文字を含むファイル名のファイルを 消去しようとはしません。 このオプションにより暗示的に深さ優先の処理が指定されます。 .It Ic -exec Ar utility Op argument ... ; .Ar utility で指定した名前のプログラムを実行し、終了コードが 0 の場合、真とします。argument は、utility への引き数として渡されます。この 指定は、最後に必ずセミコロン (``;'') をつけてください。 utility もしくは argument の指定 のなかで ``{}'' が使われていた場合は、その部分が、現在 .Nm find が対象としてい るファイルのパス名に置き換えられます。ただし、 .Ar utility が実行されるときのカレントディレクトリは、 .Nm find が起動されたディレクトリのままです。 .It Ic -fstype Ar type 対象ファイルが格納されているファイルシステムのタイプが、 .Ar type で指定されたものである場合に真となります。type としては、 ``local'', ``mfs'', ``nfs'', ``msdos'', ``rdonly'', `'ufs'' を指定することができます。 ``local'' と ``rdonly'' は特定のファイルシステムを指すものではありません。 ``local'' は、 .Nm find を実行しているシステム上に物理的 にマウントされているファイルシステムです。``rdonly'' は、リードオンリーで マウントされているファイルシステムです。 .It Ic -group Ar gname ファイルが .Ar gname で指定したグループに属している場合、真になります。 .Ar gname が数字で、そのようなグループ名がない場合は、 .Ar gname をグループ ID として扱います。 .It Ic -inum Ar n ファイルの i ノード番号が .Ar n なら、真になります。 .It Ic -links Ar n ファイルのリンク数が .Ar n なら、真になります。 .It Ic -ls このプライマリは常に真になります。対象となっているファイルの情報を 標準出力に出力します。出力する内容は i ノード番号、 512 バイトブロックでのファイルの大きさ、 -ファイルのパーミッション、ハードリンクの数、オーナ、グループ、 +ファイルのパーミッション、ハードリンクの数、所有者、グループ、 バイトで表したファイルの大きさ、最後にファイルが修正された時刻、パス名です。 ファイルがブロック型もしくはキャラクタ型のスペシャルファイルならば、 バイトで表したファイルの大きさの代わりにメジャー番号とマイナー番号を 出力します。ファイルがシンボリックリンクならば、 `\`->''の後にリンク先のファイルのパス名を表示します。 フォーマットは ``ls -dgils'' の出力結果と同じです。 .It Ic -mtime Ar n 最後にファイルが修正された時刻と、 .Nm find を起動した時刻との差(24 時間単位で切り上げます)が .Ar n 日であれば、真とします。 .It Ic \&-ok Ar utility Op argument ... ; .Ic exec とほぼ同じですが、 .Ar utility を実行するかどうかの確認をユーザに求め、端末にメッセージを出力します。 ``y'' 以外の返答をした場合は、 コマンドは実行されず、 このプライマリの値は偽になります。 .It Ic -name Ar pattern 対象ファイルのパス名の最後のファイル名部分が .Ar pattern で指定したものとマッチするかどうかを調べ、マッチした場合は真になります。 .Ar pattern としては、シェルで使われるパターンマッチ 指定 (``['', ``]'', ``*'', ``?'') を使用することができます。これらの文字は バックスラッシュ(``\e'')を前において、パターンマッチ指定ではなく文字として 扱う事を明示することができます。 .It Ic -newer Ar file 対象ファイルの修正日付が、 .Ar file で指定したファイルのものより新しい場合は、真になります。 .It Ic -nouser -対象ファイルのオーナが unknown の場合、真になります。 +対象ファイルの所有者が unknown の場合、真になります。 .It Ic -nogroup 対象ファイルのグループが unknown の場合、真になります。 .It Ic -path Ar pattern 対象ファイルのパス名が、 .Ar pattern で指定したものとマッチす るかどうかを調べます、マッチした場合は真になります。 .Ar pattern としては、シェルで使われるパターンマッチ 指定 (``['', ``]'', ``*'', ``?'') を使用することができます。これらの文字は バックスラッシュ (``\e'') を前において、パターンマッチ指定ではなく文字として 扱う事を明示することができます。 ``/'' は、そのままパスのディレクトリの区切りにマッチします。 .It Ic -perm Op Ns Ar mode ファイルのモードを、 .Ar mode と比較します。 .Ar mode は、シンボル 形式( .Xr chmod 1 参照) もしくは 8 進数形式で指定します。シンボル形式の場合は、 00000 から開始してパーミッションのセットとクリアを行います。 (プロセスのファイル生成マスクとは無関係です。) 8 進数形式の場合は、 ファイルのモードビットのうち、07777 .Pf ( Dv S_ISUID | .Dv S_ISGID | .Dv S_ISTXT | .Dv S_IRWXU | .Dv S_IRWXG | .Dv S_IRWXO ) の部分が比較対象になります。 .Ar mode の最初に ``\-'' を指定した場合は、 .Ar mode でセットされているすべてのビットが ファイルのモードでもセットされていれば真となります。 ``\-'' が指定されていない場合は、ファイルのモードと .Ar mode が完全に一致した場合にのみ真となります。 なお、 シンボル形式でモード指定をする場合は、少なくとも最初が ``\-'' にならない ようにする必要があります。 .It Ic -print このプライマリは常に真になります。 対象となっているファイルのパス名を標準出力に出力して改行します。 .Ic -exec , .Ic -ls , .Ic -ok , .Ic -print0 のどのプライマリも指定されなかった場合は、 本プライマリが指定されているものとみなします。 .It Ic -print0 .Ic -print とほぼ同じですが、標準出力に対象となっているファイルのパス名を出力 したあと、改行ではなく、 .Tn ASCII .Tn NUL 文字(文字コード 0)を出力します。 .It Ic -prune このプライマリは常に真になります。 対象となっているファイル配下のディレクトリに下りないようにします。 .Fl d オプションが指定されている場合は、 .Ic -prune の指定は無効になります。 .It Ic -size Ar n Ns Op Cm c ファイルサイズを 512 バイトのブロック単位で数えたとき (端数は切り上げ)、 .Ar n ブロックであれば真になります。 .Ar n のあとに ``c'' が指定されていた場合は、ファイルサイズが .Ar n バイトであれば真になります。 .It Ic -type Ar t ファイルタイプが .Ar t で指定されたタイプに一致すれば真になります。 タイプとして、次のような指定が可能です: .Pp .Bl -tag -width flag -offset indent -compact .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 ファイルの所有者が、 .Ar uname で指定されたユーザと一致すれば真になります。もし .Ar uname が数字で、そのようなユーザ名がなければ、 ユーザ ID が指定されたものとして扱います。 .El .Pp なお、数字を引数にとるプライマリは、 数字の前に ``+'' および ``\-'' をつけることができます。 それぞれ ``n より大'' および ``n より小'' の意味になり、 ``正確に n''という意味ではなくなります。 .Sh 演算子 .Pp 以下の演算子を使って、プライマリを組み合わせることができます。 演算子は優先度が下がる順番で示されています。 .Bl -tag -width (expression) .It Cm \&( Ns Ar expression Ns Cm \&) もし、括弧内の .Ar expression が真なら、真になります。 .Pp .It Cm \&! Ns 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 は実行されません。 .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 expression2 は実行されません。 .El .Sh 使用例 .Pp コマンドラインからのタイプ例です。 .Nm find の演算子がシェルの特殊文字と間違われないように、 エスケープ文字 ``\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'' であるようなものを表示します。 .El .Sh 関連項目 .Xr chmod 1 , .Xr locate 1 , .Xr stat 2 , .Xr fts 3 , .Xr getgrent 3 , .Xr getpwent 3 , .Xr strmode 3 , .Xr symlink 7 .Sh 規格 .Nm find ユーティリティの文法は .St -p1003.2 の仕様で決められた文法のスーパセットです。 全 1 文字オプションと .Ic -inum , .Ic -print0 , .Ic -delete , .Ic -ls のプライマリは .St -p1003.2 の拡張です。 .Pp 昔は .Fl d , .Fl h , .Fl x のオプションは それぞれ ``\-depth'', ``\-follow'', ``\-xdev'' のプライマリを 用いて実装されていました。 これらのプライマリは常に真に評価されていました。 これらのプライマリは 探索が始まる前に効果を与える本当のグローバル変数であったので、 いくつかの合法的な expression が予期しない結果となりました。 一例として ``\-print \-o \-depth''の expression があります。 \-print が常に真に評価されるため 標準の評価の順番では \-depth は決して評価されないはずですが、 そうではありませんでした。 .Pp 演算子の ``-or'' は ``\-o'' として実装されていました。 演算子の ``-and'' は ``\-a'' として実装されていました。 .Pp 昔の実装では .Ic exec と .Ic ok のプライマリでは、 utility 名やその引数中において、 空白以外の文字が前後に続く ``{}'' を置き換えませんでした。 このバージョンでは utility 名やその引数のどの場所に ``{}'' が現れても 置き換えます。 .Sh バグ .Nm find によって使われる特殊文字は多くのシェルにとっても 特殊文字です。 特に ``*'', ``['', ``?'', ``('', ``)'', ``!'', ``\e'', ``;'' は、 シェルからエスケープされなくてはならないでしょう。 .Pp オプションとファイル名との間および ファイル名と .Ar expression との間を区切るデリミタが存在しませんので、 ファイル名にオプションと間違えるようなもの (``-xdev'' のようなもの) や、 .Ar expression と間違えるようなもの (``!'' のようなもの) を指定することは難しいです。 このようなファイル名を指定する場合は .Fl f オプションを使うか、 .Xr getopt 3 で使われるオプション指定の終了記号 ``--'' を使用します。 .Pp .Ic -delete プライマリは、ファイルシステムツリーの検索順序に影響する 他のオプションとは十分には連係しません。 .Sh 歴史 .Nm コマンドは .At v1 から登場しました。 diff --git a/ja/man/man1/gcc.1 b/ja/man/man1/gcc.1 index e42bcf1830..da6233c3e9 100644 --- a/ja/man/man1/gcc.1 +++ b/ja/man/man1/gcc.1 @@ -1,4008 +1,4008 @@ .\" Copyright (c) 1991, 1992, 1993, 1994 Free Software Foundation -*-Text-*- .\" See section COPYING for conditions for redistribution .\" .\" jpman %Id: gcc.1,v 1.4 1997/10/11 07:52:34 horikawa Stab % .\" Set up \*(lq, \*(rq if -man hasn't already set it up. .if @@\*(lq@ \{\ . ds lq " . if t .ds lq `` . if !@@\(lq@ .ds lq "\(lq .\} .if @@\*(rq@ \{\ . ds rq " . if t .ds rq '' . if !@@\(rq@ .ds rq "\(rq .\} .de Id .ds Rv \\$3 .ds Dt \\$4 .. .de Sp .if n .sp .if t .sp 0.4 .. .Id %Id: gcc.1,v 1.4 1993/10/13 23:19:12 pesch Exp % .TH GCC 1 "\*(Dt" "GNU Tools" "GNU Tools" .SH 名称 gcc, g++ \- GNU プロジェクト C コンパイラ および C++ コンパイラ (v2.7) .SH 書式 .B gcc .RI "[ " option " | " filename " ].\|.\|." .br .SH 注意 このマニュアルに書かれた情報は GNU C コンパイラの完全な ドキュメンテーションからの抜粋であり、オプションの意味の記述にとどめます。 .PP このマニュアルはボランティアのメンテナンスが行なわれた時にのみ更新され るもので、常に最新の情報を示しているわけではありません。 もしこのマニュアルと実際のソフトウェアの間に矛盾点があれば、 正式なドキュメントである Info ファイルのほうを参照して下さい。 .PP このマニュアル中の古い記述が重大な混乱や不具合をきたすことになれば、 このマニュアルページの配布は中止します。 GNU CCのメンテナンス作業の都合上、 Info ファイルを更新した時にマニュアルページも併せて更新することは できません。マニュアルページは時代遅れであり、 これに時間をかけるべきではないと GNU プロジェクトでは考えています。 .PP 完全な最新のドキュメンテーションが必要な場合は、Info ファイルの`\|\c .B gcc\c \&\|' またはマニュアルの .I Using and Porting GNU CC (for version 2.0)\c \& を参照して下さい。この双方は Texinfo のソースファイル .B gcc.texinfo から生成されます。 .SH 解説 C と C++ のコンパイラは統合されています。どちらの場合も、入力ファイル は、プリプロセス、コンパイル、アセンブル、リンクの 4 つの処理ステージの うちの 1 つ以上のステージを踏んで処理されます。 ソースファイル名の拡張子によってソースの言語を識別しますが、 デフォルトの動作は、どちらの名前でコンパイラを使うかに依存しています: .TP .B gcc プリプロセス済みの (\c .B .i\c \&) ファイルを C のファイルと仮定し、C スタイルのリンクを行います。 .TP .B g++ プリプロセス済みの(\c .B .i\c \&) ファイルを C++ のファイルと仮定し、C++ スタイルのリンクを行います。 .PP ソースファイル名の拡張子は、その言語が何であるかと、どのような処理が行われる べきかを示します: .Sp .nf .ta \w'\fB.cxx\fP 'u \&\fB.c\fP C言語ソースです。プリプロセッサ、コンパイラ、アセンブラにかけられます。 \&\fB.C\fP C++言語ソースです。プリプロセッサ、コンパイラ、アセンブラにかけられます。 \&\fB.cc\fP C++言語ソースです。プリプロセッサ、コンパイラ、アセンブラにかけられます。 \&\fB.cxx\fP C++言語ソースです。プリプロセッサ、コンパイラ、アセンブラにかけられます。 \&\fB.m\fP Objective-C 言語ソースです。プリプロセッサ、コンパイラ、アセンブラにかけられます。 \&\fB.i\fP プリプロセッサにかけられたC言語ソースです。コンパイラ、アセンブラにかけられます。 \&\fB.ii\fP プリプロセッサにかけられたC++言語ソースです。コンパイラ、アセンブラにかけられます。 \&\fB.s\fP アセンブリ言語ソースです。アセンブラにかけられます。 \&\fB.S\fP アセンブリ言語ソースです。プリプロセッサ、アセンブラにかけられます。 \&\fB.h\fP プリプロセッサファイルです。通常はコマンドラインには現れません。 .Sp .fi その他の拡張子を持つファイルはリンカに渡されます。以下のものがあります。 .Sp .nf \&\fB.o\fP オブジェクトファイルです。 \&\fB.a\fP アーカイブファイルです。 .br .fi .Sp リンクは、オプション .BR \-c , .BR \-S , .B \-E を指定して抑制しないかぎり(もしくはコンパイルエラーによってすべての処理が中断 しないかぎり)、常に最終ステージで実行されます。 リンクのステージにおいては、ソースファイルに対応した全ての .B .o ファイルと、 .B \-l で指定したライブラリと、認識されなかったファイル名 (名前に .B .o のついたオブジェクトファイルや .B .a のついたアーカイブを含む) は、 コマンドラインに並べられた順番でリンカに渡されます。 .SH オプション オプションは分割されていなければなりません。すなわち `\|\c .B \-dr\c \&\|' は `\|\c .B \-d \-r \&\|'とは異なった扱いを受けます。 .PP ほとんどの `\|\c .B \-f\c \&\|' と `\|\c .B \-W\c \&\|' 形式のオプションには、 .BI \-f name と .BI \-fno\- name\c \& (または .BI \-W name と .BI \-Wno\- name\c \&) の形式の、対照的な表現があります。ここではデフォルトでない形式の みを示します。 .PP すべてのオプションを種類別に分けてまとめました。詳しい解説は 以下の節で行ないます。 .hy 0 .na .TP .B 全体的なオプション .br \-c \-S \-E .RI "\-o " file \-pipe \-v .RI "\-x " language .TP .B 言語オプション \-ansi \-fall\-virtual \-fcond\-mismatch \-fdollars\-in\-identifiers \-fenum\-int\-equiv \-fexternal\-templates \-fno\-asm \-fno\-builtin \-fno\-strict\-prototype \-fsigned\-bitfields \-fsigned\-char \-fthis\-is\-variable \-funsigned\-bitfields \-funsigned\-char \-fwritable\-strings \-traditional \-traditional\-cpp \-trigraphs .TP .B 警告オプション \-fsyntax\-only \-pedantic \-pedantic\-errors \-w \-W \-Wall \-Waggregate\-return \-Wcast\-align \-Wcast\-qual \-Wchar\-subscript \-Wcomment \-Wconversion \-Wenum\-clash \-Werror \-Wformat .RI \-Wid\-clash\- len \-Wimplicit \-Winline \-Wmissing\-prototypes \-Wmissing\-declarations \-Wnested\-externs \-Wno\-import \-Wparentheses \-Wpointer\-arith \-Wredundant\-decls \-Wreturn\-type \-Wshadow \-Wstrict\-prototypes \-Wswitch \-Wtemplate\-debugging \-Wtraditional \-Wtrigraphs \-Wuninitialized \-Wunused \-Wwrite\-strings .TP .B デバッグオプション \-a .RI \-d letters \-fpretend\-float \-g .RI \-g level \-gcoff \-gxcoff \-gxcoff+ \-gdwarf \-gdwarf+ \-gstabs \-gstabs+ \-ggdb \-p \-pg \-save\-temps .RI \-print\-file\-name= library \-print\-libgcc\-file\-name .TP .B 最適化オプション \-fcaller\-saves \-fcse\-follow\-jumps \-fcse\-skip\-blocks \-fdelayed\-branch \-felide\-constructors \-fexpensive\-optimizations \-ffast\-math \-ffloat\-store \-fforce\-addr \-fforce\-mem \-finline\-functions \-fkeep\-inline\-functions \-fmemoize\-lookups \-fno\-default\-inline \-fno\-defer\-pop \-fno\-function\-cse \-fno\-inline \-fno\-peephole \-fomit\-frame\-pointer \-frerun\-cse\-after\-loop \-fschedule\-insns \-fschedule\-insns2 \-fstrength\-reduce \-fthread\-jumps \-funroll\-all\-loops \-funroll\-loops \-O \-O2 .TP .B プリプロセッサオプション .RI \-A assertion \-C \-dD \-dM \-dN .RI \-D macro [\|= defn \|] \-E \-H .RI "\-idirafter " dir .RI "\-include " file .RI "\-imacros " file .RI "\-iprefix " file .RI "\-iwithprefix " dir \-M \-MD \-MM \-MMD \-nostdinc \-P .RI \-U macro \-undef .TP .B アセンブラオプション .RI \-Wa, option .TP .B リンカオプション .RI \-l library \-nostartfiles \-nostdlib \-static \-shared \-symbolic .RI "\-Xlinker\ " option .RI \-Wl, option .RI "\-u " symbol .TP .B ディレクトリオプション .RI \-B prefix .RI \-I dir \-I\- .RI \-L dir .TP .B ターゲットオプション .RI "\-b " machine .RI "\-V " version .TP .B コンフィギュレーション依存オプション .I M680x0\ オプション .br \-m68000 \-m68020 \-m68020\-40 \-m68030 \-m68040 \-m68881 \-mbitfield \-mc68000 \-mc68020 \-mfpa \-mnobitfield \-mrtd \-mshort \-msoft\-float .Sp .I VAX オプション .br \-mg \-mgnu \-munix .Sp .I SPARC オプション .br \-mepilogue \-mfpu \-mhard\-float \-mno\-fpu \-mno\-epilogue \-msoft\-float \-msparclite \-mv8 \-msupersparc \-mcypress .Sp .I Convex オプション .br \-margcount \-mc1 \-mc2 \-mnoargcount .Sp .I AMD29K オプション .br \-m29000 \-m29050 \-mbw \-mdw \-mkernel\-registers \-mlarge \-mnbw \-mnodw \-msmall \-mstack\-check \-muser\-registers .Sp .I M88K オプション .br \-m88000 \-m88100 \-m88110 \-mbig\-pic \-mcheck\-zero\-division \-mhandle\-large\-shift \-midentify\-revision \-mno\-check\-zero\-division \-mno\-ocs\-debug\-info \-mno\-ocs\-frame\-position \-mno\-optimize\-arg\-area \-mno\-serialize\-volatile \-mno\-underscores \-mocs\-debug\-info \-mocs\-frame\-position \-moptimize\-arg\-area \-mserialize\-volatile .RI \-mshort\-data\- num \-msvr3 \-msvr4 \-mtrap\-large\-shift \-muse\-div\-instruction \-mversion\-03.00 \-mwarn\-passed\-structs .Sp .I RS6000 オプション .br \-mfp\-in\-toc \-mno\-fop\-in\-toc .Sp .I RT オプション .br \-mcall\-lib\-mul \-mfp\-arg\-in\-fpregs \-mfp\-arg\-in\-gregs \-mfull\-fp\-blocks \-mhc\-struct\-return \-min\-line\-mul \-mminimum\-fp\-blocks \-mnohc\-struct\-return .Sp .I MIPS オプション .br \-mcpu=\fIcpu type\fP \-mips2 \-mips3 \-mint64 \-mlong64 \-mlonglong128 \-mmips\-as \-mgas \-mrnames \-mno\-rnames \-mgpopt \-mno\-gpopt \-mstats \-mno\-stats \-mmemcpy \-mno\-memcpy \-mno\-mips\-tfile \-mmips\-tfile \-msoft\-float \-mhard\-float \-mabicalls \-mno\-abicalls \-mhalf\-pic \-mno\-half\-pic \-G \fInum\fP \-nocpp .Sp .I i386 オプション .br \-m486 \-mno\-486 \-msoft\-float \-mrtd \-mregparm \-msvr3\-shlib \-mno\-ieee\-fp \-mno\-fp\-ret\-in\-387 \-mfancy\-math\-387 \-mno\-wide\-multiply \-mdebug\-addr \-mno\-move \-mprofiler\-epilogue \-reg\-alloc=LIST .Sp .I HPPA オプション .br \-mpa\-risc\-1\-0 \-mpa\-risc\-1\-1 \-mkernel \-mshared\-libs \-mno\-shared\-libs \-mlong\-calls \-mdisable\-fpregs \-mdisable\-indexing \-mtrailing\-colon .Sp .I i960 オプション .br \-m\fIcpu-type\fP \-mnumerics \-msoft\-float \-mleaf\-procedures \-mno\-leaf\-procedures \-mtail\-call \-mno\-tail\-call \-mcomplex\-addr \-mno\-complex\-addr \-mcode\-align \-mno\-code\-align \-mic\-compat \-mic2.0\-compat \-mic3.0\-compat \-masm\-compat \-mintel\-asm \-mstrict\-align \-mno\-strict\-align \-mold\-align \-mno\-old\-align .Sp .I DEC Alpha オプション .br \-mfp\-regs \-mno\-fp\-regs \-mno\-soft\-float \-msoft\-float .Sp .I System V オプション .br \-G \-Qy \-Qn .RI \-YP, paths .RI \-Ym, dir .TP .B コード生成オプション .RI \-fcall\-saved\- reg .RI \-fcall\-used\- reg .RI \-ffixed\- reg \-finhibit\-size\-directive \-fnonnull\-objects \-fno\-common \-fno\-ident \-fno\-gnu\-linker \-fpcc\-struct\-return \-fpic \-fPIC \-freg\-struct\-return \-fshared\-data \-fshort\-enums \-fshort\-double \-fvolatile \-fvolatile\-global \-fverbose\-asm .ad b .hy 1 .SH 全体的なオプション .TP .BI "\-x " "language" このオプションに続く入力ファイルの言語を .I language\c \& であると明示的に指定します (拡張子に基づくデフォルトの選択よりも優先されます)。このオプションは、 次の `\|\c .B \-x\c \&\|' オプションが出てくるまで、後続する全ての入力ファイルに対して 適用されます。\c .I language\c \& としては、 `\|\c .B c\c \&\|', `\|\c .B objective\-c\c \&\|', `\|\c .B c\-header\c \&\|', `\|\c .B c++\c \&\|', `\|\c .B cpp\-output\c \&\|', `\|\c .B assembler\c \&\|', `\|\c .B assembler\-with\-cpp\c \&\|' を指定することが可能です。 .TP .B \-x none 言語の指定を解除します。このオプションのあとに続くファイルは、それらの拡張子に 基づいて (あたかも何の `\|\c .B \-x\c \&\|' オプションも使用されたことがないように) 処理されます。 .PP もし、4 つのステージ (プリプロセス、コンパイル、アセンブル、リンク) の うちの一部のみが必要な場合は、 `\|\c .B \-x\c \&\|' オプション (またはファイル名の拡張子) を使用して \c .B gcc\c \& に対してどのステージから開始するかを伝え、さらに `\|\c .B \-c\c \&\|', `\|\c .B \-S\c \&\|', `\|\c .B \-E\c \&\|' のオプションのうちのどれかを使用して .B gcc\c \& に対してどこで処理を停止させるかを指定します。ここで、 いくつかの組合せ (例えば `\|\c .B \-x cpp\-output \-E\c \&\|') は \c .B gcc\c \& に対して何の動作も行なわないように指定することになることに注意してください。 .TP .B \-c ソースファイルを、コンパイルまたはアセンブルまではしますが、リンクはしません。 コンパイラの出力は、それぞれのソースファイルに対応したオブジェクトファイル となります。 .Sp デフォルトでは、GCC はオブジェクトファイルのファイル名として、 ソースファイルの拡張子 `\|\c .B .c\c \&\|', `\|\c .B .i\c \&\|', `\|\c .B .s\c \&\|' 等を `\|\c .B .o\c \&\|' で置き換えたものを使用します。 .B \-o\c \& オプションを使用することによって、他の名前を指定することも可能です。 .Sp GCC は .B \-c オプションを使用した場合は、理解できない入力ファイル (コンパイルやアセンブル を必要としないファイル) を無視します。 .TP .B \-S コンパイルが終った所で処理を停止し、アセンブルは行いません。 アセンブラコードではない入力ファイルが指 定された場合は、出力はアセンブラコードのファイルになります。 .Sp デフォルトでは、GCC はアセンブラファイルのファイル名として、 ソースファイルの拡張子 `\|\c .B .c\c \&\|', `\|\c .B .i\c \&\|' 等を `\|\c .B .s\c \&\|' で置き換えたものを使用します。 .B \-o\c \& オプションを使用することによって、他の名前を指定することも可能です。 .Sp GCC はコンパイルを必要としない入力ファイルを全て無視します。 .TP .B \-E プリプロセス処理が終了したところで停止します。コンパイルはしません。 出力はプリプロセス済みのソースコードであり、標準出力へと送られます。 .Sp GCC はプリプロセスを必要としない入力ファイルを全て無視します。 .TP .BI "\-o " file 出力先を \c .I file\c \& に指定します。このオプションは GCC が実行可能ファイル、 オブジェクトファイル、アセンブラファイル、プリプロセス済み C コードなどの、 いかなる種類の出力を行なう場合にも適用可能です。 .Sp 出力ファイルは 1 つしか指定できないため、 `\|\c .B \-o\c \&\|' を複数の入力ファイルをコンパイルする際に使用することは、実行ファ イルを出力する時以外は無意味です。 .Sp `\|\c .B \-o\c \&\|'オプションを指定しなかった場合のデフォルトは、実行ファイルを作る場 合は `\|\c .B a.out\c \&\|' という名前であり、`\|\c .I source\c .B \&.\c .I suffix\c \&\c \&\|' の形式のファイル名を持ったソースファイルのオブジェクトファイルは `\|\c .I source\c .B \&.o\c \&\|' であり、アセンブラのファイルは `\|\c .I source\c .B \&.s\c \&\|' です。 プリプロセス済みの C 言語は、全て標準出力に送られます。 .TP .B \-v (標準エラー出力に対して) コンパイルの各ステージで実行されるコマンドを 表示します。コンパイラドライバ、プリプロセッサおよび本来のコンパイラの 各バージョン番号も表示します。 .TP .B -pipe コンパイル時のステージの間のデータの受け渡しに、テンポラリファイルではなく パイプを使用します。いくつかのシステムではアセンブラがパイプからの入力を受け 付けることができないために、このオプションを指定すると失敗します。 GNU アセンブラでは問題なく使用できます。 .PP .SH 言語オプション .TP 以下のオプションは、コンパイラが受け付ける C の方言に関する制御を行ないます: .TP .B \-ansi 全ての ANSI 標準の C プログラムをサポートします。 .Sp このオプションは、GNU C が持つ ANSI C との非互換な機能を全て排除します。 例えば、\c .B asm\c \&, \c .B inline\c \&, \c .B typeof などのキーワードや、\c .B unix\c \& や \c .B vax などの現在使用しているシステムを規定する定義済みマクロなどが抑制されます。 さらに、好ましくなくかつほとんど使用されない ANSI のトライグラフの機能を使 用可能とし、さらに `\|\c .B $\c \&\|' を識別子の一部として使用できないようにします。 .Sp 代替キーワードである\c .B _\|_asm_\|_\c \&, \c .B _\|_extension_\|_\c \&, .B _\|_inline_\|_\c \&, \c .B _\|_typeof_\|_\c \& は、 `\|\c .B \-ansi\c \&\|' が指定された場合でも使用することが可能です。もちろん、 これらを ANSI C プログラムで使用することが望ましくないのは当然ですが、`\|\c .B \-ansi\c \&\|' をつけてコンパイルされる場合でも、インクルードされるヘッダファイル中に これらが記述できるということは有用です。 \c .B _\|_unix_\|_\c \& や \c .B _\|_vax_\|_\c \& などの代替定義済みマクロは、 `\|\c .B \-ansi\c \&\|' を指定する場合でも指定しない場合でも、利用可能となっています。 .Sp `\|\c .B \-ansi\c \&\|' オプションは、ANSI 準拠でないプログラムを不必要に拒否することは ありません。もしこのような動作を行なわせたい場合には`\|\c .B \-ansi\c \&\|'に加えて\c .B \-pedantic\c \&\|' オプションを指定する必要があります。 .Sp プリプロセッサ定義済みマクロ \c .B _\|_STRICT_ANSI_\|_\c \& が `\|\c .B \-ansi\c \&\|' オプションを使用した際には定義されます。いくつかのヘッダファイルは、この マクロを識別して、ANSI 標準が望まない関数やマクロの定義を抑制します。 これは、 それらの関数やマクロと同じ名前を別の目的で使用するプログラム を混乱させないようにするためです。 .TP .B \-fno\-asm \c .B asm\c \&, \c .B inline\c \&, \c .B typeof\c \& をキーワードとして解釈しません。 これらの単語は識別子として解釈されるようになります。これらの代用として \c .B _\|_asm_\|_\c \&, \c .B _\|_inline_\|_\c \&, \c .B _\|_typeof_\|_\c \& が使用できます。 `\|\c .B \-ansi\c \&\|' を指定すると、暗黙のうちに `\|\c .B \-fno\-asm\c \&\|' を指定したものとみなされます。 .TP .B \-fno\-builtin ビルトイン関数のうち、2 つのアンダースコアで始まるもの以外を認識しなくなり ます。現在、この指定は\c .B _exit\c \&, .B abort\c \&, \c .B abs\c \&, \c .B alloca\c \&, \c .B cos\c \&, \c .B exit\c \&, .B fabs\c \&, \c .B labs\c \&, \c .B memcmp\c \&, \c .B memcpy\c \&, \c .B sin\c \&, .B sqrt\c \&, \c .B strcmp\c \&, \c .B strcpy\c \&, \c .B strlen\c \& の関数に影響を及ぼします。 .Sp `\|\c .B \-ansi\c \&\|' オプションを指定すると、\c .B alloca\c \& と \c .B _exit\c \& はビルトイン関数として扱われなくなります。 .TP .B \-fno\-strict\-prototype `\|\c .B int foo ();\c \&\|' のような、引数を指定しない関数宣言を、C 言語のように引数の数や 型について何の仮定もしないという扱いにします (C++ のみ)。通常はこのよう な宣言は、C++ では \c .B foo\c \& という関数が 1 つも引数をとらないことを意味します。 .TP .B \-trigraphs ANSI C のトライグラフを使用可能とします。`\|\c .B \-ansi\c \&\|' オプションを指定すると、暗黙のうちに `\|\c .B \-trigraphs\c \&\|' を指定したものとみなされます。 .TP .B \-traditional 伝統的な C コンパイラのいくつかの特徴をサポートします。詳しくは GNU C の マニュアルを参照してください。以前はここにそのリストの複製を載せていましたが、 それらが完全に時代遅れになった時に我々に文句が来ないように削除してしまいま した。 .Sp しかし、C++ のプログラムだけについて (C ではありません) 特記しておくこと が 1 つあります。 `\|\c .B \-traditional\c \&\|' オプションは C++ に対して 1 つだけ特別な効果を持ちます。それは、 .B this への代入を許可するというものです。これは `\|\c .B \-fthis\-is\-variable\c \&\|'オプションの指定が及ぼす効果と同一のものです。 .TP .B \-traditional\-cpp 伝統的な C プリプロセッサのいくつかの特徴をサポートします。これは上に挙 げた中で特にプリプロセッサに関係したものを含みますが、 `\|\c .B \-traditional\c \&\|' の指定によって引き起こされる以外の効果を及ぼすことはありません。 .TP .B \-fdollars\-in\-identifiers 識別子中の `\|\c .B $\c \&\|' の使用を許可します (C++ のみ)。 `\|\c .B \-fno\-dollars\-in\-identifiers\c \&\|' を使用することによって、明示的に `\|\c .B $\c \&\|'の使用を禁止することも可能です。(GNU C++ では、デフォルトで `\|\c .B $\c \&\|' を許可しているシステムと禁止しているシステムがあります)。 .TP .B \-fenum\-int\-equiv \c .B int\c \& から列挙型への暗黙の変換を許可します (C++ のみ)。通常は GNU C++ は \c .B enum\c \& から \c .B int\c \& への変換は許可していますが、 逆は許していません。 .TP .B \-fexternal\-templates テンプレート関数について、その関数が定義された場所にのみ単一のコピー を生成することによって、テンプレート宣言に対してより小さなコードを生成 します (C++ のみ)。このオプションを使用して正しいコードを得るためには、 テンプレートを使用する全てのファイルにおいて、`\|\c .B #pragma implementation\c \&\|' (定義) または `\|\c .B #pragma interface\c \&\|' (宣言) を記述しておく必要があります。 `\|\c .B \-fexternal\-templates\c \&\|' を指定してコンパイルを行なう場合には、全てのテンプレートの 実体は external となります。全ての使用される実体はインプリメンテーション ファイル中にまとめて記述しておかなければなりません。これはその必要とされ る実体に対応した \c .B typedef\c \& 宣言を行なうことによって実現できます。 逆に、デフォルトのオプション `\|\c .B \-fno\-external\-templates\c \&\|' でコンパイルした場合には全てのテンプレートの実体は internal と なります。 .TP .B \-fall\-virtual 可能な限り全てのメンバ関数を暗黙のうちに仮想関数として扱います。 全てのメンバ関数 (コンストラクタと .B new , .B delete メンバ演算子を除きます) は、出現した時点でそのクラスの仮想関数とし て扱われます。 .Sp これは、これらのメンバ関数への全ての呼び出しが仮想関数のための内部 テーブルを参照して間接的に決定されるということを意味しません。特定の状況 においては、コンパイラは与えられた仮想関数への呼び出しを直接決定できます。 このような場合にはその関数呼び出しは常に直接呼び出しとなります。 .TP .B \-fcond\-mismatch 条件演算子の第 2, 第 3 引数の型が異なる記述を許します。このような式の型は void となります。 .TP .B \-fthis\-is\-variable \c .B this\c \& への代入を許可します (C++ のみ)。ユーザ定義による記憶管理が可 能となった現在では、 `\|\c .B this\c \&\|' への代入は時代遅れのものとなりました。従ってデフォルトでは、クラスの メンバ関数からの \c .B this\c \& への代入は不当なものとして扱われています。しかし、後方互換性のために、 `\|\c .B \-fthis-is-variable\c \&\|' を指定することによってこの効果を得ることができます。 .TP .B \-funsigned\-char \c .B char\c \& 型を \c .B unsigned char\c \& のように符号無しとして扱います。 .Sp それぞれのマシンには \c .B char\c \& がどちらであるべきかというデフォルトがあります。 デフォルトで \c .B unsigned char\c \& であることもあれば、デフォルトで .B signed char\c \& であることもあります。 .Sp 理想的には、可搬性のあるプログラムは、オブジェクトの符号の有無に依 存する記述を行なう場合には常に \c .B signed char\c \&、もしくは .B unsigned char\c \& を使用すべきです。 しかし実際には多くのプログラムが単なる \c .B char\c \& を用いて記述されており、さらにそのプログラムを記述した 環境に依存して、符号付きである、あるいは符号無しであるという暗黙の仮定が 行なわれています。このオプション、あるいはこの逆のオプションは、デフォル トと逆の動作を行なわせることにより、これらのプログラムを正しく動作させ ることを可能にします。 .Sp \c .B char\c \& 型は常に .B signed char\c \& あるいは \c .B unsigned char\c \& とは区別された型として扱われます。常にそれらの振舞いがそのどち らかと全く同じであるということに関わらず、このような扱いを行います。 .TP .B \-fsigned\-char \c .B char\c \& 型を \c .B signed char\c \& 型のように符号付きとして扱います。 .Sp ただし、このオプションは `\|\c .B \-fno\-unsigned\-char\c \&\|' と等価です。これは `\|\c .B \-funsigned\-char\c \&\|'の否定形です。同様に `\|\c .B \-fno\-signed\-char\c \&\|' は `\|\c .B \-funsigned\-char\c \&\|' と等価です。 .TP .B \-fsigned\-bitfields .TP .B \-funsigned\-bitfields .TP .B \-fno\-signed\-bitfields .TP .B \-fno\-unsigned\-bitfields これらのオプションは、明示的に `\|\c .B signed\c \&\|' または `\|\c .B unsigned\c \&\|' の指定が行なわれていないビットフィールドに対して、符号つきであるかある いは符号なしであるかを制御します。デフォルトではこのようなビットフィール ドは符号つきとなっています。なぜなら、 .B int\c \& のような基本的な型は符号つきであるという点で、整合性がとれるからです。 .Sp ただし、`\|\c .B \-traditional\c \&\|' を指定した場合は、ビットフィールドは常に全て符号無しであるとされます。 .TP .B \-fwritable\-strings 文字列定数を書き込み可能なデータセグメントに配置し、同内容の文字列を 1 つの共有オブジェクトにする処理を行いません。これは、文字定数に書き込む ことができることを仮定した昔のプログラムとの互換性をとるために提供され ています。`\|\c .B \-traditional\c \&\|' オプションも同様の効果を含みます。 .Sp 文字定数に書き込むという考えは非常によくない考えです。\*(lq定数\*(rq はまさに定数であり、変化すべきではありません。 .PP .SH プリプロセッサオプション これらのオプションは C プリプロセッサを制御します。 各 C ソースファイルは、実際にコンパイルする前に、C プリプロセッサに かけられます。 .PP `\|\c .B \-E\c \&\|' オプションを使用すると、GCC はプリプロセス以外の処理を行いません。 以下に示すオプションのうちのいくつかは、`\|\c .B \-E\c \&\|' と同時に使用された時のみ意味をもちます。なぜならば、これらのオプション によって、実際のコンパイルには不適当なプリプロセッサ出力が生成されるためです。 .TP .BI "\-include " "file" \c .I file\c \& を、通常の入力ファイルが処理される前に処理します。結果的に \c .I file\c \& に含まれる内容は、一番最初にコンパイルされることになります。コマンドラ インに指定されたすべての `\|\c .B \-D\c \&\|' や `\|\c .B \-U\c \&\|' オプションは、その記述された順番に関わらず常に `\|\c .B \-include \c .I file\c \&\c \&\|' が処理される前に処理されます。全ての `\|\c .B \-include\c \&\|' や `\|\c .B \-imacros\c \&\|' オプションは、それらが記述された順番通りに処理されます。 .TP .BI "\-imacros " file 通常の入力ファイルを処理する前に\c .I file\c \& を入力として処理しますが、その結果の出力を捨てます。 .I file\c \& によって生成された出力は捨てられるため、`\|\c .B \-imacros \c .I file\c \&\c \&\|' の処理結果の影響は、\c .I file\c \& 中に記述されたマクロがメインの入力ファイル中で使用可能になることだけです。 プリプロセッサは、`\|\c .B \-imacros \c .I file\c \&\|' が記述された順番に関わらず、これを処理する前に、 コマンドラインから与えられた全ての `\|\c .B \-D\c \&\|' や `\|\c .B \-U\c \&\|' オプションを評価します。全ての `\|\c .B \-include\c \&\|' および `\|\c .B \-imacros\c \&\|' オプションは、それらが記述された順番通りに処理されます。 .TP .BI "\-idirafter " "dir" ディレクトリ \c .I dir\c \& を第 2 インクルードパスに加えます。第 2 インクルードパス中のディレクトリは、 メインインクルードパス (オプション `\|\c .B \-I\c \&\|' によって追加されます) 中にヘッダファイルを探した結果発見できな かった場合に検索されます。 .TP .BI "\-iprefix " "prefix" \c .I prefix\c \& を、その後に続く `\|\c .B \-iwithprefix\c \&\|' オプション用のプレフィックスとして使用します。 .TP .BI "\-iwithprefix " "dir" ディレクトリを第 2 インクルードパスに追加します。ディレクトリ名は \c .I prefix\c \& と \c .I dir\c \& を連結することによって得られます。ここで \c .I prefix は、`\|\c .B \-iprefix\c \&\|' オプションによって指定されたものです。 .TP .B \-nostdinc ヘッダファイルのための標準のシステムディレクトリを検索しません。`\|\c .B \-I\c \&\|' オプションによって指定したディレクトリ (またはカレントディレクト リ) のみを検索します。 .Sp `\|\c .B \-nostdinc\c \&\|' と `\|\c .B \-I\-\c \&\|'を使用することにより、インクルードファイルの検索パスを明示的に指 定したディレクトリのみに限定することが可能となります。 .TP .B \-nostdinc++ ヘッダファイルの検索に、C++\-固有の標準ディレクトリを用いません。ただ しそれ以外の標準ディレクトリは検索されます。 (このオプションは `\|\c .B libg++\c \&\|' の構築に使用されます。) .TP .B \-undef 標準でない定義済みマクロ(アーキテクチャフラグも含めて)を定義しません。 .TP .B \-E C プリプロセッサの処理のみを行います。指定された全ての C のソースファイル に対してプリプロセスを行ない、標準出力、または指定された出力ファイルに 対して出力を行います。 .TP .B \-C プリプロセッサに対してコメントの削除を行なわないように指示します。 `\|\c .B \-E\c \&\|' オプションとともに使用されます。 .TP .B \-P プリプロセッサに対して `\|\c .B #line\c \&\|' コマンドを生成しないように指示します。 `\|\c .B \-E\c \&\|' オプションとともに使用されます。 .TP .B \-M\ [ \-MG ] プリプロセッサに対して\c .B make で使用可能な、オブジェクト間の依存関係を記述した出力を生成するように指示 します。それぞれのソースファイルに対して、プリプロセッサは\c .B make\c \& のための規則を 1 つ出力します。この出力は、ターゲットとして そのソースファイルから生成されるオブジェクトファイルのファイル名をとり、 依存するファイルのリストとしては `\|\c .B #include\c \&\|' によってソースファイルに 読み込まれる全てのファイルの名前が並びます。この 規則は 1 行、あるいは長い場合には`\|\c .B \e\c \&\|' と改行を入れて複数行で出力されます。この規則のリストは、プリプロセス済 みの C プログラムのかわりに、標準出力へと出力されます。 .Sp `\|\c .B \-M\c \&\|' は暗黙のうちに `\|\c .B \-E\c \&\|' を含みます。 .Sp `\|\c .B \-MG\c \&\|' を指定すると、見つからないヘッダファイルは生成されたファイルであり、 それらはソースファイルと同じディレクトリに存在するとみなします。 これは `\|\c .B \-M\c \&\|' と同時に指定しなければなりません。 .TP .B \-MM\ [ \-MG ] `\|\c .B \-M\c \&\|' と似ていますが、`\|\c .B #include "\c .I file\c .B \&"\c \&\|'によってインクルードされるユーザ定義のヘッダファイルのみを対象に した出力ファイルを生成します。`\|\c .B #include <\c .I file\c .B \&>\c \&\|' によってインクルードされるシステムヘッダファイルは省略されます。 .TP .B \-MD `\|\c .B \-M\c \&\|' と似ていますが、依存情報は出力ファイル名の最後の `\|\c .B .o\c \&\|' を `\|\c .B .d\c \&\|' に置き換えたファイル名のファイルに対して出力されます。 \&`\|\c .B \-MD\c \&\|' を指定したファイルのコンパイルもこれに加えて行なわれ、 `\|\c .B \-M\c \&\|' のように通常のコンパイルを抑制することはありません。 .Sp Mach のユーティリティである`\|\c .B md\c \&\|' は、これらの複数の `\|\c .B .d\c \&\|' ファイルを `\|\c .B make\c \&\|' コマンドによって使用できる単一の依存記述ファイルへとマージするのに使用 することができます。 .TP .B \-MMD `\|\c .B \-MD\c \&\|' と似ていますが、ユーザヘッダファイルのみを対象とし、システムヘッダ ファイルを無視します。 .TP .B \-H 通常の動作に加えて、使用されたヘッダファイルの名前を表示します。 .TP .BI "\-A" "question" ( answer ) .I question\c に対するアサーション .I answer \& を定義します。これは `\|\c .BI "#if #" question ( answer )\c \&\|' のようなプリプロセッサ条件節によってテストされます。`\|\c .B \-A\-\c \&\|' は標準のアサーション(通常はターゲットマシンに関 する情報を表している)を禁止します。 .TP .BI \-D macro マクロ \c .I macro\c \& に対して文字列 `\|\c .B 1\c \&\|' を定義として与えます。 .TP .BI \-D macro = defn マクロ \c .I macro\c \& を \c .I defn\c \& として定義します。コマンドライン上の全ての `\|\c .B \-D\c \&\|' オプションは `\|\c .B \-U\c \&\|' オプションの処理を行なう前に処理されます。 .TP .BI \-U macro マクロ \c .I macro\c \& の定義を無効にします。`\|\c .B \-U\c \&\|' オプションは全ての `\|\c .B \-D\c \&\|' オプションの処理が終了した後、`\|\c .B \-include\c \&\|' と `\|\c .B \-imacros\c \&\|' オプションの処理の前に処理されます。 .TP .B \-dM プリプロセッサに対して、プリプロセス終了時に有効であったマクロの定義の みを出力するように指示します。`\|\c .B \-E\c \&\|' オプションとともに使用します。 .TP .B \-dD プリプロセッサに対して、全てのマクロ定義を適切な順番で出力中にそのまま 出力するように指示します。 .TP .B \-dN `\|\c .B \-dD\c \&\|' と似ていますが、マクロの引数と内容を削除します。 出力には`\|\c .B #define \c .I name\c \&\c \&\|' のみが含まれます。 .PP .SH アセンブラオプション .TP .BI "\-Wa," "option" \c .I option\c \& をアセンブラに対するオプションとして渡します。\c .I option がコンマを含む場合は、そのコンマで区切られた複数のオプションとして与え られます。 .PP .SH リンカオプション これらのオプションは、コンパイラがオブジェクトファイル群をリンクして 1 つ の実行可能ファイルを出力する際に使用されるものです。これらはコンパイラが リンクステップを行なわない場合には意味を持ちません。 .TP .I object-file-name 特別に認識される拡張子で終っていないファイル名は、オブジェクトファイル、 またはライブラリであると認識されます。(オブジェクトファイルとライブラリ はリンカがその内容を参照することで区別されます。) GCC がリンクステップを 行なう場合は、これらのファイルはリンカへの入力として使用されます。 .TP .BI \-l library 名前が .I library\c \& であるライブラリをリンク時に使用します。 .Sp リンカは、標準のライブラリ用ディレクトリのリスト中から、 実際のファイル名が `\|\c .B lib\c .I library\c \&.a\c \&\|' であるファイルを検索します。リンカはこのファイルを、ファイル 名で直接指定した場合と同様に使用します。 .Sp 検索するディレクトリには、いくつかの標準システムディレクトリと、`\|\c .B \-L\c \&\|' によって指定したディレクトリが含まれます。 .Sp 通常、この方法で発見されるファイルはライブラリファイル、つまりいくつかの オブジェクトファイルをメンバとして含むアーカイブファイルです。 リンカは、アーカイブファイルの中を検索して、 参照されているが定義されていないシンボルを定義しているメンバを 探し出します。 しかし、もしリンカがライブラリでなく通常のオブジェクトファイルを発見した 場合は、そのオブジェクトファイルを通常の方法でリンクします。`\|\c .B \-l\c \&\|' オプションを使用する場合とファイル名を直接指定する場合の違いは、`\|\c .B \-l\c \&\|' の場合が .I library を `\|\c .B lib\c \&\|' と `\|\c .B .a\c \&\|' で囲み、いくつものディレクトリを検索することだけです。 .TP .B \-lobjc Objective C のプログラムをリンクする場合は、この特別な .B \-l オプションを指定する必要があります。 .TP .B \-nostartfiles リンク時に、標準のシステムスタートアップファイルを使用しません。 標準ライブラリは通常通りに使用されます。 .TP .B \-nostdlib リンク時に、標準のシステムライブラリとスタートアップファイルを使用しません。 指定したファイルのみがリンカに渡されます。 .TP .B \-static ダイナミックリンクをサポートするシステムにおいて、このオプションは共有 ライブラリとのリンクを抑制します。それ以外のシステムではこのオプションは 意味を持ちません。 .TP .B \-shared 他のオブジェクトとリンクして実行可能プログラムを形成し得る共有オブジェクトを 生成します。ごく少数のシステムでのみ、このオプションはサポートされ ています。 .TP .B \-symbolic 共有オブジェクトを構築する際に、グローバルなシンボルへの参照をバインド します。全ての解決できなかった参照に対して警告を与えます (ただしリンクエディタオプション `\|\c .B \-Xlinker \-z \-Xlinker defs\c \&\|' によってこれを無効化した場合を除きます)。ごく少数のシステムでのみ、 このオプションはサポートされています。 .TP .BI "\-Xlinker " "option" オプション \c .I option をリンカに対して渡します。リンカに渡すシステム固有のオプションが、 GNU CC が理解できないものである場合に利用できます。 .Sp 引数を持ったオプションを渡したい場合は、 `\|\c .B \-Xlinker\c \&\|' を 2 度使用すれば可能です。1 度目でオプションを渡し、2 度目で引数を 渡します。例えば `\|\c .B \-assert definitions\c \&\|' を渡すには、 `\|\c .B \-Xlinker \-assert \-Xlinker definitions\c \&\|' のように記述すれば可能です。 `\|\c .B \-Xlinker "\-assert definitions"\c \&\|' のように指定した場合は正常に動作しません。なぜならこれは、文字列全 体を 1 つの引数として渡してしまい、リンカの期待する形式と異なってしま うからです。 .TP .BI "\-Wl," "option" オプション \c .I option\c \& をリンカに渡します。\c .I option\c \& がコンマを含む場合は、それらのコンマで複数のオプションとして分割されます。 .TP .BI "\-u " "symbol" シンボル .I symbol が未定義であるかのように振舞います。これは強制的にこのシンボルを定義してい るライブラリモジュールをリンクするために使用します。`\|\c .B \-u\c \&\|' は異なったシンボルに対して複数回使用することができます。これによっ て、さらに多くのライブラリモジュールを読み込ませることができます。 .SH ディレクトリオプション これらのオプションは、ヘッダファイル、ライブラリ、コンパイラの一部を検 索するディレクトリを指定するために使用されます。 .TP .BI "\-I" "dir" ディレクトリ \c .I dir\c \& を、インクルードファイルの検索するディレクトリのリスト中に追加します。 .TP .B \-I\- `\|\c .B \-I\-\c \&\|' オプション指定前に `\|\c .B \-I\c \&\|' オプションによって指定された全てのディレクトリは、`\|\c .B #include "\c .I file\c .B \&"\c \&\|' の形式によってのみ検索されます。 これらのディレクトリは `\|\c .B #include <\c .I file\c .B \&>\c \&\|' によっては検索されません。 .Sp \&\|` .B \-I\-\c \&\|' オプション指定後に `\|\c .B \-I\c \&\|' で指定したディレクトリは、全ての `\|\c .B #include\c \&\|' 命令によって検索されます。(通常は \c .I 全ての\c \& `\|\c .B \-I\c \&\|' で指定されたディレクトリは この方法で検索されます。) .Sp これに加えて `\|\c .B \-I\-\c \&\|' オプションは、カレントディレクトリ (現在の入力ファイルが存在する ディレクトリ) が `\|\c .B #include "\c .I file\c .B \&"\c \&\|' に対する最初の検索対象となることを抑制します。`\|\c .B \-I\-\c \&\|' によるこの効果を上書きする方法はありません。`\|\c .B \-I.\c \&\|' を指定することによって、コンパイラが起動されたディレクトリが検索 されることを指定することは可能です。これはプリプロセッサが行なう デフォルトの動作とは異なりますが、たいていはこれで十分です。 .Sp `\|\c .B \-I\-\c \&\|' は、ヘッダファイルの検索に標準のシステムディレクトリを使うことを抑制 するわけではありません。 従って、`\|\c .B \-I\-\c \&\|' と `\|\c .B \-nostdinc\c \&\|' は 独立です。 .TP .BI "\-L" "dir" ディレクトリ\c .I dir\c \& を `\|\c .B \-l\c \&\|' による検索が行なわれるディレクトリのリストに加えます。 .TP .BI "\-B" "prefix" このオプションはコンパイラ自身の実行形式、ライブラリ、データファイルの 検索場所を指定します。 .Sp コンパイラドライバはサブプログラム `\|\c .B cpp\c \&\|', `\|\c .B cc1\c \&\|' (または C++ においては `\|\c .B cc1plus\c \&\|'), `\|\c .B as\c \&\|', そして `\|\c .B ld\c \&\|' を 1 つ、あるいはそれ以上起動します。コンパイラドライバは、 起動するプログラムのプレフィックスとして .I prefix\c \& に `\|\c .I machine\c .B /\c .I version\c .B /\c \&\|' をつけたものとつけないものの双方を 使用します。 .Sp コンパイラドライバは各サブプログラムの起動時に、 `\|\c .B \-B\c \&\|' プレフィックスの指定がある場合は、それを最初に利用します。もしその 名前が見つからなければ、または `\|\c .B \-B\c \&\|' が指定されていなければ、ドライバは 2 つの標準プレフィックス `\|\c .B /usr/lib/gcc/\c \&\|' と `\|\c .B /usr/local/lib/gcc-lib/\c \&\|' を試します。このどちらにも見つからなければ、コンパイラドライバは、 環境変数 `\|\c .B PATH\c \&\|' のディレクトリリストを利用して、そのプログラム名を検索します。 .Sp ランタイムサポートファイル `\|\c .B libgcc.a\c \&\|' も、必要ならば `\|\c .B \-B\c \&\|' プレフィックスを用いて検索されます。もしそこに見つからなければ、 前記 2 つの標準プレフィックスが試みられますが、それで終りです。この場合は リンクの対象から外されます。ほとんどの場合、またほとんどのマシンでは、`\|\c .B libgcc.a\c \&\|' は実際には必要ではありません。 .Sp これと同じ効果を、環境変数 .B GCC_EXEC_PREFIX\c \& によっても得ることができます。もしこの環境変数が定義されていれば、こ の値がプレフィックスとして同様に使用されます。もし `\|\c .B \-B\c \&\|' オプションと .B GCC_EXEC_PREFIX\c \& 環境変数の双方が存在した場合は、`\|\c .B \-B\c \&\|' オプションが最初に使用され、環境変数は次に使用されます。 .SH 警告オプション 警告は、本質的に間違いであるわけではありませんが、危険な構造を報告したり、 エラーがあるかもしれないような部分を示唆する診断メッセージです。 .Sp 以下のオプションは、GNU CC が生成する警告の量と種類を制御します。 .TP .B \-fsyntax\-only コードの文法エラーをチェックしますが、一切出力は行いません。 .TP .B \-w 全ての警告メッセージを抑制します。 .TP .B \-Wno\-import .BR #import の利用による警告メッセージを抑制します。 .TP .B \-pedantic 厳密な ANSI 標準 C 言語で規定している全ての警告を表示し、許されていない拡張を 使用したプログラムを全て拒否します。 .Sp 正当な ANSI 標準 C プログラムは、このオプションの有無に関わらず コンパイルできるべきです (もっとも、ほんのわずかではありますが `\|\c .B \-ansi\c \&\|' を必要とするものはあります)。しかし、このオプションを使用しない場合、 GNU 拡張や伝統的な C の特徴も、これに加えてサポートされます。このオプション を使用すれば、それらは拒絶されます。このオプションを\c .I 使う\c \&理由はありませんが、こだわりのある人々を満足させるためにのみ 存在しています。 .Sp `\|\c .B \-pedantic\c \&\|' は、始まりと終りとが `\|\c .B _\|_\c \&\|' である代替キーワードの使用については、警告しません。 同様に .B _\|_extension_\|_\c \& に続く表現についても警告しません。しかし、システムヘッダファイルのみ がこの抜け道を使用すべきであり、アプリケーションプログラムはこれを避け るべきです。 .TP .B \-pedantic\-errors `\|\c .B \-pedantic\c \&\|' と似ていますが、警告のかわりにエラーを出します。 .TP .B \-W 以下のイベントに対して、特別な警告メッセージを表示します。 .TP \ \ \ \(bu volatile でない自動変数が .B longjmp\c \& の呼び出しによって変更され得る場合です。これらの警告は、最適化コンパイル の時のみ問題になり得ます。 .Sp コンパイラは .B setjmp\c \& の呼び出しのみを見ています。コンパイラは、どこで \c .B longjmp\c \& が呼び出されるかを知ることはできません。実際には、シグナルハンドラは コード中の任意の場所で .B longjmp\c \& を呼び出すことができます。従って、実際には \c .B longjmp\c \& への呼び出しが危険な部分からはおこなわれていないために問題のないプ ログラムであっても、警告が発せられることになります。 .TP \ \ \ \(bu 関数が、値を伴ってリターンする場合と、値を伴わずにリターンする場合の両方 が起こりうる場合です。 (関数の最後を抜けていくことは、値を伴わずに関数をリターンするとみなされます。) 例えば、次の関数がこの種類の警告を引き起こします。 .Sp .nf foo (a) { if (a > 0) return a; } .Sp .fi ある関数 (\c .B abort\c \& や\c .B longjmp\c \& を含む) が決してリターンしないということを GNU CC が理解できないために、にせの警告 が発生するかもしれません。 .TP \ \ \ \(bu 式文 (expression-statement) またはコンマ式の左部分が 一切の副作用を含まない場合です。 警告を抑制するには、使用しない式を void にキャストして下さい。 例えば `\|\c .B x[i,j]\c \&\|' といった式は警告されますが、`\|\c .B x[(void)i,j]\c \&\|' は警告されません。 .TP \ \ \ \(bu 符号無しの値が 0 と `\|\c .B >\c \&\|' または `\|\c .B <=\c \&\|' で比較される場合です。 .PP .TP .B \-Wimplicit 関数やパラメータに対する暗黙の宣言に対して常に警告します。 .TP .B \-Wreturn\-type 関数の戻り値の型が、デフォルトである \c .B int\c \& に定義された時に常に警告します。また、戻り値の型が \c .B void\c でない関数内に、戻り値のない \c .B return\c \& 文がある場合にも常に警告します。 .TP .B \-Wunused ローカル変数が宣言されたにも関わらず使用されていない場合、静的に宣言さ れた関数の実体が定義されていない場合、計算結果が明らかに 利用されていない場合に常に警告します。 .TP .B \-Wswitch .B switch\c \& 文がインデックスとして列挙型をとっている時、その列挙型中のいくつ かの値に対する \c .B case\c \& が欠けている場合に常に警告します。(\c .B default\c \& ラベルが存在する場合、この警告は出ません。) このオプションを使用した場合 には、列挙型の範囲を越えた \c .B case\c \& ラベルも、常に警告されます。 .TP .B \-Wcomment コメントの開始文字列 `\|\c .B /\(**\c \&\|' がコメント中に現れた時に常に警告します。 .TP .B \-Wtrigraphs トライグラフの出現を常に警告します (トライグラフが使用可能であると仮定します)。 .TP .B \-Wformat .B printf\c \&, \c .B scanf\c \& などへの呼び出しに対して、与えられた引数が、フォーマット文字列の指 定を満足する型を持っているかを検査します。 .TP .B \-Wchar\-subscripts 配列の添字の型が .BR char であった場合に警告します。これはよくある間違いのもとです。 いくつかのマシンにおいてはこの型が符号付きであることを、 プログラマはしばしば忘れてしまいます。 .TP .B \-Wuninitialized 初期化されていない自動変数が使用されています。 .Sp これらの警告は、最適化コンパイルを行なう時のみ発生します。なぜなら、 コンパイラは最適化を行なう時にのみデータフロー情報を必要とするからです。 もし `\|\c .B \-O\c \&\|' を指定しなかった場合は、この警告を得ることはできません。 .Sp これらの警告は、レジスタ割り当ての対象となった変数についてのみ発生します。 従って、\c .B volatile\c \& であると宣言された変数や、アドレス上に割り当てられた変数、サイズが 1, 2, 4, 8 バイト以外の変数に関してはこれらの警告は発生しません。 さらに、構造体、共用体、配列については、たとえそれらがレジスタに 割り当てられたとしても、これらの警告は発生しません。 .Sp ある変数によって計算された値が結局使用されないような変数については、一切の 警告が生じないことに注意して下さい。このような計算は、警告が表示される前に データフロー解析によって削除されます。 .Sp これらの警告をオプションにした理由の一つは、GNU CC がまだあまり賢くなくて、 あるコードが一見間違いを含むかのように見えても それは実は正しいものかもしれない、 ということを GNU CC が理解できない、というものです。 ここにその 1 つの例を挙げます。 .Sp .nf { int x; switch (y) { case 1: x = 1; break; case 2: x = 4; break; case 3: x = 5; } foo (x); } .Sp .fi もし \c .B y\c \& の値が常に 1, 2 あるいは 3 である限りは \c .B x\c \& は常に 初期化されます。しかし GNU CC はこれを知ることはできません。もう 1 つの一般 的な例を挙げます。 .Sp .nf { int save_y; if (change_y) save_y = y, y = new_y; .\|.\|. if (change_y) y = save_y; } .Sp .fi これはバグを含みません。なぜなら \c .B save_y\c \& は、その値が設定された時のみ使用されるからです。 .Sp いくつかのにせの警告は、使用している決してリターンしない関数全てに対して .B volatile\c \& と宣言することによって防ぐことが可能です。 .TP .B \-Wparentheses ある特定の文脈中で括弧が省略されていた場合に警告します。 .TP .B \-Wtemplate\-debugging C++ プログラムにおいてテンプレートを使用している際に、デバッグが完全に 可能でない場合を警告します (C++ のみ)。 .TP .B \-Wall 全ての上に挙げた `\|\c .B \-W\c \&\|' オプションを結合したものです。これらのオプションは全て、 たとえマクロとの組合せ であっても、避けたほうがいいと我々が推奨する用法や、 簡単に避けることができると我々が信じている用法に関するものです。 .PP 残りの `\|\c .B \-W.\|.\|.\c \&\|' オプションは `\|\c .B \-Wall\c \&\|' によっては暗黙のうちに指定されません。なぜならこれらは、クリーンなプ ログラムにおいても、ある状況においては使用することが妥当であると我々が 考える構造についての警告を行なうオプションだからです。 .TP .B \-Wtraditional 伝統的な C と ANSI C において異なった振舞いをする特定の構造について警 告します。 .TP \ \ \ \(bu マクロ引数がマクロ本体内の文字列定数に現れるものです。これは、伝統的な C に おいてはその引数で置換しましたが、ANSI C においては定数の一部として扱わ れます。 .TP \ \ \ \(bu ブロック内で外部宣言であると宣言され、かつそのブロックの終端の後で 使用されている関数です。 .TP \ \ \ \(bu オペランドとして \c .B long\c \& 型をとる \c .B switch\c \& 文です。 .PP .TP .B \-Wshadow ローカル変数が他のローカル変数を隠している時に常に警告します。 .TP .BI "\-Wid\-clash\-" "len" 2 つの全く別の識別子の最初の \c .I len 文字が一致した時に警告します。これはある種の旧式な おばかさんコンパイラでコンパイルされ得るプログラムを作る場合に役に立ちます。 .TP .B \-Wpointer\-arith 関数型や \c .B void\c \& の \*(lqサイズ\*(rq に依存するものを全て警告します。GNU C はこれらに対して、 サイズ 1 を割り当てています。これは \c .B void \(**\c \& ポインタと関数へのポインタにおける計算を簡便にするためです。 .TP .B \-Wcast\-qual ポインタが、型修飾子が削除されるようにキャストされる全ての場合に警告します。 例えば \c .B const char \(**\c \& を 普通の \c .B char \(**\c \& にキャストした場合に警告がなされます。 .TP .B \-Wcast\-align -ポインタのキャストにおいて、そのターゲットに要求されるアラインメントが +ポインタのキャストにおいて、そのターゲットに要求される境界条件が 大きくなるようなキャストを全て警告します。例えば \c .B char \(**\c \& が \c .B int \(**\c \& へとキャストされると、整数が 2、あるいは 4 バイト境界でしかアクセスで きないマシンにおいては警告が発せられます。 .TP .B \-Wwrite\-strings 文字定数に対して、型 \c .B const char[\c .I length\c .B ]\c \& を与え、非-\c .B const\c \& の \c .B char \(** ポインタへのアドレスのコピーに対して警告するようにします。この警告は、 宣言とプロトタイプにおいて \c .B const\c \& の使用を非常に注意深くおこなっていさえすれば、 文字列定数に書き込みをしそうなコードをコンパイル時に発見することを助けますが、 そうでない場合は有害無益な指定です。これが、我々がこの警告を `\|\c .B \-Wall\c \&\|' のリクエストに含めなかった理由です。 .TP .B \-Wconversion 同じ引数が与えられた時に、プロトタイプが存在する場合とプロトタイプが 存在しない場合とで、異なった型変換を引き起こす場合について警告します。 これは固定小数点から浮動小数点への変換やその逆、デフォルトの動作と異なる固定 小数点引数の幅や符号の有無の変換が含まれます。 .TP .B \-Waggregate\-return 構造体や共用体を返す関数を定義した場合や、 それらを呼び出す全ての場合に警告します。 (配列を返すことができる言語においても、これは警告を引き起こします。) .TP .B \-Wstrict\-prototypes 引数の型を指定せずに関数を宣言、あるいは定義した場合に警告します。 (以前に引数の型を指定した宣言が存在する場合には、旧式の関数宣言に対しては 警告をしません。) .TP .B \-Wmissing\-declarations グローバルな関数を、その前にプロトタイプ宣言をせずに定義した場合に 警告します。 この警告は、たとえその定義自身がプロトタイプを含んでいたとしても発生します。 この警告の目的は、ヘッダファイル中にグローバル関数の定義を忘れるこ とを防ぐことにあります。 .TP .B \-Wredundant-decls 同一スコープ中で複数回、同一対象を宣言した場合に、たとえそれが正当で何も 変化させない場合であっても警告します。 .TP .B \-Wnested-externs 関数内で \c .B extern\c \& 宣言を行なった場合に警告します。 .TP .B \-Wenum\-clash 異なる列挙型の間で変換を行なった際に警告します (C++ のみ)。 .TP .B \-Woverloaded\-virtual (C++ のみ。) 導出クラスにおいて、仮想関数の定義は基底クラスで定義された仮想関数の型 の記述と一致していなければなりません。このオプションを使用することによっ て、基底クラスにおける仮想関数と同一の名前を持ち、基底クラスのいかなる 仮想関数とも異なった型の記述を持つ関数に対して警告が行われます。これに よって、導出クラスが仮想関数を定義しようとして失敗する場合を警告するこ とができます。 .TP .B \-Winline 関数がインライン宣言されている、あるいは .B \-finline\-functions オプションが与えられている場合に、関数をインライン展開できなかった場合 に警告します。 .TP .B \-Werror 警告をエラーとして扱います。警告の後にコンパイルを中断します。 .SH デバッグオプション GNU CC は、ユーザのプログラムや GCC の双方をデバッグするために、 多くのオプションを備えています。 .TP .B \-g オペレーティングシステムのネイティブのフォーマット (stabs, COFF, XCOFF, DWARF) でデバッグ情報を生成します。GDB はこのデバッグ情報に基づい て動作することができます。 .Sp stabs フォーマットを使用するほとんどのシステムにおいては、`\|\c .B \-g\c \&\|' を指定すると、GDB だけが使用できる余分なデバッグ情報が使用可能に なります。 この特別の情報は GDB に対してはよりよいデバッグを行なうことを可能 としますが、おそらく他のデバッガに対してはクラッシュ、あるいはそのプログラムを 読めなくしてしまいます。この特別な情報の生成を制御するためには `\|\c .B \-gstabs+\c \&\|', `\|\c .B \-gstabs\c \&\|', `\|\c .B \-gxcoff+\c \&\|', `\|\c .B \-gxcoff\c \&\|', `\|\c .B \-gdwarf+\c \&\|', `\|\c .B \-gdwarf\c \&\|' を使用してください (下記参照)。 .Sp 他の多くの C コンパイラと異なり、GNU CC は `\|\c .B \-g\c \&\|' を `\|\c .B \-O\c \&\|' とともに使用することを許しています。最適化されたコードが通る近道は、 時には驚くべき結果を生み出すかもしれません。 定義したはずの変数が存在しなかったり、 制御の流れが予想もしなかった場所に移動したり、結果が定数とわかる計算や、 結果がすでに手元にある文は実行されなくなり、ある文がループの外に追い出されて 別の場所で実行されたりします。 .Sp それにも関わらず、このオプションは最適化された出力のデバッグを可能とし ています。これによって、バグを含むかもしれないプログラムに対して オプティマイザを使用することができるようになります。 .PP 以下のオプションは、GNU CC を 1 つ以上のデバッグフォーマットを扱 えるように作成してある場合に有益です。 .TP .B \-ggdb (もしサポートされていれば)ネイティブのフォーマットでデバッグ情報を生成 します。これは可能な限りの全ての GDB 拡張を含みます。 .TP .B \-gstabs (もしサポートされていれば) stabs フォーマットでデバッグ情報を生成します。 ただし GDB 拡張は含みません。このフォーマットはほとんどの BSD システム上 の DBX で利用できるフォーマットです。 .TP .B \-gstabs+ (もしサポートされていれば) stabs フォーマットでデバッグ情報を生成します。 ただし GNU デバッガ (GDB) でしか理解できない GNU 拡張を使用します。 この拡張を使用すると、他のデバッガでは、クラッシュや プログラムが読めなくなるなどの影響がおそらく出ます。 .TP .B \-gcoff (サポートされていれば) COFF フォーマットでデバッグ情報を生成します。 これは、System V Release 4 より前の ほとんどの System V 上の SDB で利用できるフォーマットです。 .TP .B \-gxcoff (サポートされていれば) XCOFF フォーマットでデバッグ情報を生成します。こ れは IBM RS/6000 システムにおいて DBX デバッガによって使用される フォーマットです。 .TP .B \-gxcoff+ (もしサポートされていれば) XCOFF フォーマットでデバッグ情報の生成を行 います。ただし、GNU デバッガ (GDB) によってのみ理解され得る GNU 拡張を使 用します。これらの拡張を使用すると、他のデバッガに対してはクラッシュやプ ログラムを読みとり不能にするなどの影響を及ぼし得ます。 .TP .B \-gdwarf (もしサポートされていれば) DWARF フォーマットでデバッグ情報の生成を行 います。これはほとんどの System V Release 4 システムにおいて SDB によっ て使用される形式です。 .TP .B \-gdwarf+ (もしサポートされていれば) DAWRF フォーマットでデバッグ情報の生成を行 います。ただし、GNU デバッガ (GDB) によってのみ理解され得る GNU 拡張を使 用します。これらの拡張を使用すると、他のデバッガに対してはクラッシュや プログラムを読みとり不能にするなどの影響を及ぼし得ます。 .PP .BI "\-g" "level" .br .BI "\-ggdb" "level" .br .BI "\-gstabs" "level" .br .BI "\-gcoff" "level" .BI "\-gxcoff" "level" .TP .BI "\-gdwarf" "level" デバッグ情報を要求しますが、同時に \c .I level\c \& によってどの程度の情報が必要かを指定します。デフォルトのレベルは 2 です。 .Sp レベル 1 は、デバッグを予定しないプログラムの部分に対してバックトレース を生成するに十分な最低限の情報を生成します。これは関数と外部変数の記述 を含みますが、ローカル変数や行番号に関する情報は含みません。 .Sp レベル 3 はプログラムに含まれる全てのマクロ定義などの特別な情報を含みます。 いくつかのデバッガは `\|\c .B \-g3\c \&\|' の使用によってマクロの展開をサポートします。 .TP .B \-p プログラム \c .B prof\c \& によって使用されるプロファイル情報を書き込む特別なコードを生成します。 .TP .B \-pg プログラム \c .B gprof\c \& によって使用されるプロファイル情報を書き込む特別なコードを生成します。 .TP .B \-a 基本ブロックのプロファイル情報を書き込む特別なコードを生成します。これは それぞれのブロックが何回実行されたかを記録します。このデータは \c .B tcov\c \& のようなプログラムによって解析されます。ただし、このデータフォーマットは \c .B tcov\c \& が期待するものとは異なっています。最終的には、GNU \c .B gprof\c \& が処理できるように拡張されるべきです。 .TP .BI "\-d" "letters" コンパイル中の .I letters\c \& で指定されるタイミングに、デバッグ用のダンプを生成するように指示します。 これはコンパイラをデバッグするために使用されます。ほとんどのダンプのファイル 名はソースファイル名に 1 単語をつなげたものになります。(例えば、`\|\c .B foo.c.rtl\c \&\|' や `\|\c .B foo.c.jump\c \&\|' などです)。 .TP .B \-dM 全てのマクロ定義をダンプし、プリプロセス終了時に出力に書き出します。 その他には何も書き出しません。 .TP .B \-dN 全てのマクロ名をダンプし、プリプロセス終了時に出力に書き出します。 .TP .B \-dD 全てのマクロ定義をプリプロセス終了時に通常の出力に加えてダンプします。 .TP .B \-dy パース中にデバッグ情報を標準エラー出力にダンプします。 .TP .B \-dr RTL 生成後に `\|\c .I file\c .B \&.rtl\c \&\|' に対してダンプします。 .TP .B \-dx 関数をコンパイルするかわりに、RTL を生成するのみの処理を行います。通常は `\|\c .B r\c \&\|' とともに使用されます。 .TP .B \-dj 最初のジャンプ最適化の後に、`\|\c .I file\c .B \&.jump\c \&\|' に対してダンプします。 .TP .B \-ds 共通部分式削除 (しばしば共通部分式削除に続くジャンプ最適化も含みます) の終了 時に `\|\c .I file\c .B \&.cse\c \&\|' に対してダンプします。 .TP .B \-dL ループ最適化終了時に `\|\c .I file\c .B \&.loop\c \&\|' に対してダンプします。 .TP .B \-dt 第 2 共通部分式削除段階 (しばしば共通部分式削除に続くジャンプ最適化も 含みます) の終了時に、`\|\c .I file\c .B \&.cse2\c \&\|' に対してダンプします。 .TP .B \-df フロー解析終了後に、`\|\c .I file\c .B \&.flow\c \&\|' に対してダンプします。 .TP .B \-dc 命令コンビネーション終了時に `\|\c .I file\c .B \&.combine\c \&\|' に対してダンプします。 .TP .B \-dS 第 1 命令スケジューリング段階終了時に `\|\c .I file\c .B \&.sched\c \&\|' に対してダンプします。 .TP .B \-dl ローカルレジスタ割り当て終了時に `\|\c .I file\c .B \&.lreg\c \&\|' に対してダンプします。 .TP .B \-dg グローバルレジスタ割り当て終了時に `\|\c .I file\c .B \&.greg\c \&\|' に対してダンプします。 .TP .B \-dR 第 2 命令スケジューリング段階終了時に `\|\c .I file\c .B \&.sched2\c \&\|' に対してダンプします。 .TP .B \-dJ 最終ジャンプ最適化終了時に `\|\c .I file\c .B \&.jump2\c \&\|' に対してダンプします。 .TP .B \-dd 遅延分岐スケジューリング終了時に `\|\c .I file\c .B \&.dbr\c \&\|' に対してダンプします。 .TP .B \-dk レジスタからスタックへの転換終了時に `\|\c .I file\c .B \&.stack\c \&\|' に対してダンプします。 .TP .B \-da 以上の全てのダンプを生成します。 .TP .B \-dm 処理の終了時に、メモリ使用に関する統計情報を標準エラー出力に出力します。 .TP .B \-dp どのようなパターンや選択肢が使用されたかを示すコメントをアセンブラ出力 中のコメントで解説します。 .TP .B \-fpretend\-float クロスコンパイラで処理を行なう際に、ホストマシンと同じ浮動小数点フォーマット をターゲットマシンが持つかのように振舞わせます。これは浮動小数点定 数の誤った出力を引き起こしますが、実際の命令列はおそらく GNU CC を ターゲットマシンで起動した場合と同じものとなるでしょう。 .TP .B \-save\-temps 通常の \*(lq一時\*(rq 中間ファイルを消去せずに保存します。これらは カレントディレクトリに置かれ、ソースファイルに基づいた名前が付けられます。 従って、`\|\c .B foo.c\c \&\|' を `\|\c .B \-c \-save\-temps\c \&\|' を使用してコンパイルした場合は、 `\|\c .B foo.cpp\c \&\|', `\|\c .B foo.s\c \&\|' が、`\|\c .B foo.o\c \&\|' と同様に生成されます。 .TP .BI "\-print\-libgcc\-file\-name=" "library" ライブラリファイル `\|\c .nh .I library .hy \&\|' の完全な絶対名を表示します。このファイルはリンクの際のみに使用され、 それ以外の働きはありません。このオプションが指定された場合は、GNU CC は コンパイルやリンクを何も行なわず、ただファイル名を表示するのみです。 .TP .B \-print\-libgcc\-file\-name `\|\c .B \-print\-file\-name=libgcc.a\c \&\|' と同じです。 .TP .BI "\-print\-prog\-name=" "program" `\|\c .B \-print\-file\-name\c \&\|' と似ていますが、`\|\c cpp\c \&\|' のような program を検索します。 .SH 最適化オプション これらのオプションは様々な種類の最適化処理を制御します。 .TP .B \-O .TP .B \-O1 最適化を行います。最適化コンパイルは幾分長めの処理時間と、大きな関数に対 する非常に多くのメモリを必要とします。 .Sp `\|\c .B \-O\c \&\|' が指定されなかった場合は、コンパイラの目標はコンパイルのコストを 低減することや、目的の結果を得るためのデバッグを可能とすることに置かれ ます。それぞれの文は独立しています。つまり、ブレークポイントでプログラムを 停止させることによって、任意の変数に新し い値を代入したり、プログラムカウンタを他の文へと変更することを可能とし、 そのソースコードにプログラマが望む正しい結果を得ることを可能にします。 .Sp `\|\c .B \-O\c \&\|' を指定しなかった場合は、\c .B register\c \& と宣言した変数のみがレジスタへと割り当てられます。コンパイルの結果と して得られるコードは、PCC を `\|\c .B \-O\c \&\|' なしで使用した場合と比較して若干良くないものとなります。 .Sp `\|\c .B \-O\c \&\|' が指定されると、コンパイラはコードのサイズと実行時間を減少させる ことを試みます。 .Sp `\|\c .B \-O\c \&\|' を指定することによって、 `\|\c .B \-fthread\-jumps\c \&\|' と `\|\c .B \-fdefer\-pop\c \&\|' のフラグが指定されます。遅延スロットをもつマシンでは `\|\c .B \-fdelayed\-branch\c \&\|' が指定されます。フレームポインタを使わないデバッグをサポートしている マシンでは、`\|\c .B \-fomit\-frame\-pointer\c \&\|' も指定されます。マシンによってはさらにその他のフラグが 指定されることもあります。 .TP .B \-O2 さらに最適化を行います。サポートされている最適化手段のうち、 空間と速度のトレードオフを含まないものはほとんどの全て使用されます。 例えばループのアンローリングや関数のインライン化は行われません。 .B \-O\c \& と比較して、このオプションはコンパイル時間と生成コードの性能の双方を増加 させます。 .TP .B \-O3 さらなる最適化を行います。これは .B \-O2 が行う全ての最適化手段に加えて .B \-finline\-functions も有効にします。 .TP .B \-O0 最適化を行いません。 .Sp 複数の .B \-O オプションを指定した場合は、レベル番号の有無に関わらず、最後に指定した ものが有効になります。 .PP `\|\c .B \-f\c .I flag\c \&\c \&\|' の形式を持ったオプションは、マシン独立のフラグです。ほとんどの フラグは有効形式と無効形式の双方を持っています。`\|\c .B \-ffoo\c \&\|' の無効形式は `\|\c .B \-fno\-foo\c \&\|' です。以下のリストでは、デフォルトではない方の形式のみを示します。 これに対して `\|\c .B no\-\c \&\|' を削除する、あるいは追加することによって双方の形式を生成すること が可能です。 .TP .B \-ffloat\-store 浮動小数点変数をレジスタに格納しません。このオプションは 68000 のように (68881 の) 浮動小数点レジスタが \c .B double\c \& よりも高い精度を持っていると思われるマシンにおいて、望まない超過精度を 抑制することを可能にします。 .Sp ほとんどのプログラムにおいては、超過精度は単に良い結果を生むだけですが、 いくつかのプログラムは正確な IEEE の浮動小数点フォーマット定義に依 存しています。 このようなプログラムに対して `\|\c .B \-ffloat\-store\c \&\|' を使用します。 .TP .B \-fmemoize\-lookups .TP .B \-fsave\-memoized コンパイルを高速に行なうために、ヒューリスティックスを使用します (C++ のみ)。これらのヒューリスティックスはデフォルトでは有効になってい ません。なぜなら、これはある種の入力ファイルにしか効果がなく、その他の ファイルではかえってコンパイルが低速になるからです。 .Sp 最初に、コンパイラはメンバ関数への呼び出し (あるいはデータメンバへの参 照) を構築します。これは (1) どのクラスでその名前のメンバ関数が実装さ れているかを決定し、(2) どのメンバ関数への呼び出しであるかという問題 (これはどの種類の型変換が必要となるかという決定も含みます) を解決し、(3) 呼び出し側に対するその関数の可視性を検査するという作業を行なう必要があります。 これらは全て、コンパイルをより低速にしてしまいます。通常は、そのメンバ 関数への 2 度目の呼び出しが起こった場合も、この長い処理がまた行なわれ ることになります。これは次のようなコード .Sp \& cout << "This " << p << " has " << n << " legs.\en"; .Sp は、これらの 3 つの手順を 6 回繰り返すということを意味します。これに対し て、ソフトウェアキャッシュを使用すると、そのキャッシュへの\*(lqヒット \*(rqは、コストを劇的に低減することが期待できます。不幸なことに、キャッシュ の導入によって異なったレイヤの機構を実装することが必要となり、それ 自身のオーバヘッドが生じてしまいます。`\|\c .B \-fmemoize\-lookups\c \&\|' はこのソフトウェアキャッシュを有効にします。 .Sp -メンバとメンバ関数へのアクセス特権 (可視性) はある関数におけるコンテクスト +メンバとメンバ関数へのアクセス特権 (可視性) はある関数におけるコンテキスト と別の関数におけるものとでは異なるので、 .B g++ はキャッシュをフラッシュしなければなりません。`\|\c .B \-fmemoize\-lookups\c \&\|' フラグを使用すると、全ての関数をコンパイルするたびに毎回キャッシュを フラッシュします。`\|\c .B \-fsave\-memoized\c \&\|' フラグは同一のソフトウェアキャッシュについて、コンパイラが前回 コンパイルした関数のコンテキストが、次にコンパイルするコンテキストと同 一のアクセス特権を有しているとみなせる時には、キャッシュを保持します。 これは同一クラス中に多くのメンバ関数を定義している時に特に有効です。 他のクラスのフレンドになっているメンバ関数を除き、同一のクラスに属して いる全てのメンバ関数のアクセス特権は、全て同一です。このような場合は キャッシュをフラッシュする必要はありません。 .TP .B \-fno\-default\-inline クラススコープ中に定義されたメンバ関数をデフォルトでインライン関数とす る処理を行ないません (C++ のみ)。 .TP .B \-fno\-defer\-pop それぞれの関数呼び出しに対して、関数のリターン直後に常に引数をポップします。 関数呼出後に引数をポップしなければならないマシンにおいては、 コンパイラは通常、いくつかの関数の引数をスタックに積んで、 それらを同時にポップします。 .TP .B \-fforce\-mem メモリオペランドに対して、それらに対する演算が行なわれる前に、 レジスタにコピーします。これは全てのメモリ参照を、潜在的な共通部分式であると 定めることによって、より良いコードを生成します。もしそれが共通部分式でな かった場合は、命令コンビネーションによってレジスタへの読み込みは削 除されます。私はこれがどのような違いを生み出すかということに興味があります。 .TP .B \-fforce\-addr メモリアドレス定数について、それらに対する演算が行なわれる前にレジスタ にコピーします。これは `\|\c .B \-fforce\-mem\c \&\|' と同じ手法でより良いコードを生成します。私はこれがどのような違いを 生み出すかということに興味があります。 .TP .B \-fomit\-frame\-pointer フレームポインタをレジスタに格納する必要のない関数において、この処理を 行いません。これはフレームポインタの保存、設定、復帰にかかる命令を省略 し、さらに、多くの関数でレジスタ変数として使用できる余分なレジスタを 得ることを可能にします。\c .I ただし、このオプションはほとんどのマシンにおいてデバッグを不可能にします。 .Sp Vax などのいくつかのマシンでは、このフラグは効果を持ちません。なぜならこ れらのマシンでは標準の呼び出し手順が自動的にフレームポインタの設定を 行なってしまい、これが存在しないとしたところで何も節約ができないからです。 マシン記述マクロ \c .B FRAME_POINTER_REQUIRED\c \& が、ターゲットマシンがこのフラグをサポートするかどうかを制御しています。 .TP .B \-finline\-functions 全ての単純な関数を呼び出し側に組み込んでしまいます。コンパイラは ヒューリスティックスを用いて、 どの関数がこの方法で組み込むに足りるほど単純かを決定します。 .Sp もし、ある関数に対する全ての呼び出しを組み込むことができ、かつその関数が \c .B static\c \& と宣言されていた場合は、GCC はその関数を独立したアセンブラコードと しては出力をしません。 .TP .B \-fcaller\-saves 関数呼び出しにおいて破壊されるであろう値を、レジスタに保持することを可 能とします。これはこのような呼び出しの周囲にレジスタに対する保存、復帰の 特別なコードを出力することによって実現されます。このような割り当ては、そ れが通常よりも良いコードを出力するとみなされる場合にのみ行われます。 .Sp このオプションは特定のマシンではデフォルトで有効となっています。これらは 通常、このオプションの処理の代わりに使うことができる呼び出し時保存 レジスタが存在しないマシンです。 .TP .B \-fkeep\-inline\-functions ある関数への呼び出しが全て呼び出し側に組み込むことができて、かつその関数が \c .B static\c \& と宣言されていたとしても、実行時に呼び出し可能な関数も生成します。 .TP .B \-fno\-function\-cse 関数のアドレスをレジスタに置きません。つまり、定まった関数を呼び出すコードは、 それぞれ明示的な関数のアドレスを含むコードとなります。 .Sp このオプションは効率の低いコードを生成しますが、アセンブラ出力を書き換え るようなハックを行なう場合には、このオプションを使用しなければ 混乱させられることでしょう。 .TP .B \-fno\-peephole マシン固有のピープホール最適化を禁止します。 .TP .B \-ffast-math このオプションは生成コードのスピードのために、GCC に対して、いくつかの ANSI または IEEE の規則/規格を侵させます。例えば、このオプションは \c .B sqrt\c \& 関数の引数は非負の数であることを仮定します。 .Sp このオプションはどの `\|\c .B \-O\c \&\|' オプションによっても有効とされません。なぜなら、このオプションは数 学関数に関する IEEE または ANSI の規則/規格の厳密な実装に依存して書かれた プログラムに対して誤った出力を与えるからです。 .PP 以下のオプションは特殊な最適化に関する制御を行います。`\|\c .B \-O2\c \&\|' オプションは`\|\c .B \-funroll\-loops\c \&\|' と `\|\c .B \-funroll\-all\-loops\c \&\|' を除くこれらの全てのオプションを有効にします。 .PP `\|\c .B \-O\c \&\|' オプションは通常 `\|\c .B \-fthread\-jumps\c \&\|' と `\|\c .B \-fdelayed\-branch\c \&\|' を有効とします。ただし、特殊なマシンではデフォルトの最適化に対して 変更が加えられているかもしれません。 .PP 最適化に関する \*(lqきめ細かいチューニング\*(rq が必要な場合に、以下の フラグを使用することが可能です。 .TP .B \-fstrength\-reduce ループのストレングスリダクションと繰り返し変数の除去を行います。 .TP .B \-fthread\-jumps 分岐ジャンプによってある場所にジャンプした時に、最初の分岐に包括される 比較が存在した時に、最初の分岐のジャンプ先を後者の分岐先に変更します。 この変更先は、2 番目の分岐条件の真偽によって、2 番目の分岐のジャンプ先か、 あるいは2 番目の分岐の直後に定められます。 .TP .B \-funroll\-loops ループ展開の最適化を行います。これはループの繰り返し数がコンパイル時、 あるいはランタイムに決定できる時においてのみ、実行されます。 .TP .B \-funroll\-all\-loops ループ展開の最適化を行います。これは全てのループに対して行われます。この オプションは大抵、より遅く動作するプログラムを生成します。 .TP .B \-fcse\-follow\-jumps 共通部分式削除の処理において、ジャンプ命令の行先が 他の経路から到達できない場合は、そのジャンプ命令を越えてスキャンを行 ないます。例えば、共通部分式削除処理中に \c .B else \c \& 節を伴った .B if \c \& 文に出会った場合、条件が偽ならば分岐先に対しても共通部分式削除を続けます。 .TP .B \-fcse\-skip\-blocks これは `\|\c .B \-fcse\-follow\-jumps\c \&\|' に似ていますが、ブロックを跨ぐジャンプに対しても共通部分式削除を継 続します。共通部分式削除処理中に、else 節を持たない単純な \c .B if\c \& 文にであった時、 `\|\c .B \-fcse\-skip\-blocks\c \&\|' は \c .B if\c \& のボディを跨いだジャンプに対する共通部分式削除処理を継続します。 .TP .B \-frerun\-cse\-after\-loop ループ最適化が行なわれた後に、再度共通部分式削除の処理を行います。 .TP .B \-felide\-constructors コンストラクタへの呼び出しが省略できるように思われる場合に、その呼び出 しを省略します (C++ のみ)。このフラグを指 定した場合は、GNU C++ は以下のコードに対して、一時オブジェクトを経由せずに \c .B y\c \& を \c .B foo への呼び出しの結果から直接初期化します。 .Sp A foo (); A y = foo (); .Sp このオプションを使用しない場合は、GNU C++ は最初に \c .B y\c \& を\c .B A\c \& 型の適切なコンストラクタを呼び出すことによって初期化します。そして、 .B foo\c \& の結果を一時オブジェクトに格納し、最終的には `\|\c .B y\c \&\|' の値を一時オブジェクトの値に入れ換えます。 .Sp デフォルトの振舞い (`\|\c .B \-fno\-elide\-constructors\c \&\|') が、ANSI C++ 標準のドラフトには規定されています。コンストラクタ が副作用を含むプログラムに対して、`\|\c .B \-felide-constructors\c \&\|' を指定すると、そのプログラムは異なった動作をする可能性があります。な ぜなら、いくつかのコンストラクタの呼び出しが省略されるからです。 .TP .B \-fexpensive\-optimizations 比較的コストの高いいくつかの些細な最適化を行います。 .TP .B \-fdelayed\-branch ターゲットマシンにおいてこのフラグがサポートされている場合は、遅延分岐 命令後の命令スロットを命令の順番変更によって利用するように設定します。 .TP .B \-fschedule\-insns ターゲットマシンにおいてこのフラグがサポートされている場合は、必要な データを利用可能になるまで待つことによる実行の遅滞を防ぐために、命令 の順番の変更を行います。これは遅い浮動小数点命令やメモリ読み込み命令の実 行において、それらの結果を必要とする命令の前に他の命令を詰め込みます。 .TP .B \-fschedule\-insns2 `\|\c .B \-fschedule\-insns\c \&\|' と似ていますが、レジスタ割当て処理の後にもう一度命令スケジューリングの 段階を置きます。これは、比較的レジスタ数が少なく、メモリロード命令 が 1 サイクルよりも多くを要するマシンにおいて、特に効果的です。 .SH ターゲットオプション デフォルトでは、GNU CC コンパイラは、現在使用しているマシンと同じタイプの コードをコンパイルします。しかし、GNU CC はクロスコンパイラ としてもインストールすることが可能です。実際には、異なったターゲット マシンのための様々なコンフィギュレーションの GNU CC は、同時にいくつ もインストールすることが可能です。そこで、どの GNU CC を使用するかを 指定するために、`\|\c .B \-b\c \&\|' オプションを使用することができます。 .PP これに加えて、古い、あるいはより新しいバージョンの GNU CC も同時にいく つもインストールしていくことができます。これらのうち 1 つ (おそらくもっ とも新しいもの) がデフォルトとなります。しかし、ひょっとしたら別のものを使 いたくなるかもしれません。 .TP .BI "\-b " "machine" 引数 \c .I machine\c \& は、コンパイルのターゲットマシンを規定します。これは GNU CC をクロス コンパイラとしてインストールした時に有用です。 .Sp .I machine\c \& に指定する値は、GNU CC をクロスコンパイラとしてコンフィギュレーション した時に与えたマシンタイプと同じです。例えば、80386 上の System V で実行されるプログラムのために `\|\c .B configure i386v\c \&\|' というコンフィギュレーションを行なったクロスコンパイラを起動した い場合は、`\|\c .B \-b i386v\c \&\|' と指定します。 .Sp `\|\c .B \-b\c \&\|' の設定を省略した場合は、通常は使用しているマシンと同タイプのマシン のためのコンパイルが行われます。 .TP .BI "\-V " "version" 引数 \c .I version\c \& は、起動される GNU CC のバージョンを規定します。これは複数のバージョンが インストールされている場合に有用です。例えば、 .I version\c \& が `\|\c .B 2.0\c \&\|' ならば、GNU CC バージョン 2.0 を起動することを意味します。 .Sp `\|\c .B \-V\c \&\|' を指定しなかった場合のデフォルトのバージョンは、GNU CC をインストール する時に調整可能です。通常は、もっとも一般的な使用に勧めることができる バージョンがここに指定されます。 .SH マシン依存オプション それぞれのターゲットマシンタイプは、それぞれの特別なオプションを持つ ことが可能です。`\|\c .B \-m\c \&\|' で始まるオプション群は、様々なハードウェアモデルや コンフィギュレーション\(em\&例えば 68010 と 68020、 浮動小数点コプロセッサの有無\(em\& などを選択できます。このオプションを指定することによって、コンパイラは どれか 1 つのモデル、 あるいはコンフィギュレーションに対するコンパイルが可能です。 .PP いくつかのコンフィギュレーションは、通常はそのプラットホーム上の 他のコンパイラとのコマンドラインに関するの互換性をとるため の特別なオプションを用意しています。 .PP 以下は 68000 シリーズのために定義された `\|\c .B \-m\c \&\|' オプションです。 .TP .B \-m68000 .TP .B \-mc68000 68000 のためのコードを生成します。これは 68000 ベースのシステムに対して コンフィギュレーションを行なったコンパイラのデフォルトです。 .TP .B \-m68020 .TP .B \-mc68020 (68000 ではなく) 68020 のためのコードを生成します。これは 68020 ベースの システムに対してコンフィギュレーションを行なったコンパイラのデフォルト です。 .TP .B \-m68881 浮動小数点演算のために 68881 命令を含んだ出力を行います。これはほとんどの 68020 ベースのシステムにおいて、コンパイラのコンフィギュレーション時に .B \-nfp を指定されなかった場合のデフォルトです。 .TP .B \-m68030 68030 のためのコードを生成します。これは 68030 ベースのシステムに対して コンフィギュレーションを行なったコンパイラのデフォルトです。 .TP .B \-m68040 68040 のためのコードを生成します。これは 68040 ベースのシステムに対して コンフィギュレーションを行なったコンパイラのデフォルトです。 .TP .B \-m68020\-40 68040 のためのコードを生成しますが、新しい命令を使用しません。この結果とし て得られるコードは、68020/68881, 68030, 68040 のいずれのシステムにおいても、 比較的高い性能を持ちます。 .TP .B \-mfpa 浮動小数点演算のために Sun FPA 命令を含んだ出力を行います。 .TP .B \-msoft\-float 浮動小数点演算のためにライブラリを呼び出す出力を行います。 .I 警告: この必須のライブラリは GNU CC の一部としては含まれません。通常はそのマシン の一般的な C コンパイラの提供するものを使用しますが、これは通常の方法 ではクロスコンパイルで直接使用することはできません。クロスコンパイルを行 ないたい場合は、自分自身で必要なライブラリ関数を用意する必要があります。 .TP .B \-mshort .B int\c \& 型を \c .B short int\c \& 型のように 16 ビット幅とみなします。 .TP .B \-mnobitfield ビットフィールド命令を使用しません。`\|\c .B \-m68000\c \&\|' は暗黙のうちに `\|\c .B \-mnobitfield\c \&\|' を含みます。 .TP .B \-mbitfield ビットフィールド命令を使用します。`\|\c .B \-m68020\c \&\|' は暗黙のうちに `\|\c .B \-mbitfield\c \&\|' を含みます。これは変更されていないソースの場合のデフォルトです。 .TP .B \-mrtd 固定個数の引数をとる関数に対して、異なった関数呼び出し規約を使用します。 これは、リターン時に引数をポップする \c .B rtd 命令を利用するものです。これは呼び出し側で引数をポップさせる必要がな いために、1 命令を省略することが可能となります。 .Sp この呼び出し規約は通常の Unix で使用されている方式とは互換性がありません。そ のため、Unix コンパイラでコンパイルされたライブラリを呼び出す必要があ る限りは、使用することはできません。 .Sp さらに、全ての可変引数をとり得る関数 ( .B printf\c を含みます) に対して、関数プロトタイプを用意する必要があります。さもないと、 これらの関数に対して誤ったコードが生成されます。 .Sp さらに、関数に対して多過ぎる引数をつけて呼び出すコードを書いた場合、こ れは深刻な誤ったコードを生成します。(通常は多過ぎる変数は害を及ぼすこと なく無視されます。) .Sp .B rtd\c \& 命令は 68010 と 68020 によってサポートされますが、 68000 では使用でき ません。 .PP 以下は Vax のために定義された `\|\c .B \-m\c \&\|' オプションです。 .TP .B \-munix 特定のいくつかのジャンプ命令 (\c .B aobleq\c \& 等) を出力しません。これらの命令で長いレンジを使用した場合、 Vax 用の Unix アセンブラはこれを処理できません。 .TP .B \-mgnu これらのジャンプ命令を出力します。アセンブルには GNU アセンブラの使用 を仮定します。 .TP .B \-mg 浮動小数点数について、d-フォーマットではなく、g-フォーマットのための コードを出力します。 .PP 以下は SPARC でサポートされている `\|\c .B \-m\c \&\|' スイッチです。 .PP .B \-mfpu .TP .B \-mhard\-float 浮動小数点命令を含む出力を行います。これはデフォルトです。 .PP .B \-mno\-fpu .TP .B \-msoft\-float 浮動小数点の処理のためにライブラリを呼び出す出力を行います。 .I 警告: SPARC 用の GNU 浮動小数点ライブラリは存在しません。 通常はそのマシンの一般的な C コンパイラの提供するものを使用しますが、 これは通常の方法ではクロスコンパイルで直接使用することはできません。 クロスコンパイルを行ないたい場合は、 自分自身で必要なライブラリ関数を用意する必要があります。 .Sp .B \-msoft\-float は呼び出し規約を変更します。したがって、 .I 全て のプログラムをこのオプションでコンパイルしない限り、 このオプションは意味をなしません。 .PP .B \-mno\-epilogue .TP .B \-mepilogue .B \-mepilogue を指定することによって (デフォルト)、コンパイラは関数を抜けるため のコードを常に関数の最後に出力します。関数の途中で関数を抜けるコードは全て、 関数の最後の終了コードへのジャンプとして生成されます。 .Sp .BR \-mno\-epilogue を設定することによって、コンパイラは関数から抜けるコードをインライン化 することを試みます。 .PP .B \-mno\-v8 .TP .B \-mv8 .TP .B \-msparclite これらの 3 つのオプションは SPARC アーキテクチャのバリエーションを選択 するために使用されます。 .Sp デフォルトでは、(Fujitsu SPARClite 用にコンフィギュレーションしない限 りは) GCC は SPARC アーキテクチャ v7 用のコードを生成します。 .Sp .B \-mv8 は、SPARC v8 用コードを生成します。v7 コードとの違いは、整数の乗算と整数 の除算が v7 では存在しないが v8 には存在するという点のみです。 .Sp .B \-msparclite は、SPARClite 用のコードを生成します。これは v7 には存在せず SPARClite に存在する、整数乗算、整数除算とスキャン (ffs) 命令を追加します。 .PP .B \-mcypress .TP .B \-msupersparc これら 2 つのオプションはコード最適化対象のプロセッサを選択するための ものです。 .Sp .B \-mcypress を用いると(これがデフォルト)、 コンパイラは Cypress CY7C602 チップ用にコードを最適化します。 このチップは SparcStation/SparcServer 3xx シリーズに用いられています。 このオプションは古い SparcStation 1, 2, IPX などにも適用できます。 .Sp .B \-msupersparc を用いると、コンパイラは SuperSparc CPU 用にコードを最適化します。 このチップは SparcStation 10, 1000, 2000 シリーズに用いられています。 このオプションを用いると、SPARC v8 の全命令セットを用いるようになります。 .PP 以下は Convex のために定義された `\|\c .B \-m\c \&\|' オプションです。 .TP .B \-mc1 C1 用の出力を行います。これはコンパイラが C1 用にコンフィギュレーション を行なわれた時のデフォルトです。 .TP .B \-mc2 C2 用の出力を行います。これはコンパイラが C2 用にコンフィギュレーション を行なわれた時のデフォルトです。 .TP .B \-margcount 引数列の前に、引数の数をワードに置くコードを生成します。いくつかの可搬性 のない Convex や Vax のプログラムはこのワードを必要とします。(デバッガは 不定長引数リストを持つ関数を除いて、このワードを必要としません。これらの 情報はシンボルテーブルに書かれます。) .TP .B \-mnoargcount 引数の数を示すワードを省略します。これは変更されていないソースを使用した 場合のデフォルトです。 .PP 以下は、AMD Am29000 のために定義された `\|\c .B \-m\c \&\|' オプションです。 .TP .B \-mdw DW ビットが立っていることを仮定したコードを出力します。これは、ハードウェア によってバイト操作やハーフワード操作がサポートされているということを 意味します。これはデフォルトです。 .TP .B \-mnodw DW ビットが立っていないことを仮定したコードを出力します。 .TP .B \-mbw システムがバイト操作やハーフワード書き込み操作をサポートしていることを仮定した コードを生成します。これはデフォルトです。 .TP .B \-mnbw システムがバイト操作やハーフワード書き込み操作をサポートしていないことを仮定し たコードを生成します。これは暗黙のうちに `\|\c .B \-mnodw\c \&\|' を含みます。 .TP .B \-msmall スモールメモリモデルを使用します。これは全ての関数のアドレスが単一の 256KB のセグメント内に入ることと、関数の絶対アドレスが 256K 以下にある ことを仮定します。このオプションは \c .B call\c \& 命令を \c .B const\c \&, \c .B consth\c \&, \c .B calli\c \& シーケンスの代わりに使用することを可能にします。 .TP .B \-mlarge .B call\c \& 命令が使用できることを仮定しません。これはデフォルトです。 .TP .B \-m29050 Am29050 用のコードを生成します。 .TP .B \-m29000 Am29000 用のコードを生成します。これはデフォルトです。 .TP .B \-mkernel\-registers .B gr96-gr127\c \& レジスタへの参照の代わりに .B gr64-gr95\c \& を参照するコードを生成します。このオプションは、ユーザのコードか ら使用できるグローバルレジスタから区別されたグローバルレジスタの集合 を利用するカーネルのコードをコンパイルする時に使用できます。 .Sp ただし、このオプションが使用されている時にも `\|\c .B \-f\c \&\|' フラグ中のレジスタ名は通常のユーザモードでの名前を使用します。 .TP .B \-muser\-registers 通常のグローバルレジスタの集合 \c .B gr96-gr127\c \& を使用します。これはデフォルトです。 .TP .B \-mstack\-check .B _\|_msp_check\c \& への呼び出しをそれぞれのスタック調整の後に挿入します。これはしばしば カーネルのコードにおいて用いられます。 .PP 以下は、Motorola 88K アーキテクチャのために定義された `\|\c .B \-m\c \&\|' オプションです。 .TP .B \-m88000 m88100 と m88110 の双方で比較的高性能で動作するコードを生成します。 .TP .B \-m88100 m88100 に最適なコードを生成します。ただし m88110 においても動作します。 .TP .B \-m88110 m88110 に最適なコードを生成します。 ただし m88100 においては動作しないかも知れません .TP .B \-midentify\-revision アセンブラ出力中に、ソースファイル名、コンパイラ名とバージョン、 タイムスタンプ、使用されたコンパイルフラグを記した \c .B ident\c \& ディレクティブを挿入します。 .TP .B \-mno\-underscores シンボル名の最初にアンダースコアキャラクタをつけないアセンブラ出力を生 成します。デフォルトでは個々の名前に対して、アンダースコアをプレフィック スとして使用します。 .TP .B \-mno\-check\-zero\-division .TP .B \-mcheck\-zero\-division 初期の 88K のモデルはゼロによる除算の処理に問題を持っていました。特に、そ れらの多くにおいてトラップが生じなかったことは問題でした。これ らのオプションを使用することによって、ゼロ除算を発見し、例外を知らせる コードを埋め込むことを禁止 (あるいは明示的に許可) することができます。全 ての 88K 用の GCC のコンフィギュレーションは `\|\c .B \-mcheck\-zero\-division\c \&\|' をデフォルトとして使用しています。 .TP .B \-mocs\-debug\-info .TP .B \-mno\-ocs\-debug\-info 88Open Object Compatibility Standard \*(lqOCS\*(rq で定義された (それぞれのスタックフレーム中で使用されるレジスタに関する) 付加的なデバッグ 情報を取り込みます (または省略します)。これらの付加的な情報は GDB によっ ては必要とされません。DG/UX, SVr4, Delta 88 SVr3.2 ではデフォルトでこの情 報を含めます。その他の 88K コンフィギュレーションではデフォルトで省略します。 .TP .B \-mocs\-frame\-position .TP .B \-mno\-ocs\-frame\-position OCS で規定されているように、レジスタの値に対して、スタックフレーム中の 特定の場所に保存されるという動作を強制します (あるいは要求しません)。 DG/UX, Delta88 SVr3.2, BCS のコンフィギュレーションでは `\|\c .B \-mocs\-frame\-position\c \&\|' をデフォルトとして、それ以外の 88k コンフィギュレーションでは `\|\c .B \-mno\-ocs\-frame\-position\c \&\|' をデフォルトとして使用しています。 .TP .B \-moptimize\-arg\-area .TP .B \-mno\-optimize\-arg\-area 関数の引数がどのような方法でスタックフレームに格納されるかを指定します。 `\|\c .B \-moptimize\-arg\-area\c \&\|' はスペースを節約しますが、いくつかのデバッガ (GDB は含まれない) を クラッシュさせます。`\|\c .B \-mno\-optimize\-arg\-area\c \&\|' はより標準に従っています。デフォルトでは GCC は引数エリアの最適化 を行いません。 .TP .BI "\-mshort\-data\-" "num" データ参照時に、それらの処理を \c .B r0\c \& からの相対参照で行なうことによって小さなコードにすることを可能とします。 これは値のロードを (その他の場合は 2 命令かかるところを) 1 命令で行な うことを可能にします。\c .I num\c \& をこのオプションとともに指定することによって、どのデータ参照が影響 を受けるかを指定することができます。例えば `\|\c .B \-mshort\-data\-512\c \&\|' を指定すると、512 バイト以内のディスプレースメントのデータ参照が 影響を受けることになります。 `\|\c .B \-mshort\-data\-\c .I num\c \&\c \&\|' は \c .I num\c \& が 64K よりも大きな時は効果を持ちません。 .PP .B \-mserialize-volatile .TP .B \-mno-serialize-volatile volatile なメモリへの参照について、シーケンシャルな整合性を持った コードを生成する、あるいは生成しません。 .Sp GNU CC はデフォルトではどのプロセッササブモデルを選んだ場合においても、 整合性を常に保証します。これがどのように実現されているかは、サブモデルに 依存しています。 .Sp m88100 プロセッサはメモリ参照の順番を入れ換えないので、常にシーケンシャルな 整合性は保たれます。もし `\|\c .B \-m88100\c \&\|' を使用した場合は、GNU CC はシーケンシャルな整合性を保つための特 別な命令を生成しません。 .Sp m88110 プロセッサにおけるメモリ参照の順番は、必ずしもそれらの要求を行 なった命令の順番とは一致しません。特に、読み込み命令は、先行する書き込み 命令よりも先に実行され得ます。このような順番の入れ換えは、マルチプロセッサ時に volatile なメモリの参照におけるシーケンシャルな整合性を崩してしまいます。 `\|\c .B \-m88000\c \&\|' または `\|\c .B \-m88110\c \&\|' を指定した場合には、GNU CC は、必要な場合は特別な命令を生成し、 命令の実行が正しい順番で行なわれることを強制します。 .Sp ここで生成される整合性を保証するための特別な命令はアプリケーションの性 能に対して影響を及ぼします。もしこの保証無しで問題がないということがわかっ ている場合は、`\|\c .B \-mno-serialize-volatile\c \&\|' を使用することができます。 .Sp `\|\c .B \-m88100\c \&\|' オプションを使用しているが、m88110 における実行時にシーケンシャルな 整合性が必要とされる場合は、`\|\c .B \-mserialize-volatile\c \&\|' を使用するべきです。 .PP .B \-msvr4 .TP .B \-msvr3 System V release 4 (SVr4) に関連したコンパイラの拡張を有効 (`\|\c .B \-msvr4\c \&\|') あるいは無効 (`\|\c .B \-msvr3\c \&\|') にします。これは以下の内容を制御します。 .TP \ \ \ \(bu 生成するアセンブラの文法の種類 (これは `\|\c .B \-mversion\-03.00\c \&\|' を使用することによって独立に制御できます)。 .TP \ \ \ \(bu `\|\c .B \-msvr4\c \&\|' は C プリプロセッサに対して `\|\c .B #pragma weak\c \&\|' を理解させます。 .TP \ \ \ \(bu `\|\c .B \-msvr4\c \&\|' は、GCC に SVr4 によって使用されている付加的な宣言ディレクティブ を生成させます。 .PP `\|\c .B \-msvr3\c \&\|' は、SVr4 を除く全ての m88K コンフィギュレーションにおけるデフォ ルトです。 .TP .B \-mtrap\-large\-shift .TP .B \-mhandle\-large\-shift 31 ビットより大きいビットシフトを検出するコードを埋め込みます。これらの オプションを指定することによって、それぞれトラップ、あるいは適切に処理す るコードが埋め込まれます。デフォルトでは GCC は大きなビットシフトには 特別な対策を行いません。 .TP .B \-muse\-div\-instruction 非常に初期の 88K アーキテクチャのモデルは除算命令を持っていません。従っ て、GCC はデフォルトでは除算命令を生成しません。このオプションは除算命令 が安全に使用できるということを指定します。 .TP .B \-mversion\-03.00 DG/UX コンフィギュレーションには、2 つの SVr4 の種類があります。このオプション は .B \-msvr4 オプションによって hybrid-COFF と real-ELF のどちらが使用されるかを選択します。 他のコンフィギュレーションはこのオプションを無視します。 .TP .B \-mwarn\-passed\-structs 関数に対して構造体を渡した場合と、関数が構造体を返した場合に警告します。 構造体を渡す規約は C 言語の発展の中で変化しており、移植性の問題をしば しば生じることになります。デフォルトでは GCC はこの警告を行いません。 .PP 以下のオプションは IBM RS6000 のために定義されたものです。 .PP .B \-mfp\-in\-toc .TP .B \-mno\-fp\-in\-toc 浮動小数点定数を Table of Contents (TOC) に入れるかどうかを指定します。 このテーブルは全てのグローバル変数と関数のアドレスを格納します。デフォルト -では GCC は浮動小数点定数をここに格納します。もし TOC がオーバフロー -する場合は、`\|\c +では GCC は浮動小数点定数をここに格納します。もし TOC が算術あふれをおこす +場合は、`\|\c .B \-mno\-fp\-in\-toc\c \&\|' を使用することによって TOC のサイズを小さくすることが可能であり、 -オーバーフローを防ぐことができるでしょう。 +算術あふれを防ぐことができるでしょう。 .PP 以下は IBM RT PC 用に定義された `\|\c .B \-m\c \&\|' オプションです。 .TP .B \-min\-line\-mul 整数の乗算に対してインラインのコード列を生成します。これはデフォルトです。 .TP .B \-mcall\-lib\-mul 整数の乗算に対して \c .B lmul$$\c \& を呼び出します。 .TP .B \-mfull\-fp\-blocks フルサイズの浮動小数点データブロックを生成します。これは IBM によって推 奨されている最低限のスクラッチスペースの量を包含します。これはデフォルトです。 .TP .B \-mminimum\-fp\-blocks 浮動小数点データブロック内に特別なスクラッチスペースを含めません。これに よって、より小さなコードが生成されますが、実行は遅くなります。 なぜならスクラッチスペースが動的に確保されるからです。 .TP .B \-mfp\-arg\-in\-fpregs IBM の関数呼び出し規約とは互換性のない呼び出し手順を使用します。 この規約では浮動小数点引数を浮動小数点レジスタに入れて渡します。 このオプションを指定すると、\c .B varargs.h\c \& や \c .B stdarg.h\c \& で浮動小数点オペランドが使用できなくなることに注意して下さい。 .TP .B \-mfp\-arg\-in\-gregs 浮動小数点に対して通常の関数呼び出し規約を使用します。これはデフォルトです。 .TP .B \-mhc\-struct\-return 1 ワードより大きな構造体を返す時に、レジスタではなくメモリを使用して返します。 これは MetaWare HighC (hc) コンパイラとの互換性を提供します。`\|\c .B \-fpcc\-struct\-return\c \&\|' を使用することによって Portable C Compiler (pcc) との互換性を得 ることができます。 .TP .B \-mnohc\-struct\-return 1 ワードより大きな構造体を返す時に、レジスタによって返される場合があります。 これはその方が便利であると考えられる時に使用されます。これはデフォルトです。 IBM が提供するコンパイラとの互換性を得るためには、`\|\c .B \-fpcc\-struct\-return\c \&\|' と `\|\c .B \-mhc\-struct\-return\c \&\|' の双方を使用します。 .PP 以下は MIPS ファミリのために定義された `\|\c .B \-m\c \&\|' オプションです。 .TP .BI "\-mcpu=" "cpu-type" 命令スケジューリング時に、デフォルトのマシンタイプを .I cpu-type に仮定します。デフォルトの .I cpu-type は .BR default です。この選択はすべてのマシンに対する最長のサイクル数を元にコードを 生成します。これは、生成されるコードがどの MIPS cpu においても適当な速度 で処理されるようにするためです。これ以外の .I cpu-type の選択としては、 .BR r2000 , .BR r3000 , .BR r4000 , .BR r6000 があります。特定の .I cpu-type を選択した場合は、その特定のチップに適したスケジュールが行われます。 コンパイラは、 .B \-mips2 または .B \-mips3 スイッチが使用されていない場合は、MIPS ISA (instruction set architecture) のレベル 1 に合致しないコードを生成することはありません。 .TP .B \-mips2 MIPS ISA のレベル 2 (branch likely 命令, 平方根命令) による命令群 を出力します。 .B \-mcpu=r4000 と .B \-mcpu=r6000 スイッチは、 .BR \-mips2 と共に使用される必要があります。 .TP .B \-mips3 MIPS ISA のレベル 3 (64 ビット命令) を含む命令群を出力します。 .B \-mcpu=r4000 スイッチは、 .BR \-mips2 と同時に使用する必要があります。 .TP .B \-mint64 .TP .B \-mlong64 .TP .B \-mlonglong128 これらのオプションは現在動作しません。 .TP .B \-mmips\-as MIPS アセンブラのためのコードを生成し、 .B mips\-tfile を起動して通常のデバッグ情報を追加します。 これは OSF/1 リファレンスプラットフォーム 以外の全てのプラットフォームにおけるデフォルトです。 OSF/1 リファレンスプラットフォームは OSF/rose オブジェクトフォーマットを 使用します。スイッチ .BR \-ggdb , .BR \-gstabs , .B \-gstabs+ のうちのどれかが使用されている場合は、 .B mips\-tfile プログラムは、stabs を MIPS ECOFF 中にカプセル化します。 .TP .B \-mgas GNU アセンブラ用のコードを生成します。これは OSF/1 リファレンスプラットフォーム におけるデフォルトです。OSF/1 リファレンスプラットフォームは OSF/rose オブジェクトフォーマットを使用します。 .TP .B \-mrnames .TP .B \-mno\-rnames .B \-mrnames スイッチは出力コードにおいて、レジスタの名前として、ハードウェア名の代 わりに MIPS ソフトウェア名を使用することを指定します。(つまり、 .B a0 を .BR $4 の代わりに使用します)。 GNU アセンブラは .B \-mrnames スイッチをサポートしません。MIPS アセンブラはソースファイルに対して MIPS C プリプロセッサを起動するでしょう。 .B \-mno\-rnames スイッチがデフォルトです。 .TP .B \-mgpopt .TP .B \-mno\-gpopt .B \-mgpopt スイッチは、全てのデータ宣言をテキストセクション中の全命令の前に書き出 すことを指定します。これによって、全ての MIPS アセンブラは、 ショートグローバル、あるいは静的なデータアイテムに対して、2 ワードではなく、1 ワードのメモリ参照命令を生成します。 これは最適化が指定された場合のデフォルトです。 .TP .B \-mstats .TP .B \-mno\-stats .B \-mstats が指定された場合は、コンパイラによってインラインでない関数が処理される ごとに、標準エラー出力ファイルに対して、そのプログラムに対する統計情報 を示す 1 行のメッセージを出力します。このメッセージは、保存したレジスタ の数、スタックのサイズなどを示します。 .TP .B \-mmemcpy .TP .B \-mno\-memcpy .B \-mmemcpy スイッチは、全てのブロック転送に対して、インラインコードを生成する代わ りに、適切なストリング関数 .RB ( memcpy または .BR bcopy ) を呼び出すコードを生成します。 .TP .B \-mmips\-tfile .TP .B \-mno\-mips\-tfile .B \-mno\-mips\-tfile スイッチを指定すると、 MIPS アセンブラがデバッグサポートのために生成したオブジェクトファイルに対し、 .B mips\-tfile を使用した後処理を行いません。 .B mips\-tfile が実行されないと、デバッガからはローカル変数を扱うことができません。 さらに、 .B stage2 と .B stage3 のオブジェクトはアセンブラに渡される一時的なファイル名をオブジェクトファイル 中に埋め込まれて持っており、このためそれらを比較した場合に同一のも のとはみなされません。 .TP .B \-msoft\-float 浮動小数点演算のためにライブラリを呼び出す出力を行います。 .I 警告: この必須のライブラリは GNU CC の一部としては含まれません。通常はそのマシンの 一般的な C コンパイラの提供するものを使用しますが、これは通常の方法 ではクロスコンパイルで直接使用することはできません。クロスコンパイルを行 ないたい場合は、自分自身で必要なライブラリ関数を用意する必要があります。 .TP .B \-mhard\-float 浮動小数点命令を含んだ出力を生成します。これは変更されないソースを使用し た場合のデフォルトです。 .TP .B \-mfp64 ステータスワード中の .B FR ビットが立っていることを仮定します。これは 32 個の 32 ビット浮動小数点 レジスタの代わりに、32 個の 64 ビットの浮動小数点レジスタが存在するとい うことを示します。この場合は、同時に .B \-mcpu=r4000 と .B \-mips3 スイッチを指定する必要があります。 .TP .B \-mfp32 32 個の 32 ビット浮動小数点レジスタが存在するということを仮定します。こ れはデフォルトです。 .PP .B \-mabicalls .TP .B \-mno\-abicalls いくつかの System V.4 の移植が位置独立コードのために使用する疑似命令 .BR \&.abicalls , .BR \&.cpload , .B \&.cprestore を出力する、あるいは出力しません。 .TP .B \-mhalf\-pic .TP .B \-mno\-half\-pic .B \-mhalf\-pic スイッチは、テキストセクション中に参照を配置する代わりに、外部参照を行 なうポインタをデータセクションに配置し、それをロードする動作を指定します。 このオプションは現在まだ動作しません。 .B .BI \-G num は .I num バイト以下のグローバル、あるいは静的なアイテムを、通常のデータや bss セクションではなく、小さなデータ、または bss セクションに配置することを 指定します。 これによりアセンブラは、通常では 2 ワードの参照を行うところを、 グローバルポインタ .RB ( gp または .BR $28 ) を基準とした 1 ワードのメモリ参照命令を生成可能となります。 デフォルトでは MIPS アセンブラが使用される場合、 .I num は 8 です。また、GNU アセンブラが使用される場合のデフォルトは 0 です。 .BI \-G num スイッチはアセンブラ、リンカにも同様に渡されます。全てのモジュールは同一の .BI \-G num の値でコンパイルされなければなりません。 .TP .B \-nocpp MIPS アセンブラに、ユーザアセンブラファイル (`\|\c .B .s\c \&\|' 拡張子を持ちます) に対するアセンブル時のプリプロセッサの起動を抑制さ せます。 .PP 以下は、Intel 80386 ファミリ用に定義された `\|\c .B \-m\c \&\|' オプションです。 .TP .B \-m486 .TP .B \-mno\-486 386 ではなく 486 に最適化されたコードを出力する、あるいはその逆を行な う指定を行います。486 用に生成されたコードは 386 で実行可能であり、逆も また可能です。 .TP .B \-msoft\-float 浮動小数点演算のためにライブラリを呼び出す出力を行います。 .I 警告: この必須のライブラリは GNU CC の一部としては含まれません。通常はそのマシンの 一般的な C コンパイラの提供するものを使用しますが、これは通常の方法 ではクロスコンパイルで直接使用することはできません。クロスコンパイルを行 ないたい場合は、自分自身で必要なライブラリ関数を用意する必要があります。 .Sp 関数が浮動小数点数を返す時に 80387 レジスタスタックを使用するマシンに おいては、`\|\c .B \-msoft-float\c \&\|' を使用した場合でも、いくつかの浮動小数点命令が生成されます。 .TP .B \-mno-fp-ret-in-387 関数からの返り値に FPU のレジスタを使用しません。 .Sp 通常の関数呼び出し規約は、たとえ FPU が存在しなくても .B float\c \& と \c .B double\c \& の結果を FPU レジスタに入れて返します。したがってこの場合、 オペレーティングシステムは FPU をエミュレートしなければなりません。 .Sp `\|\c .B \-mno-fp-ret-in-387\c \&\|' オプションを指定すると、浮動小数点数も通常の CPU レジスタに入れ て返されます。 .TP .B \-mprofiler-epilogue .TP .B \-mno-profiler-epilogue 関数から抜けるコードにてプロファイル情報を書き出す追加コードを生成します。 .PP 以下は HPPA ファミリ用に定義された `\|\c .B \-m\c \&\|' オプションです。 .TP .B \-mpa-risc-1-0 PA 1.0 プロセッサ用のコードを出力します。 .TP .B \-mpa-risc-1-1 PA 1.1 プロセッサ用のコードを出力します。 .TP .B \-mkernel カーネルに適したコードを生成します。特に、引数の 1 つとして DP レジスタを とる .B add\c \& 命令の使用を抑制し、その代わりに、\c .B addil\c \& 命令を生成します。これは HP-UX リンカの深刻なバグを避けるための措置です。 .TP .B \-mshared-libs HP-UX 共有ライブラリとリンクさせるコードを生成します。このオプションはま だ完全に動作しているわけではなく、どの PA ターゲットにおいてもデフォルト になっていません。このオプションを指定すると、コンパイラは誤ったコード を出力し得ます。 .TP .B \-mno-shared-libs 共有ライブラリとリンクしないコードを生成します。これは全ての PA ターゲット においてデフォルトのオプションです。 .TP .B \-mlong-calls 関数の呼び出し先と呼び出し元が同一ファイルに含まれた場合、呼び出し時の 距離が 256K を越える場合でも動作するようなコードを出力します。 このオプションは、リンカから \*(lqbranch out of range errors\*(rq で リンクを拒否された時以外には使用しないようにしてください。 .TP .B \-mdisable-fpregs いかなる形においても、浮動小数点レジスタの使用を禁止します。 これは浮動小数点レジスタに配慮しないコンテキストスイッチを行なう カーネルに対して有効です。 このオプションを使用して、浮動小数点処理を行なおうとすると、 コンパイラはアボートします。 .TP .B \-mdisable-indexing コンパイラに対して、indexing addressing mode を使用しないように指定します。 これによって MACH において MIG によって生成されたコードをコンパイルす る際の、あまり重要でないいくつかの問題を防ぐことができます。 .TP .B \-mtrailing-colon ラベル定義の後にコロンを加えます (ELF アセンブラ用)。 .PP 以下は、Intel 80960 ファミリ用に定義された `\|\c .B \-m\c \&\|' オプションです。 .TP .BI "\-m" "cpu-type" デフォルトのマシンタイプを .I cpu-type -に仮定します。これは生成する命令とアドレッシングモード、そしてアラインメントに +に仮定します。これは生成する命令とアドレッシングモード、そして境界条件に 関係します。 デフォルトの .I cpu-type は .BR kb です。その他の選択としては .BR ka , .BR mc , .BR ca , .BR cf , .BR sa , .BR sb があります。 .TP .B \-mnumerics .TP .B \-msoft\-float .B \-mnumerics オプションはプロセッサが浮動小数点命令をサポートすることを示します。 .B \-msoft\-float オプションは浮動小数点サポートを仮定しないことを示します。 .TP .B \-mleaf\-procedures .TP .B \-mno\-leaf\-procedures 葉に位置する手続きについて、 .IR call 命令と同様に .I bal 命令でも呼び出すことを可能とします (あるいは、しません)。これは .I bal 命令がアセンブラ、またはリンカによって置き換えられ得る場合には、直接呼 び出しに対して効率の良いコードを得ることができます。ただし、それ以外の場 合は効率の良くないコードを生成します。例えば、関数へのポインタ経由の呼び 出しや、この最適化をサポートしないリンカを使用した場合などがこれ に該当します。 .TP .B \-mtail\-call .TP .B \-mno\-tail\-call (マシン非依存の部分を越えて) 末尾再帰を分岐に変換する処理に関するさ らなる最適化を行います(または行いません)。 この手法の適用が正当でないということに関する判断 が完全ではないので、まだこのオプションを使用することは適当でないかも しれません。デフォルトは .BR \-mno\-tail\-call です。 .TP .B \-mcomplex\-addr .TP .B \-mno\-complex\-addr この i960 の実装では複雑なアドレッシングモードの使用が優位であると仮定 します (あるいは仮定しません)。複雑なアドレッシングモードは K-シリーズでは 使用する価値は無いかも知れませんが、 C-シリーズでは確かに使用する価値があります。 現在は .B \-mcomplex\-addr が、CB と CC を除く全てのプロセッサにおけるデフォルトです。 .TP .B \-mcode\-align .TP .B \-mno\-code\-align より高速なフェッチのためにコードを 8 バイトにアラインします (または何も しません)。現在では C シリーズの実装においてのみデフォルトで有効にしています。 .TP .B \-mic\-compat .TP .B \-mic2.0\-compat .TP .B \-mic3.0\-compat iC960 v2.0 または v3.0 との互換性を持たせます。 .TP .B \-masm\-compat .TP .B \-mintel\-asm iC960 アセンブラとの互換性を持たせます。 .TP .B \-mstrict\-align .TP .B \-mno\-strict\-align アラインされないアクセスを許可しません (あるいは許可します)。 .TP .B \-mold\-align Intel による gcc リリースバージョン 1.3 (gcc 1.37 ベース) との構造体の -アラインメントに関する互換性を持たせます。現在は、 +境界条件に関する互換性を持たせます。現在は、 .B #pragma align 1 が同時に仮定されてしまい、無効化できないというバグを持っています。 .PP 以下は、DEC Alpha 用に定義された `\|\c .B \-m\c \&\|' オプションです。 .TP .B \-mno-soft-float .TP .B \-msoft-float 浮動小数点操作に対して、ハードウェアによる浮動小数点命令を使用します (し ません)。もし、\c .B \-msoft-float\c \& が指定された場合は、`\|\c .B libgcc1.c\c \&\|' 内の関数が浮動小数点演算に使用されます。ただし、これらのルーチンが 浮動小数点演算をエミュレートするルーチンによって置き換えられているか、 そのようなエミュレーションルーチンを呼び出すようにコンパイルされている のでない限り、これらのルーチンは浮動小数点演算を行なってしまいます。浮動小 数点演算のない Alpha のためのコンパイルを行なうためには、ライブラリも これらを呼び出さないようにコンパイルされていなければなりません。 .Sp 浮動小数点演算のない Alpha の実装は、浮動小数点レジスタを必要とすると いうことに注意して下さい。 .TP .B \-mfp-reg .TP .B \-mno-fp-regs 浮動小数点レジスタセットを使用する (使用しない)コードを生成します。 .B \-mno-fp-regs\c \& は暗黙のうちに \c .B \-msoft-float\c \& を含みます。浮動小数点レジスタセットが使用されない場合は、浮動小数点 オペランドは整数レジスタに入れられて渡され、浮動小数点数の結果は $f0 では なく $0 に入れて返されます。これは非標準の関数呼び出し手順であり、 浮動小数点数の引数や返り値を持つ関数で、\c .B \-mno-fp-regs\c \& をつけてコンパイルされたコードから呼び出される関数はすべてこのオプションを つけてコンパイルされている必要があります。 .Sp このオプションの典型的な用法は、浮動小数点レジスタを使用せず、したがっ て浮動小数点レジスタへのセーブもリストアも必要のないカーネルを構築する 時などがあるでしょう。 .PP ここに追加するオプションは System V Release 4 において、これらのシステム上の 他のコンパイラとの互換性のために提供されるものです。 .TP .B \-G SVr4 システムにおいて、\c .B gcc\c \& は `\|\c .B \-G\c \&\|' オプションを受け付けます (そして これをシステムリンカに渡します)。これは他のコンパイラとの互換性のためです。 しかし、リンカオプションを \c .B gcc のコマンドラインから渡すよりも、我々は `\|\c .B \-symbolic\c \&\|' または `\|\c .B \-shared\c \&\|' の使用が適当であると考えています。 .TP .B \-Qy コンパイラが使用したそれぞれのツールのバージョンを .B .ident\c \& アセンブラディレクティブを使用して、出力で明示します。 .TP .B \-Qn .B .ident\c \& ディレクティブを出力に加えることを抑制します (これは デフォルトです)。 .TP .BI "\-YP," "dirs" `\|\c .B \-l\c \&\|' で指定されたライブラリに対して、 .I dirs\c で規定されたディレクトリのみを検索し、他は検索しません。 .I dirs\c \& 中は、1 つのコロンで区切ることにより、 複数のディレクトリエントリを記述します。 .TP .BI "\-Ym," "dir" M4 プリプロセッサを \c .I dir\c \& に検索します。アセンブラがこのオプションを使用します。 .SH コード生成オプション これらのマシン独立オプションは、 コード生成にて使用されるインタフェース規約を制御します。 .PP これらのほとんどは `\|\c \-f\c \&\|' で始まります。これらのオプションは有効形式と無効形式の 2 つの形式を持っ ています。`\|\c .B \-ffoo\c \&\|' の無効形式は `\|\c .B \-fno\-foo\c \&\|' です。以下に挙げる表においては、このうち、デフォルトではない片 方のみが挙げられています。`\|\c .B no\-\c \&\|' を追加するか、削除するかによって双方の形式を得ることができます。 .TP .B \-fnonnull\-objects 参照型によって参照されるオブジェクトはヌルでないと仮定します (C++ のみ)。 .Sp 通常は GNU C++ は参照型によって参照されるオブジェクトに関しては保守的 な仮定を行います。例えば、コンパイラは \c .B a が以下のコードにおいてヌルでないことをチェックする必要があります。 .Sp obj &a = g (); a.f (2); .Sp この種の参照がヌルでないことのチェックは、特別なコードを必要とします。 しかし、これは多くのプログラムにとって無用なものです。 このヌルに対するチェックを必要のない場合 `\|\c .B \-fnonnull-objects\c \&\|' を使用することにより、省略することができます。 .TP .B \-fpcc\-struct\-return .B struct\c \& と \c .B union の値を返す場合に、普通の C コンパイラが行なうのと同じ規約を使用します。 この規約は小規模な構造体に対して非効率なものとなり、また多くのマシンでその 関数を再入不可能としてしまいます。しかしこれは、GCC でコンパイルされたコード と PCC でコンパイルされたコードを相互に呼び出すことを可能とするとい う利点を持ちます。 .TP .B \-freg\-struct\-return .B struct と .B union の値を返す場合に、可能な場合はレジスタを使用する規約を使用します。これは .BR \-fpcc\-struct\-return を使用した場合と比較して、小さな構造体を返す場合に高い性能を発揮します。 .Sp .B \-fpcc\-struct\-return と .BR \-freg\-struct\-return のどちらも使用しなかった場合には、GNU CC は各ターゲットに対して標準で あると考えられる規約をデフォルトとして使用します。 もし標準規約がなかった場合は、 .BR \-fpcc\-struct\-return をデフォルトとして使用します。 .TP .B \-fshort\-enums .B enum\c \& 型に対して、ちょうど取り得る値の範囲に応じたバイト数の型を与えます。 具体的には、\c .B enum\c \& 型は、その値域を格納するに十分な最小の整数型と等価になります。 .TP .B \-fshort\-double .B double を .B float \& と同サイズにします。 .TP .B \-fshared\-data データと非 \c .B const\c \& 変数を、プライベートなデータではなく、共有データとしてコンパイルします。 このオプションは、走行中の同じプログラム間は共有データが共有され、 プライベートデータがそれぞれのプロセスに 1 つずつ与えられるような一部 のオペレーティングシステムで意味を持ちます。 .TP .B \-fno\-common bss セクション中の初期化されていないグローバル変数に対してでも、共通ブロック に生成するのではなく、領域を割り当てます。このオプションは、(\c .B extern\c \& をつけずに) 同一の変数を宣言した 2 つのコンパイルに対して、リンク時 にエラーを発生するという効果があります。このオプションは、常にこのような動 作を行なうシステムにおいても、プログラムが正常に動作するかどうかを検査 する場合にのみ有用です。 .TP .B \-fno\-ident `\|\c .B #ident\c \&\|' ディレクティブを無視します。 .TP .B \-fno\-gnu\-linker (C++ のコンストラクタとデストラクタのような) グローバルな初期化のコードを (GNU リンカがこれらを扱う標準のシステムであるようなシステムにおいて) GNU リンカで使用される形式で出力しません。これは GNU リンカではない リンカを使用する場合に指定します。この場合、 .B collect2\c \& を使用して、確実にシステムリンカにコンストラクタとデストラクタを含 んだコードを出力させる必要があります。(\c .B collect2\c \& は GNU CC のディストリビューションに含まれます。) \c .B collect2 \c を\c .I 必ず使用しなければならない\c \& システムにおいては、 コンパイラドライバ \c .B gcc\c \& は自動的にそのようにコンフィギュレーションされます。 .TP .B \-finhibit-size-directive .B .size\c アセンブラディレクティブなど、関数が途中で分割され、メモリ上の異なった 位置にそれぞれの部分が配置されるような場合に不都合が生じるような要素を 出力しません。このオプションは `\|\c .B crtstuff.c\c \&\|' をコンパイルする時に使用されます。それ以外の場所ではこれを使用する 必要はありません。 .TP .B \-fverbose-asm 出力のアセンブラ中に特別なコメント情報を追加し、可読性を高めます。この オプションは一般的には、出力のアセンブラコードを本当に読みたい場合 (例え ばコンパイラ自身をデバッグしているような場合) にのみ効果があります。 .TP .B \-fvolatile ポインタによるメモリの参照を全て volatile として扱います。 .TP .B \-fvolatile\-global 外部変数やグローバルデータアイテムへのメモリ参照を全て volatile として 扱います。 .TP .B \-fpic このオプションがターゲットマシンでサポートされていれば、位置独立なコードを 出力します。このオプションは共有ライブラリでの使用に適します。 .TP .B \-fPIC このオプションがターゲットマシンでサポートされていれば、位置独立なコードを 出力します。このオプションはダイナミックリンクに適しており、分岐にお いて大きなディスプレースメントを要求する場合にも適応します。 .TP .BI "\-ffixed\-" "reg" 名前が \c .I reg\c \& のレジスタを固定レジスタとして扱います。生成されたコードはこのレジスタ を参照しません (ただし、スタックポインタ、フレームポインタ、その他固定用 途の場合を除きます)。 .Sp .I reg\c \& はレジスタ名でなければなりません。受け付けられるレジスタ名はマシン固 有であり、マシン記述マクロファイル内の \c .B REGISTER_NAMES マクロに記述されたものです。 .Sp このフラグは無効形式を持ちません。なぜなら、これは 3 通りの指定が可能で あるからです。 .TP .BI "\-fcall\-used\-" "reg" 名前が \c .I reg\c \& のレジスタを、関数呼び出しによって破壊される割り当て可能のレジスタ として取り扱います。これは、関数呼び出しを跨いで存在しない一時領域や変数 として割り当ることができます。この指定でコンパイルされた関数は、レジスタ \c .I reg\c \& の保存や復帰を行いません。 .Sp このフラグをマシンの実行モデルにおいて、ある固定的で特殊な役割を持って いるレジスタ、例えばスタックポインタやフレームポインタに対して適用する ことは、破滅的な結果を生みます。 .Sp このフラグは無効形式を持ちません。なぜなら、これは 3 通りの指定が可能で あるからです。 .TP .BI "\-fcall\-saved\-" "reg" 名前が \c .I reg\c \& のレジスタを、関数によって保存される割り当て可能なレジスタとして取 り扱います。これは、関数呼び出しを跨いで存在する一時領域や変数としても割り 当てることができます。この指定でコンパイルされた関数は、レジスタ \c .I reg\c \& を使用する場合、その保存と復帰を行います。 .Sp このフラグをマシンの実行モデルにおいて、ある固定的で特殊な役割を持って いるレジスタ、例えばスタックポインタやフレームポインタに対して適用する ことは、破滅的な結果を生みます。 .Sp また、このフラグを関数の返り値が格納されるレジスタに使用すると、これも 破滅的な結果を生みます。 .Sp このフラグは無効形式を持ちません。なぜなら、これは 3 通りの指定が可能で あるからです。 .SH プラグマ 2 つの `\|\c .B #pragma\c \&\|' ディレクティブ(指令)が GNU C++ によってサポートされています。これは、1 つのヘッダファイルを 2 つの目的、つまりあるオブジェクトクラスのための インタフェースの定義としての目的と、オブジェクトクラスに含まれる内容 の完全な定義としての目的の、両方の目的で使用するためのものです。 .TP .B #pragma interface (C++ のみ) このディレクティブを、オブジェクトクラスを定義しているヘッダファイル中 に使用することによって、それらのクラスを使用するほとんどのオブジェクト ファイルの大きさを減少させることができます。通常は、 特定の情報 (インラインメンバ関数のバックアップコピー、デバッグ情報、 仮想関数実現のための内部テーブル) の複製がそのクラス定義をインクルードした それぞれのオブジェクトファイル中に置かれます。 このプラグマを使用することによって、このような複製を防ぐことが 可能となります。`\|\c .B #pragma interface\c \&\|' を含んだヘッダファイルをインクルードした場合は、これらの追加情報 は生成されません (ただし、メインの入力ソースファイル自身が `\|\c .B #pragma implementation\c \&\|' を含んでいる場合を除きます)。そのかわり、オブジェクトファイルは リンク時に解決される参照を含むことになります。 .TP .B #pragma implementation .TP \fB#pragma implementation "\fP\fIobjects\fP\fB.h"\fP (C++ のみ) インクルードされたヘッダファイルによる完全な出力を生成させたい (またそ れをグローバルに可視化したい) 場合には、メインの入力ファイル中でこの プラグマを使用します。この場合、インクルードされるヘッダファイルは、`\|\c .B #pragma interface\c \&\|' を使用していなければなりません。インライン関数のバックアップ情報、 デバッグ情報、仮想関数実現用の内部テーブルは、全てインプリメンテーション ファイル中に生成されます。 .Sp `\|\c .B #pragma implementation\c \&\|' を、引数をつけずに使用した場合は、これはそのソースファイルと同じ ベースネーム(basename)を持つファイルに対して適用されます。例えば、`\|\c .B allclass.cc\c \&\|' 中の `\|\c .B #pragma implementation\c \&\|' は、`\|\c .B #pragma implementation \*(lqallclass.h\*(rq \c \&\|' と等価です。もし複数のヘッダファイルに対して、 1 つのインプリメンテーションファイルを対応させたい場合は、 文字列の引数を使用する必要があります。 .Sp 1 つのヘッダファイルに対して、複数のインプリメンテーションファイルを対 応させる方法はありません。 .SH 関連ファイル .nf .ta \w'LIBDIR/g++\-include 'u file.c C 言語ソースファイル file.h C 言語ヘッダ (プリプロセッサ) ファイル file.i プリプロセス済みの C 言語ソースファイル file.C C++ ソースファイル file.cc C++ ソースファイル file.cxx C++ ソースファイル file.m Objective-C ソースファイル file.s アセンブリ言語ファイル file.o オブジェクトファイル a.out リンクエディット済みの出力 \fITMPDIR\fR/cc\(** 一時ファイル群 \fILIBDIR\fR/cpp プリプロセッサ \fILIBDIR\fR/cc1 C 言語コンパイラ \fILIBDIR\fR/cc1plus C++ コンパイラ \fILIBDIR\fR/collect いくつかのマシンで必要となるリンカのフロントエンド \fILIBDIR\fR/libgcc.a GCC サブルーチンライブラリ /lib/crt[01n].o スタートアップルーチン \fILIBDIR\fR/ccrt0 C++ 用の付加的なスタートアップルーチン /lib/libc.a 標準ライブラリ、\c .IR intro (3) \c を参照 /usr/include \fB#include\fP ファイルのための標準ディレクトリ \fILIBDIR\fR/include \fB#include\fP ファイルのための GCC 標準ディレクトリ \fILIBDIR\fR/g++\-include \fB#include\fP ファイルのための付加的な g++ ディレクトリ .Sp .fi .I LIBDIR は通常 .B /usr/local/lib/\c .IR machine / version の形式を持ちます .br .I TMPDIR は環境変数 .B TMPDIR (もし使用可能ならば .B /usr/tmp を、そうでなければ .B /tmp\c \& を使用します) からとられます。 .SH "関連項目" cpp(1), as(1), ld(1), gdb(1). .br .B info \c 中の .RB "`\|" gcc "\|', `\|" cpp \|', .RB "`\|" as "\|', `\|" ld \|', .RB `\| gdb \|' \& エントリ .br .I Using and Porting GNU CC (for version 2.0)\c , Richard M. Stallman; .I The C Preprocessor\c , Richard M. Stallman; .I Debugging with GDB: the GNU Source-Level Debugger\c , Richard M. Stallman and Roland H. Pesch; .I Using as: the GNU Assembler\c , Dean Elsner, Jay Fenlason & friends; .I ld: the GNU linker\c , Steve Chamberlain and Roland Pesch. .SH バグ バグを報告する方法については、GCC マニュアルを参照してください。 .SH COPYING Copyright .if t \(co 1991, 1992, 1993 Free Software Foundation, Inc. .PP Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies. .PP Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one. .PP Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions, except that this permission notice may be included in translations approved by the Free Software Foundation instead of in the original English. .SH 作者 GNU CC に対して貢献した人々に関しては、GNU CC マニュアルを参照してください。 .SH 日本語訳 細川 達己(hosokawa@mt.cs.keio.ac.jp): NetBSD 用に翻訳 .br sakai@csl.cl.nec.co.jp, h-nokubi@nmit.mt.nec.co.jp, .br kumano@strl.nhk.or.jp, horikawa@isrd.hitachi.co.jp: FreeBSD 向けに修正, 査閲 diff --git a/ja/man/man1/groff.1 b/ja/man/man1/groff.1 index 2244698e5d..e1e6bbd858 100644 --- a/ja/man/man1/groff.1 +++ b/ja/man/man1/groff.1 @@ -1,412 +1,412 @@ .ig \"-*- nroff -*- Copyright (C) 1989-1995 Free Software Foundation, Inc. Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies. Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one. Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions, except that this permission notice may be included in translations approved by the Free Software Foundation instead of in the original English. .. .\" jpman %Id: groff.1,v 1.2 1997/05/13 16:13:14 horikawa Stab % .de TQ .br .ns .TP \\$1 .. .\" Like TP, but if specified indent is more than half .\" the current line-length - indent, use the default indent. .de Tp .ie \\n(.$=0:((0\\$1)*2u>(\\n(.lu-\\n(.iu)) .TP .el .TP "\\$1" .. .TH GROFF 1 "8 September 1996" "Groff Version 1.10" .SH 名称 groff \- groff ドキュメントフォーマットシステムのフロントエンド .SH 書式 .B groff [ .B \-tpeszaivhblCENRSVXZ ] [ .BI \-w name ] [ .BI \-W name ] [ .BI \-m name ] [ .BI \-F dir ] [ .BI \-T dev ] [ .BI \-f fam ] [ .BI \-M dir ] [ .BI \-d cs ] [ .BI \-r cn ] [ .BI \-n num ] [ .BI \-o list ] [ .BI \-P arg ] [ .IR files \|.\|.\|.\| ] .SH 解説 .B groff は、groff ドキュメントフォーマットシステムのフロントエンドプログラムです。通常 .B groff は .B troff を実行し、その出力を指定されたデバイスで扱うための 後処理プログラムを実行します。利用可能なデバイスは以下のとおりです: .TP .B ps PostScript プリンタやプレビュア .TP .B dvi TeX の dvi フォーマット .TP .B X75 75 dpi の X11 プレビュア .TP .B X100 100 dpi の X11 プレビュア .TP .B ascii タイプライタに似た特性を持つデバイス .TP .B latin1 ISO Latin-1 文字集合を利用するタイプライタに似た特性を持つデバイス .TP .B koi8-r ロシア語 KOI8-R 文字集合を利用するタイプライタに似た特性を持つデバイス .LP 指定されたデバイス用の後処理を行うプログラムは、デバイス記述ファイルの .B postpro コマンドにより指定されています。これは .B \-X オプションにより変更できます。 .LP デフォルトのデバイスは .B ps です。 .BR pic , .BR eqn , .BR tbl , .BR refer , .B soelim の任意の前処理を行わせることもできます。 .LP 引数を伴わないオプションは .B \- のあとにまとめて続けることができます。 ファイル名のかわりに用いられる .B \- は標準入力を意味します。 .LP .B grog コマンドを用いてドキュメントを正しくフォーマットするための .B groff コマンドを調べることができます。 .SH オプション .TP .B \-h ヘルプメッセージを表示します。 .TP .B \-e .B eqn を使って前処理を行います。 .TP .B \-t .B tbl を使って前処理を行います。 .TP .B \-p .B pic を使って前処理を行います。 .TP .B \-s .B soelim を使って前処理を行います。 .TP .B \-R .B refer を使って前処理を行います。 .B refer に引数を渡す機構は用意されていません。 .B refer のほとんどのオプションは、ファイル中に記述することができる等価なコマンドを 備えているからです。詳しくは .BR refer (1) のマニュアルを参照してください。 .TP .B \-v .B groff から起動されるプログラムのバージョン番号を表示します。 .TP .B \-V 実行しないで、 .B groff で実行される処理内容を標準出力に表示します。 .TP .B \-z .B troff からの出力を捨てます。エラーメッセージのみが表示されます。 .TP .B \-Z .B troff からの出力を後処理しません。通常 .B groff は、自動的に適当な後処理プログラムを起動します。 .TP .BI \-P arg 後処理プログラムに .I arg を引数として渡します。別々の引数は別々の .B \-P オプションで指定する必要があります。 .B groff は、 .I arg の前に .B \- をつけてコマンドに渡したりしないことに注意してください。 .TP .B \-l -プリンタへ出力します。プリントアウトに用いられるコマンドは、デバイス +プリンタへ出力します。印字出力に用いられるコマンドは、デバイス 記述ファイルの .B print コマンドによって指定されます。 .TP .BI \-L arg .I arg をプリンタスプーラプログラムに渡します。別々の引数は、別々の .B \-L オプションで指定する必要があります。 .B groff は、 .I arg の前に .B \- をつけてコマンドに渡したりしないことに注意してください。 .TP .BI \-T dev デバイス .I dev 用に出力します。デフォルトのデバイスは .B ps です。 .TP .B \-X 通常の後処理プログラムのかわりに、 .B gxditview を起動してプレビューします。 .B groff は .B gxditview に .B -printCommand オプションを渡します。このオプションは .B groff に .B -l オプション指定時に実行される .B Print アクションを実行させます。 .B \-Tps 以外が指定されている場合は、よい結果が得られません。 .TP .B \-N .B eqn の区切り文字間に改行が入ることを禁止します。 .B eqn の .B \-N オプションと同様です。 .TP .B \-S より安全なモード。 .B \-S オプションを .B pic に渡し、 .B troff にて .B \%\-msafer マクロを使用します。 .TP .B \-a .TQ .B \-b .TQ .B \-i .TQ .B \-C .TQ .B \-E .TQ .BI \-w name .TQ .BI \-W name .TQ .BI \-m name .TQ .BI \-o list .TQ .BI \-d cs .TQ .BI \-r cn .TQ .BI \-F dir .TQ .BI \-M dir .TQ .BI \-f fam .TQ .BI \-n num これらのオプションの詳細は、 .BR troff (1) に記述してあります。 .SH 環境変数 .TP .SM .B GROFF_COMMAND_PREFIX もしこの変数が .I X に設定されていると、 .B groff は .B troff のかわりに .IB X troff を起動します。これは、 .BR tbl , .BR pic , .BR eqn , .BR refer , .B soelim にも同様に影響します。 .BR gropos , .BR grodvi , .BR grotty , .B gxditview には影響しません。 .TP .SM .B GROFF_TMAC_PATH マクロファイルを検索すべきディレクトリのリスト(リストの区切りはコロンです) .TP .SM .B GROFF_TYPESETTER デフォルトのデバイス .TP .SM .B GROFF_FONT_PATH .BI dev name という名前のディレクトリを検索するディレクトリのリスト(リストの区切りはコロンです) .TP .SM .B PATH .B groff から起動されるプログラムが存在するパス .TP .SM .B GROFF_TMPDIR 一時的なファイルが作成されるディレクトリ。もし、 .SM GRROFF_TMPDIR が設定さ れておらず、 .B .SM TMPDIR が設定されているなら、 .SM TMPDIR で示されるディレクトリ に一時ファイルが生成されます。さもなければ、一時ファイルは .B /tmp に作られます。 .BR grops (1) と .BR refer (1) が一時ファイルを作成する可能性があります。 .SH 関連ファイル .Tp \w'\fB/usr/share/groff_font/dev\fIname\fB/DESC'u+3n .BI /usr/share/groff_font/dev name /DESC デバイス .IR name のデバイス記述ファイル .TP .BI /usr/share/groff_font/dev name / F デバイス .I name のためのフォント .I F を記述したフォントファイル .SH 作者 James Clark .SH バグ バグレポートは、bug-groff@prep.ai.mit.edu. までお願いします。 レポートの際にはバグを再現できる完全な例題を添付し、あなたの利 用している groff のバージョンを添えて下さい。 .SH 著作権 Copyright (C) 1989, 1990, 1991, 1992 Free Software Foundation, Inc. .LP groff はフリーソフトウェアです。Free Software Foundation から 出版されている the GNU General Public License の ver 2.0 かそ れ以降に基づく限り再配布したり、変更することが可能です。 .LP groff は使い易いツールとして配布されることを望まれていますが、 どのような保証もありません。それが商業的であってもある特定の目 的に対するだけであっても保証はありません。詳しくは GNU の General Public License を参照して下さい。 .LP あなた は groff のコピーを GNU General Public License と共に受 けとっているはずです。その COPYING を参照して下さい。そうでな い場合には、 Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA まで御連絡下さい。 .SH 可用性 最新の groff はたいてい prep.ai.mit.edu の pub/gnu ディレクト リに置かれており、anonymous ftp で入手できます。 .SH 関連項目 .\" .BR grog (1), .BR troff (1), .BR tbl (1), .BR pic (1), .BR eqn (1), .BR soelim (1) , .BR refer (1), .BR grops (1), .BR grodvi (1), .BR grotty (1), .\" .BR gxditview (1), .BR groff_font (5), .BR groff_out (5), .BR groff_ms (7), .BR me (7), .BR groff_char (7), .BR msafer (7) diff --git a/ja/man/man1/login.1 b/ja/man/man1/login.1 index d820c7f332..9228d832f5 100644 --- a/ja/man/man1/login.1 +++ b/ja/man/man1/login.1 @@ -1,190 +1,189 @@ .\" %NetBSD: login.1,v 1.5 1994/12/23 06:53:00 jtc Exp % .\" .\" Copyright (c) 1980, 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. .\" .\" @(#)login.1 8.2 (Berkeley) 5/5/94 .\" %Id: login.1,v 1.4.2.4 1998/01/07 10:44:20 obrien Exp % .\" jpman %Id: login.1,v 1.3 1997/05/19 16:39:53 horikawa Stab % .\" .Dd May 5, 1994 .Dt LOGIN 1 .Os BSD 4 .Sh 名称 .Nm login .Nd 指定したユーザでログインする .Sh 書式 .Nm .Op Fl fp .Op Fl h Ar hostname .Op Ar user .Sh 解説 .Nm は、指定したユーザでログインするものです。 .Pp user を指定しなかった場合、もしくは指定した user でのログインに失敗した ときには、 .Nm は、再度ユーザ名の入力を求めるプロンプトを表示します。 ユーザの確認は入力されたパスワードにより行われます。 .Pp オプションとしては以下のものがあります: .Bl -tag -width Ds .It Fl f パスワードによるユーザの確認を省略します。このオプションは、スーパーユーザ か、すでにログインしているユーザが同じユーザ名で login を実行す るときのみ指定可能です。 .It Fl h コネクションを受信可能なホスト名を指定します。この機能は .Xr telnetd 8 などのデーモンによって使われています。このオプションはスーパーユーザ しか指定することができません。 .It Fl p .Nm は、デフォルトでは実行時の環境 (環境変数など) を引き継ぎ ませんが、このオプションを指定すると、実行時の環境を引き継ぎます。 .El .Pp もし .Pa /etc/nologin ファイルが存在した場合、 .Nm はそのファイル内容 を表示してログイン処理をせずに終了します。この機能は .Xr shutdown 8 で使用されており、システムの終了処理実行中にユーザがログインしないよう にしています。 .Pp もし .Pa /etc/login.access ファイルが存在した場合、 .Nm はそのファイルから、ユーザとホストの組が特別に許可されている、もしくは 拒否されているかどうかをチェックします。 .Pp もし .Pa /etc/fbtab ファイルが存在した場合、 .Nm -はそのファイルに記述された幾つかのデバイスのプロテクトとオーナを変え -ます。 +はそのファイルに記述された幾つかのデバイスのプロテクトと所有者を変えます。 .Pp ファイル .Pa /etc/skeykeys が存在する場合、このファイル中にユーザのエントリが存在する時には、 .Nm は S/key パスワード認証を行います。 .Pa /etc/skey.access により、 接続元のホストやネットワークに応じて S/key パスワード使用の義務を制御します。 .Pp 通常、ユーザがログインすると、 .Nm はシステムのコピーライト表示、 ユーザが最後にログインした日付と時間、その日のメッセージなどの 情報を表示します。ただし、ユーザのホームディレクトリに .Dq Pa .hushlogin というファイルが存在した場合は、これらのメッセージを表示 しないようにします (これは .Xr uucp 1 のようなプログラムがユーザとしてログインするためにあります)。 このあと、 .Nm は .Xr wtmp 5 と .Xr utmp 5 ファイルに記録し、ユーザのコマンドインタプリタ (シェル) を起動します。 .Pp なお、環境変数 ( .Xr environ 7 ) HOME, SHELL, PATH, TERM, LOGNAME, USER は .Nm によりセットされます。 他の環境変数はログインクラスケーパビリティデータベースの エントリにより設定されるかも知れません。 ログインクラスはユーザのシステムパスワードレコードに割り当てられています。 ログインクラスは、当該ログインに許された最大および現在の資源制約、 プロセス優先度や他の多くのユーザログイン環境を制御します。 .Pp 標準シェルである .Xr csh 1 と .Xr sh 1 は、 .Nm が実行されてから起動します。 .Sh 関連ファイル .Bl -tag -width /var/mail/userXXX -compact .It Pa /etc/fbtab デバイスのプロテクトの変更 .It Pa /etc/login.access ログインアクセス制御表 .It Pa /etc/login.conf ログインクラスケーパビリティデータベース .It Pa /etc/motd ログイン時に最初に表示するメッセージ .It Pa /etc/nologin ログインを拒否する時に表示するメッセージ .It Pa /etc/skey.access skey パスワード制御表 .It Pa /etc/skeykeys skey パスワードデータベース .It Pa /var/run/utmp 現在のログイン状況 .It Pa /var/log/lastlog 最後にログインした記録 last login account records .It Pa /var/log/wtmp ログイン・ログアウト状況 .It Pa /var/mail/user ユーザーごとのメイルボックス .It Pa \&.hushlogin ログインメッセージを抑止するファイル .El .Sh 関連項目 .Xr chpass 1 , .Xr passwd 1 , .Xr rlogin 1 , .Xr skey 1 , .Xr getpass 3 , .Xr fbtab 5 , .Xr login.access 5 , .Xr login.conf 5 , .Xr skey.access 5 , .Xr utmp 5 , .Xr environ 7 , .Xr nologin 8 .Sh 歴史 .Nm login ユーティリティは .At v6 から登場しました。 diff --git a/ja/man/man1/lprm.1 b/ja/man/man1/lprm.1 index d6b38ed217..b7034c4fd2 100644 --- a/ja/man/man1/lprm.1 +++ b/ja/man/man1/lprm.1 @@ -1,142 +1,142 @@ .\" Copyright (c) 1983, 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. .\" .\" @(#)lprm.1 8.1 (Berkeley) 6/6/93 .\" jpman %Id: lprm.1,v 1.3 1997/08/15 06:33:28 horikawa Stab % .\" .Dd June 6, 1993 .Dt LPRM 1 .Os BSD 4.2 .Sh 名称 .Nm lprm .Nd 印刷ジョブをキューから削除する .Sh 書式 .Nm lprm .Op Fl P Ns Ar printer .Op Fl .Op job # ... .Op Ar user ... .Sh 解説 .Nm は 1 つのジョブ、もしくは複数のジョブをプリンタの スプールキューから削除します。スプールディレクトリはユーザから保護され ているので、ジョブの削除は .Nm を利用するのが唯一の手段です。 -ジョブのオーナは、ユーザのログイン名と +ジョブの所有者は、ユーザのログイン名と .Xr lpr 1 を実行した計算機のホスト名で決定されます。 .Pp オプションとしては以下のものがあります: .Bl -tag -width indent .It Fl P Ns Ar printer .Ar printer を扱うキューを指定します (指定しない場合はデフォルトのプリンタを使います)。 .It Fl もし単一の `-' が与えられた場合、 .Nm はユーザのすべてのジョブを削除します。 もしスーパユーザがこのオプションを使った場合、スプール キューは完全に空になります。 .It Ar user .Nm は、 .Ar user の所有するすべてのジョブを削除しようと 試みます。この .Nm の呼び出し方は、スーパユーザだけに有用です。 .It Ar job\ \&# ユーザは、ジョブ番号を指定することで個々のジョブをキューから 削除することができます。この番号は .Xr lpq 1 プログラムから得ることができます。たとえば、以下のようになります。 .Pp .Bd -literal -offset indent \&% lpq \-l 1st:ken [job #013ucbarpa] (standard input) 100 bytes % lprm 13 .Ed .El .Pp もし、どのオプションも与えられなかったときは、 .Nm を実行したユーザが持つアクティブなジョブを削除します。 .Pp .Nm は削除するファイルの名前をアナウンスしますが、もしキュー内 に削除するジョブがないときには何もアナウンスしません。 .Pp .Nm は、スプールのファイルを削除する前に、もし必要であればアクティブな デーモンを殺します。デーモンを殺した場合、ファイルを削除したあとで 新しいデーモンを自動的に再スタートさせます。 .Sh 環境変数 もし、以下の環境変数が存在したならば、 .Nm は利用します。 .Bl -tag -width PRINTER .It Ev PRINTER もし環境変数 .Ev PRINTER が存在し、プリンタを .Fl P オプションで指定しなかった場合、デフォルトプリンタは .Ev PRINTER の値となります。 .El .Sh 関連ファイル .Bl -tag -width /var/spool/*/lock/ -compact .It Pa /etc/printcap プリンタの特徴を記述するファイル .It Pa /var/spool/* スプールディレクトリ .It Pa /var/spool/*/lock 現在のデーモンのプロセス ID と、現在アクティブなジョブのジョブ番号を 得るためのロックファイル .El .Sh 関連項目 .Xr lpq 1 , .Xr lpr 1 , .Xr lpd 8 .Sh 診断 もし、自分が所有者でないファイルを削除しようとした時は、 ``Permission denied'' になります。 .Sh バグ ロックファイルの更新時に、競争になる場合があるので、現在のアクティブ なジョブを正しく認識しないかもしれません。 .Sh 歴史 .Nm コマンドは .Bx 3.0 から登場しました。 diff --git a/ja/man/man1/manpath.1 b/ja/man/man1/manpath.1 index 27cc12132d..285238d645 100644 --- a/ja/man/man1/manpath.1 +++ b/ja/man/man1/manpath.1 @@ -1,67 +1,67 @@ .\" Man page for manpath .\" .\" Copyright (c) 1990, 1991, John W. Eaton. .\" .\" You may distribute under the terms of the GNU General Public .\" License as specified in the README file that comes with the man 1.0 .\" distribution. .\" .\" John W. Eaton .\" jwe@che.utexas.edu .\" Department of Chemical Engineering .\" The University of Texas at Austin .\" Austin, Texas 78712 .\" .\" jpman %Id: manpath.1,v 1.4 1997/08/20 20:58:18 horikawa Stab % .Dd Jan 5, 1991 .Dt MANPATH 1 .Os .Sh 名称 .Nm manpath .Nd マニュアルページのユーザのサーチパスを決める .Sh 書式 .Nm .Op Fl q .Sh 解説 .Nm manpath はシステム標準およびユーザの .Ev PATH からユーザのマニュアルページのサーチパスを決め、結果を標準出力へ表示 します。また警告およびエラーは標準エラー出力へ出力します。ユーザの .Ev PATH 中のディレクトリが manpath.config ファイルに無いときには、manpath は そのディレクトリで man または MAN という名前のサブディレクトリを探し、 見付かればそれをサーチパスに追加します。 .Pp .Nm は .Nm man がサーチパスを決めるのにも使用します。したがって、普通はユーザが環境 変数 .Ev MANPATH を直接設定する必要はありません。 .Pp オプションを以下に示します: .Bl -tag -width Ds .It Fl q 「静かに」実行します。最終的なマニュアルページのサーチパスだけを表示します。 .El .Sh 環境変数 .Bl -tag -width MANPATH -compact .It Ev MANPATH .Ev MANPATH を設定すると .Nm manpath はその設定を標準出力に表示し、標準エラー出力に警告を出力します。 .El .Sh 関連ファイル .Bl -tag -width /etc/manpath.config -compact .It Pa /etc/manpath.config -システムコンフィギュレーションファイル +システムの設定ファイル .El .Sh 関連項目 .Xr apropos 1 , .Xr whatis 1 , .Xr man 1 .Sh バグ 既知のバグはありません。 diff --git a/ja/man/man1/mcon.1 b/ja/man/man1/mcon.1 index ccf05d91a8..26240bcd09 100644 --- a/ja/man/man1/mcon.1 +++ b/ja/man/man1/mcon.1 @@ -1,172 +1,172 @@ .\" Copyright (c) 1994 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. .\" 3. All advertising materials mentioning features or use of this software .\" must display the following acknowledgement: .\" This product includes software developed by Joerg Wunsch .\" 4. The name authors may not be used to endorse or promote products .\" derived from this software without specific prior written permission. .\" .\" THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``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 AUTHORS 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. .\" .\" @(#)mcon.1, 3.00, Last Edit-Date: [Mon Jan 10 21:28:22 1994] .\" jpman %Id: mcon.1,v 1.3 1997/08/20 12:33:46 horikawa Stab % .\" .Dd January 3, 1994 .Dt MCON 1 .Sh 名称 .Nm mcon .Nd pcvt マウスエミュレータの制御 .Sh 書式 .Nm mcon .Op Fl l Ar left-button-key .Op Fl m Ar mid-button-key .Op Fl r Ar right-button-key .Op Fl a Ar accel-time .Op Fl s Ar 0 | false | \&no .Op Fl s Ar 1 | true | yes .Ar device .Sh 解説 .Nm mcon は、 .Xr pcvt 4 マウスエミュレータの調整可能なパラメータを制御するユーティリティです。 .br .Em NB : マウスエミュレータはデフォルトでは組み込まれていません。 -この機能を有効にするには、システムのコンフィグファイルに +この機能を有効にするには、システムの設定ファイルに 以下のオプション指定行 .Em options Dq PCVT_EMU_MOUSE を記述する必要があります。 .Pp いずれの場合も、マウスエミュレーションに用いるデバイスノードを指定する .Ar device を引数に指定して .Nm を呼び出さなければなりません。 これは普通、 .Xr pcvt 4 ドライバのうち、仮想端末デバイスとして使われていない最初のデバイスノードです。 例えば、8 つの仮想端末、つまり .Pa /dev/ttyv0 から .Pa /dev/ttyv7 が使えるように設定されている (これがデフォルト) 場合、 マウスエミュレータは .Pa /dev/ttyv8 に割り当てられます。 もしオプションなしで .Nm を起動すると、調整可能パラメータの現在の設定値を表示します。 オプション 1 つを付けて起動すると、 .Nm は新しい値の設定を試みます。 .Pp オプションは以下の通りです: .Bl -tag -width Ds .It Fl l Ar left-button-key .It Fl m Ar mid-button-key .It Fl r Ar right-button-key 指定された .Ar button key がマウスの左, 中央, 右ボタンをエミュレートするようにマッピングします。 .Ar button key はそのキーの通常の名称です。 普通の ASCII 文字はその文字自体で指定し、 ファンクションキーは .Em f1 から .Em f10 で指定します。 注意: AT ファンクションキー .Em f11 から .Em f12 は .Em 拡張された キーであり、マウスエミュレータで使うようにマッピングできません。 基本的な PC スキャンコードキーを使うことしか許されないからです。 .It Fl a Ar accel-time 内部アクセラレータのタイムリミットを .Ar accel-time ミリ秒に設定します。 このタイムリミット以上経過した後キーイベントが発生すると、 単一のステップでマウスカーソルが動きます。 これより短い間隔でキーイベントが到着すると、 マウスカーソルは 6 倍の速さで動きます。 注意: .Em milliseconds は上に示した単位で指定できますが、 時刻の分解能は OS のタイマ分解能の制約を受け、 通常は 10 ミリ秒単位となります。 .It Fl s Ar 0 | false | \&no .It Fl s Ar 1 | true | yes マウスボタンの .Em sticky 動作を無効化あるいは有効化します。 マウスボタンを sticky にすると、ちょうどトグルボタンのようになります。 つまり、はじめて押すとアクティブになり、もう一度押すと非アクティブになります。 他のボタンどれかを押すと、それ以外の sticky なボタンは 全て非アクティブになります。 sticky ボタンを使うと指が 20 本も要らなくなるので便利かも知れません。 他方、マウスのダブルクリックやトリプルクリックは事実上不可能になります。 .El .Sh 実行例 以下の例はマウスエミュレータのデフォルト動作を設定するものです。 .Nm mcon .Fl l Ar f1 .Fl m Ar f2 .Fl r Ar f3 .Fl a Ar 250 .Fl s Ar \&no .Pa /dev/ttyv8 .Sh バグ ボタンをエミュレートするキーをスキャンコードに (あるいはその逆に) マッピングする際のキーの名前は、米国のキーボードレイアウトに基づいています。 しかし、 .Dq 選んだ button は各国のキーボードレイアウトのファンクションキーのどれかに相当する でしょうから、通常、これは問題とならないでしょう。 .Pp マウスエミュレータは結構乱暴なことをやっています。 その唯一の目的は、X ウィンドウ環境の中でポインタを動かすデバイスを 提供することです。 .Sh 関連項目 .Xr X 1 , .Xr pcvt 4 .Sh 歴史 .Nm ユーティリティは .Xr pcvt 4 , release 3.00 で登場しました。 .Sh 作者 マウスエミュレータは .if n Joerg Wunsch .if t J\(:org Wunsch によって寄贈されました。 diff --git a/ja/man/man1/mkdir.1 b/ja/man/man1/mkdir.1 index aeb636d706..6e06f2ae08 100644 --- a/ja/man/man1/mkdir.1 +++ b/ja/man/man1/mkdir.1 @@ -1,103 +1,103 @@ .\" Copyright (c) 1989, 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. .\" .\" @(#)mkdir.1 8.2 (Berkeley) 1/25/94 .\" %Id: mkdir.1,v 1.3.2.1 1997/02/28 07:54:38 mpp Exp % .\" jpman %Id: mkdir.1,v 1.2 1997/03/29 06:22:04 horikawa Stab % .\" .Dd January 25, 1994 .Dt MKDIR 1 .Os .Sh 名称 .Nm mkdir .Nd ディレクトリの作成 .Sh 書式 .Nm mkdir .Op Fl p .Op Fl m Ar mode .Ar directory_name ... .Sh 解説 .Nm は、 オペランドで指定されたディレクトリを作成します。 作成する順番は指定された順番です。 作成されるディレクトリのパーミッションは、 .Li rwxrwxrwx (\&0777) に .Xr umask 2 の修正を加えたものです。 .Pp オプションとしては以下のものがあります: .Pp .Bl -tag -width indent .It Fl m Ar mode 作成されるディレクトリのパーミッションを指定します。 .Ar mode の書式は .Xr chmod 1 コマンドと同じです。シンボリック形式で指定する場合、 .Dq + および .Dq - は、最初のパーミッションが .Dq a=rwx であるものとして解釈されます。 .It Fl p 必要に応じて途中のディレクトリを作成します。 このオプションが指定されていない場合には、 .Ar directory_name で指定するパスの途中のディレクトリは既に存在している必要があります。 途中に作成されるディレクトリのパーミッションは、 .Li rwxrwxrwx (\&0777) に現在の umask の修正を加えたものに、 -オーナに対する書き込みと検索パーミッションが加わった値となります。 +所有者に対する書き込みと検索パーミッションが加わった値となります。 .El .Pp ユーザは親ディレクトリに対する 書き込みパーミッションを持っている必要があります。 .Pp .Nm は成功した場合は 0 を、エラーが起きた場合は 1 以上の値を返します。 .Sh 関連項目 .Xr rmdir 1 .Sh 規格 .Nm mkdir ユーティリティは .St -p1003.2 互換です。 .Sh 歴史 .Nm コマンドは .At v1 から登場しました。 diff --git a/ja/man/man1/mkstr.1 b/ja/man/man1/mkstr.1 index d6ebd1ab76..512959bbfd 100644 --- a/ja/man/man1/mkstr.1 +++ b/ja/man/man1/mkstr.1 @@ -1,142 +1,142 @@ .\" Copyright (c) 1980, 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. .\" .\" @(#)mkstr.1 8.1 (Berkeley) 6/6/93 .\" jpman %Id: mkstr.1,v 1.2 1997/03/29 06:22:47 horikawa Stab % .\" .Dd June 6, 1993 .Dt MKSTR 1 .Os .Sh 名称 .Nm mkstr .Nd C 言語ソースファイルからエラーメッセージファイルを作成する .Sh 書式 .Nm .Op Fl .Ar messagefile .Ar prefix file ... .Sh 解説 .Nm は C 言語ソースファイルからエラーメッセージを抽出し、 これを格納するファイルを作成します。また作成され たエラーメッセージファイルを使用するように、そのソースファイルを修正し ます。mkstr は巨大なプログラムのサイズを減少させ、スワップを減らすこと を目的としています ( .Sx バグ の項を参照) 。 .Pp .Nm はコマンドラインで指定されたファイルを処理し、修正した入力ファイ -ルを、指定されたファイル名に、指定されたプレフィクスをつけた名前のファイル +ルを、指定されたファイル名に、指定されたプレフィックスをつけた名前のファイル で出力します。以下の使用例は典型的なものです。 .Bd -literal -offset indent mkstr pistrings xx *.c .Ed .Pp .Nm は、カレントディレクトリにあるすべての C 言語ソースから集めた エラーメッセージを、ファイル .Ar pistrings に出力し、修正されたソースファイルを、ファイル名の先頭に .Ar \&xx をつけたファイルに出力します。 .Pp オプション .Bl -tag -width indent .It Fl 指定されたエラーメッセージファイルの最後に、エラーメッセージが置かれます。 これは、 .Nm で処理された巨大なプログラムの一部を再コンパイルするために使用します。 .El .Pp .Nm は、ソースファイル中の .Li \&`error("' という文字列をもとにエラーメッセージを検索します。この文字列が出現すると、 .Sq \&"\& から開始される文字列および その後にヌル文字と改行文字をメッセージファイルに出力します; 変更前のソースにおいて文字列であった部分は、 メッセージファイルのオフセットに置き換えられ .Xr lseek 2 によって対応するメッセージを取り出すことができます。 実際にメッセージを取り出す場合には、以下のようなコードを使用します。 .Bd -literal -offset indent char efilname = "/usr/lib/pi_strings"; int efil = -1; error(a1, a2, a3, a4) \&{ char buf[256]; if (efil < 0) { efil = open(efilname, 0); if (efil < 0) { oops: perror(efilname); exit 1 ; } } if (lseek(efil, (long) a1, 0) \ read(efil, buf, 256) <= 0) goto oops; printf(buf, a2, a3, a4); } .Ed .Sh 関連項目 .Xr xstr 1 , .Xr lseek 2 .Sh 歴史 .Nm は .Bx 3.0 で追加されました。 .Sh バグ .Nm は、PDP 11 ファミリーの制限されたアーキテクチャのために開発されました。 ごく一部のプログラムしか mkstr を使用していません。 Pascal インタプリタ .Xr \&pi 1 とエディタ .Xr \&ex 1 が .Nm により作成されています。 .Nm の方法は効率的なものとはいえないので、 エラーメッセージはプログラムテキストのなかに埋め込まれているべきです .Pq (訳注) 最近はメッセージの国際化等のために、プログラム中にメッセージを埋め込まない方法もよく用いられます 。 .\" 上記(訳注)は翻訳時からあったが、現状確かにそうなので残しました。 .\" 2.1.5-2.2-RELEASE 対象 .\" By horikawa@jp.freebsd.org (Mar 29 1997) diff --git a/ja/man/man1/nohup.1 b/ja/man/man1/nohup.1 index 888d1094bb..2b0093f57e 100644 --- a/ja/man/man1/nohup.1 +++ b/ja/man/man1/nohup.1 @@ -1,82 +1,82 @@ .\" Copyright (c) 1989, 1990 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. .\" .\" from: @(#)nohup.1 6.8 (Berkeley) 7/27/91 .\" jpman %Id: nohup.1,v 1.2 1997/05/04 13:33:09 horikawa Stab % .\" .Dd June 6, 1993 .Dt NOHUP 1 .Os .Sh 名称 .Nm nohup -.Nd ハングアップしないようにしてコマンドを実行する +.Nd 回線切断しないようにしてコマンドを実行する .Sh 書式 .Nm .Ar command .Op Ar arg ... .Sh 解説 .Nm は .Dv SIGHUP シグナルを無視するように設定し、指定されたコマンドを指定された引数付で 実行します。 .Dv SIGQUIT も無視するように設定します。 標準出力が端末の時、コマンドの出力はカレントディレクトリのファイル .Pa nohup.out に追加書き込みされます。標準エラー出力が端末の時も、 標準出力と同様に処理されます。 .Pp .Nm はエラーがあれば 1 を返します。その他の場合は .Ar command の終了ステータスを返します。 .Sh 環境変数 .Nm は以下の環境変数を参照します。 .Bl -tag -width flag .It Ev HOME カレントディレクトリにファイル .Pa nohup.out が作成できなかった場合、環境変数 .Ev HOME で示されたディレクトリに作成します。 .El .Sh 関連項目 .Xr signal 3 .Sh 標準 .Nm は .St -p1003.2 互換であるはずです。 diff --git a/ja/man/man1/patch.1 b/ja/man/man1/patch.1 index 872f362415..1aebf0104d 100644 --- a/ja/man/man1/patch.1 +++ b/ja/man/man1/patch.1 @@ -1,593 +1,593 @@ .\" -*- nroff -*- .rn '' }` .\" jpman %Id: patch.1,v 1.3 1997/09/10 04:34:14 yugawa Stab % '\" %Header: /home/ncvs/src/gnu/usr.bin/patch/patch.1,v 1.5.2.3 1998/01/22 07:45:53 ache Exp % '\" '\" %Log: patch.1,v % '\" Revision 1.5.2.1 1998/01/11 20:45:30 ache '\" Back out rev1.5 change, Index: precedence restored to historycal behaviour '\" '\" Revision 1.4 1994/02/25 21:45:59 phk '\" added the -C/-check again. '\" .\" Revision 1.3 1994/02/17 22:20:33 jkh .\" Put this back - I was somehow under the erroneous impression that patch was in .\" ports, until I saw the the commit messages, that is! :-) All changed backed out. .\" .\" Revision 1.2 1994/02/17 22:16:02 jkh .\" From Poul-Henning Kamp - Implement a -C option to verify the integrity of .\" a patch before actually applying it. .\" .\" Revision 1.1.1.1 1993/06/19 14:21:51 paul .\" b-maked patch-2.10 .\" '\" Revision 2.0.1.2 88/06/22 20:47:18 lwall '\" patch12: now avoids Bell System Logo '\" '\" Revision 2.0.1.1 88/06/03 15:12:51 lwall '\" patch10: -B switch was contributed. '\" '\" Revision 2.0 86/09/17 15:39:09 lwall '\" Baseline for netwide release. '\" '\" Revision 1.4 86/08/01 19:23:22 lwall '\" Documented -v, -p, -F. '\" Added notes to patch senders. '\" '\" Revision 1.3 85/03/26 15:11:06 lwall '\" Frozen. '\" '\" Revision 1.2.1.4 85/03/12 16:14:27 lwall '\" Documented -p. '\" '\" Revision 1.2.1.3 85/03/12 16:09:41 lwall '\" Documented -D. '\" '\" Revision 1.2.1.2 84/12/05 11:06:55 lwall '\" Added -l switch, and noted bistability bug. '\" '\" Revision 1.2.1.1 84/12/04 17:23:39 lwall '\" Branch for sdcrdcf changes. '\" '\" Revision 1.2 84/12/04 17:22:02 lwall '\" Baseline version. '\" .de Sh .br .ne 5 .PP \fB\\$1\fR .PP .. .de Sp .if t .sp .5v .if n .sp .. '\" '\" Set up \*(-- to give an unbreakable dash; '\" string Tr holds user defined translation string. '\" Bell System Logo is used as a dummy character. '\" .ie n \{\ .tr \(*W-\*(Tr .ds -- \(*W- .if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch .if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch .ds L" "" .ds R" "" .ds L' ' .ds R' ' 'br \} .el \{\ .ds -- \(em\| .tr \*(Tr .ds L" `` .ds R" '' .ds L' ` .ds R' ' 'br\} .TH PATCH 1 LOCAL .SH 名称 patch - diff ファイルをオリジナルのファイルに適用する .SH 書式 .B patch [options] [origfile [patchfile]] [+ [options] [origfile]]... .sp ですが、たいていは以下のようにします。 .sp .B patch .br および多くの貢献者の方々。 .SH 環境変数 .TP .B TMPDIR テンポラリファイルを置くディレクトリ。デフォルトでは /tmp .TP .B SIMPLE_BACKUP_SUFFIX バックアップファイルに付ける拡張子を指定します。デフォルトでは、 \*(L".orig\*(R" もしくは \*(L"~\*(R"。 .TP .B VERSION_CONTROL 数字付きバックアップファイルが作成される際に選択します。 .SH 関連ファイル $TMPDIR/patch* .SH 関連項目 diff(1) .SH パッチ作成者への注意 パッチを作って送付しようとする際に留意すべき点がいくつかあります。 第 1 に、patchlevel.h というファイルを管理することで皆は大変幸せに なれます。作成したパッチファイルの最初の差分はこの patchlevel.h に パッチをあて、パッチレベルをインクリメントします。 パッチの中に Prereq: 行を入れておけば、 順番通りにパッチを適用しない限り警告が出ます。 第 2 に、context diff ヘッダか Index: 行で正しくファイル名を指定している ことを確認して下さい。 サブディレクトリにあるファイルにパッチをあてようとする場合は、 必要に応じて .B \-p オプションを指定するよう、ユーザに伝えて下さい。 第 3 に、空のファイルと新規ファイルを比較する差分を送付することで、 新しいファイルを生成することができます。 これは、ターゲットディレクトリにその新ファイルがまだ存在しない場合にのみ 有効です。 第 4 に、リバースパッチを送付しないように気を付けて下さい。 そのパッチは適用済なのかと皆が混乱します。 第 5 に、例えば 582 個の差分をたったひとつのファイルに突っ込んで ハイサヨナラとすることもできることはできますが、 何か発狂しそうになったときに備えて、 関係あるパッチをいくつかの独立したファイルにまとめあげるほうが おそらく賢明でしょう。 .SH 診断 ここに列挙しきれないほどたくさんありますが、一般に .I patch がパッチファイルを解釈できないことを示しています。 .PP メッセージ \*(L"Hmm...\*(R" は、 パッチファイル中に処理できないテキストが存在していること、 そして .I patch はそのテキスト中にパッチがあるかどうか、もし存在すれば どういう形式のパッチであるかを推測しようとしていることを 示しています。 .PP ひとつでもリジェクトファイルが作成されれば、 .I patch はゼロでない終了ステータスで終了します。 いくつものパッチを繰り返し適用する場合は、 この終了ステータスをチェックし、 パッチが部分的にしか適用されていないファイルに対して さらなるパッチをあてないようにすべきです。 .SH 警告 .I patch は .I ed スクリプト形式では行番号のズレを示せません。 また normal diff 形式でも、行番号の誤りを指摘できるのは \*(L"change\*(R" コマンドや \*(L"delete\*(R" コマンドが現れる場合だけです。 context diff 形式で曖昧度 3 を指定した場合も同様の問題があります。 適切な対話インタフェースが追加されるまでは、 こういう場合は context diff を見比べて修正が意味的に正しいかどうか 確認すべきでしょう。 もちろん、エラーなくコンパイルできれば、 パッチはうまく適用されたという小さなサインにはなりますが、 必ずしもいつもそうだというわけではありません。 .PP たとえ多くの類推を行わなくてはならない場合でも、 .I patch は通常、正しい結果を生成します。 しかし、結果が正しいと保証できるのは、 パッチを作成したのと正確に同じバージョンのファイルに対して パッチを適用した場合だけです。 .SH バグ 多めの \&deviant オフセットと入れ換えコードにより、 部分的なマッチングに関して更に賢くできますが、 そのためにはパスを追加する必要がありそうです。 .PP コードが複製されている場合(例えば #ifdef OLDCODE ... #else ... #endif に よって)、 .I patch は両者にパッチをあてることができません。 そしてそこでパッチコマンドがうまくいった場合、 そのパッチはおそらく誤って適用されており、 おまけに「成功しました」と報告してきます。 .PP 既に適用済のパッチをあてると、 .I patch はそれをリバースパッチと考え、適用したパッチを外すかどうか尋ねてきます。 これも特徴の一つと解釈可能でしょう。 .rn }` '' diff --git a/ja/man/man1/pax.1 b/ja/man/man1/pax.1 index 6ef207b3d1..d89ffa17a4 100644 --- a/ja/man/man1/pax.1 +++ b/ja/man/man1/pax.1 @@ -1,1174 +1,1174 @@ .\" Copyright (c) 1992 Keith Muller. .\" Copyright (c) 1992, 1993 .\" The Regents of the University of California. All rights reserved. .\" .\" This code is derived from software contributed to Berkeley by .\" Keith Muller of the University of California, San Diego. .\" .\" 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. .\" .\" @(#)pax.1 8.4 (Berkeley) 4/18/94 .\" jpman %Id: pax.1,v 1.4 1997/08/25 03:45:37 horikawa Stab % .\" %Id: pax.1,v 1.3 1995/08/16 23:12:25 nate Exp % .\" .Dd April 18, 1994 .Dt PAX 1 .Os BSD 4.4 .Sh 名称 .Nm pax .Nd ファイルアーカイブの読み書きやディレクトリ階層のコピーを行う .Sh 書式 .Nm pax .Op Fl cdnv .Bk -words .Op Fl f Ar archive .Ek .Bk -words .Op Fl s Ar replstr .Ar ... .Ek .Bk -words .Op Fl U Ar user .Ar ... .Ek .Bk -words .Op Fl G Ar group .Ar ... .Ek .Bk -words .Oo .Fl T .Op Ar from_date .Op Ar ,to_date .Oc .Ar ... .Ek .Op Ar pattern ... .Nm pax .Fl r .Op Fl cdiknuvDYZ .Bk -words .Op Fl f Ar archive .Ek .Bk -words .Op Fl o Ar options .Ar ... .Ek .Bk -words .Op Fl p Ar string .Ar ... .Ek .Bk -words .Op Fl s Ar replstr .Ar ... .Ek .Op Fl E Ar limit .Bk -words .Op Fl U Ar user .Ar ... .Ek .Bk -words .Op Fl G Ar group .Ar ... .Ek .Bk -words .Oo .Fl T .Op Ar from_date .Op Ar ,to_date .Oc .Ar ... .Ek .Op Ar pattern ... .Nm pax .Fl w .Op Fl dituvHLPX .Bk -words .Op Fl b Ar blocksize .Ek .Oo .Op Fl a .Op Fl f Ar archive .Oc .Bk -words .Op Fl x Ar format .Ek .Bk -words .Op Fl s Ar replstr .Ar ... .Ek .Bk -words .Op Fl o Ar options .Ar ... .Ek .Bk -words .Op Fl U Ar user .Ar ... .Ek .Bk -words .Op Fl G Ar group .Ar ... .Ek .Bk -words .Op Fl B Ar bytes .Ek .Bk -words .Oo .Fl T .Op Ar from_date .Op Ar ,to_date .Op Ar /[c][m] .Oc .Ar ... .Ek .Op Ar file ... .Nm pax .Fl r .Fl w .Op Fl diklntuvDHLPXYZ .Bk -words .Op Fl p Ar string .Ar ... .Ek .Bk -words .Op Fl s Ar replstr .Ar ... .Ek .Bk -words .Op Fl U Ar user .Ar ... .Ek .Bk -words .Op Fl G Ar group .Ar ... .Ek .Bk -words .Oo .Fl T .Op Ar from_date .Op Ar ,to_date .Op Ar /[c][m] .Oc .Ar ... .Ek .Op Ar file ... .Ar directory .Sh 解説 .Nm pax は、アーカイブファイルの読み込み、書きだし、アーカイブファイルに 格納されているファイルの一覧読みだし、そしてディレクトリ階層のコピーを 行います。 .Nm pax の操作は指定したアーカイブフォーマットとは独立しており、また .Nm pax は広範囲に渡る種類のアーカイブフォーマットの操作をサポートします。 .Nm pax のサポートするアーカイブフォーマット一覧は、 .Fl x オプションの説明時に示します。 .Pp .Fl r および .Fl w は、以下の .Nm pax の機能モードのいずれかを指定するのに用いられます。その機能モードとは、 .Em 一覧表示モード、読み込みモード、書き込みモード、コピーモード の 4 つです。 .Bl -tag -width 6n .It .Em 一覧表示モードです。 .Nm pax は、 .Dv 標準入力 から読み込まれたアーカイブ内の格納ファイルのリストを .Dv 標準出力 へ書き出します。標準入力から読み込まれるファイルのパス名は、指定した .Ar pattern に一致するものが採用されます。 ファイル一覧は 1 行に 1 つのファイル名を含み、1 行バッファリングを行って 書き出されます。 .It Fl r .Em 読み込みモードです。 .Nm pax は、 .Dv 標準入力 からアーカイブ読み込み、その内に格納されたファイルのうち指定した .Ar pattern に一致するファイル名を持つファイルを展開します。 アーカイブフォーマット及びブロック化係数は、自動的に入力から決定されます。 展開されるファイルがディレクトリの場合、そのディレクトリ配下に連なる ファイル階層は完全な形で展開されます。 展開される全てのファイルは、現在のファイル階層からの相対ディレクトリに 生成されます。展開されるファイルの所有権、アクセス時刻、更新時刻、 そしてファイルモードの設定についての詳細は、 .Fl p オプションのところで述べます。 .It Fl w .Em 書き込みモードです。 .Nm pax は、 .Ar file オペランドで指定したファイル群のアーカイブを 指定したフォーマットで標準出力に書き出します。 .Ar file オペランドが指定されない場合には、1 行に 1 つずつ コピーするファイルを記述したリストを標準入力から読み込みます。 .Ar file オペランドがディレクトリの場合、そのディレクトリ配下の 全ファイルが作成されるアーカイブに含まれます。 .It Fl r Fl w .Em コピーモードです。 .Nm pax は、ファイルオペランドで指定したファイル群を、指定した .Ar ディレクトリ にコピーします。 .Ar file オペランドが指定されない場合には、1 行に 1 つずつ コピーするファイルを記述したリストを標準入力から読み込みます。 .Ar file オペランドがディレクトリの場合、そのディレクトリ配下のファイルがすべて、 コピー先として指定したディレクトリ配下に作成されます。 .Em コピーモード は、ファイルがアーカイブファイルに対して書き込まれ、 そして一方でそのアーカイブファイルが展開されるかのように見ます。 ただし、これはオリジナルファイルとコピーファイルの間に ハードリンクが張られるかも知れない事を除きます .Ns ( Fl l オプションを参照して下さい)。 .Pp .Em 注意 コピー先の .Ar ディレクトリ には、コピー元にあるものと同じファイル名の .Ar file オペランドや .Ar file オペランドで指定されるディレクトリ階層の配下にあるファイル名などを 指定してはいけません。 そのような場合、 .Em コピー の結果は予測できないものになります。 .El .Pp .Em 読み込み 操作や .Em 一覧表示 動作において壊れたアーカイブを処理する場合、 .Nm pax は媒体破損を可能な限り復旧し、 アーカイブの中から可能な限りのファイルを処理しようと試みます (エラー時の 処理の詳細は .Fl E オプションを参照して下さい)。 .Sh オペランド .Pp .Ar directory オペランドは、コピー先ディレクトリの指定を行います。 .Ar directory オペランドが存在しない場合、もしくはユーザが書き込みを出来ない、 もしくは指定したオペランドがディレクトリでない場合には、 .Nm pax は、0 以外のステータスでプログラムを終了します。 .Pp .Ar pattern オペランドは、アーカイブに格納されているファイルの名前を選択するために 用いられます。 アーカイブメンバは、 .Xr fnmatch 3 に記述のある表記に一致するパターンを用いて選択されます。 .Ar pattern オペランドが指定されない場合には、アーカイブ内に格納されている 全てのメンバが選択されます。 .Ar pattern がディレクトリ名と一致する場合には、そのディレクトリ配下の階層に 位置する全てのファイルが選択されます。 もしアーカイブ内に .Ar pattern オペランドの指定と一致する名前のファイルがない場合には、 .Nm pax は .Ar 標準エラー出力 に出力される診断メッセージにこの .Ar pattern オペランドを書き出し、0 以外のステータスでプログラムを終了します。 .Pp .Ar file オペランドは、コピーもしくはアーカイブされるファイルのパス名を指定します。 .Ar file オペランドが 1 つもアーカイブメンバを選択しない場合には、 .Nm pax は .Dv 標準エラー出力 に出力される診断メッセージにこの .Ar file オペランドの内容を書き出し、0 以外のステータスでプログラムを終了します。 .Sh オプション .Pp .Nm pax では、以下のオプションが使用可能です。 .Bl -tag -width 4n .It Fl r アーカイブファイルを .Dv 標準入力 から読み込み、 .Ar files で指定したファイルを展開します。 アーカイブされているファイルの展開に中間ディレクトリの作成が必要な場合、 これらのディレクトリは、 .Xr mkdir 2 の mode 引数のところに .Dv S_IRWXU , S_IRWXG , S_IRWXO の .Dv 論理和 を指定して呼び出された場合と同様に作成されます。 選択されたアーカイブ形式がリンクファイルの指定をサポートし、 かつアーカイブ展開時にリンク不可能である場合には、 .Nm pax は、処理が終了する時に、診断メッセージを .Dv 標準エラー出力 に書き出し、0 以外のステータスで終了します。 .It Fl w 指定したアーカイブフォーマットで、 .Dv 標準出力 にアーカイブを書き出します。 .Ar file オペランドが指定されない場合には、1 行につき展開するファイルのパス名 1 つを 記述したリストを .Dv 標準入力 から読み込みます。 このリストの各行の先頭や末尾には .Aq 空白 を入れてはいけません。 .It Fl a すでに存在するアーカイブファイルの後ろに、ファイル .Ar files を追加書き込みします。 .Fl x オプションによるアーカイブフォーマット指定がされない場合、 アーカイブフォーマットは追加書き込み対象となるアーカイブファイルの フォーマットと同一になります。 アーカイブファイルに対して、そのアーカイブファイルのフォーマットと 異なるフォーマットを用いてファイルを追加書き込みをしようとした場合、 .Nm pax は即時に 0 以外の終了ステータスでプログラム終了します。 アーカイブボリュームに最初に書き込んだブロックサイズを引き継いで、 残りのアーカイブボリュームのブロックサイズとします。 .Pp .Em 注意 : 多くの記憶装置は追加書き込み処理に必要な操作をサポートできません。 そのようなサポートしていないデバイスに対するアーカイブの追加書き込みは、 アーカイブの破損もしくは他の予期せぬ結果を招くことになります。 特に、テープドライブに対する追加書き込み処理は、最もサポートしそうにない ものです。 普通のファイルシステムのファイルとして、もしくはディスクデバイス上に 保存されているアーカイブについては、通常は追加書き込み処理をサポートします。 .It Fl b Ar blocksize アーカイブを .Em 書き出す 際、アーカイブへと書き出す内容を blocksize (正の整数) で指定したバイト数 でブロック化します。 .Ar blocksize で指定出来る値は、512 の倍数でなくてはならず、最大は 32256 です。 .Ar blocksize で指定する数は、その最後に .Li k もしくは .Li b を付加することで、1024(1K) もしくは 512 の倍数として指定できます。 .Ar blocksizes に指定する数字を .Li x で区切ることで、文字 x で区切られた数字の積がブロックサイズとして採用されます。 アーカイブの書き込みのために指定するデバイスによっては、 ブロックサイズに対してさらに制限がかかることがあります。 ブロック化が指定されない場合には、デフォルトの .Ar blocksize は使用される特定のアーカイブフォーマットに依存します。 .Ns ( Fl x オプションを参照して下さい)。 .It Fl c .Ar pattern に指定されたパターンにマッチしたファイルおよび .Ar file オペランドで指定されたファイル .Em 以外 の、全てのファイルもしくはアーカイブ内メンバにマッチします。 .It Fl d コピーもしくはアーカイブされるディレクトリ、もしくはアーカイブに格納され ているディレクトリについて、指定パターンに一致した名前のディレクトリもし くはアーカイブ内に格納されているディレクトリのみ処理し、そのディレクトリ 配下にあるファイルについては処理しません。 .It Fl f Ar archive .Ar archive で指定したファイルを入力元のアーカイブもしくは出力先のアーカイブに指定し ます。この場合、デフォルトの .Dv 標準入力 .Ns ( Em 一覧表示モード および .Em 読み込みモード の場合) もしくは .Dv 標準出力 .Ns ( Em 書き込みモード ) については無視されます。 1 つのアーカイブが複数のファイルもしくは異なるアーカイブデバイスに渡って も構いません。必要があった場合、 .Nm pax は、アーカイブの格納されている次のボリュームのファイルもしくはデバイスの パス名の入力を促します。 .It Fl i 対話的にファイルもしくはアーカイブ内に格納されるファイルのリネームを行います。 .Ar pattern で指定した文字列パターンに一致するアーカイブ内の格納ファイルもしくは .Ar file オペランドの指定に一致するファイルについて、 .Nm pax は .Pa /dev/tty に対してファイルの名前やファイルモード、そしてファイルの更新時刻を表示して 入力を促します。 それから .Nm pax は .Pa /dev/tty からデータを 1 行読み込みます。 その行が空行だった場合には、その時のファイルもしくはアーカイブ内の 格納ファイルについては、処理を行いません。 その行がピリオド 1 つだけの行だった場合には、その時のファイルもしくは アーカイブ内の格納ファイルについては、ファイル名についての更新は行いません。 それ以外の場合には、ファイル名はその行の文字列で指定した名前に変更されます。 上記操作中に .Dv を .Pa /dev/tty から受けとった場合、もしくは何らかの理由で .Pa /dev/tty をオープン出来なかった場合、 .Nm pax は 0 以外の終了ステータスで即座に終了します。 .It Fl k すでに存在するファイルに対する上書きをしません。 .It Fl l (アルファベットの ``エル'' ) ファイルをリンクします。 .Em コピーモード .Ns ( Fl r .Fl w ) の場合には、コピー元コピー先間には可能な限りハードリンクが作成されます。 .It Fl n アーカイブに格納されるファイルのうち、各 .Ar pattern オペランドに指定した文字列パターンに一致するファイル名を持つ最初のものを 選択します。 アーカイブに格納されるファイルのうち .Ar pattern オペランドに指定した文字列パターン に一致するもので、2 つめ以降のものは選択されません。 文字列パターンで指定した条件に合致するものがディレクトリだった場合、 そのディレクトリ配下のファイルについても選択されたものとみなされます(ただし、 .Fl d オプションが指定された場合にはこの限りではありません)。 .It Fl o Ar options .Fl x で指定されるアーカイブフォーマットから特定される、 アーカイブファイル展開/書き出しアルゴリズムの更新情報を指定します。 一般的に、 .Ar options は .Cm name=value のように指定されます。 .It Fl p Ar string 1 つ以上のファイルの属性操作に関する動作をオプション指定します。 .Ar string オプション引数は、ファイル展開時に、展開ファイルの属性を保存するか破棄す るかを指定する文字列です。 string は、 .Cm a , e , m , o , p の 5 つの指定文字から成ります。 複数の属性を同じ文字列の中につなげて記述したり、複数の .Fl p オプションを指定したりすることもできます。 これらの文字は、以下のように動作の指定を行います: .Bl -tag -width 2n .It Cm a ファイルのアクセス時間を保存しません。 デフォルトでは、ファイルのアクセスタイムは可能な限り保存されます。 .It Cm e ファイルのユーザ ID, グループ ID, ファイルモードのビット、ファイルの アクセス時間、ファイルの更新時間、これらの .Sq 全ての属性を保存します。 本オプションは、 .Em スーパユーザ、 もしくは適正な権限を持ったユーザによって 使用されることを推奨します。 これは、アーカイブ内に格納されたすべてのファイルについて、 そのファイルの特性を保存するためです。 フラグを指定した場合は、 .Cm o および .Cm p フラグを指定したのと同様の効果を持ちます。 .It Cm m ファイルの更新時間を保存しません。 デフォルトでは、ファイルの更新時間は可能な限り保存されます。 .It Cm o ユーザ ID とグループ ID を保存します。 .It Cm p ファイルモードのビットを .Sq 保存します。 本オプションは、 ファイルについて、所有者情報以外の全ての情報の保存を希望するなど適正な 権限を持った .Em ユーザ に使用されることを推奨しています。 ファイルの時刻はデフォルトで保存されますが、 これを無効にしたり、展開時の時刻を用いるようにするために 別に 2 つのフラグが用意されています。 .El .Pp 先述のオプション一覧にて、 .Sq 属性の保存 とは、起動したプロセスの権限に応じて アーカイブ内に保存された属性が展開ファイルに反映されることを意味します。 これ以外の場合は、展開されるファイルの属性は、 通常のファイル生成と同様に決定されます。 .Cm e と .Cm o のどちらも指定されない場合、あるいは ユーザ ID とグループ ID がいかなる理由にせよ保存されない場合、 .Nm pax はファイル属性中の .Dv S_ISUID .Em ( setuid ) および .Dv S_ISGID .Em ( setgid ) のビットを設定しません。 これらの情報の引き継ぎが何らかの理由で失敗した場合、 .Nm pax は診断メッセージを .Dv 標準エラー出力 に書き出します。 これらの情報の保存失敗は、最終的な終了ステータスに影響しますが、 展開されたファイルが削除されるようなことはありません。 ファイル属性の操作に関するオプション文字が重複していたり、 他のオプション文字と処理上の競合を起こす場合には、 それらのオプションの中で一番最後に記述されたものの処理が採用されます。 例えば、 .Dl Fl p Ar eme が指定された場合には、ファイルの更新時間は保存されます。 .It Fl s Ar replstr アーカイブ内に格納されているファイルのうち、 .Ar pattern オペランドもしくは .Ar file オペランドで指定されたもののファイル名を、 .Ar replstr で指定された置換表現にしたがって更新します。この置換表現は、 .Xr ed 1 にて記述されている正規表現の書法に準じます。 これらの正規表現の書式は .Dl /old/new/[gp] です。 .Xr ed 1 に示されるように、 .Cm old は基本的な正規表現であり、 .Cm new はアンパサンド (&)、後方参照 \\n (nの部分は数字が入ります)、 補助表現を含むことができます。 文字列 .Cm old には、 .Dv 改行文字 を含んでも構いません。 ヌル文字以外のいかなる文字も、区切り文字として用いることが可能です (ここでは / を示しました)。 また、複数の .Fl s 表現を指定することが許されています。 これらの表現はコマンドラインで指定された順に適用され、 最初の置換が成功した時点でその置換を終了します。 置換処理の追加処理指定として、 .Cm g を指定した場合には、継続してファイル名の置換を行うことを指示します。 この場合、前回置換に成功した直後の文字から継続して置換を行います。 そして最初に置換を失敗したときに .Cm g オプションの処理を終了します。 置換処理の追加処理指定として .Cm p を指定した場合には、最初の置換成功結果を .Dv 標準エラー出力 に以下のフォーマットで書き出します: .Dl >> 空白文字に置換される通常ファイルもしくはアーカイブ内に格納されたファイルの ファイル名は、処理対象として選択されず、そのファイル名に対する 処理はスキップされます。 .It Fl t .Nm pax が読み込んだ、もしくはアクセスした全てのファイルやディレクトリの アクセス時間を、 .Nm pax がそれらのファイルやディレクトリを処理する前のものに再設定します。 .It Fl u 同じ名前ですでに存在するファイルやアーカイブ内に格納されているファイルより 古い (ファイル更新時刻が古い) ファイルを無視します。 .Em 読み込み処理 においては、アーカイブ内のファイルにファイルシステム上にすでに存在するものと 同じ名前のファイルがあり、アーカイブ内のファイルの方が新しい場合に、 アーカイブ内のファイルが展開されます。 .Em 書き込み処理 においては、ファイルシステム上のファイルとアーカイブ内のファイルの名前が 同じもので、かつファイルシステム上のファイルの方がアーカイブ内のものより も新しい場合に、ファイルシステム上のファイルのアーカイブへの格納が行われます。 .Em コピー処理 においては、コピー先にあるファイルとコピー元にあるファイルが同一のファイル名 を持ち、かつコピー元にあるファイルの方が新しい場合に、 コピーあるいはリンクが行われます。 .It Fl v .Em 一覧表示処理 において、 .Xr ls 1 コマンドの .Fl l オプションを用いた時の表示と同じ形式を用いて、アーカイブ内容の表示を行います。 アーカイブの他のメンバとの間にハードリンクを構成するファイルのパス名に ついては、以下のフォーマットで出力されます。 .Dl == アーカイブの他のメンバとの間にシンボリックリンクを構成するファイルの パス名については、以下のフォーマットで出力されます。 .Dl => ここで の箇所は、 .Xr ls 1 コマンドを .Fl l オプションを付けて実行した場合の出力形式になります。 他のオプショナルモード (読み込みモード、書き込みモード、そしてコピーモード) の場合には、当該ファイルもしくはアーカイブ内のファイルの処理が始まるとすぐに、 それらのパス名が末尾の .Dv 改行文字 なしで .Dv 標準エラー出力 に書き込まれ、フラッシュされます。 ファイル名に付随する .Dv 改行文字 はバッファリングされることなく、ファイルが読み込まれたもしくは書き込まれた 直後に書き出されます。 .It Fl x Ar format 出力されるアーカイブフォーマットを指定します。デフォルトフォーマットは、 .Ar ustar フォーマットです。 .Nm pax は、現在以下のアーカイブフォーマットをサポートします: .Bl -tag -width "sv4cpio" .It Ar cpio .St -p1003.2 -standard にて規定される、拡張 cpio インタチェンジフォーマットです。 +標準にて規定される、拡張 cpio 交換形式です。 本フォーマットのデフォルトブロックサイズは、5120 バイトです。 このフォーマットで欠落するファイルの inode およびデバイス情報 (この フォーマットでファイルのハードリンクの検出に用いられます) は、 .Nm pax にて検出され、復元されます。 .It Ar bcpio 古い binary cpio フォーマットです。 本フォーマットのデフォルトのブロックサイズは、5120 バイトです。 本フォーマットはポータビリティがそれほどよくないので、別のフォーマットが 使えるならば、そちらを使用したほうがよいでしょう。 このフォーマットで欠落するファイルの inode およびデバイス情報 (この フォーマットでファイルのハードリンクの検出に用いられます) は、 .Nm pax にて検出され、復元されます。 .It Ar sv4cpio Unix System V Release 4(SVR4) の cpio フォーマットです。 本フォーマットのデフォルトのブロックサイズは 5120 バイトです。 このフォーマットで欠落するファイルの inode およびデバイス情報 (この フォーマットでファイルのハードリンクの検出に用いられます) は、 .Nm pax にて検出され、復元されます。 .It Ar sv4crc SVR4 で使用される、ファイルの crc チェックサムつきの cpio フォーマットです。 本フォーマットのデフォルトのブロックサイズは 5120 バイトです。 このフォーマットで欠落するファイルの inode およびデバイス情報 (この フォーマットでファイルのハードリンクの検出に用いられます) は、 .Nm pax にて検出され、復元されます。 .It Ar tar BSD4.3 から用いられている古い BSD tar フォーマットです。 本フォーマットのデフォルトのブロックサイズは、10240 バイトです。 本フォーマットでは、アーカイブ内に格納されるファイルのパス名は 100 文字以内 でなくてはなりません。 .Em 通常ファイル、ハードリンクファイル、 .Em シンボリックリンクファイル、ディレクトリ のみがアーカイブ内に格納されます (他のファイルシステムタイプについては、 サポートされません)。 さらに古い tar フォーマットとの過去の互換性は、 .Fl o オプションを用いて、アーカイブへのファイル保存時に ディレクトリを無視することで実現されます。 本オプションは、以下のように指定します: .Dl Fl o Cm write_opt=nodir .It Ar ustar .St -p1003.2 -standardにて規定される、 -拡張 tar インタチェンジフォーマットです。 +標準にて規定される、 +拡張 tar 交換形式です。 本フォーマットのデフォルトのブロックサイズは、10240 バイトです。 本フォーマットのアーカイブ内に保存されるファイルのパス名は、250 文字以下 の長さでなくてはなりません。 .El .Pp .Nm pax は、指定したアーカイブフォーマットの制限に起因して、ファイルの アーカイブへの格納もしくはアーカイブからのファイルの展開が出来ない場合には、 それを検出し、報告します。 各アーカイブフォーマットを使用した場合には、 使用時に更にそのアーカイブフォーマットの制限が課せられることがあります。 典型的なアーカイブフォーマットの制限は、ファイルのパス名の長さ、 ファイルサイズ、リンクファイルの指すファイルのパス名の長さ、 そしてファイルタイプなど。 (なお、制限要素はこれらに限られるわけではありません。) .It Fl B Ar bytes 単一のアーカイブボリュームに書き出される最大データ長を、 .Ar bytes で制限します。 .Ar bytes パラメータの末尾には .Li m , .Li k , .Li b のいずれかの文字を付加でき、それぞれ 1048576 (1M), 1024 (1K), 512 の倍数を 意味します。 また、 .Ar bytes に指定する数字を .Li x で区切ることで、文字 x で区切られた数字の積がブロックサイズとして採用されます。 .Pp .Em 警告 : 最後の (もしくは最大の) 書き込み時のオフセットに基づいた EOF をサポートする デバイス (テープや通常ファイルなどのようなもの) にアーカイブを書き出す時 にのみ本オプションを使って下さい。 本オプションをフロッピーやハードディスクデバイスファイルに対して用いる ことは、推奨しません。 .It Fl D 本オプションは、 .Fl u オプションと同様の動作を行いますが、ファイルの更新時間の代わりに ファイルの inode 変更時間がチェックされるところが異なります。 ファイルの inode 変更時間は、inode 情報 (ユーザ ID、グループ ID、その他) が コピー先のディレクトリ .Ar directory にあるものよりも新しいファイルを選択するのに用いられます。 .It Fl E Ar limit 部分的に破損したアーカイブの読み込みをリトライする際、その読み込み失敗回数を .Ar limit までに制限します。 .Ar limit に正の数を指定した場合、 .Nm pax はアーカイブの読み込みエラーからの復帰を試行し、アーカイブに格納されて いる次のファイルから処理を継続します。 .Ar limit が 0 の場合、 .Nm pax は最初のリードエラーがアーカイブボリュームに発生したところで処理を停止します。 .Ar limit が .Li NONE の場合には、読み込み失敗からの復帰を永遠に試行します。 デフォルトの .Ar limit の値は、小さい正の整数(リトライ回数)です。 .Pp .Em 警告 : .Nm pax コマンドを、本オプションを .Li NONE 指定して起動する場合には十分に気をつけて下さい。 というのも、処理対象となるアーカイブがぼろぼろに破損していた場合には、 処理が無限ループに陥る可能性があるからです。 .It Fl G Ar group グループ名が .Ar group で指定したものであるファイルを選択します。 グループ名が .Cm # で始まる場合には、ファイルのグループ ID がそれに連なる数字のものを 選択します。'\\' を用いて .Cm # をエスケープすることができます。 .Fl G オプションは、複数指定することが可能です。 この場合、最初にグループ名もしくはグループIDが一致したらところで チェックは停止します。 .It Fl H 物理的にファイルシステムトラバースを行いながら、 コマンドラインで指定されたファイルについてのみ シンボリックリンクをたどります。 .It Fl L 全てのシンボリックリンクファイルをたどります。 すなわち、論理的にファイルシステムトラバースを行います。 .It Fl P シンボリックリンクをたどりません。 すなわち、物理的にファイルシステムトラバースを行います。 デフォルトはこのモードです。 .It Fl T Ar [from_date][,to_date][/[c][m]] ファイル更新時間もしくは inode 更新時間が .Ar from_date から .Ar to_date の間 (それぞれで指定した時間も含みます) にあるファイルを選択します。 .Ar from_date のみ指定された場合には、ファイル更新時間もしくは inode 更新時間が その時間と同じかそれより新しいもののみ選択されます。 .Ar to_date のみ指定された場合には、ファイル更新時間もしくは inode 更新時間が その時間と同じかそれより古いもののみ選択されます。 .Ar from_date と .Ar to_date が等しい場合には、ファイル更新時間もしくは inode 更新時間が その時間と等しいものが選択されます。 .Pp .Nm pax が .Em 書き込みモード もしくは .Em コピーモード の場合には、オプションフィールドとして .Ar [c][m] を指定することが可能です。このフィールドは、時間の比較に inode更新時間と ファイル更新時間のどちら(あるいは両方)を使うかを決定します。 どちらも指定されない場合(デフォルト時)には、ファイル更新時間のみが用いられます。 .Ar m は、ファイル更新時間 (ファイルへの書き込みが最後に行われた時間) を 比較対象として用います。 .Ar c は、inode 更新時間 (inode が最後に更新された時間。例えば所有者、 グループ、モードその他が更新された時間) を比較対象として用います。 .Ar c と .Ar m の両者が指定された場合、ファイル更新時間と inode 更新時間の両者が比較対象 になります。 inode 更新時間の比較は、最近属性が変更されたファイルや 最近作成されたファイル、そしてファイル更新時間が古いものに再設定された ファイル (ファイル更新時間を保存するオプションを用いてアーカイブから 展開されたファイルなどがこれにあたります) を選択するのに便利です。 ファイル時間も併用して時間比較をする機能は、 .Nm pax を用いて、 時間を基準にしたインクリメンタルアーカイブ (指定した期間内に更新された ファイルのみアーカイブすること) を行うのに便利です。 .Pp 時間の範囲は、6 つの異なるフィールドから成り、各フィールドは 2 ケタの数字を 含む必要があります。 その形式は以下の通りです: .Dl [yy[mm[dd[hh]]]]mm[.ss] .Cm yy は、年号 (西暦) の最後の 2 桁です。 最初の .Cm mm は、月 (01 から 12) です。 .Cm dd は、日付 (01 から 31 まで) です .Cm hh は、時 (00 から 23 まで) です。 2 番めの .Cm mm は、分 (00 から 59 まで)です。 そして、 .Cm ss は、秒 (00 から 59 まで)です。 分のフィールドの .Cm mm は、省略不可であり、他のフィールドはオプションであり、以下の順序で 付加されなければなりません: .Dl Cm hh , dd , mm , yy ただし、 .Cm ss フィールドだけは、他のフィールドとは独立して付加可能です。 時間の範囲は、現在時刻からの相対値で表され、 .Dl Fl T Ar 1234/cm は、本日の 12:34 PM から後のファイル更新時間、もしくは inode 更新時間を持つ ファイルを選択することを表します。 複数の .Fl T による時間範囲指定を行うことが許可されており、 指定した範囲のうちいずれかと一致したら、その後の範囲チェックは行いません。 .It Fl U Ar user ファイルの所有者名 .Ar user に基づいて、ファイル選択が行われます。所有者名が .Cm # で始まる場合には、ファイルの UID がそれに連なる数字のものを 選択します。'\\' を用いて .Cm # をエスケープすることができます。 複数の .Fl U オプションを指定することが許されており、その指定の中で最初にユーザが 一致した場合には、それ以降のユーザ名のチェックは行いません。 .It Fl X パス名で指定されたファイル階層をトラバースする場合に、異なるデバイス ID を 持つディレクトリへは下りていきません。 デバイス ID について詳細な情報を取得したい場合には、 .Xr stat 2 の .Li st_dev フィールドを参照して下さい。 .It Fl Y 本オプションは、 .Fl D オプションと動作が似ていますが、全てのファイル名更新が終了した後、 生成されたパス名を用いて inode 更新時間をチェックするところが異なります。 .It Fl Z 本オプションは、 .Fl u オプションと動作が似ていますが、全てのファイル名更新が終了した後、 生成されたパス名を用いて、ファイル更新時間をチェックするところが異なります。 .El .Pp ファイルもしくはアーカイブ内に格納されたファイルについての操作を制御する オプション ( .Fl c , .Fl i , .Fl n , .Fl s , .Fl u , .Fl v , .Fl D , .Fl G , .Fl T , .Fl U , .Fl Y , .Fl Z ) は、相互に以下のような影響を及ぼします。 .Pp .Em 読み込み 処理におけるファイル展開時には、 展開されるファイルは、まず、アーカイブ内に格納されるファイルのうち .Fl c , .Fl n , .Fl u , .Fl D , .Fl G , .Fl T , .Fl U のそれぞれのオプションを用いて指定されるユーザ指定のパターンオペランド に基づいて選択されます。 それらのファイルの中から .Fl s および .Fl i オプションがこの順に、選択されたファイル名を修正します。 それから、最終的なファイル名にて .Fl Y および .Fl Z オプションによる条件を用いて絞り込みを行い、処理するファイルのパス名が 決まります。 そして最後に、 .Fl v オプションは、これまでの処理結果として得られた名前をファイル名として 書き出します。 .Pp .Em 書き込み 操作や .Em コピー 操作のファイルアーカイブでは、以下のオプション .Fl n , .Fl u , .Fl D , .Fl G , .Fl T , .Fl U ( .Fl D オプションはコピー操作時のみ適用されます) によって アーカイブメンバのファイルを選択します。 続いて、それらのファイルの中から .Fl s および .Fl i オプションがこの順に、選択されたファイル名を修正します。 それから .Em コピー 処理においては、最終的なファイル名にて .Fl Y および .Fl Z オプションによる条件を用いて絞り込みを行い、処理するファイルのパス名が 決まります。 そして最後に、 .Fl v オプションは、これまでの処理結果として得られた名前をファイル名として 書き出します。 .Pp .Fl n といっしょに .Fl u オプションあるいは .Fl D オプションのどちらか、もしくは両方が指定された場合、そのファイルが 比較対象のファイルより新しくなければ、そのファイルは選択されたとは みなされません。 .Sh 使用例 コマンド: .Dl pax -w -f /dev/rst0 .\ は、カレントディレクトリの内容を .Pa /dev/rst0 にコピーします。 .Pp コマンド: .Dl pax -v -f filename は、 .Pa filename で指定したアーカイブに格納されているファイル内容の詳細な一覧を表示します。 .Pp 以下のコマンド: .Dl mkdir newdir .Dl cd olddir .Dl pax -rw .\ newdir を実行すると、 .Pa olddir 配下のディレクトリ階層全体を .Pa newdir にコピーします。 .Pp コマンド: .Dl pax -r -s ',^//*usr//*,,' -f a.pax は、アーカイブファイル .Pa a.pax からデータを読み込み、アーカイブ中の ``/usr'' 配下のファイルを全て、 カレントディレクトリからの相対ディレクトリに展開します。 .Pp コマンド: .Dl pax -rw -i .\ dest_dir は、カレントディレクトリから .Pa dest_dir ディレクトリにコピーしますが、ファイルをコピーするかどうかを 対話的に選択します。 .Pp コマンド: .Dl pax -r -pe -U root -G bin -f a.pax は、 .Pa a.pax 中に格納されているファイルのうち、所有者が .Em root でグループが .Em bin であるファイルを選択し、すべてのファイル属性を保存して展開します。 .Pp コマンド: .Dl pax -r -w -v -Y -Z home /backup は、コピー先ディレクトリ .Pa /backup にあるファイルのうち、コピー元ディレクトリ .Pa home に存在する同名のファイルより (inode 更新時刻もしくは ファイル更新時刻が) 古いものについて更新を行い、一覧表示します。 .Sh 規格 .Nm pax ユーティリティは、 .St -p1003.2 標準のスーパセットです。 オプション .Fl B , .Fl D , .Fl E , .Fl G , .Fl H , .Fl L , .Fl P , .Fl T , .Fl U , .Fl Y , .Fl Z 、アーカイブ形式 .Ar bcpio , .Ar sv4cpio , .Ar sv4crc , .Ar tar 、および .Ar 一覧表示 モードと .Ar 読み込み モードにおける破損したアーカイブの取り扱いは、 .Tn POSIX 標準に対する拡張です。 .Sh 作者 Keith Muller at the University of California, San Diego .Sh エラー .Nm pax は、以下の値のいずれかで終了します: .Bl -tag -width 2n .It 0 すべてのファイルは正常に処理されました。 .It 1 エラーが発生しました。 .El .Pp アーカイブ読み込み中に .Nm pax がファイルを作成できない場合やリンクを張れない場合、 アーカイブに書き込み中にファイルが見つからない場合、 .Fl p オプション指定時にユーザ ID、グループ ID、ファイル属性を保存できない場合には、 診断メッセージが .Dv 標準エラー出力に 書き出され、0 以外の終了ステータスが返却されますが、 処理自体は継続して行われます。 ファイルへのリンクを作成できない場合には、 .Nm pax はファイルの二次コピーを作成しません。 .Pp アーカイブからのファイルの展開が、シグナル受信もしくはエラー発生により 途中で異常終了した場合、 .Nm pax はユーザが指定したファイルの一部分だけを展開して終了する可能性があります。 更に、展開したファイルやディレクトリの属性が不正であったり、 アクセス時間、更新時間も不正である可能性があります。 .Pp アーカイブの生成が、シグナル受信もしくはエラー発生により 途中で異常終了した場合、 .Nm pax は中途半端なアーカイブを生成している可能性があります。 このようなアーカイブは 特定のアーカイブフォーマット規定を満足していない可能性があります。 .Pp .Em コピー を行っている最中に、 .Nm pax が読み出したのと同じファイルへの書き込みを検出した場合、 そのファイルはコピーされず、診断メッセージが .Dv 標準エラー出力 へ書き出され、 .Nm pax は 0 以外の終了ステータスでプログラム終了します。 diff --git a/ja/man/man1/perl.1 b/ja/man/man1/perl.1 index 60dcfca0fa..845f6985ec 100644 --- a/ja/man/man1/perl.1 +++ b/ja/man/man1/perl.1 @@ -1,5933 +1,5933 @@ .rn '' }` .\" jpman %Id: perl.1,v 1.5 1997/10/11 07:57:22 horikawa Stab % ''' %RCSfile: perl.1,v %%Revision: 1.3.2.1 %%Date: 1997/10/12 08:11:42 % ''' ''' %Log: perl.1,v % ''' Revision 1.3.2.1 1997/10/12 08:11:42 jmg ''' MFC: spelling fixes ''' ''' Revision 1.4 1997/08/30 12:22:46 jmg ''' fix a few spelling changes ''' ''' Submitted by: Josh Gilliam ''' ''' Closes PR's: 4429, 4431-4438 ''' ''' PS: He has agreed to submit all contrib fixes back to the original author. ''' ''' Revision 1.3 1996/10/05 22:26:23 wosch ''' delete doubled words, e.g.: "the the" -> "the" ''' ''' Revision 1.2 1994/10/27 23:16:52 wollman ''' Convince Perl to that is is part of the system, as /usr/bin/perl (binary) ''' and /usr/share/perl (library). The latter was chosen as analogous to other ''' directories already present in /usr/share, like /usr/share/groff_font and ''' (particularly) /usr/share/mk. ''' .\" Revision 1.1.1.1 1994/09/10 06:27:36 gclarkii .\" Initial import of Perl 4.046 bmaked .\" .\" Revision 1.1.1.1 1993/08/23 21:29:37 nate .\" PERL! .\" ''' Revision 4.0.1.6 92/06/08 15:07:29 lwall ''' patch20: documented that numbers may contain underline ''' patch20: clarified that DATA may only be read from main script ''' patch20: relaxed requirement for semicolon at the end of a block ''' patch20: added ... as variant on .. ''' patch20: documented need for 1; at the end of a required file ''' patch20: extended bracket-style quotes to two-arg operators: s()() and tr()() ''' patch20: paragraph mode now skips extra newlines automatically ''' patch20: documented PERLLIB and PERLDB ''' patch20: documented limit on size of regexp ''' ''' Revision 4.0.1.5 91/11/11 16:42:00 lwall ''' patch19: added little-endian pack/unpack options ''' ''' Revision 4.0.1.4 91/11/05 18:11:05 lwall ''' patch11: added sort {} LIST ''' patch11: added eval {} ''' patch11: documented meaning of scalar(%foo) ''' patch11: sprintf() now supports any length of s field ''' ''' Revision 4.0.1.3 91/06/10 01:26:02 lwall ''' patch10: documented some newer features in addenda ''' ''' Revision 4.0.1.2 91/06/07 11:41:23 lwall ''' patch4: added global modifier for pattern matches ''' patch4: default top-of-form format is now FILEHANDLE_TOP ''' patch4: added $^P variable to control calling of perldb routines ''' patch4: added $^F variable to specify maximum system fd, default 2 ''' patch4: changed old $^P to $^X ''' ''' Revision 4.0.1.1 91/04/11 17:50:44 lwall ''' patch1: fixed some typos ''' ''' Revision 4.0 91/03/20 01:38:08 lwall ''' 4.0 baseline. ''' ''' .de Sh .br .ne 5 .PP \fB\\$1\fR .PP .. .de Sp .if t .sp .5v .if n .sp .. .de Ip .br .ie \\n(.$>=3 .ne \\$3 .el .ne 3 .IP "\\$1" \\$2 .. ''' ''' Set up \*(-- to give an unbreakable dash; ''' string Tr holds user defined translation string. ''' Bell System Logo is used as a dummy character. ''' .tr \(*W-|\(bv\*(Tr .ie n \{\ .ds -- \(*W- .if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch .if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch .ds L" "" .ds R" "" .ds L' ' .ds R' ' 'br\} .el\{\ .ds -- \(em\| .tr \*(Tr .ds L" `` .ds R" '' .ds L' ` .ds R' ' 'br\} .TH PERL 1 "\*(RP" .UC .SH 名称 perl \- 実用的抽出とレポートのための言語 .SH 書式 .B perl [options] filename args .SH 解説 .I perl は、任意のテキストファイルを走査し、そこから情報を取り出し、情報に基づ いたレポートを出力するために最適化されたインタプリタ言語です。 また、多くのシステム管理作業に適した言語でもあります。 .I perl は美しい (小さい、エレガント、最小) というよりは、むしろ実用的 (使いやすい、効率的、完全) であることをめざしています。 .I perl は、C, \fIsed\fR, \fIawk\fR, and \fIsh\fR, の最も良いところを 組み合わせてある (作者の意向としては、でありますが) ので、これらの言語に なじみのある人には、容易に使えるでしょう。 (言語歴史学者なら、\fIcsh\fR, Pascal, そして BASIC-PLUS の痕跡にさえも 気がつくでしょう。) 式の書式は、C のものに極めて似ています。 他の多くの UNIX ユーティリティと異なり、 .I perl は、データのサイズを勝手に制限するようなことはなく (メモリのある限りです)、 ファイル全体を一つの文字列として読み込んでしまえます。 再帰の深さには制限がありません。連想配列で使われるハッシュテーブルは、 パフォーマンスの低下を防ぐため、必要に応じて大きくなります。 .I perl は、大量のデータを非常に迅速に走査する洗練されたパターンマッチ テクニックを使います。 テキスト走査に最適化されてはいますが、 .I perl はバイナリデータも扱うこともできて、(dbm が使えるなら) 連想配列に似た dbm ファイルを作れます。 setuid .I perl スクリプトは、多くの馬鹿らしいセキュリティホールを防ぐデータフロー追跡 機構により、C のプログラムより安全です。 普通なら \fIsed\fR, \fIawk\fR, \fIsh\fR を使うような問題で、その能力を 越えていたり、もう少し速く走らせなければならなかったり、 くだらないことを C で書きたくないような場合に .I perl がぴったりです。 既存の .I sed や .I awk スクリプトを .I perl スクリプトにする変換プログラムもあります。 さあ、宣伝はこれで十分でしょう。 .PP まず始めに、 .I perl 次の場所からスクリプトを探します。 .Ip 1. 4 2 コマンドライン上の .B \-e スイッチで指定された行。 .Ip 2. 4 2 コマンドライン上で、最初に指定されたファイルの内容。 (#! の表記をサポートするシステムは、インタプリタをこうして起動します) .Ip 3. 4 2 標準入力から暗黙のうちに読み込まれます。これは、ファイル名の指定が一つ もない場合にだけ働きます。\*(-- .I 標準入力 スクリプトに引数を渡すには、スクリプト名として明示的に \- を 指定しなければなりません。 .PP スクリプトを見つけると、 .I perl は内部形式にコンパイルし、スクリプトが文法的に正しければ それを実行します。 .Sh "オプション" 注意: 最初にこのセクションを読んでも意味がわからないかもしれません。 簡単なリファレンスとして前半部分になっています。 .PP 一文字オプションは、次に続くオプションとくっつけてもかまいません。 #! 構造を使うスクリプトを起動する際には一つの引数しか許されないの で、特に便利です。 例: .nf .ne 2 #!/usr/bin/perl \-spi.bak # \-s \-p \-i.bak と同じ .\|.\|. .fi 以下のオプションがあります: .TP 5 .BI \-0 数字 レコードセパレータ ($/) を 8 進数で指定します。 数字がないと、ヌルキャラクタがセパレータになります。 他のコマンドラインスイッチは、前に置くか、もしくは数字の後に続けます。 例えば、ヌル文字を終端としたファイル名を表示可能なバージョンの .I find なら、このように書けます。 .nf find . \-name '*.bak' \-print0 | perl \-n0e unlink .fi 00 は特殊な値で、 .I perl はファイルをパラグラフモードで読み込みます。 0777 という値を使うと、この値の文字はないので、ファイル全体を 読み込みます。 .TP 5 .B \-a .B \-n や .BR \-p オプションと一緒に用いて、オートスプリットモードを ON にします。 .B \-n や .BR \-p オプションで自動的に生成される while ループの内側の 最初のところで、@F 配列に対して暗黙の split コマンドが行なわれます。 .nf perl \-ane \'print pop(@F), "\en";\' は、次の例と同等になります。 while (<>) { @F = split(\' \'); print pop(@F), "\en"; } .fi .TP 5 .B \-c .I perl スクリプトの文法をチェックし、実行せずに終了します。 .TP 5 .BI \-d perl デバッガのもとでスクリプトを実行します。 デバッグのセクションを参照して下さい。 .TP 5 .BI \-D 数字 デバッグフラッグをセットします。 スクリプトがどのように実行されるかを見るには、 .BR \-D14 を使います。 (これはデバッグ機能を .IR perl に組み込んでコンパイルした時にのみ動作します。) \-D1024 も有用な値で、コンパイルされた文法ツリーをリストします。 \-D512 を使うと、コンパイルされた正規表現を出力します。 .TP 5 .BI \-e " コマンドライン" 一行スクリプトを入力する場合に使えます。 複数行スクリプトを組み立てるには、複数の .B \-e コマンドを指定すればできます。 .B \-e が与えられると、 .I perl は引数のリストの中からスクリプトファイル名を探しません。 .TP 5 .BI \-i 拡張子 <> 構造で処理されるファイルをその場で修正することを指定します。 入力ファイルをリネームし、出力ファイルを元の名前でオープンし、出力ファイルを print 文のデフォルト出力にすることで処理されます。 拡張子が与えられれば、バックアップファイルの名前として元のファイル名に その拡張子を加えたものが使われます。 拡張子が与えられなければ、バックアップファイルは作成されません。 \*(L"perl \-p \-i.bak \-e "s/foo/bar/;" .\|.\|. \*(R" を実行することは、 次のスクリプトと同じです。 .nf .ne 2 #!/usr/bin/perl \-pi.bak s/foo/bar/; これは以下のものとも同等になります。 .ne 14 #!/usr/bin/perl while (<>) { if ($ARGV ne $oldargv) { rename($ARGV, $ARGV . \'.bak\'); open(ARGVOUT, ">$ARGV"); select(ARGVOUT); $oldargv = $ARGV; } s/foo/bar/; } continue { print; # 元の名前のファイルに出力する } select(STDOUT); .fi ただし、 .B \-i を用いた方法では、ファイル名が変更された時刻を知るために $ARGV と $oldargv を 比較する必要がないという点が異なります。 実際にはファイルハンドルとして ARGVOUT がセレクトされて使われます。 .I STDOUT がデフォルト出力のファイルハンドルとして保存され、 ループのあとで戻されることに注意して下さい。 .Sp 入力ファイルすべてに追加を行なう場合や、行番号をリセットしたりする場合、 各入力ファイルの終わりを知るために `eof' を使うことができます。 (eof の例を参照して下さい) .TP 5 .BI \-I ディレクトリ .B \-P と一緒に用いて C プリプロセッサにインクルードファイルの位置を 知らせます。デフォルトでは、/usr/include と /usr/lib/perl を検索します。 .TP 5 .BI \-l 8進数 行末処理を自動的に行ないます。これには二つの効果があります。 まず、 .B \-n や .B \-p と共に使われることで、行ターミネータを自動的に除きます。 二つ目は、$\e が、 .I 8進数 をセットし、print 文がすべて最後に行末文字をつけるということです。 .I 8進数 が省略された場合は、$\e に $/ の現在の値をセットします。 例えば、行を 80 コラムに切り揃えるためには: .nf perl -lpe \'substr($_, 80) = ""\' .fi $\e = $/ という代入はコマンドラインスイッチが処理される時に 行なわれるので、 .B \-l スイッチに .B \-0 が続くときは、入力レコードセパレータと出力レコードセパレータが 異なることもあり得るということに注意して下さい。 .nf gnufind / -print0 | perl -ln0e 'print "found $_" if -p' .fi これは、$\e に改行をセットし、$/ にはヌル文字をセットします。 .TP 5 .B \-n スクリプトの前後に下に示すループがあるものとして .I perl を起動します。こうすると、引数のファイル全部について \*(L"sed \-n\*(R" または \fIawk\fR と同じような繰り返しが行なわれます: .nf .ne 3 while (<>) { .\|.\|. # ここにスクリプトが来ます } .fi デフォルトで入力行の出力はされないことに注意して下さい。 出力したければ .B \-p を参照して下さい。 以下は、1 週間より古いファイルすべてを削除する効率的な方法です。 .nf find . \-mtime +7 \-print | perl \-nle \'unlink;\' .fi この場合、ファイルが見つかるたびにプロセスを開始する必要がないので、 find の \-exec スイッチを使うより速くなります。 .TP 5 .B \-p スクリプトの前後に下に示すループがあるものとして .I perl を起動します。こうすると、引数のファイル全部について \fIsed\fR と同じような繰り返しが行なわれます: .nf .ne 5 while (<>) { .\|.\|. # ここにスクリプトが来ます } continue { print; } .fi 入力行は自動的に出力されることに注意して下さい。 出力を抑制したければ、 .B \-n スイッチを使って下さい。 .B \-p は、 .B \-n スイッチに優先します。 .TP 5 .B \-P .IR perl によるコンパイルの前に C プリプロセッサを通します。 (perl のコメントも cpp の命令も # の文字で始まるので、 コメントを C プリプロセッサが理解する単語、例えば \*(L"if\*(R" や \*(L"else\*(R" や \*(L"define\*(R" で始めてはなりません。) .TP 5 .B \-s コマンドライン上で、スクリプト名とファイル名の引数 (または \-\|\-) の間にある各スイッチについて基本的な解析を行ないます。 スイッチが見つかると、@ARGV から除かれ、対応する変数を .I perl スクリプト内でセットします。 以下のスクリプトでは、\-xyz スイッチをつけてスクリプトを起動したとき だけ、\*(L"true\*(R" を出力します。 .nf .ne 2 #!/usr/bin/perl \-s if ($xyz) { print "true\en"; } .fi .TP 5 .B \-S スクリプトを探すのに、環境変数 PATH を用います (スクリプト名が / で始まらないかぎり) 。 通常は、#! をサポートしないマシンにおいて #! を エミュレートするために用いられます。 次のような使い方です: .nf #!/usr/bin/perl eval "exec /usr/bin/perl \-S $0 $*" if $running_under_some_shell; .fi システムは 1 行目を無視し、スクリプトを /bin/sh に渡します。 /bin/sh は .I perl スクリプトをシェルスクリプトとして実行しようとします。シェルは 2 行目 を通常のシェルコマンドとして実行し、perl インタプリタを起動する ことになります。 システムによっては $0 は必ずしもフルパス名にならないので、 .B \-S を用いて .I perl に必要ならばスクリプトを探すように指示します。 .I perl がスクリプトを見つけたあと、解析を行ないますが、変数 $running_under_some_shell が真になることはないので、2 行目を無視します。 ファイル名などに含まれるスペースを正しく扱うには、$* よりも ${1+"$@"} の方がよいでしょうが、csh が解釈する場合には動作しません。 csh ではなく sh で起動するには、あるシステムでは #! 行を、perl で 無視されるコロンのみに書き換える必要があるかもしれません。その他の システムではこの方法は使えず、次のように、csh, sh, perl のどの下で も動作するような、とてもまわりくどい方法をとる必要があります: .nf .ne 3 eval '(exit $?0)' && eval 'exec /usr/bin/perl -S $0 ${1+"$@"}' & eval 'exec /usr/bin/perl -S $0 $argv:q' if 0; .fi .TP 5 .B \-u スクリプトのコンパイルの後、 .I perl はコアダンプします。 このコアダンプから、`undump' プログラム(提供していません)を用いて 実行可能ファイルに変換できます。 こうすると、ディスク消費が増えるかわりに (実行ファイルを strip すれば 最小にできます)、スタートアップが速くなります。 (しかし、私のマシンでは "hello world" の実行形式が約 200K の大きさ になります。) 実行形式を set-id プログラムとして走らせるのなら、通常の perl ではなく 多分 taintperl を用いてコンパイルすべきです。 ダンプする前に実行したいスクリプトがある場合は、代わりに dump 演算子を 使って下さい。 注意 : undump が使えるかどうかはプラットフォームに依存するので、perl の 移植によっては利用できないものもあるかもしれません。 .TP 5 .B \-U 安全でない操作を可能にします。 現在の所、\*(L"安全でない\*(R" 操作とは、スーパユーザ権限での 実行時にディレクトリを unlink すること、および汚れチェックで 警告が出るような setuid プログラムを走らせることだけです。 .TP 5 .B \-v .I perl のバージョンとパッチレベルを出力します。 .TP 5 .B \-w 一度だけ出てくる識別子、セットする前に使用されるスカラ変数に対して、 警告を出します。 サブルーチンが再定義されたとき、定義されていないファイルハンドルの参照 があるとき、リードオンリーでオープンしたファイルハンドルへ書き込もうと したときにも警告を出します。数値ではなさそうな値に == を使ったときや、 サブルーチンが 100 回以上再帰したときにも警告を出します。 .TP 5 .BI \-x ディレクトリ スクリプトがメッセージに埋め込まれていることを .I perl に知らせます。#! で始まり、"perl" という文字列を含む最初の行が現れる までは、ゴミとして無視されます。 その行に指定した意味のあるスイッチはすべて適用されます (ただし通常の #! 処理と同じく、スイッチのかたまり一つだけです)。 ディレクトリ名を指定すると、perl はスクリプトを実行する前にその ディレクトリに移ります。 .B \-x スイッチは、先頭のゴミを捨てるだけです。 スクリプトの後にゴミがある場合は、スクリプトは _\|_END_\|_ で終わらせなければなりません (望むなら、スクリプトで後ろのゴミの一部 または全部をファイルハンドル DATA 経由で処理することが可能です) 。 .Sh "データの型とオブジェクト" .PP .I perl には 3 種類のデータ型が有ります: スカラ、スカラ配列、 および連想配列です。 通常の配列は添え字が数字ですが、連想配列の場合は文字列です。 .PP perl における演算や値の解釈は、演算や値のコンテキスト(文脈)からの要求 にしばしば依存します。 主なコンテキストは三つ: すなわち文字列、数値、配列です。 演算の中には、配列を要求するコンテキストでは配列を、そうでなければ スカラ値を返すものもあります。 (そのような演算子についてはドキュメント内のその演算子のところに 記載されています。) スカラ値を返す演算子は、コンテキストが文字列あるいは 数値のどちらを要求しているかは考慮しませんが、スカラ変数および スカラ値は文字列あるいは数値のコンテキストの適切な方に解釈されます。 スカラはそれがヌル文字列あるいは 0 でなければ論理的に真であると 解釈されます。 演算子が返す論理値は、真の場合は 1、偽の場合は 0 または \'\' (ヌル文字列)です。 .PP 実際には、ヌル文字には二種類あります。define と undefined です。 undefined のヌル文字列は、エラー、ファイル終端、初期化されていない変数や 配列要素を参照しようとしたときなど、実際の値が存在しない場合に返ります。 undefined のヌル文字列は、最初にそれにアクセスしたときに defined となる ことがありますが、その前に defined() 演算子を用いて値が defined かどう かを知ることができます。 .PP スカラ変数への参照は、それが配列の一部であっても、常に \*(L'$\*(R' で始めます。 つまりこうです: .nf .ne 3 $days \h'|2i'# 単純なスカラ変数 $days[28] \h'|2i'# 配列 @days の 29 番目の要素 $days{\'Feb\'}\h'|2i'# 連想配列の値の一つ $#days \h'|2i'# 配列 @days の最後の添え字 しかし、配列全部や一部の取り出しは \*(L'@\*(R' で始めます: @days \h'|2i'# ($days[0], $days[1],\|.\|.\|. $days[n]) @days[3,4,5]\h'|2i'# @days[3.\|.5] と同じ @days{'a','c'}\h'|2i'# ($days{'a'},$days{'c'}) と同じ そして、連想配列全部を扱うには \*(L'%\*(R' で始めます: %days \h'|2i'# (key1, val1, key2, val2 .\|.\|.) .fi .PP これら 8 つはすべて左辺値として扱うことができます。すなわち、代入可能 ということです。 (さらに、あるコンテキストでは代入操作自体も左辺値となり得ます。 \*(-- s, tr, chop のところの例を参照して下さい。) スカラへの代入を行なうと、右辺をスカラのコンテキストで評価するのに 対し、配列や配列の一部への代入は右辺を配列のコンテキストで評価します。 .PP 配列 @days の長さを .IR csh のように \*(L"$#days\*(R" で評価してもかまいません。 (実際には、通常 0 番目の要素があるので、配列の長さではなく、最後の要素 の添え字になります。) $#days に代入すると、配列の長さが変わります。 この方法によって配列を小さくしても、実際には値は破壊されません。 すでに小さくした配列を大きくすると、もともとあった要素が元に戻ります。 大きくなりそうな配列をあらかじめ大きくしておくと、 効率をいくらか良くすることもできます。 (配列を大きくするには、配列の最後を超える要素に代 入を行なう方法もあります。この方法と、$#whatever へ代入する方法との 違いは、間の要素にヌルがセットされることです) 配列を縮めて空にするには、ヌルリスト () を代入すればできます。 次の二つは全く同等となります。 .nf @whatever = (); $#whatever = $[ \- 1; .fi .PP 配列をスカラのコンテキストで評価すると、配列の長さが返ります。 次の式は常に真となります: .nf scalar(@whatever) == $#whatever \- $[ + 1; .fi 連想配列をスカラのコンテキストで評価すると、配列が要素を含む場合 かつその場合に限り真の値を返します。 (要素がある場合に返る値は、使用している bucket の数およびアロケートさ れている bucket の数から成る文字列で、/ で区切られます。) .PP 多次元配列は直接はサポートされていませんが、連想配列を用いて複数の 添え字をエミュレートする方法については、$; 変数の項を参照して下さい。 多次元の添え字を 1 次元の添え字に変換するサブルーチンを書くことも できます。 .PP 各々のデータ型に応じて、それぞれの名前空間があります。衝突を心配する ことなく、同じ名前をスカラ変数、配列、連想配列、ファイルハンドル、 サブルーチン名、またはラベルにつけることができます。 変数や配列への参照は常に \*(L'$\*(R', \*(L'@\*(R', \*(L'%\*(R' で始まるので、\*(L"予約\*(R" 語は変数名については実際には 使用可能です。 (しかし、ラベルやファイルハンドルについては予約語は使用できません。 特殊な文字で始まらないからです。 .br ヒント: open(log,\'logfile\') より open(LOG,\'logfile\') を使った方が 良いです。大文字のファイルハンドル名を使うと、読み易さも向上し、 将来の予約語になるものとの衝突も避けることができるからです。) 大文字小文字の区別は重要です \*(--\*(L"FOO\*(R", \*(L"Foo\*(R", \*(L"foo\*(R" はすべて異なる 名前です。アルファベットで始まる名前は数字や下線を含んでもかまいません。 アルファベットで始まらない名前は 1 文字に限られます。 例えば、\*(L"$%\*(R" や \*(L"$$\*(R" です。 (ほとんどの一文字名は .IR perl の予約変数として意味があります。 詳細は後ほど述べます。) .PP 数値文字列は通常の浮動小数点や整数の形式で指定します。 .nf .ne 6 12345 12345.67 .23E-10 0xffff # 16 進 0377 # 8 進 4_294_967_296 .fi 文字列はシングルクォートまたはダブルクォートで区切られます。 動作はシェルにおけるクォートとよく似ています。 ダブルクォートで囲まれた文字列にはバックスラッシュや変数の置換が 行なわれます。シングルクォートで囲まれた文字列には行なわれません (\e\' と \e\e を除きます)。 通常のバックスラッシュ規則が改行やタブなどの文字を表すのに使え、 更に以下のちょっと変わった形式も使えます: .nf \et タブ \en 改行 \er リターン \ef フォームフィード \eb バックスペース \ea アラーム (ベル) \ee エスケープ \e033 8進文字 \ex1b 16進文字 \ec[ コントロール文字 \el 次の文字を小文字にします \eu 次の文字を大文字にします \eL \eE までを小文字にします \eU \eE までを大文字にします \eE 大小文字の修飾の終り .fi 改行を直接文字列に書き入れることもできます。すなわち、文字列は始まった 行と異なる行で終わることができることになります。これは便利ですが、 最後にクォートを忘れると、クォートを含むかなり離れた別の行を見つけるまで .I perl はエラーを報告しないでしょう。 文字列内の変数置換はスカラ変数、通常の配列、配列の一部に限られます。 (言い換えると、$ や @ で始まる識別子と、それに括弧で囲まれた添え字が ある場合だけです。) 次のコードは \*(L"The price is $100.\*(R" を出力します。 .nf .ne 2 $Price = \'$100\';\h'|3.5i'# 解釈されません print "The price is $Price.\e\|n";\h'|3.5i'# 解釈されます .fi 後に続くアルファベットや数字と区別するために、識別子を {} で囲う ことができることを覚えておいて下さい。 また、シングルクォートは識別子として有効な文字であるため、 シングルクォートで囲まれた文字列は、前の単語とは空白で区切られて いなければならないことも覚えておきましょう (パッケージの項を参照して下さい) 。 .PP プログラムのその時点での行番号とファイル名を表す _\|_LINE_\|_ と _\|_FILE_\|_ という二つの特殊な文字があります。 これらは独立したトークンとしてのみ使用でき、文字列中に 書き入れることはできません。 さらにトークン _\|_END_\|_ は、実際のファイルが終了する前で、スクリプト の論理的な終了を示すために使えます。残りのテキストはすべて無視されますが、 ファイルハンドル DATA から読むことができます。 (ファイルハンドル DATA は、メインスクリプトからのみデータを 読み込めますが、require されたファイルや評価された文字列からは 読み込めません。) ^D と ^Z の二つのコントロールキャラクタは _\|_END_\|_ と同義になります。 .PP 文法的に解釈不可能な単語は、それがシングルクォートで囲まれている かのように扱われます。このため、アルファベット、数字、下線のみからなり、 単語はアルファベットで始まらなければなりません。 ファイルハンドルやラベルと同じく、小文字のみからなる裸の単語は、 将来の予約語と衝突する危険があります。 .B \-w スイッチを使えば、perl はそのような単語について警告してくれます。 .PP 配列値をダブルクォートで囲まれた文字列に入れた場合は、配列の全要素を $" 変数で指定される区切り (デフォルトは空白) で連結して一つにした 文字列になります。 (3.0 以前のバージョンの perl では、@ はダブルクォートで囲まれた文字列 の中のメタキャラクタではなかったので、@array, $array[EXPR], @array[LIST], $array{EXPR}, @array{LIST} の文字列への挿入は、 配列がプログラムのどこかで参照されている場合、もしくは予約されている 場合にのみ起こります。) 次の二つは同等になります。 .nf .ne 4 $temp = join($",@ARGV); system "echo $temp"; system "echo @ARGV"; .fi 検索パターン (これにもダブルクォートと同じ置換が行なわれます) に おいては、あいまいな場合があります。 /$foo[bar]/ は /${foo}[bar]/ ([bar]は正規表現の文字クラス) でしょうか、 それとも /${foo[bar]}/ ([bar]は配列 @foo の添字) なのでしょうか 。 @foo が存在しないなら、それは明らかに文字クラスです。 @foo が存在するなら、perl は [bar]について考え、大抵の場合正しい類推を します。それが間違っていたり、あなたが単に偏執狂なら、 上記のように中括弧 {} を入れることで、正しい解釈をさせることができます。 .PP 行指向の引用法はシェルと同様の文法に基づいています。 << の後に引用文の終わりを示す文字列を指定すると、現在行からその文字列 が現れるまでの行すべてがその値になります。終わりを示す文字列は識別子 (単語) でも、クォートされたテキストでもかまいません。 クォートされているテキストの場合、通常クォートで囲む場合と同じく クォートの種類がテキストの扱い方を決めます。クォートされていない識別子 はダブルクォートされている場合と同じ動作となります。 (スペースを入れた場合、それは有効なヌル識別子として扱われ、 最初の空行にマッチします。 \*(--下の Merry Christmas の例を見て下さい。) 終わりを示す文字列はそれだけで (クォートされず、空白を前後につけずに) 書かれていなければなりません。 .nf print < に囲まれたファイルハンドルを評価すると、そのファイルから次の 行を読み込みます (改行が含まれるため EOF までは決して偽に成りません。 EOF では undefined 値が返ります) 。 通常はその値を変数に代入する必要がありますが、一つだけ 自動的に代入が起こる状況があります。入力シンボルだけが while ループの 条件文の中にある場合は(そしてこの場合にかぎり)、値は変数 \*(L"$_\*(R" に自動的に代入されます。 (奇妙に思うかもしれませんが、ほとんどの .I perl スクリプトにおいて、この構文を使うことになるでしょう。) とにかく、次の例はすべて同等となります。 .nf .ne 5 while ($_ = ) { print; } while () { print; } for (\|;\|;\|) { print; } print while $_ = ; print while ; .fi ファイルハンドル .IR STDIN , .IR STDOUT , .I STDERR は予約されています。 (ファイルハンドル .IR stdin , .IR stdout , .I stderr でも動作しますが、パッケージの中ではグローバルではなくローカルな識別子 として解釈されるので、働きません。) これ以外のファイルハンドルは、 .I open 関数で作成できます。 .PP 配列を探すコンテキストの中で が使われると、すべての入力行 の一行が一要素である配列が返ります。この方法で*巨大*なデータ空間が簡単 に作られるので、注意して使って下さい。 .PP ヌルファイルハンドル <> は特殊で、\fIsed\fR や \fIawk\fR の動作を エミュレートするために使えます。 <> からの入力には、標準入力やコマンドラインに並べられた全ファイルが 入ります。動作の仕方はこうなります。 <> の最初の評価では、ARGV 配列が チェックされ、それがヌルであると、$ARGV[0] は標準入力をオープンする \'-\' にセットされます。 次に ARGV 配列がファイル名のリストとして処理されます。 次のループは、 .nf .ne 3 while (<>) { .\|.\|. # 各行に対するコード } .ne 10 以下の疑似コードと同等になります。 unshift(@ARGV, \'\-\') \|if \|$#ARGV < $[; while ($ARGV = shift) { open(ARGV, $ARGV); while () { .\|.\|. # 各行に対するコード } } .fi 前者は、書くのが面倒でないというだけで、同じように動作します。 実際には、前者でも 配列 ARGV を shift し、現在のファイル名を変数 ARGV に代入します。 内部では、ファイルハンドル ARGV を使います \*(--<> は、魔術的な とまったく同義です。 (上の疑似コードでは、 を魔術的でないものとして扱うので、 動きません) .PP ファイル名のリストの配列が残っている限り、最初の <> の前に @ARGV を 変更することができます。 行番号 ($.) は入力が一つの大きなファイルであるかのように増えていきます。 (ファイル毎に行番号をリセットする方法については eof の例を参照して 下さい。) .PP .ne 5 @ARGV に自分でファイルのリストをセットしたい場合は、そうして下さい。 スクリプトにスイッチを渡したい場合、スクリプトの前の方に次のような ループを置くことでできます: .nf .ne 10 while ($_ = $ARGV[0], /\|^\-/\|) { shift; last if /\|^\-\|\-$\|/\|; /\|^\-D\|(.*\|)/ \|&& \|($debug = $1); /\|^\-v\|/ \|&& \|$verbose++; .\|.\|. # 他のスイッチ } while (<>) { .\|.\|. # 各行に対するコード } .fi <> シンボルは一回だけ*偽*を返します。 その後、もう一度呼ぶと、別の @ARGV リストを処理しているとみなして、 @ARGV がセットされていない場合は .IR STDIN から入力されることになります。 .PP カギ括弧の中の文字列がスカラ変数への参照であるとき (例えば <$foo>) 、 その変数の内容が読み込むべきファイルハンドル名となります。 .PP カギ括弧の中の文字列がファイルハンドルではないとき、検索 (glob) される ファイルパターンと解釈され、コンテキストによってファイル名の配列 またはリストの中の次のファイルが返されます。 最初に $ の解釈の一レベルが行なわれますが、<$foo> は前の段落で 説明されたような間接ファイルハンドルとなるため使えません。 強制的にファイル名検索と解釈させさければ <${foo}> のように 中括弧 {} を挿入できます。 例: .nf .ne 3 while (<*.c>) { chmod 0644, $_; } は以下と等価です。 .ne 5 open(foo, "echo *.c | tr \-s \' \et\er\ef\' \'\e\e012\e\e012\e\e012\e\e012\'|"); while () { chop; chmod 0644, $_; } .fi 実際、現在のところこのように実装されてます。 (これは、マシン上に /bin/csh がなければ、空白を含むファイル名では 動かないことを意味します。) もちろん、上の操作を行なう一番短い方法は、 .nf chmod 0644, <*.c>; .fi です。 .Sh "文法" .PP .I perl スクリプトは、一連の宣言とコマンドからなります。 .I perl の中で宣言されなければならないものは、レポートフォーマットと サブルーチンです。 これらの宣言の詳しい説明は下のセクションを参照して下さい。 初期化されていないユーザが作成したオブジェクトは、それが代入のように 明示的に定義されるまでは、ヌルまたは 0 の値であるとみなされます。 コマンド列が各入力行に対して実行される .I sed や .I awk スクリプトと違って、コマンド列は一度だけ実行されます。 入力ファイル (または複数のファイル) の各行について繰り返しを行うには 明示的にループを設けなければなりませんが、 着目するファイル、行をよりよくコントロールすることができます。 (実は、正しくありません \*(-- .B \-n や .B \-p スイッチで、暗黙のループを行なうことができます。) .PP 宣言は、コマンドを書くことができる場所ならどこにでも書くことができますが、 コマンド実行の基本的な流れには影響を与えません \*(-- 宣言は、 コンパイル時だけにしか影響を与えません。通常、すべての宣言は スクリプトの最初か最後のどちらかに置きます。 .PP .I perl は、ほとんどの部分において自由形式言語です。 (唯一の例外はフォーマット宣言で、理由は実に明白です。) コメントは、# 文字で指示され、行末までとなります。 /* */ という C のコメントを使おうとすると、コンテキストにより 除算またはパターンマッチと解釈されるので、そういうことはしないで下さい。 .Sh "複合文" .IR perl では、複数のコマンド列を中括弧 {} で囲むことで、一つのコマンドとして 扱うことになり、これをブロックと呼びます。 .PP 次のような複合コマンドは、フローコントロールに使われます: .nf .ne 4 if (EXPR) BLOCK if (EXPR) BLOCK else BLOCK if (EXPR) BLOCK elsif (EXPR) BLOCK .\|.\|. else BLOCK LABEL while (EXPR) BLOCK LABEL while (EXPR) BLOCK continue BLOCK LABEL for (EXPR; EXPR; EXPR) BLOCK LABEL foreach VAR (ARRAY) BLOCK LABEL BLOCK continue BLOCK .fi C や Pascal と違って、これらは文ではなく*ブロック*として定義されているこ とに注意して下さい。 これは、中括弧 {} が、\fI必要である\fR ことを意味します \*(-- 一つの 文を置くことは許されません。 中括弧 {} なしで書きたい場合は、別の方法があります。 以下はすべて同等のことを行ないます: .nf .ne 5 if (!open(foo)) { die "Can't open $foo: $!"; } die "Can't open $foo: $!" unless open(foo); open(foo) || die "Can't open $foo: $!"; # foo でなければ終わり open(foo) ? \'hi mom\' : die "Can't open $foo: $!"; # 最後のものは、ちょっとエキゾチック .fi .PP .I if 文は単純です。 *ブロック*は、常に中括弧 {} で囲まれるため、 .I else が、どの .I if にかかるかという曖昧さは生じません。 .I unless を .IR if の代わりに使うと、逆の意味となります。 .PP .I while 文は、式が真 (ヌル文字列または 0 でない) である限り、ブロックを 実行し続けます。 識別子とコロンからなるラベルをつけることもできます。 ラベルはループ制御文 .IR next , .IR last , .I redo (以下を参照) によって指し示すループの名前となります。 .I continue ブロックがあると、条件文が再評価される前に必ず実行され、C における .I for ループの三番目の部分と同様となります。 こうして、たとえ .I next 文で継続された場合でもループ変数はインクリメントできることになります (C の \*(L"continue\*(R" 文と同じ) 。 .PP .I while が .IR until に置き換えられると テストの意味は逆になりますが、条件判断は最初のループ の前に行なわれます。 .PP .I if や .I while 文では、\*(L"(EXPR)\*(R" をブロックに置き換えることができ、 ブロックの最後のコマンドの値が真なら、条件判断は真となります。 .PP .I for ループは、対応する .I while と全く同じように動作します: .nf .ne 12 for ($i = 1; $i < 10; $i++) { .\|.\|. } は、以下と同じになります。 $i = 1; while ($i < 10) { .\|.\|. } continue { $i++; } .fi .PP foreach ループは、通常の配列値について、配列の各要素を変数 VAR に順に セットしながら繰り返します。 その変数は、ループに対して暗黙のうちにローカルであり、それ以前の値はルー プを抜けると元の値に戻ります。 \*(L"foreach\*(R" キーワードは、実は \*(L"for\*(R" キーワードと同じで、 \*(L"foreach\*(R" を可読性のために、\*(L"for\*(R" を簡潔さのために 使うことができます。 VAR が省略されると、$_ が各値にセットされます。 ARRAY が実際の配列 (配列を返す式ではなく) の場合、ループ内の VAR を変 更することによって、配列の各要素を変更することができます。 例: .nf .ne 5 for (@ary) { s/foo/bar/; } foreach $elem (@elements) { $elem *= 2; } .ne 3 for ((10,9,8,7,6,5,4,3,2,1,\'BOOM\')) { print $_, "\en"; sleep(1); } for (1..15) { print "Merry Christmas\en"; } .ne 3 foreach $item (split(/:[\e\e\en:]*/, $ENV{\'TERMCAP\'})) { print "Item: $item\en"; } .fi .PP ブロックそれ自身 (ラベルが付いていても、付いていなくても) は、一度だけ 実行されるループと等価です。 だから、ブロックを抜けたり再実行するために、すべてのループ制御文を使う ことができます。 .I continue ブロックも付けられます。 この構成は、case 構造を作成するには特に有用です。 .nf .ne 6 foo: { if (/^abc/) { $abc = 1; last foo; } if (/^def/) { $def = 1; last foo; } if (/^xyz/) { $xyz = 1; last foo; } $nothing = 1; } .fi 同等のものを記述する方法が、既にいくつもあるので、perl には公式の switch 文がありません。 上記のものに加えて、 .nf .ne 6 foo: { $abc = 1, last foo if /^abc/; $def = 1, last foo if /^def/; $xyz = 1, last foo if /^xyz/; $nothing = 1; } または .ne 6 foo: { /^abc/ && do { $abc = 1; last foo; }; /^def/ && do { $def = 1; last foo; }; /^xyz/ && do { $xyz = 1; last foo; }; $nothing = 1; } または .ne 6 foo: { /^abc/ && ($abc = 1, last foo); /^def/ && ($def = 1, last foo); /^xyz/ && ($xyz = 1, last foo); $nothing = 1; } さらに .ne 8 if (/^abc/) { $abc = 1; } elsif (/^def/) { $def = 1; } elsif (/^xyz/) { $xyz = 1; } else {$nothing = 1;} .fi とも書けます。 これらはすべて内部で switch 構造に最適化されるため、perl は直接目的の 文にジャンプするので、同じ単純なスカラ変数を == や eq や上記のような パターンマッチで判定する限り、50 個の elsif を使っても perl がたくさん の不要な文を実行するのでは、という心配は不要となります。 (ある特定の case ステートメントが最適化されているかどうかに興味があるなら、 \-D1024 スイッチを付けて実行前に文法ツリーを表示することができます。) .Sh "単文" 単文のみがその副作用を評価される式となります。 どの単文もブロックの最後の文でない限り、セミコロンで終らなければ なりません。最後の文では、セミコロンはなくてもかまいません。 (それでも、ブロックが一行以上を含んでいるのなら、 セミコロンはあった方が望ましいです) .PP どの単文も、セミコロンで終る前に一つの修飾子を続けることができます。 可能な修飾子は以下の通りです: .nf .ne 4 if EXPR unless EXPR while EXPR until EXPR .fi .I if と .I unless 修飾子は見かけ通りの意味があります。 .I while と .I until 修飾子も見かけ通りの意味 (条件文が始めに評価されます) ですが、 do ブロックや do サブルーチンコマンドが付けられたときには異なり、 条件式が評価される前に一度だけ実行されます。 これは、以下のようなループが記述できるようにするためです: .nf .ne 4 do { $_ = ; .\|.\|. } until $_ \|eq \|".\|\e\|n"; .fi (後述の .I do 演算子を参照のこと。修飾子は、どれもループラベルを持てないため、 後に書かれたループ制御コマンドはこの構造では動かないことに 気をつけて下さい。あしからず。) .Sh "式" .I perl の式は、ほとんど C の式と同じに動作しますが、違いをここに述べます。 .PP 以下が .I perl にあって、C にないものです: .Ip ** 8 2 指数演算子。 .Ip **= 8 指数代入演算子。 .Ip (\|) 8 3 配列をヌルに初期化するために使う、ヌルリスト。 .Ip . 8 2 つの文字列の結合演算子。 .Ip .= 8 結合代入演算子。 .Ip eq 8 文字列の同値性 (== は数値の同値性) 。 覚えるためには、\*(L"eq\*(R" が文字列であると考えれば良いです。 (状況に応じて、== が文字列と数値の両方の同値性を表す .I awk に慣れている人は、ここでは明示しなければならないことに気をつけて下さい !) .Ip ne 8 文字列の非同値性 (!= は数値の非同値性) 。 .Ip lt 8 文字列の less than .Ip gt 8 文字列の greater than .Ip le 8 文字列の less than or equal .Ip ge 8 文字列の greater than or equal .Ip cmp 8 文字列の比較。 -1, 0, 1 を返します。 .Ip <=> 8 数値の比較。 -1, 0, 1 を返します。 .Ip =~ 8 2 演算には、検索、変更をデフォルトで文字列 \*(L"$_\*(R" に対して行うもの があります。 この演算子を用いると、別の文字列に対してその演算が行われます。 右の引数は、検索パターン、置換、変換です。 左の引数は、デフォルトの \*(L"$_\*(R" の代わりに検索、置換、変換が 行なわれる対象となるものです。 戻り値は、演算の成否を示します。 (右の引数が検索パターン、置換、変換以外の式なら、実行時に検索パターン として解釈されますが、パターンは式が評価される度にコンパイルされなけれ ばならないので、明示的な検索より効率的ではありません。) この演算子の優先度は単項マイナス演算子 (-) 、autoincrement/decrement (++, --) より低く、他のどの演算子よりも高くなります。 .Ip !~ 8 戻り値が否定されることを除いて =~ と同じです。 .Ip x 8 繰り返し演算子。 左オペランドを右オペランドで指定した回数だけ繰り返した文字列を返します。 配列のコンテキストでは、左オペランドが括弧に入ったリストの場合、 リストを繰り返します。 .nf print \'\-\' x 80; # ダッシュの列を出力します print \'\-\' x80; # 不正、x80 は識別子 print "\et" x ($tab/8), \' \' x ($tab%8); # タブに変換 @ones = (1) x 80; # 80 個 1 が並んだ配列 @ones = (5) x @ones; # 全要素を 5 にセット .fi .Ip x= 8 繰り返し代入演算子。 スカラに対してのみ動作します。 .Ip .\|. 8 範囲演算子。コンテキストによって、実際は二つの異なる演算子になります。 配列のコンテキストでは、左の値から右の値まで一つずつ数を増やした配列を 返します。 これは、\*(L"for (1..10)\*(R" というループや配列の切り出し (slice) を 行なうときに便利です。 .Sp スカラのコンテキストでは、.\|. は論理値を返します。 この演算子は、flip-flop のように二つの値を取り、 sed や awk やいろいろなエディタの行範囲 (comma) 演算子をエミュレート します。 各 .\|. 演算子はそれ自身の論理値を保持し、左のオペランドが偽である限り 偽となります。 左のオペランドが真になると、範囲演算子は、右のオペランドが真になるまで 真となります。その後、範囲演算子が再び偽となります。 (次に範囲指定演算子が評価されるまで、偽にはなりません。 真になったのと同じ評価を行った時 (awkと同様) に右のオペランドをテスト して、偽になることがあり得ますが、一度は真を返します。 次の評価まで右のオペランドをテストしたくなければ (sed のように) 、二つ にするかわりに三つのドット (.\|.\|.) を使って下さい。) 右のオペランドは、演算子が \*(L"偽\*(R" の状態である間は、 評価されず、左のオペランドは演算子が \*(L"真\*(R" である間は 評価されません。 || や && より優先度はやや低くなります。 戻り値は、偽ではヌル文字列に、真では (1で始まる) 連続した数に なります。 この数は、範囲指定毎にリセットされます。 連続した範囲の最後の数は、文字列 \'E0\' を持っていて、数値には影響しま せんが、終点を除きたい場合に検索のきっかけになります。 数字が 1 より大きくなるのを待つことで、始点を除くことができます。 スカラ .\|. の両方のオペランドが静的である場合、オペランドは暗黙の うちに現在の行番号を表す $. 変数と比べられます。 例: .nf .ne 6 スカラ演算子としては: if (101 .\|. 200) { print; } # 100行台を出力します next line if (1 .\|. /^$/); # ヘッダ行を読み飛ばします s/^/> / if (/^$/ .\|. eof()); # 本体をクォートします .ne 4 配列としては: for (101 .\|. 200) { print; } # $_ を 100回表示します @foo = @foo[$[ .\|. $#foo]; # 高価なノーオペレーション @foo = @foo[$#foo-4 .\|. $#foo]; # 最後の 5 要素を取り出します .fi .Ip \-x 8 ファイルテスト。 この単項演算子は一つの引数として、ファイル名またはファイルハンドルを取 り、そのファイルについて、何かが真であるかどうかを見るものです。 引数が省略されると、$_ を調べますが、例外として \-t は .IR STDIN を調べます。 真の場合は 1 を、偽の場合は \'\' を返し、ファイルが存在していない場合 は、undefined の値を返します。 優先度は、論理値や関係演算子より高くなりますが、算術演算子より低くなり ます。 演算子は以下の通りです: .nf \-r ファイルを実効 uid/gid で読み込める。 \-w ファイルに実効 uid/gid で書き込める。 \-x ファイルを実効 uid/gid で実行できる。 \-o ファイルの所有者が、実効 uid である。 \-R ファイルを実 uid/gid で読み込める。 \-W ファイルを実 uid/gid で書き込める。 \-X ファイルを実 uid/gid で実行できる。 \-O ファイルの所有者が、実 uid である。 \-e ファイルが存在する。 \-z ファイルサイズが 0 である。 \-s ファイルサイズが 0 でない (サイズを返す) 。 \-f ファイルはプレーンファイルである。 \-d ファイルはディレクトリである。 \-l ファイルはシンボリックリンクである。 \-p ファイルは名前付きパイプ (FIFO) である。 \-S ファイルはソケットである。 \-b ファイルはブロック特殊ファイルである。 \-c ファイルはキャラクタ特殊ファイルである。 \-u ファイルには setuid ビットが立っている。 \-g ファイルには setgid ビットが立っている。 \-k ファイルには sticky ビットが立っている。 \-t ファイルハンドルが tty にオープンされている。 \-T ファイルはテキストファイルである。 \-B ファイルはバイナリファイルである (\-T の逆) 。 \-M スクリプトを開始した時点でのファイルの古さ(単位は日) 。 \-A アクセス時刻と同じ。 \-C inode 変更時刻と同じ。 .fi ファイルパーミッション演算子 \-r, \-R, \-w, \-W, \-x, \-X の解釈は、 単にファイルのモードとユーザの uid, gid に基づきます。 他の理由で、実際にファイルを読み、書き、実行ができないことがあるかも しれません。 また、気をつけなけらばならないのは、スーパユーザにとって \-r, \-R, \-w, \-W は常に 1 を返し、そのモードでいずれかの実行ビットが 立っていれば、\-x, \-X も常に 1 を返すというところです。 従って、スーパユーザが実行するスクリプトは、ファイルの実際のモードを決 めるために stat() を実行したり、一時的に他の uid を立てる必要があるか もしれません。 .Sp 例: .nf .ne 7 while (<>) { chop; next unless \-f $_; # 特殊ファイルを無視 .\|.\|. } .fi \-s/a/b/ としても、否定した置換をするわけではないことに注意して 下さい。 \-exp($foo) とすると、期待通りに動きますが、\*(-- マイナスの後が一文字 の場合、ファイルテストと解釈されます。 .Sp \-T と \-B は以下のように動作します。 ファイルの先頭のブロックあたりに、変なコントロールコードや メタキャラクタのような、おかしな文字がないかどうかを調べます。 おかしな文字が (10%以上) 見つかると、それは \-B ファイル、 でなければ \-T ファイルとなります。 最初のブロックにヌルが含まれるファイルもバイナリファイルとみなされます。 \-T や \-B がファイルハンドルに使われると、最初のブロックではなく、 そのときの標準入力バッファが調べられます。 ヌルファイル(サイズ 0 のファイル)の場合やファイルハンドルをテストしていて 、それが EOF である場合、\-T と \-B は共に真を返します。 .PP すべてのファイルテスト (と stat 演算子)は、アンダライン一つ _ から 成る特殊ファイルハンドルを与えられると、システムコールを保存することに よって、その直前に行なわれたファイルテスト (または stat演算子) で使わ れた stat 構造体が使われます。 (この _ の働きは \-t では動作せず、lstat と -l が stat 構造体に 実ファイルではなく、シンボリックリンクの値を残すことを覚えて おかなければなりません。) 例: .nf print "Can do.\en" if -r $a || -w _ || -x _; .ne 9 stat($filename); print "Readable\en" if -r _; print "Writable\en" if -w _; print "Executable\en" if -x _; print "Setuid\en" if -u _; print "Setgid\en" if -g _; print "Sticky\en" if -k _; print "Text\en" if -T _; print "Binary\en" if -B _; .fi .PP C にあって、 .I perl にないもの: .Ip "単項 &" 12 アドレス演算子 .Ip "単項 *" 12 "アドレスを通しての"参照演算子 .Ip "(TYPE)" 12 型変換演算子。 .PP C のように、 .I perl は、演算子への引数が皆、静的で、副作用がない場合だけコンパイル時にある 程度の式の評価を行なってしまいます。 特に、変数置換を行なわないリテラル間での文字列の結合は、コンパイル時に 行なわれます。 バックスラッシュの解釈もコンパイル時に起こります。 .nf .ne 2 \'Now is the time for all\' . "\|\e\|n" . \'good men to come to.\' .fi これは全部、内部では一つの文字列にされてしまいます。 .PP ++ 演算子にはちょっと拡張した細工が施されています。 数値変数や数値コンテキストとして使われた変数をインクリメントすると、通 常のインクリメントになりますが、変数がヌルでない文字コンテキストとして だけ使われて来ていて、パターン /^[a\-zA\-Z]*[0\-9]*$/ にマッチする場合は、 各文字の範囲をキャリー付きで保存し、文字としてインクリメントされます: .nf print ++($foo = \'99\'); # prints \*(L'100\*(R' print ++($foo = \'a0\'); # prints \*(L'a1\*(R' print ++($foo = \'Az\'); # prints \*(L'Ba\*(R' print ++($foo = \'zz\'); # prints \*(L'aaa\*(R' .fi -- 演算子には、このような細工はありません。 .PP (配列のコンテキストにおける) 範囲演算子は、最大値と最小値が文字列の 場合に、細工した自動インクリメントアルゴリズムを使います。 すべてのアルファベット文字を得るには、 @alphabet = (\'A\' .. \'Z\'); 16 進数を得るには、 $hexdigit = (0 .. 9, \'a\' .. \'f\')[$num & 15]; 始めに 0 を付けた日付を得るには、 @z2 = (\'01\' .. \'31\'); print @z2[$mday]; と書けます。 (最後に指定された値が、細工したインクリメントの生成するシークエンスに 含まれていない場合、次の値が最後に指定された値より長くなるまでシークエ ンスを続けます。) .PP || と && は、0 や 1 を返す C のそれとは違って、最後に評価された値を 返します。 だから、ホームディレクトリをみつける移植性の高い方法は、こうなります。 .nf $home = $ENV{'HOME'} || $ENV{'LOGDIR'} || (getpwuid($<))[7] || die "You're homeless!\en"; .fi .PP 前述のリテラルや変数に合わせ、以降の節で説明する演算は 式中で項として使えます。 これらの演算の幾つかは、引数に*リスト*を取ります。 リストは、スカラや配列値からなります。 配列値がリストの中にあると、その場所に挿入されたように個々の値がリスト の中に含まれて、長い一次元配列値を作ることになります。 *リスト* の要素はコンマで区切られていなければなりません。 引数を括弧で囲んでも囲まなくても、演算をリスト出来ます。 これは関数呼び出しと同様単項演算子として、 演算を使うことができることを意味します。 関数呼び出しとして使うには、同じ行の次のトークンは左括弧でなければなり ません。 (空白が間にはさまってもかまいません。) そのような関数は、予想される通り最優先となります。 左括弧を持っていないトークンが続くとすれば、それは単項演算子で、リスト 演算子かどうかによって、優先度が決まります。 リスト演算子は最も優先度が低くなります。 すべての単項演算子は、関係演算子よりも優先されますが、算術演算子よりも 優先度は低くなります。 優先度のセクションを参照して下さい。 .PP スカラや配列のコンテキストで使われる演算子の場合、失敗すると一般に、 スカラコンテキストでは undefined 値を返し、配列のコンテキストでは ヌルリストを返します。 しかし、*リストをスカラに変換する一般的な規則はない* ということを 忘れないで下さい。 それぞれの演算子は、どの種のスカラを返すのが最も適当であるかを決めます。 ある演算子は、配列のコンテキストとして返されるようなリストの長さを返し ます。リストの最初の値を返す演算子、リストの最後の値を返す演算子、 操作に成功した回数を返す演算子などもあります。 一般に、一貫性を求めなければ、演算子は求めるものを返します。 .Ip "/PATTERN/" 8 4 m/PATTERN/ を参照して下さい。 .Ip "?PATTERN?" 8 4 これは、 .I reset 演算子呼び出しの間で一回しかマッチしないことを除けば、 /pattern/ 検索と全く同じです。 これは例えば、一群のファイルの中で、各ファイルに最初に何かが出現すること を見たいとき、便利な最適化です。 そのときのパッケージにローカルな ?? パターンだけは、リセットされます。 .Ip "accept(NEWSOCKET,GENERICSOCKET)" 8 2 accept システムコールと同じことをします。 成功すると真を、失敗すると偽を返します。 プロセス間通信のセクションの例を参照して下さい。 .Ip "alarm(SECONDS)" 8 4 .Ip "alarm SECONDS" 8 指定した秒数 (実際には、1 を引いたもの) が経過したあと、自分の プロセスに SIGALRM を伝えます。 つまり、alarm(15) なら、14 秒以上経ったある時点で SIGALRM を生じます。 一度に一つのタイマしかカウントされません。呼び出される毎にそれ以前の タイマは無効となり、引数 0 で呼び出すと以前のタイマをキャンセルし て、新しいタイマは始動しません。 戻り値は、直前のタイマの残り時間です。 .Ip "atan2(Y,X)" 8 2 Y/X の アークタンジェント を .if t \-\(*p から \(*p. .if n \-π から π の範囲で返します。 .Ip "bind(SOCKET,NAME)" 8 2 bind システムコールと同じことをします。 成功すれば真を、失敗すれば偽を返します。 NAME は、ソケットに合った適切な型の pack されたアドレスでなければなりません。 プロセス間通信のセクションの例を参照して下さい。 .Ip "binmode(FILEHANDLE)" 8 4 .Ip "binmode FILEHANDLE" 8 4 バイナリファイルとテキストファイルを区別するオペレーティングシステム上 で、そのファイルを \*(L"バイナリ\*(R" として読み込まれるようにします。 バイナリモードで読み込まれないファイルは、CR LF が入力時に LF に変換 され、出力時には、LF が CR LF に変換されます。 binmode は、UNIX では無効です。 FILEHANDLE が式のときは、値がファイルハンドルの名前として扱われます。 .Ip "caller(EXPR)" .Ip "caller" 現在のサブルーチン呼び出しのコンテキストを返します: .nf ($package,$filename,$line) = caller; .fi EXPRがあると、デバッガがスタックトレースに出力して使う拡張情報も 返します。 EXPRの値は、現在のサブルーチンの前にいくつの call フレームがあるかを 示します。 .Ip "chdir(EXPR)" 8 2 .Ip "chdir EXPR" 8 2 動作しているディレクトリを、もしできるなら EXPR に変更します。 EXPRが省略されると、ホームディレクトリになります。 成功すれば 1 を、失敗すれば 0 を返します。 .IR die の例を参照して下さい。 .Ip "chmod(LIST)" 8 2 .Ip "chmod LIST" 8 2 ファイルのリストのパーミッションを変更します。 リストの最初の要素は、数値モードでなければなりません。 成功したファイルの数を返します。 .nf .ne 2 $cnt = chmod 0755, \'foo\', \'bar\'; chmod 0755, @executables; .fi .Ip "chop(LIST)" 8 7 .Ip "chop(VARIABLE)" 8 .Ip "chop VARIABLE" 8 .Ip "chop" 8 文字列の最後の文字を削り、削られた文字を返します。 基本的には、入力されたレコードの終りから改行文字を除くために使われます が、文字列のコピーをスキャンするわけではないので、s/\en// より 効率的です。 VARIABLE を省略すると、$_ を chop します。 例: .nf .ne 5 while (<>) { chop; # 最後のフィールドの \en を除く @array = split(/:/); .\|.\|. } .fi 実際には、代入を含む左辺値のいかなるものも chop できます。 .nf chop($cwd = \`pwd\`); chop($answer = ); .fi リストを chop するとすべての要素が chop され、 最後に chop された値が返されます。 .Ip "chown(LIST)" 8 2 .Ip "chown LIST" 8 2 ファイルのリストの所有者 (と所有グループ) を変えます。 リストの最初の二つの要素は数値で表した uid と gid がこの順で指定され なければなりません。 変更に成功したファイルの数を返します。 .nf .ne 2 $cnt = chown $uid, $gid, \'foo\', \'bar\'; chown $uid, $gid, @filenames; .fi .ne 23 以下は、passwd ファイルから数値でない uid を検索する例です: .nf print "User: "; $user = ; chop($user); print "Files: " $pattern = ; chop($pattern); .ie t \{\ open(pass, \'/etc/passwd\') || die "Can't open passwd: $!\en"; 'br\} .el \{\ open(pass, \'/etc/passwd\') || die "Can't open passwd: $!\en"; 'br\} while () { ($login,$pass,$uid,$gid) = split(/:/); $uid{$login} = $uid; $gid{$login} = $gid; } @ary = <${pattern}>; # ファイルを得ます if ($uid{$user} eq \'\') { die "$user not in passwd file"; } else { chown $uid{$user}, $gid{$user}, @ary; } .fi .Ip "chroot(FILENAME)" 8 5 .Ip "chroot FILENAME" 8 同名のシステムコールと同じことをします。 これが何をするのか知らないとしても、気にしないで下さい。 FILENAME を省略すると、$_ に chroot します。 .Ip "close(FILEHANDLE)" 8 5 .Ip "close FILEHANDLE" 8 ファイルハンドルに結びつけられたファイルやパイプをクローズします。 別のファイルをオープンしようとしている場合は、FILEHANDLE を閉じる 必要がありません。オープンした際に前のファイルをクローズしてくれる からです。 ( .IR open を参照して下さい) しかし、明示的に入力ファイルのクローズをすると行カウンタ ($.) が リセットされるのに対し、 .I open のときに行なわれる暗黙のクローズでは、リセットされません。 また、後でパイプの出力を見たい場合は、パイプをクローズするとパイプで 起動されたプロセスの完了を待ちます。 パイプを明示的にクローズすると、コマンド情報の戻り値が $? に 入れられます。 例: .nf .ne 4 open(OUTPUT, \'|sort >foo\'); # sort へパイプ .\|.\|. # print stuff to output close OUTPUT; # sort の終了を待ちます open(INPUT, \'foo\'); # sortの結果を得ます .fi FILEHANDLE は実際のファイルハンドル名を与える式でもかまいません。 .Ip "closedir(DIRHANDLE)" 8 5 .Ip "closedir DIRHANDLE" 8 opendir() でオープンされたディレクトリをクローズします。 .Ip "connect(SOCKET,NAME)" 8 2 connect システムコールと同じことをします。 成功すると真を、失敗すると偽を返します。 NAME はソケットに合った適当な型のパッケージアドレスでなければ なりません。 プロセス間通信のセクションの例を参照して下さい。 .Ip "cos(EXPR)" 8 6 .Ip "cos EXPR" 8 6 EXPR (ラジアンで表現) のコサインを返します。 EXPR を省略すると $_ のコサインを取ります。 .Ip "crypt(PLAINTEXT,SALT)" 8 6 C ライブラリの crypt() 関数と正確に同じように encrypt された文字列 を返します。 パスワードファイルを調べて、粗野なパスワードを見つけるのに便利です。 白い帽子をかぶっている奴だけがこれをしなければなりません。 .Ip "dbmclose(ASSOC_ARRAY)" 8 6 .Ip "dbmclose ASSOC_ARRAY" 8 dbm ファイルと連想配列の結び付きを解除します。 連想配列に残っている値は、dbm ファイルのキャッシュに何が入っているか を知りたいのでなければ、意味がないものとなります。 この関数は、ndbm を使う場合にのみ有用です。 .Ip "dbmopen(ASSOC,DBNAME,MODE)" 8 6 dbm や ndbm ファイルと連想配列を結び付けます。 ASSOC は連想配列の名前です。 (通常の open と違って、最初の引数はファイルハンドルのように見えても、 ファイルハンドルでは*ありません*) 。 DBNAME は、(.dir や .pag の拡張子を除いた) データベースの名前です。 データベースが存在しないと、(umaskで修飾された) MODE で指定された プロテクションで作成します。 古い dbm 関数しかサポートしないシステムでは、プログラムの中で一つの dbmopen しか許されないかもしれません。 dbm も ndbm もないシステムでは、dbmopen 呼び出しは致命的なエラーを生 じます。 .Sp それまでの dbmopen で関連付けられた連想配列の値は失われます。 dbm ファイルのうち、ある量の値はメモリにキャッシュされます。 デフォルトでその量は 64 ですが、dbmopen の前に連想配列の ガーベッジエントリの数をあらかじめ確保しておくことで、 増やすことができます。必要なら、reset コマンドでキャッシュを フラッシュすることができます。 .Sp dbm ファイルへの書き込み許可を持っていない場合、連想配列変数を 読み出すだけで、それをセットすることはできません。 書き込めるかどうかをテストしたければ、ファイルテストを使うか、エラーを トラップできる eval の中で、ダミーの配列エントリをセットしようと してみて下さい。 .Sp keys() や valuse() のような関数は、大きな dbm ファイルを使ったときに、 巨大な配列値を返すかもしれません。 大きな dbm ファイルで繰り返しをするときは、each() 関数を使った方が 良いかもしれません。 例: .nf .ne 6 # 履歴ファイルのオフセットを表示します dbmopen(HIST,'/usr/lib/news/history',0666); while (($key,$val) = each %HIST) { print $key, ' = ', unpack('L',$val), "\en"; } dbmclose(HIST); .fi .Ip "defined(EXPR)" 8 6 .Ip "defined EXPR" 8 左辺値 EXPR が、実際に値を持っているかどうかを表す論理値を返します。 多くの演算で、ファイル終端、初期化されていない変数、システムエラーなど の例外処理条件で undefined 値が返されます。 この関数は、本当のヌル文字列を返すかもしれない操作、特に配列要素を参照 する操作の際に、未定義のヌル文字列と定義されたヌル文字列の判別を可能に します。 配列やサブルーチンが存在するかどうかを調べることもできます。 予約済み変数を使うときは、直観的に期待するような結果になるとは保証されて いません。 例: .nf .ne 7 print if defined $switch{'D'}; print "$val\en" while defined($val = pop(@ary)); die "Can't readlink $sym: $!" unless defined($value = readlink $sym); eval '@foo = ()' if defined(@foo); die "No XYZ package defined" unless defined %_XYZ; sub foo { defined &$bar ? &$bar(@_) : die "No bar"; } .fi undef も参照して下さい。 .Ip "delete $ASSOC{KEY}" 8 6 指定した連想配列から、指定した値を削除します。 削除された値が返りますが、何も削除されなかった場合は undefined 値が 返ります。 $ENV{} から削除すると、環境変数を変更します。 dbm ファイルに結びつけられた配列を削除すると、dbm ファイルからその項 目を削除します。 .Sp 以下の例は、連想配列のすべての値を削除します: .nf .ne 3 foreach $key (keys %ARRAY) { delete $ARRAY{$key}; } .fi (しかし、 .I reset コマンドを使った方が速いでしょう。undef %ARRAY ならもっと速いでしょう) .Ip "die(LIST)" 8 .Ip "die LIST" 8 eval の外で、LIST の値を .I STDERR に表示して、そのときの $! (errno) の値で終了 (exit) します。 $! が 0 なら、($? >> 8) (\`command\` のステータス) の値で終了します。 ($? >> 8) が 0 なら、255 で終了します。 eval の中では、エラーメッセージは $@ に詰め込まれ、eval は undefined 値で終了します。 .Sp 同等の例: .nf .ne 3 .ie t \{\ die "Can't cd to spool: $!\en" unless chdir \'/usr/spool/news\'; 'br\} .el \{\ die "Can't cd to spool: $!\en" unless chdir \'/usr/spool/news\'; 'br\} chdir \'/usr/spool/news\' || die "Can't cd to spool: $!\en" .fi .Sp EXPR の値が改行で終らない場合、スクリプトの現在の行番号と (もしあれば) 入力行番号が出力され、改行が加えられます。 ヒント: \*(L", stopped\*(R" をメッセージに加えておくと、 \*(L"at foo line 123\*(R" が加えられたときにわかり易くなるので良い でしょう。 スクリプト \*(L"canasta\*(R" を走らせているとすると、 .nf .ne 7 die "/etc/games is no good"; die "/etc/games is no good, stopped"; は、多分 /etc/games is no good at canasta line 123. /etc/games is no good, stopped at canasta line 123. .fi と出力されます。 .IR exit を参照して下さい。 .Ip "do BLOCK" 8 4 BLOCK 内で指定されたうち、最後のコマンドの値を返します。 ループ修飾子に修飾されたときは、ループ条件をテストする前に BLOCK が 一度実行されます。 (他の文では、ループ修飾子は、条件を始めにテストします。) .Ip "do SUBROUTINE (LIST)" 8 3 .I sub で宣言されたサブルーチンを実行し、SUBROUTINE で最後に評価された式の値 を返します。 その名前のサブルーチンがない場合、致命的エラーを生じます。 (サブルーチンが存在しているかどうかを判定したいなら、\*(L"defined\*(R" 演算子を使うのが良いでしょう。) 配列をリストの一部として渡したいなら、各配列の前に配列の長さを付けて 渡すのが良いでしょう。 (後に出てくるサブルーチンのセクションを参照して下さい。) \*(L"do EXPR\*(R" の形との混乱を避けるため、括弧は必要となります。 .Sp SUBROUTINE は、一つのスカラ変数でもかまいません。その場合、 実行されるサブルーチン名は、変数から得られます。 .Sp 別の (好まれる) 形として、アンパサンド & を前に付ける &foo(@args) の ように、サブルーチンを呼んでもかまいません。 引数を渡さないなら、括弧を使う必要はありません。 括弧を省略すると、サブルーチンには @_ 配列は渡されません。 & 型は、defined や undef 演算子にサブルーチンを指示するのにも 使われます: .nf if (defined &$var) { &$var($parm); undef &$var; } .fi .Ip "do EXPR" 8 3 ファイル名として EXPR の値を使い、 .I perl スクリプトとして、ファイルの内容を実行します。 これは基本的に .I perl サブルーチンライブラリからサブルーチンをインクルードするという使い方を します。 .nf do \'stat.pl\'; は、 eval \`cat stat.pl\`; .fi とほとんど同じです。 違うのは、より効率的で、より簡潔で、エラーメッセージ中の現在ファイル名 は正しく、カレントディレクトリに stat.pl がなければ .B \-I で指定されたライブラリをすべて探すということです。 (予約変数のセクション中の @INC 配列を参照して下さい) 。 しかし、呼び出しのたびにファイルを解析し直すのは同じなので、ループの 内側でこのファイルを使うなら、起動時間は少し余計にかかるとしても、 \-P と #include を使った方が良いでしょう。 (この #include を使う問題点は、cpp が # コメントを認識してくれない ことです。\*(--逃げ道は、コメント単独として \*(L";#\*(R" を使うことです。) 次のものは等価ではないことに注意して下さい: .nf .ne 2 do $foo; # ファイルを eval します do $foo(); # サブルーチンを呼びます .fi ライブラリルーチンのインクルードとしては、 \*(L"require\*(R" 演算子の方がより良いことを覚えておいて下さい。 .Ip "dump LABEL" 8 6 ただちにコアダンプします。 もともと、これは、プログラムの始めにすべての変数を初期化した後に ダンプされたコアを undump プログラムを使って実行バイナリを作るために あります。 新しいバイナリが実行されるとき、"goto LABEL" を実行することから 始まります (goto が受けるすべての制限は適用されます) 。 コアダンプで止まったところから、goto で再び始まると考えれば良いです。 LABEL が省略されると、プログラムは先頭から再スタートします。 警告: ダンプされたときに open されていたどのファイルも、プログラムが 再生したときにはもう open されておらず、perlの側では混乱する可能性が あります。 \-u も参照して下さい。 .Sp 例: .nf .ne 16 #!/usr/bin/perl require 'getopt.pl'; require 'stat.pl'; %days = ( 'Sun',1, 'Mon',2, 'Tue',3, 'Wed',4, 'Thu',5, 'Fri',6, 'Sat',7); dump QUICKSTART if $ARGV[0] eq '-d'; QUICKSTART: do Getopt('f'); .fi .Ip "each(ASSOC_ARRAY)" 8 6 .Ip "each ASSOC_ARRAY" 8 連想配列の次のキーと値の 2 つの要素から成る配列を順次返し、 それを繰り返すことができます。 各エントリはランダムのように見える順序で返されます。 配列全部が読み込まれたとき、ヌル配列 (代入されると FALSE(0) 値となる) が返されます。 その後、次の each() の呼び出しで繰り返しを再び始めます。 繰り返し情報は、配列からすべての要素を読み込むことによってのみ リセットできます。 繰り返しの間は、配列を変更してはいけません。 各連想配列につき一つずつ繰り返し情報があり、プログラム中のすべての each(), keys(), values() 関数呼び出しで共有されます。 次の例は、順序は異なるものの printenv プログラムのように環境変数を 表示します: .nf .ne 3 while (($key,$value) = each %ENV) { print "$key=$value\en"; } .fi keys() 関数と values() 関数も参照して下さい。 .Ip "eof(FILEHANDLE)" 8 8 .Ip "eof()" 8 .Ip "eof" 8 次に FILEHANDLE を読んだときファイル終端であるか、 または FILEHANDLE がオープンされていないとき、1 を返します。 FILEHANDLE は実際のファイルハンドル名を値に持つ式でもかまいません。 (この関数は、実際には一文字読み込んでは、ungetc するので、対話的な コンテキストではそれほど有用ではありません。) 引数無しの eof は、最後に読んだファイルの eof 状態を返します。 空の括弧 () は、コマンドラインで指定されたファイル群からなる 擬似ファイルを指します。つまり、eof() は while (<>) の内側で最後の ファイルの終端を検出するときに意味があります。 while (<>) ループの中で各ファイルを調べたいときは、eof(ARGV) または 括弧のない eof を使って下さい。 例: .nf .ne 7 # 最後のファイルの最終行の直前にダッシュを挿入します while (<>) { if (eof()) { print "\-\|\-\|\-\|\-\|\-\|\-\|\-\|\-\|\-\|\-\|\-\|\-\|\-\|\-\en"; } print; } .ne 7 # 各入力ファイル毎に、行番号をリセットします while (<>) { print "$.\et$_"; if (eof) { # Not eof(). close(ARGV); } } .fi .Ip "eval(EXPR)" 8 6 .Ip "eval EXPR" 8 6 .Ip "eval BLOCK" 8 6 EXPR は解析され、一つの小さな .I perl プログラムであるかのように実行されます。 .I perl プログラムのコンテキストの中で実行されるので、どの変数設定、 サブルーチン、フォーマット定義もその後に残ります。 戻り値は、丁度サブルーチンと同様に、最後に評価された式が返ります。 文法エラーや実行時エラーがあるか、die 文があれば、eval により undefined が返り、$@ にエラーメッセージがセットされます。 もしエラーがなければ、$@ はヌル文字列であることが保証されます。 EXPRを省略すると、$_ を評価します。 最後のセミコロンはどれも式から除かれます。 .Sp eval はしかし、致命的エラーまでトラップするので、 (dbmopen や symlinkのような) ある機能が実装されているかどうかを 決めるには便利なことを覚えておいて下さい。 die 演算子が例外を起こすように使われるのは、perl の例外トラップ機構 でもあります。 .Sp 実行されるコードが変わらないなら、その度に再コンパイルされる時間を 費すよりは、実行時エラーをトラップする eval-BLOCK の形をとった方が良い かもしれません。 どんなエラーも起これば $@ にメッセージが返ります。 EXPR のような、シングルクォートされた文字列を評価すると、同じ効果が ありますが、eval-BLOCK の形ではコンパイル時に文法エラーを報告するのに 対し、eval-EXPR の形では $@ を通して実行時に文法エラーを報告する点が 異なります。 eval-EXPR の形は、最初に成功したときに eval-BLOCK に最適化されます。 (e 修飾子を使った場合、置換される側はシングルクォートされた文字列と みなされ、同じ最適化が起こります。) 例: .nf .ne 11 # 0 除算を致命的エラーにしません eval { $answer = $a / $b; }; warn $@ if $@; # 初回使用後、同じものに最適化されます。 eval '$answer = $a / $b'; warn $@ if $@; # コンパイル時エラー eval { $answer = }; # 実行時エラー eval '$answer ='; # sets $@ .fi .Ip "exec(LIST)" 8 8 .Ip "exec LIST" 8 6 LIST の中に一つ以上の引数があるか、LIST が一つ以上の値を持つ配列ならば、 リストの引数を付けて execvp() を呼びます。 一つのスカラ引数だけなら、引数にシェルのメタキャラクタがあるかどうか を調べます。あれば、解析のために引数を丸ごと \*(L"/bin/sh \-c\*(R" に 渡し、無ければ、引数は単語に split され、execvp() に直接渡されます。 その方が効率が良いからです。 注意: exec (と system) は出力バッファをフラッシュしないので、出力が 失われるのを避けるために $| をセットする必要があるかもしれません。 例: .nf exec \'/bin/echo\', \'Your arguments are: \', @ARGV; exec "sort $outfile | uniq"; .fi .Sp もし、最初の引数を本当に実行したいのでなく、実行しようとしている プログラムの名前を詐称したいだけなら、本当に走らせたいプログラムを変数に 割り当てて、LIST の前に変数の名前をカンマを付けずに置くように 指定できます。 (これは、たとえ単一スカラしかリストに無くても、常に多くの値を持つ リストとして LIST の解釈を強制します。) 例: .nf .ne 2 $shell = '/bin/csh'; exec $shell '-sh'; # ログインシェルのふりをします .fi .Ip "exit(EXPR)" 8 6 .Ip "exit EXPR" 8 EXPR を評価し、ただちにその値で終了します。 例: .nf .ne 2 $ans = ; exit 0 \|if \|$ans \|=~ \|/\|^[Xx]\|/\|; .fi .IR die を参照して下さい。 EXPR が省略されると、値 0 の状態で終了します。 .Ip "exp(EXPR)" 8 3 .Ip "exp EXPR" 8 .I e の EXPR 乗を返します。 EXPR を省略すると、exp($_) を返します。 .Ip "fcntl(FILEHANDLE,FUNCTION,SCALAR)" 8 4 fcntl(2) 関数の実装です。 正しい関数定義を得るには、多分 .nf require "fcntl.ph"; # 多分 /usr/local/lib/perl/fcntl.ph .fi を始めに書いておかなければならないでしょう。 もし、fcntl.ph が存在しないか、もしくは正しい定義がされていない場合、 のような C のヘッダファイルに基づいて、 自分で何とかしなければなりません。 (perl kit から来る h2ph と呼ばれる perl スクリプトがあり、 このことを助けてくれるでしょう) 引数の処理と戻り値を返すことは、 この後に書かれている ioctl のように動作します。 fcntl は、fcntl(2) が実装されていないマシンで使われると 致命的エラーを生じます。 .Ip "fileno(FILEHANDLE)" 8 4 .Ip "fileno FILEHANDLE" 8 4 ファイルハンドルに対するファイルディスクリプタを返します。 select() のビットマップを構成するのに便利です。 FILEHANDLE が式だと、その値がファイルハンドルの名前と解釈されます。 .Ip "flock(FILEHANDLE,OPERATION)" 8 4 ファイルハンドルに対し flock(2) を呼びます。 OPERATION の定義については、flock(2) のマニュアルを参照して下さい。 成功すれば真を、失敗すれば偽を返します。 flock(2) が実装されていないマシンで使うと、致命的エラーになります。 以下は、BSD システムのメールボックスにメールを追加します。 .nf .ne 20 $LOCK_SH = 1; $LOCK_EX = 2; $LOCK_NB = 4; $LOCK_UN = 8; sub lock { flock(MBOX,$LOCK_EX); # 待っている間に、他の誰かが追加する # 場合のために... seek(MBOX, 0, 2); } sub unlock { flock(MBOX,$LOCK_UN); } open(MBOX, ">>/usr/spool/mail/$ENV{'USER'}") || die "Can't open mailbox: $!"; do lock(); print MBOX $msg,"\en\en"; do unlock(); .fi .Ip "fork" 8 4 fork() システムコールを実行します。 親プロセスに子の pid を返し、子プロセスには 0 を返します。 注意: フラッシュされていないバッファは、両方のプロセスでフラッシュ されずに残ります。これは二重出力を避けるために、$| をセットする必要が あるかもしれないということを意味します。 .Ip "getc(FILEHANDLE)" 8 4 .Ip "getc FILEHANDLE" 8 .Ip "getc" 8 FILEHANDLE に結びつけられた入力ファイルから、次の文字を返します。 EOF ではヌルを返します。 FILEHANDLE を省略すると、STDIN から読み込み ます。 .Ip "getlogin" 8 3 現在のログイン状況が /etc/utmp から得られれば、それを返します。 得られなければ、getpwuid を使って下さい。 $login = getlogin || (getpwuid($<))[0] || "Somebody"; .Ip "getpeername(SOCKET)" 8 3 SOCKET 接続の向こう側の pack された sockaddr アドレスを返します。 .nf .ne 4 # 内部 sockaddr $sockaddr = 'S n a4 x8'; $hersockaddr = getpeername(S); .ie t \{\ ($family, $port, $heraddr) = unpack($sockaddr,$hersockaddr); 'br\} .el \{\ ($family, $port, $heraddr) = unpack($sockaddr,$hersockaddr); 'br\} .fi .Ip "getpgrp(PID)" 8 4 .Ip "getpgrp PID" 8 指定された PID に対する現在のプロセスグループを返します。 現在のプロセスでは 0 です。 getpgrp(2) が実装されていないマシンで使うと、致命的エラーになります。 EXPR が省略されると、現在のプロセスのプロセスグループが返ります。 .Ip "getppid" 8 4 親プロセスのプロセス ID を返します。 .Ip "getpriority(WHICH,WHO)" 8 4 プロセス、プロセスグループ、ユーザの現在のプライオリティを返します。 (getpriority(2)を参照して下さい。) getpriority(2) を実装していないマシンで使うと致命的エラーになります。 .Ip "getpwnam(NAME)" 8 .Ip "getgrnam(NAME)" 8 .Ip "gethostbyname(NAME)" 8 .Ip "getnetbyname(NAME)" 8 .Ip "getprotobyname(NAME)" 8 .Ip "getpwuid(UID)" 8 .Ip "getgrgid(GID)" 8 .Ip "getservbyname(NAME,PROTO)" 8 .Ip "gethostbyaddr(ADDR,ADDRTYPE)" 8 .Ip "getnetbyaddr(ADDR,ADDRTYPE)" 8 .Ip "getprotobynumber(NUMBER)" 8 .Ip "getservbyport(PORT,PROTO)" 8 .Ip "getpwent" 8 .Ip "getgrent" 8 .Ip "gethostent" 8 .Ip "getnetent" 8 .Ip "getprotoent" 8 .Ip "getservent" 8 .Ip "setpwent" 8 .Ip "setgrent" 8 .Ip "sethostent(STAYOPEN)" 8 .Ip "setnetent(STAYOPEN)" 8 .Ip "setprotoent(STAYOPEN)" 8 .Ip "setservent(STAYOPEN)" 8 .Ip "endpwent" 8 .Ip "endgrent" 8 .Ip "endhostent" 8 .Ip "endnetent" 8 .Ip "endprotoent" 8 .Ip "endservent" 8 これらのルーチンは、システムライブラリ中の同名の関数を実行します。 配列のコンテキストの中では、これらの各 get ルーチンの戻り値は、 以下のようになります: .nf ($name,$passwd,$uid,$gid, $quota,$comment,$gcos,$dir,$shell) = getpw.\|.\|. ($name,$passwd,$gid,$members) = getgr.\|.\|. ($name,$aliases,$addrtype,$length,@addrs) = gethost.\|.\|. ($name,$aliases,$addrtype,$net) = getnet.\|.\|. ($name,$aliases,$proto) = getproto.\|.\|. ($name,$aliases,$port,$proto) = getserv.\|.\|. .fi (もしエントリが存在しなければ、ヌルリストになります。) .Sp スカラのコンテキストでは、 name による検索でない場合には name が得られ、 name による検索の場合には name 以外が得られます。 (エントリが存在しない場合は、undefined 値となります。) 例: .nf $uid = getpwnam $name = getpwuid $name = getpwent $gid = getgrnam $name = getgrgid $name = getgrent 他 .fi getgr.\|.\|. の返す $menbers 値は、空白で区切られたグループメンバの ログイン名のリストです。 .Sp gethost.\|.\|. 関数では、h_errno 変数が C でサポートされていれば、 関数のコールが失敗したとき $? を介して返されます。 成功した関数コールの返す @addrs 値は、相当するシステムライブラリ 呼び出しに返された raw address のリストです。 インターネットドメイン (INET) では、各アドレスは 4 バイト長で 以下のように書くと unpack できます。 .nf ($a,$b,$c,$d) = unpack('C4',$addr[0]); .fi .Ip "getsockname(SOCKET)" 8 3 pack された、SOCKET接続のこちら側の sockaddr アドレスを返します。 .nf .ne 4 # An internet sockaddr $sockaddr = 'S n a4 x8'; $mysockaddr = getsockname(S); .ie t \{\ ($family, $port, $myaddr) = unpack($sockaddr,$mysockaddr); 'br\} .el \{\ ($family, $port, $myaddr) = unpack($sockaddr,$mysockaddr); 'br\} .fi .Ip "getsockopt(SOCKET,LEVEL,OPTNAME)" 8 3 要求したソケットのオプションを返します。エラーの場合は undefined を 返します。 .Ip "gmtime(EXPR)" 8 4 .Ip "gmtime EXPR" 8 time 関数に返された時刻を、Greenwich timezone として 9 要素の配列に 変換します。 通常は次のように使います: .nf .ne 3 .ie t \{\ ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = gmtime(time); 'br\} .el \{\ ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = gmtime(time); 'br\} .fi すべての配列要素は数値で、構造体 tm から直接得られるものです。 これにより $mon は 0.\|.11 の範囲で $wday は 0.\|.6 の範囲であることに なります。 EXPR を省略すると、gmtime(time) を実行します。 .Ip "goto LABEL" 8 6 LABEL というラベルを付けられた文を探し、そこから実行を再開します。 現在のところ、プログラムの本体内で do {} 構造の内側が 入れ子になっていない文にしか行けません。 この文は効率的には実装されておらず、 .IR sed -to- perl 翻訳プログラムを簡単にできるようにするためだけあります。 翻訳された .I sed スクリプトの一貫性のサポートはしますが、このセマンティックスを私がいつ 変更するかわからないので、自らの責任で使って下さい。 全く使わない方が良いでしょう。 .Ip "grep(EXPR,LIST)" 8 4 LIST の各要素に対して (ローカルには各要素を $_ にセット) 、EXPR を 評価して、式が真であると評価された要素だけからなる配列を返します。 スカラのコンテキストでは、式が真になった回数を数値で返します。 .nf @foo = grep(!/^#/, @bar); # コメントを除きます .fi $_ は配列値への参照なので、配列の要素を変更する場合に使えることを 覚えておきましょう。 これは便利ですが、LIST が名前のついた配列でないと、おかしな結果を 引き起こすことになります。 .Ip "hex(EXPR)" 8 4 .Ip "hex EXPR" 8 10 進値 EXPR を 16 進文字列にして返します。 (0 または 0x で始まる文字列を解釈するなら、oct() を参照して下さい。) EXPR を省略すると $_ を使います。 .Ip "index(STR,SUBSTR,POSITION)" 8 4 .Ip "index(STR,SUBSTR)" 8 4 STR の中で、POSITION かそれ以降に最初に SUBSTR が現れる位置を返します。 POSITION を省略すると、文字列の先頭から検索します。 戻り値は、0 か $[ 変数に設定されたものがベースになります。 SUBSTR がみつからないと、ベースから 1 を引いた値を返し、通常 \-1 に なります。 .Ip "int(EXPR)" 8 4 .Ip "int EXPR" 8 EXPR の整数部を返します。 EXPR が省略されると、$_ を使います。 .Ip "ioctl(FILEHANDLE,FUNCTION,SCALAR)" 8 4 これは、ioctl(2) 関数を実装しています。 正しい関数定義を得るには、多分始めの方で .nf require "ioctl.ph"; # 多分 /usr/local/lib/perl/ioctl.ph .fi と書かなければならないでしょう。 ioctl.ph が存在しないか、または正しく定義されていない場合、 のような C のヘッダファイルから自分自身でなんとかしな ければなりません。 (perl キットにある h2ph というスクリプトがこの助けになるでしょう。) SCALAR は、FUNCTIONに依存して、参照または書き込みがされます。 FUNCTION \*(--SCALAR の文字列値へのポインタは、実際の ioctl 呼び出しの 第 3 引数に渡されます。 (SCALAR が文字列値でなく数値であった場合、文字列値へのポインタでなく 数値そのものが渡されます。これが真であることを保証するには、このスカラを 使う前に 0 を加えて下さい。) ioctl() に使われる構造体の値を扱うには、pack() 関数と unpack() 関数が 便利です。 次の例は、DEL に erase 文字をセットします。 .nf .ne 9 require 'ioctl.ph'; $sgttyb_t = "ccccs"; # chars 4 個と short 1 個 if (ioctl(STDIN,$TIOCGETP,$sgttyb)) { @ary = unpack($sgttyb_t,$sgttyb); $ary[2] = 127; $sgttyb = pack($sgttyb_t,@ary); ioctl(STDIN,$TIOCSETP,$sgttyb) || die "Can't ioctl: $!"; } .fi ioctl (と fcntl) の戻り値は以下の通りです: .nf .ne 4 OS の戻り値:\h'|3i'perlの戻り値: -1\h'|3i' undefined 値 0\h'|3i' 文字列 "0 but true" それ以外\h'|3i' その数 .fi このように、perl は成功時に真を、失敗時に偽を返しますが、 オペレーティングシステムから返される実際の値も簡単に判定することができます: .nf ($retval = ioctl(...)) || ($retval = -1); printf "System returned %d\en", $retval; .fi .Ip "join(EXPR,LIST)" 8 8 .Ip "join(EXPR,ARRAY)" 8 分割されている LIST や ARRAY の文字列を、フィールドセパレータとして 値 EXPR をはさんだ一つの文字列につなげて、その文字列を返します。 例: .nf .ie t \{\ $_ = join(\|\':\', $login,$passwd,$uid,$gid,$gcos,$home,$shell); 'br\} .el \{\ $_ = join(\|\':\', $login,$passwd,$uid,$gid,$gcos,$home,$shell); 'br\} .fi .IR split を参照して下さい。 .Ip "keys(ASSOC_ARRAY)" 8 6 .Ip "keys ASSOC_ARRAY" 8 名前のついた連想配列のすべてのキーからなる普通の配列を返します。 キーは、見かけ上ランダムな順で返されますが、values() 関数や each() 関数 (これによって連想配列は変更されません) が生成するものと同じ順になります。 以下は、環境変数を表示する別の方法です: .nf .ne 5 @keys = keys %ENV; @values = values %ENV; while ($#keys >= 0) { print pop(@keys), \'=\', pop(@values), "\en"; } キーでソートすると: .ne 3 foreach $key (sort(keys %ENV)) { print $key, \'=\', $ENV{$key}, "\en"; } .fi .Ip "kill(LIST)" 8 8 .Ip "kill LIST" 8 2 プロセスのリストにシグナルを送ります。 リストの最初の要素は、送られるシグナルでなければなりません。 シグナル送信に成功したプロセスの数を返します。 .nf $cnt = kill 1, $child1, $child2; kill 9, @goners; .fi シグナルが負の場合、プロセスの代わりにプロセスグループを kill します。 (System Vでは、負の \fIプロセス\fR 番号はプロセスグループも kill しますが、互換性はありません。) クォートでくくられたシグナル名も使えます。 .Ip "last LABEL" 8 8 .Ip "last" 8 .I last コマンドは、(ループ内で使われるような) C の .I break 文に似ていて、該当するループを直ちに終了します。 LABEL が省略されると、このコマンドは最も内側のループを抜けます。 .I continue ブロックがあったとしても、実行されません: .nf .ne 4 line: while () { last line if /\|^$/; # ヘッダが終ったら抜けます .\|.\|. } .fi .Ip "length(EXPR)" 8 4 .Ip "length EXPR" 8 EXPR の値の文字列長を返します。 EXPR を省略すると、$_ の長さを返します。 .Ip "link(OLDFILE,NEWFILE)" 8 2 OLDFILE にリンクされた NEWFILE を作成します。 成功すると 1 を、失敗すると 0 を返します。 .Ip "listen(SOCKET,QUEUESIZE)" 8 2 listen システムコールと同じことを行ないます。 成功すると真を、失敗すると偽を返します。 プロセス間通信のセクションの例を参照して下さい。 .Ip "local(LIST)" 8 4 閉じたブロック、サブルーチン、eval 、\*(L"do\*(R" に局所的な 変数リストを宣言します。 リストされたすべての要素は左辺値として妥当なものでなければなりません。 この演算子は、LIST 内のその時点での変数を隠れたスタックに保存し、 ブロックやサブルーチンや eval を抜けるときに戻すように動作します。 これは、呼ばれたサブルーチンもグローバル変数でなく、ローカル変数を 参照することを意味します。 そうしたければ、LIST に代入してローカル変数を初期化してもかまいません。 (初期値が特定の値として与えられていなければ、undefined 値として 生成されます。) 普通、これはサブルーチンのパラメータに名前をつけるのに使われます。 例: .nf .ne 13 sub RANGEVAL { local($min, $max, $thunk) = @_; local($result) = \'\'; local($i); # 多分 $thunk は $i を参照しています for ($i = $min; $i < $max; $i++) { $result .= eval $thunk; } $result; } .ne 6 if ($sw eq \'-v\') { # グローバルな配列でローカルな配列を初期化します local(@ARGV) = @ARGV; unshift(@ARGV,\'echo\'); system @ARGV; } # @ARGV が元に戻されます .ne 6 # 一時的に digits という連想配列に追加をしています。 if ($base12) { # (注意: これが効率的と言いたいわけではありません) local(%digits) = (%digits,'t',10,'e',11); do parse_num(); } .fi local() は実行時のコマンドで、ループ終了時に全部を一度に開放するまでは、 ループを通るたびに実行され、毎回スタックを消費していきます。 .Ip "localtime(EXPR)" 8 4 .Ip "localtime EXPR" 8 time 関数に返された時刻を、ローカルタイムゾーンとして解析された 9 要素の 配列に変換します。 通常次のように使われます: .nf .ne 3 .ie t \{\ ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); 'br\} .el \{\ ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); 'br\} .fi すべての配列要素は数字で、構造体 tm から直接得られたものです。 これにより $mon は 0.\|.11 の範囲で $wday は 0.\|.6 の範囲であることに なります。 EXPR を省略すると、localtime(time) を実行します。 .Ip "log(EXPR)" 8 4 .Ip "log EXPR" 8 EXPR の (底が .IR e の) 対数を返します。 EXPR を省略すると、$_ の log を返します。 .Ip "lstat(FILEHANDLE)" 8 6 .Ip "lstat FILEHANDLE" 8 .Ip "lstat(EXPR)" 8 .Ip "lstat SCALARVARIABLE" 8 stat() 関数と同じことを実行しますが、シンボリックリンクでは指している 先のファイルの代わりにシンボリックリンク自身の状態を返します。 シンボリックリンクが実装されていないシステムでは、通常の stat を 実行します。 .Ip "m/PATTERN/gio" 8 4 .Ip "/PATTERN/gio" 8 パターンマッチに合う文字列を検索し、真 (1) か偽 (\'\') を 返します。 =~ や !~ を介した文字列の指定がなければ、文字列 $_ が検索されます。 (=~ で指定された文字列は、左辺値である必要はありません。 式の評価結果でもかまいませんが、=~ はどちらかというと優先度が高いことを 覚えておいて下さい。) 正規表現のセクションを参照して下さい。 .Sp / が区切り文字である場合、始めの \*(L'm\*(R' は省略可能です。\*(L'm\*(R' が あると、英数字以外のどの文字でも区切りにできます。 これは、特に \*(L'/\*(R' を含む UNIX のパス名へのマッチに便利です。 最後の区切りの後にオプション文字 \*(L'i\*(R' が続くと、マッチングが 大文字小文字の区別なく行なわれます。 PATTERN は、スカラ変数への参照を含んでいてもよく、それはパターン検索 が評価される毎に挿入されます (パターンはリコンパイルされます) 。 ( $) と $| は文字列終端のテストに見えるため、挿入は行なわれません。) パターンを一度だけコンパイルさせたい場合は、後ろの区切り文字 の後に \*(L"o\*(R" を加えて下さい。 これにより、余分な実行時再コンパイルを避けられるので、挿入したい値が スクリプトの動いている間中、変わらないときには便利です。 PATTERN がヌル文字に評価されたときは、最後に成功した正規表現が代わりに 使われます。 .Sp 配列値が必要なコンテキストで使われると、パターンマッチはパターンの中で マッチした subexpression を括弧でくくったものすなわち、 ($1, $2, $3.\|.\|.) からなる配列を返します。 この場合、実際には $1, $2 等をセットは*せず*、 $+, $`, $&, $' もセットしません。 マッチが失敗すると、ヌル配列が返ります。 マッチが成功しても括弧がないと、配列値 (1) が返ります。 .Sp 例: .nf .ne 4 open(tty, \'/dev/tty\'); \|=~ \|/\|^y\|/i \|&& \|do foo(\|); # y なら foo を実行 if (/Version: \|*\|([0\-9.]*\|)\|/\|) { $version = $1; } next if m#^/usr/spool/uucp#; .ne 5 # 恵まれない人の grep $arg = shift; while (<>) { print if /$arg/o; # 一度だけコンパイル } if (($F1, $F2, $Etc) = ($foo =~ /^(\eS+)\es+(\eS+)\es*(.*)/)) .fi この最後の例は、$foo を最初の二語と残りに split し、三つのフィールド を $F1 、$F2 、$Etc に代入します。 どれかの変数が代入された場合、すなわちパターンがマッチした場合、 この条件は真となります。 .Sp \*(L"g\*(R" 修飾子は、グローバルパターンマッチの指定です\*(--つまり、 文字列の中でできるだけ多くのマッチを行ないます。 どのように振舞うかは、コンテキストに依存します。 配列のコンテキストでは、正規表現の中ですべての括弧にマッチした文字列の リストを返します。括弧がなければ、パターン全体を囲む括弧があるか のようにマッチした文字列すべてのリストを返します。 スカラのコンテキストでは、文字列を通してマッチする毎に*真*を返し、 マッチしなかったとき*偽*を返します。 (言いかえると、最後にテストした 場所を覚えていて、そこから再び検索を始めるということです。) 最後のマッチから文字列が変更されていないことを仮定しています。 マッチとマッチの間で文字列を変更することは、未定義な動作を引き起こす かもしれません。 (実際には substr()を使って、全文字列の長さを変えずにその場で変更する なら、できます。しかし、一般にはそういう変更は s///g を使うべきです。) 例: .nf # 配列のコンテキスト ($one,$five,$fifteen) = (\`uptime\` =~ /(\ed+\e.\ed+)/g); # スカラのコンテキスト $/ = ""; $* = 1; while ($paragraph = <>) { while ($paragraph =~ /[a-z][\'")]*[.!?]+[\'")]*\es/g) { $sentences++; } } print "$sentences\en"; .fi .Ip "mkdir(FILENAME,MODE)" 8 3 FILENAME で指定されたディレクトリを、(umask で修飾された) MODE で指定 されたパーミッションで作成します。 成功すると 1 を、失敗すると 0 を返し、$! (errno) をセットします。 .Ip "msgctl(ID,CMD,ARG)" 8 4 System V IPC 関数の msgctl を呼びます。 CMD が &IPC_STAT なら、ARG は 返された msqid_ds 構造を保持する変数でなければなりません。 ioctl のように、エラーのときは undefined 値を、0 のとき には "0 but true" を、でなければ実際の戻り値を返します。 .Ip "msgget(KEY,FLAGS)" 8 4 System V IPC 関数の msgget を呼びます。成功時はメッセージキュー ID を、 エラーが起これば undefined value を返します。 .Ip "msgsnd(ID,MSG,FLAGS)" 8 4 System V IPC 関数の msgsnd を呼び、メッセージ MSGS をメッセージキュー ID に送信します。 MSG は、pack("L", $type) で作られる long integer のメッセージ型で始めなければなりません。成功すれば真を、エラーが起こる と偽を返します。 .Ip "msgrcv(ID,VAR,SIZE,TYPE,FLAGS)" 8 4 System V IPC 関数 msgrcv を呼び、 メッセージキュー ID からメッセージを受け取り、 最大メッセージサイズ SIZE で変数 VAR に格納します。 メッセージを受け取ると、VAR に最初に格納されたものがメッセージ型 となり、VAR の最大長は、SIZE にメッセージ型のサイズを加えたものに なることに注意して下さい。 成功すると真を、エラーでは偽を返します。 .Ip "next LABEL" 8 8 .Ip "next" 8 .I next コマンドは、C の .I continue 文と同様に、ループの次の繰り返しを始めます。 .nf .ne 4 line: while () { next line if /\|^#/; # コメントを捨てます .\|.\|. } .fi 上の例で .I continue ブロックがあると、行が捨てられた場合でも実行されることを覚えておいて 下さい。 LABEL が省略されると、このコマンドは最も内側のループを続けます。 .Ip "oct(EXPR)" 8 4 .Ip "oct EXPR" 8 10 進数 EXPR を、8 進文字列にして返します。 (EXPRが 0x で始まる文字列なら、10 進の代わりに 16 進として変換します。) 以下は、10 進、8 進、16 進の標準的な記法を扱います。 .nf $val = oct($val) if $val =~ /^0/; .fi EXPR が省略されると、$_ を使います。 .Ip "open(FILEHANDLE,EXPR)" 8 8 .Ip "open(FILEHANDLE)" 8 .Ip "open FILEHANDLE" 8 EXPR で与えられたファイル名のファイルをオープンし、FILEHANDLE に結び つけます。 FILEHANDLE が式の場合、その値を実際にファイルハンドルが求める名前 として使います。 EXPR が省略されると、FILEHANDLE と同名のスカラ変数が保持する値が ファイル名となります。 ファイル名の前に \*(L"<\*(R" を付けるか、何も付けない場合、ファイルは 入力用にオープンされます。 ファイル名が \*(L">\*(R" で始まると、ファイルは出力用にオープンされます。 ファイル名が \*(L">>\*(R" で始まると、ファイルは追加書き込み用に オープンされます。 (\'>\' や \'<\' の前に \'+\' を付けると、ファイルを読み書き両用に できます。) ファイル名が \*(L"|\*(R" で始まると、ファイル名は出力がパイプされる コマンドと解釈され、ファイル名が \*(L"|\*(R" で終ると、入力が パイプされるコマンドと解釈されます。 (入出力共パイプするコマンドは必要がないでしょう。) \'\-\' をオープンすると .I STDIN を、\'>\-\' をオープンすると .IR STDOUT をオープンします。 open は成功したとき、0 でない値を、失敗したとき undefined 値を 返します。 open がパイプを含む場合、戻り値はサブプロセスの pid となります。 例: .nf .ne 3 $article = 100; open article || die "Can't find article $article: $!\en"; while (
) {\|.\|.\|. .ie t \{\ open(LOG, \'>>/usr/spool/news/twitlog\'\|); # (ログ保存) 'br\} .el \{\ open(LOG, \'>>/usr/spool/news/twitlog\'\|); # (ログ保存) 'br\} .ie t \{\ open(article, "caesar <$article |"\|); # 記事を decrypt 'br\} .el \{\ open(article, "caesar <$article |"\|); # 記事を decrypt 'br\} .ie t \{\ open(extract, "|sort >/tmp/Tmp$$"\|); # $$ は現在のプロセス 'br\} .el \{\ open(extract, "|sort >/tmp/Tmp$$"\|); # $$ は現在のプロセス 'br\} .ne 7 # 引数リストのファイルを、それがインクルードするものも # 含めて処理します foreach $file (@ARGV) { do process($file, \'fh00\'); # no pun intended } sub process { local($filename, $input) = @_; $input++; # 文字列インクリメント unless (open($input, $filename)) { print STDERR "Can't open $filename: $!\en"; return; } .ie t \{\ while (<$input>) { # 間接指定に注意 'br\} .el \{\ while (<$input>) { # 間接指定に注意 'br\} if (/^#include "(.*)"/) { do process($1, $input); next; } .\|.\|. # 続く } } .fi Bourne shell の慣習により、EXPR は \*(L">&\*(R" で始めるような指定も できます。その場合、文字列の残りはファイルハンドル (数字なら ファイルディスクリプタ) の名前と解釈され、dup して open します。 >>, <, +>, +>>, +< の後に & を使ってもかまいません。 指定するモードは、元のファイルハンドルのモードと一致していなくては なりません。 以下は、 .I STDOUT と .IR STDERR を保存し、リダイレクトを行なって、その後で書き戻します: .nf .ne 21 #!/usr/bin/perl open(SAVEOUT, ">&STDOUT"); open(SAVEERR, ">&STDERR"); open(STDOUT, ">foo.out") || die "Can't redirect stdout"; open(STDERR, ">&STDOUT") || die "Can't dup stdout"; select(STDERR); $| = 1; # バッファリングしません select(STDOUT); $| = 1; # バッファリングしません print STDOUT "stdout 1\en"; # これもサブプロセスで print STDERR "stderr 1\en"; # 動作します close(STDOUT); close(STDERR); open(STDOUT, ">&SAVEOUT"); open(STDERR, ">&SAVEERR"); print STDOUT "stdout 2\en"; print STDERR "stderr 2\en"; .fi コマンド \*(L"\-\*(R" でパイプをオープンする、すなわち \*(L"|\-\*(R" や \*(L"\-|\*(R" をオープンすると、暗黙のうちに fork され、open の 戻り値として親プロセスには、子プロセスの pid が返され、子プロセスには 0 が返されます。 (open が成功したかどうかは、defined($pid) を使って判断して下さい。) ファイルハンドルは、親にとって普通の挙動をしますが、子には .IR STDOUT / STDIN にパイプされたファイルハンドルの i/o となります。 子プロセスでファイルハンドルがオープンされず、\*(--新しく ファイルハンドルは、新しい .I STDIN から .IR STDOUT へのパイプとなります。 よく使われるのは、普通のパイプのオープンと同様、パイプコマンドの 実行状態をコントロールしたいとき、setuid されたプログラムを走らせるとき、 シェルコマンドでメタキャラクタのチェックをする必要がないときです。 次の二つは、それぞれある程度同等です: .nf .ne 5 open(FOO, "|tr \'[a\-z]\' \'[A\-Z]\'"); open(FOO, "|\-") || exec \'tr\', \'[a\-z]\', \'[A\-Z]\'; open(FOO, "cat \-n '$file'|"); open(FOO, "\-|") || exec \'cat\', \'\-n\', $file; .fi パイプされたファイルハンドルを明示的に close すると、親プロセスは 子プロセスが終了するのを待つことになり、$? に状態を返します。 fork を行う操作では、両方のプロセスでフラッシュされないバッファが そのまま残ることに注意して下さい。これは、二重出力を避けるために $| を セットした方が良いことを意味します。 .Sp open に渡されたファイル名は、前後の空白が除かれます。 意図的に変な文字を含むファイル名を持つファイルをオープンしたいときは、 前後の空白もこのように守ってやる必要があります: .nf .ne 2 $file =~ s#^(\es)#./$1#; open(FOO, "< $file\e0"); .fi .Ip "opendir(DIRHANDLE,EXPR)" 8 3 EXPR という名前のディレクトリを readdir(), telldir(), seekdir(), rewinddir(), closedir() で処理できるようにオープンします。 成功すると真を返します。 DIRHANDLE は、FILEHANDLE とは別個のそれ自身の名前空間を持ちます。 .Ip "ord(EXPR)" 8 4 .Ip "ord EXPR" 8 EXPR の最初の文字のアスキー値を数値で返します。 EXPR が省略されると、$_ を使います。 ''' Comments on f & d by gnb@melba.bby.oz.au 22/11/89 .Ip "pack(TEMPLATE,LIST)" 8 4 配列または値のリストを引数に取り、バイナリ構造体にパックし、 構造体を含む文字列を返します。 TEMPLATE は値の順序と型を与える文字のシークエンスで、以下のように なります: .nf A アスキー文字列(スペースが padding される) a アスキー文字列(ヌルが padding される) c signed char C unsigned char s signed short S unsigned short i signed integer I unsigned integer l signed long L unsigned long n short (\*(L"network\*(R" order) N long (\*(L"network\*(R" order) f 単精度浮動小数点 (native format) d 倍精度浮動小数点 (native format) p 文字列へのポインタ v short (\*(L"VAX\*(R" (little-endian) order) V long (\*(L"VAX\*(R" (little-endian) order) x null byte X Back up a byte @ 絶対位置にまでヌルで埋める u uuencode された文字列 b ビット文字列 (vec()のような昇順). B ビット文字列 (降順). h 16 進文字列 (低 nybble が先). H 16 進文字列 (高 nybble が先). .fi どの文字も繰り返し回数を表す数を続けることができます。 "a", "A", "b", "B", "h", "H" 以外の型では、pack 関数は LIST から回数を指定された数だけ値を取ります。 繰り返し数として * を使うと、残りすべての分だけ繰り返します。 "a" と "A" の型は値一つしか取りませんが、繰り返し指定を文字列長 として pack するので、ヌルや空白での padding が必要になります。 (unpack するときは、"A" は、後に続く空白を削りますが、"a" はしません。) 同様に、"b" と "B" フィールドは、指定したビット長を pack します。 "h" と "H" フィールドは、指定した長さの nybbles をパックします。 実数 (float と double) は、そのマシンの機械語フォーマットのみです。 浮動小数点フォーマット関係の多様性と標準の \*(L"network\*(R" 表現が 無いことから、交換することはできません。これは、 あるマシンで pack された浮動小数点データは、他のマシンでは、 たとえ両方が IEEE 浮動小数点数演算を行っていても (メモリ表現の endian は IEEE の仕様には無いから)、 読めないかもしれないということを意味します。 perl は、すべての数値計算を内部的には double を用い、 double -> float -> double という変換は精度を失うだろうということに 注意して下さい (すなわち、unpack("f",pack("f", $foo)) は一般に $foo にはなりません) 。 .br 例: .nf $foo = pack("cccc",65,66,67,68); # foo は "ABCD" $foo = pack("c4",65,66,67,68); # 上と同じ $foo = pack("ccxxcc",65,66,67,68); # foo は "AB\e0\e0CD" $foo = pack("s2",1,2); # little-endian の "\e1\e0\e2\e0" # big-endian の "\e0\e1\e0\e2" $foo = pack("a4","abcd","x","y","z"); # "abcd" $foo = pack("aaaa","abcd","x","y","z"); # "axyz" $foo = pack("a14","abcdefg"); # "abcdefg\e0\e0\e0\e0\e0\e0\e0" $foo = pack("i9pl", gmtime); # 実際の tm 構造体 (少なくとも私のシステムでは) sub bintodec { unpack("N", pack("B32", substr("0" x 32 . shift, -32))); } .fi 一般に unpack 関数でも同じテンプレートが使われます。 .Ip "pipe(READHANDLE,WRITEHANDLE)" 8 3 相当するシステムコールのように一対の接続されたパイプをオープンします。 パイプでつながったプロセスのループを設定するときは、注意深くしないと デッドロックを起こすことがあることに気をつけて下さい。 それに加えて、perl のパイプは標準入力のバッファリングを使うので、 アプリケーションに依っては、$| をセットして コマンド毎に WRITEHANDLE をフラッシュする必要があるかもしれません。 [perl バージョン 3.0 パッチレベル 9 以上が必要] .Ip "pop(ARRAY)" 8 .Ip "pop ARRAY" 8 6 配列の最後の値を取り出し、配列の長さを 1 だけ短くします。 .nf $tmp = $ARRAY[$#ARRAY\-\|\-]; .fi 同じ結果となります。 配列に要素がない場合は、undefined 値を返します。 .Ip "print(FILEHANDLE LIST)" 8 10 .Ip "print(LIST)" 8 .Ip "print FILEHANDLE LIST" 8 .Ip "print LIST" 8 .Ip "print" 8 文字列または、カンマ区切りの文字列のリストを表示します。 成功すると、0 以外を返します。 FILEHANDLE は、ファイルハンドルの名前を保持したスカラ変数名でも かまいません。これにより 1 レベルの間接指定ができます。 (注意: FILEHANDLE が変数で次のトークンが項の場合、+ を挿入するか 引数に括弧を付けないと、演算子として解釈の間違いをするかもしれません。) FILEHANDLE が省略されると、デフォルトで標準出力 (または最後に select された出力チャンネル\*(-- select()を参照して下さい) に出力します。 LIST が省略されると、$_ を .IR STDOUT に出力します。 デフォルト出力チャンネルを .I STDOUT 以外に設定するには、select 演算子を使って下さい。 print は LIST を取るので、LIST の中のものは何でも配列のコンテキストで 評価され、サブルーチン呼び出しなら配列のコンテキストで評価された式を 持つことになるのを覚えておきましょう。 また、print キーワードの後に左括弧を置くときは、対応する右括弧が print の引数の終りを示す \*(--すなわち + を挿入するか、括弧をすべての引数に付ける のでなければ、左括弧を置いてはいけません。 .Ip "printf(FILEHANDLE LIST)" 8 10 .Ip "printf(LIST)" 8 .Ip "printf FILEHANDLE LIST" 8 .Ip "printf LIST" 8 \*(L"print FILEHANDLE sprintf(LIST)\*(R" と同等です。 .Ip "push(ARRAY,LIST)" 8 7 ARRAY (@ は省略可能) をスタックとして扱い、LIST の値を ARRAY の終りに 追加します。 ARRAY の長さは、LIST の長さだけ増えます。 これは、以下と同じことになります。 .nf for $value (LIST) { $ARRAY[++$#ARRAY] = $value; } .fi が、より効率的です。 .Ip "q/STRING/" 8 5 .Ip "qq/STRING/" 8 .Ip "qx/STRING/" 8 これは、実際には関数ではありませんが、クォートされた文字列に バックスラッシュをたくさん置き過ぎるのを避けるための、単なる 簡略記法です。 q 演算子はシングルクォートを生成し、qq 演算子はダブルクォートを 生成します。 qx 演算子は、バッククォートを生成します。 英数字でない文字なら、改行を含めて何でも、/ の代わりに区切り文字 にできます。 区切りが ( か { なら、終了の区切りは、対応する ) か } になります。 (埋め込み文字としての } には通常通り \ が必要になります。) 例: .nf .ne 5 $foo = q!I said, "You said, \'She said it.\'"!; $bar = q(\'This is it.\'); $today = qx{ date }; $_ .= qq *** The previous line contains the naughty word "$&".\en if /(ibm|apple|awk)/; # :-) .fi .Ip "rand(EXPR)" 8 8 .Ip "rand EXPR" 8 .Ip "rand" 8 ランダムな 0 から EXPR までの小数点数を返します。 (EXPR は正でなければなりません。) EXPR が省略されると、0 から 1 の範囲の値が返されます。 srand() を参照して下さい。 .Ip "read(FILEHANDLE,SCALAR,LENGTH,OFFSET)" 8 5 .Ip "read(FILEHANDLE,SCALAR,LENGTH)" 8 5 指定された FILEHANDLE から、LENGTH バイトのデータを読み込み、変数 SCALAR に格納します。 実際に読み込めたバイト数を返し、エラーの場合は undef を返します。 SCALAR は実際に読み込まれた長さに合わせて、伸縮します。 読んだデータを文字列の始めでなく、他の場所に格納するために、OFFSET を 指定することもできます。 これは、実際には stdio の fread コールで実装されています。 本当の read システムコールを使うには、sysread を参照して下さい。 .Ip "readdir(DIRHANDLE)" 8 3 .Ip "readdir DIRHANDLE" 8 opendir() にオープンされたディレクトリ内の、次のディレクトリエントリを 返します。 配列のコンテキストの中で使うと、残りすべてのディレクトリエントリを 返します。 エントリが残っていない場合、スカラのコンテキストでは undefined が、 配列のコンテキストではヌルリストを返します。 .Ip "readlink(EXPR)" 8 6 .Ip "readlink EXPR" 8 シンボリックリンクが実装されていれば、シンボリックリンクの値を返します。 実装されていなければ、致命的エラーを返します。 システムエラーが起こったときは、undefined 値を返し、$! (errno) を セットします。 EXPR を省略すると、$_ を使います。 .Ip "recv(SOCKET,SCALAR,LEN,FLAGS)" 8 4 ソケットからメッセージを受け取ります。指定した SOCKET ファイルハンドル から、LENGTH バイトのデータを受け取り、変数 SCALAR に格納します。 sender のアドレスを返し、エラーの場合は undefined 値を返します。 SCALAR は、実際に読み込まれた長さに合わせて、伸縮します。 同名のシステムコールと同じフラグを用います。 .Ip "redo LABEL" 8 8 .Ip "redo" 8 .I redo コマンドは、条件を再評価することなしに、ループブロックのコマンドを 再開します。 .I continue ブロックがあっても実行されません。 LABEL が省略されると、最も内側のループを参照します。 通常このコマンドは、入力された内容について、自分自身をだますような プログラムで使われます: .nf .ne 16 # 単純化した Pascal のコメント除去 # (警告: 文字列中には { や } はないものと仮定しています) line: while () { while (s|\|({.*}.*\|){.*}|$1 \||) {} s|{.*}| \||; if (s|{.*| \||) { $front = $_; while () { if (\|/\|}/\|) { # コメント終了? s|^|$front{|; redo line; } } } print; } .fi .Ip "rename(OLDNAME,NEWNAME)" 8 2 ファイル名を変更します。 成功すると 1 を、失敗すると 0 を返します。 ファイルシステムの境界を越えては働きません。 .Ip "require(EXPR)" 8 6 .Ip "require EXPR" 8 .Ip "require" 8 EXPR か EXPR が与えられなければ $_ で指定された、ライブラリファイルを インクルードします。 以下のようなサブルーチンと同じ意味になります: .nf sub require { local($filename) = @_; return 1 if $INC{$filename}; local($realfilename,$result); ITER: { foreach $prefix (@INC) { $realfilename = "$prefix/$filename"; if (-f $realfilename) { $result = do $realfilename; last ITER; } } die "Can't find $filename in \e@INC"; } die $@ if $@; die "$filename did not return true value" unless $result; $INC{$filename} = $realfilename; $result; } .fi 同じ名前で指定されたファイルは、二度はインクルードされないことに 注意して下さい。 どの初期化コードの起動も成功したこと示すため、ファイルの最後の文で、 真を返さなければなりません。だから、慣習的にそういうファイルは、 必ず真を返すということが確かでなければ、\*(L"1;\*(R" で 終るようにします。 .Ip "reset(EXPR)" 8 6 .Ip "reset EXPR" 8 .Ip "reset" 8 一般にループの終りで変数をクリアするのに .I continue ブロックの中で使われ、再びそれが働くように ?? 検索をリセットします。 式は 1 文字ずつ分けてリストしたもの (ハイフンで範囲指定) として解釈されます。 それらの文字の一つで始まる変数や配列はみな初期状態にリセットされます。 式を省略すると、一度だけマッチする検索 (?pattern?) をリセットし、 再びマッチするようにします。 現パッケージ内の変数と検索のみをリセットします。 常に 1 を返します。 例: .nf .ne 3 reset \'X\'; \h'|2i'# すべての X 変数をリセットします reset \'a\-z\';\h'|2i'# 小文字の変数すべてをリセットします。 reset; \h'|2i'# ?? 検索をリセットします。 .fi 注意: ARGV や ENV を消してしまうため、\*(L"A\-Z\*(R" をリセットする のは勧められません。 .Sp dbm 連想配列に reset を使っても、dbm ファイルを変更しません。 (しかし、perl がキャッシュしたエントリは皆フラッシュするので、 dbm ファイルを共有している場合は、便利です。便利でないかもしれませんが。) .Ip "return LIST" 8 3 指定した値で、サブルーチンから返ります。 (サブルーチンは、自動的に最後に評価された式の値を返すことに 注意して下さい。 これは、好まれる方法です\*(--明示的な .I return の使用で、やや遅くなります。) .Ip "reverse(LIST)" 8 4 .Ip "reverse LIST" 8 配列のコンテキストでは、LIST の要素を逆順に並べた配列を返します。 スカラのコンテキストでは、LIST の最初の要素のバイト列を逆順にした 文字列を返します。 .Ip "rewinddir(DIRHANDLE)" 8 5 .Ip "rewinddir DIRHANDLE" 8 DIRHANDLE に関し、readdir() で読み始める現在位置を、 ディレクトリの先頭にセットします。 .Ip "rindex(STR,SUBSTR,POSITION)" 8 6 .Ip "rindex(STR,SUBSTR)" 8 4 STR 内で、SUBSTR が最後に現れる位置を返す他は、index と全く同じに 動作します。 POSITION が指定されると、その位置の前で最後に現れた位置を返します。 .Ip "rmdir(FILENAME)" 8 4 .Ip "rmdir FILENAME" 8 FILENAME で指定されたディレクトリが空なら消去します。 成功すると 1 を、失敗すると 0 を返し、$! (errno) をセットします。 FILENAME が省略されると、$_ を使います。 .Ip "s/PATTERN/REPLACEMENT/gieo" 8 3 パターンに合う文字列を検索し、見つかると置換テキストに置き換えて、 置換が行なわれた数を返します。 でなければ、偽 (0) を返します。 \*(L"g\*(R" はオプションです。もしあれば、マッチしたパターンはすべて 置換されることを意味します。 \*(L"i\*(R" もオプションです。もしあれば、マッチングは大文字小文字の 区別なく行なわれることを意味します。 \*(L"e\*(R" もオプションです。もしあれば、置換文字列は ダブルクォートで囲まれた文字列のようにというより、 式として評価されなければならないことを意味します。 英数字でない文字ならなんでも、/ に置き換えて区切り文字にできます。 シングルクォートが使われると、置換文字列の中で変数の挿入が 行なわれません (e 修飾子はこれに優先します)。 バッククォート ` が使われると、置換文字列はコマンドとして実行され、 その出力が実際の置換テキストとして使われることになります。 PATTERN が <>, () で区切られると、REPLACEMENT は、それ自身のクォートを 持ち、それは <>, () であっても、そうでなくても良いことになります。 例えば、s(foo)(bar) や s/bar/ のように。 =~ や !~ 演算子を介する文字列指定がされなかったときは、$_ 文字列が 検索、置換されます。 (=~ で指定された文字列は、スカラ変数、配列の要素、それらへの代入等で なくてはなりません。すなわち左辺値ということです。) パターンが、文字列の終りをテストする $ でなく、変数に見える $ を含む 場合は、その変数が実行時にパターンに挿入されます。 初回だけ変数が挿入されてコンパイルされるパターンを使いたいなら、 終りに \*(L"o\*(R" を付けて下さい。 PATTERN がヌル文字列に評価されたときは、代わりに最後に成功した正規表現 が使われます。 正規表現のセクションを参照して下さい。 例: .nf s/\|\e\|bgreen\e\|b/mauve/g; # wintergreen を変更しません $path \|=~ \|s|\|/usr/bin|\|/usr/local/bin|; s/Login: $foo/Login: $bar/; # 実行時パターン ($foo = $bar) =~ s/bar/foo/; $_ = \'abc123xyz\'; s/\ed+/$&*2/e; # \*(L'abc246xyz\*(R' になる s/\ed+/sprintf("%5d",$&)/e; # \*(L'abc 246xyz\*(R' になる s/\ew/$& x 2/eg; # \*(L'aabbcc 224466xxyyzz\*(R' になる s/\|([^ \|]*\|) *\|([^ \|]*\|)\|/\|$2 $1/; # 始めの2フィールドを交換 .fi (最後の例では \|\e\| の代わりに $ を使っていることに注意。 正規表現のセクションを参照して下さい。) .Ip "scalar(EXPR)" 8 3 EXPR を強制的にスカラのコンテキストで解釈させて、EXPR の値を返します。 .Ip "seek(FILEHANDLE,POSITION,WHENCE)" 8 3 FILEHANDLE のポインタを、丁度 stdio の fseek() のように任意の 位置にします。 FILEHANDLE は、ファイルハンドルの名前を与える式でもかまいません。 成功すると 1 を、失敗すると 0 を返します。 .Ip "seekdir(DIRHANDLE,POS)" 8 3 DIRHANDLE について readdir() の読む現在位置をセットします。 POS は、telldir() の返す値でなければなりません。 相当するシステムライブラリルーチン同様、directory compaction について は同じ注意が必要です。 .Ip "select(FILEHANDLE)" 8 3 .Ip "select" 8 3 現在 select されたファイルハンドルを返します。 FILEHANDLE を与えられると、出力用の現在のデフォルトファイルハンドルを セットします。 これには二つの効果があります。一つは、ファイルハンドルの無い .I write や .I print が、デフォルトでこの FILEHANDLE に行なわれるということです。 二つ目は、出力に関連する変数参照が、この出力チャンネルを参照する ということです。 例えば、form フォーマットの先頭を、一つ以上の出力チャンネルに セットしなければならないとき、次のようにすると良いでしょう: .nf .ne 4 select(REPORT1); $^ = \'report1_top\'; select(REPORT2); $^ = \'report2_top\'; .fi FILEHANDLE は、実際のファイルハンドルの名前を与える式でもかまいません。 このように: .nf $oldfh = select(STDERR); $| = 1; select($oldfh); .fi .Ip "select(RBITS,WBITS,EBITS,TIMEOUT)" 8 3 これは、ビットマスクを指定して select システムコールを呼び出しします。 ビットマスクは、以下のように fileno() や vec() を使って作成されます。 .nf $rin = $win = $ein = ''; vec($rin,fileno(STDIN),1) = 1; vec($win,fileno(STDOUT),1) = 1; $ein = $rin | $win; .fi たくさんのファイルハンドルを select したいときは、サブルーチンを書いた 方が良いかもしれません。 .nf sub fhbits { local(@fhlist) = split(' ',$_[0]); local($bits); for (@fhlist) { vec($bits,fileno($_),1) = 1; } $bits; } $rin = &fhbits('STDIN TTY SOCK'); .fi 通常の使い方は、 .nf ($nfound,$timeleft) = select($rout=$rin, $wout=$win, $eout=$ein, $timeout); また、何かが ready となるまでブロックしておくには、こうなります。 .ie t \{\ $nfound = select($rout=$rin, $wout=$win, $eout=$ein, undef); 'br\} .el \{\ $nfound = select($rout=$rin, $wout=$win, $eout=$ein, undef); 'br\} .fi ビットマスクはどれも undef にもできます。 TIMEOUT は秒で指定され、小数点数でもかまいません。 注意: すべての実装で $timeleft を返せるわけではありません。 できない場合、常に与えられた $timeout に等しい値の $timeleft を 返します。 .Ip "semctl(ID,SEMNUM,CMD,ARG)" 8 4 System V IPC 関数の semctl を呼び出します。 CMD が &IPC_STAT か &GETALL なら、ARG は返って来た semid_ds 構造体か、セマフォ値配列を 保持する変数でなければなりません。 ioctl 同様、エラーの場合 undefined 値が、0 の場合 "0 but true" が、 それ以外の場合実際の戻り値が返されます。 .Ip "semget(KEY,NSEMS,SIZE,FLAGS)" 8 4 System V IPC 関数 semget を呼び出します。セマフォ id を返し、エラーの 場合は undefined 値を返します。 .Ip "semop(KEY,OPSTRING)" 8 4 シグナルや wait のようなセマフォ操作を実行する System V IPC 関数 semop を呼び出します。 OPSTRING は、semop 構造体に pack された配列でなければなりません。 各 semop 構造体は \&'pack("sss", $semnum, $semop, $semflag)' で 生成できます。セマフォ操作の数は、OPSTRING の長さによります。 成功すると真を、エラーでは偽を返します。例として、以下のコードでは セマフォ id $semid のセマフォ $semnum を待ちます。 .nf $semop = pack("sss", $semnum, -1, 0); die "Semaphore trouble: $!\en" unless semop($semid, $semop); .fi セマフォにシグナルを送るには、"-1" を "1" にします。 .Ip "send(SOCKET,MSG,FLAGS,TO)" 8 4 .Ip "send(SOCKET,MSG,FLAGS)" 8 ソケットにメッセージを送ります。 同名のシステムコールと同じフラグを用います。 接続されていないソケットでは、送り先を TO として指定しなければ なりません。送った文字数を返します。エラーの場合は undefined 値を 返します。 .Ip "setpgrp(PID,PGRP)" 8 4 指定した PID のカレントプロセスグループをセットします。 PID は、 カレントプロセスでは 0 です。 setpgrp(2) が実装されていないマシンでは、致命的エラーとなります。 .Ip "setpriority(WHICH,WHO,PRIORITY)" 8 4 プロセス、プロセスグループ、ユーザのカレントプライオリティを セットします。 (setpriority(2) を参照して下さい。) setpriority(2) が実装されていないマシンでは、致命的エラーになります。 .Ip "setsockopt(SOCKET,LEVEL,OPTNAME,OPTVAL)" 8 3 リクエストされたソケットオプションをセットします。 エラーでは undefined を返します。 引数を渡したいので無ければ、OPTVAL は undef 値を指定しても かまいません。 .Ip "shift(ARRAY)" 8 6 .Ip "shift ARRAY" 8 .Ip "shift" 8 配列の最初の要素を配列から除き、その要素を返します。 配列は 1 だけ短くなり、他のすべての要素はずれます。 配列に要素がないときは、undefined 値を返します。 ARRAY を省略すると、メインプログラムでは @ARGV 配列を shift し、 サブルーチンでは @_ 配列を shift します。 (これは、辞書的に決められています) unshift(), push(), pop() を参照して下さい。 shift() と unshift() は、push() と pop() が配列の右端に行なうのと 同じことを、配列の左端で行ないます。 .Ip "shmctl(ID,CMD,ARG)" 8 4 System V IPC 関数 shmctl を呼び出します。 CMD が &IPC_STAT のとき、 ARG は、返された shmid_ds 構造体を保持する変数でなくてはなりません。 ioctl 同様の戻り値を返します。エラーでは undefined 値を、0 では "0 but true" を、それ以外では実際の値を返します。 .Ip "shmget(KEY,SIZE,FLAGS)" 8 4 System V IPC 関数 shmget を呼び出します。 共有メモリのセグメント id を返します。エラーでは、undefined 値を 返します。 .Ip "shmread(ID,VAR,POS,SIZE)" 8 4 .Ip "shmwrite(ID,STRING,POS,SIZE)" 8 Syste V の共有メモリセグメント ID を、位置 POS から始まる サイズ SIZE にて attach し、copy in/out し、detach することで、読み込み と書き込みを行ないます。 読み込み時、VAR は読まれたデータを保持する変数でなければ なりません。書き込み時に、STRING が長過ぎると、SIZE バイトだけが 使われます。STRING が短過ぎると、SIZE バイトを埋めるのにヌルが 書き込まれます。成功すると真を、エラーでは偽を返します。 .Ip "shutdown(SOCKET,HOW)" 8 3 ソケット接続を HOW で指示された流儀に従ってシャットダウンします。 同名のシステムコールと同様に HOW を解釈します。 .Ip "sin(EXPR)" 8 4 .Ip "sin EXPR" 8 EXPR (ラジアンで表現) のサインを返します。 EXPR を省略すると $_ のサインを取ります。 .Ip "sleep(EXPR)" 8 6 .Ip "sleep EXPR" 8 .Ip "sleep" 8 EXPR 秒間スクリプトを止めます。 EXPR がなければ永久に止めます。 プロセスに SIGALRM を送ることで、割り込まれます。 実際に sleep した秒数を返します。 sleep() は、しばしば alarm() を使って実装されているので、おそらく alarm() と sleep() は 混在させることはできないでしょう。 .Ip "socket(SOCKET,DOMAIN,TYPE,PROTOCOL)" 8 3 指定された種類のソケットをオープンして、ファイルハンドル SOCKET に 結びつけます。 DOMAIN, TYPE, PROTOCOL は、同名のシステムコールと同様に指定します。 perl ライブラリファイルから簡単に適当な値を得るには、h2ph を sys/soket.h に対して実行する必要があるかもしれません。 成功すると真を返します。 プロセス間通信のセクションの例を参照して下さい。 .Ip "socketpair(SOCKET1,SOCKET2,DOMAIN,TYPE,PROTOCOL)" 8 3 指定されたドメインの指定された型で、無名のソケットペアを生成します。 DOMAIN, TYPE, PROTOCOL は、同名のシステムコールと同じように指定します。 実装されていない場合は、致命的エラーとなります。 成功すると真を返します。 .Ip "sort(SUBROUTINE LIST)" 8 9 .Ip "sort(LIST)" 8 .Ip "sort SUBROUTINE LIST" 8 .Ip "sort BLOCK LIST" 8 .Ip "sort LIST" 8 LIST をソートし、ソート済みの配列値を返します。 存在しない配列値は、削られます。 SUBROUTINE や BLOCK が省略されると、標準的な文字の比較による順でソート します。 0 より小さい整数、0 、0 より大きい整数を返すような SUBROUTINE の名前 を指定すると、配列の要素の並べ方に従って順に並べ直します。 (<=> と cmp 演算子は、このようなルーチンでは非常に便利です) SUBROUTINE は、スカラ変数名でもかまいません。その値として使用する サブルーチンの名前が入っていれば良いのです。 SUBROUTINE 名の代わりに、BLOCK を指定して、 無名のインラインソートサブルーチンとして用いることもできます。 .Sp 効率を良くするため、通常のサブルーチン呼び出しコードをバイパスしています。 そのため、次のような影響があります。 サブルーチンは再帰的であってはならず、 比較される 2 要素は @_ を介してではなく、$a と $b を介して サブルーチンに渡されます。 (以下の例を参照して下さい。) これらは参照渡しなので、$a や $b を変更してはいけません。 .Sp 例: .nf .ne 2 # 辞書順のソート @articles = sort @files; .ne 2 # 同じものだが、明示的なソートルーチン @articles = sort {$a cmp $b} @files; .ne 2 # 同じものだが逆順 @articles = sort {$b cmp $a} @files; .ne 2 # 数値的に昇順でソート @articles = sort {$a <=> $b} @files; .ne 2 # 数値的に降順でソート @articles = sort {$b <=> $a} @files; .ne 5 # 明示的にサブルーチン名を使ったソート sub byage { $age{$a} <=> $age{$b}; # 整数と仮定 } @sortedclass = sort byage @class; .ne 9 sub reverse { $b cmp $a; } @harry = (\'dog\',\'cat\',\'x\',\'Cain\',\'Abel\'); @george = (\'gone\',\'chased\',\'yz\',\'Punished\',\'Axed\'); print sort @harry; # AbelCaincatdogx と出力 print sort reverse @harry; # xdogcatCainAbel と出力 print sort @george, \'to\', @harry; # AbelAxedCainPunishedcatchaseddoggonetoxyz と出力 .fi .Ip "splice(ARRAY,OFFSET,LENGTH,LIST)" 8 8 .Ip "splice(ARRAY,OFFSET,LENGTH)" 8 .Ip "splice(ARRAY,OFFSET)" 8 配列から OFFSET と LENGTH で指定された要素を除き、LIST の要素と 入れ替えます。 配列から除かれた要素を返します。 配列は必要に応じて伸縮されます。 LENGTH を省略すると、OFFSET から先はすべて除かれます。 以下は皆同等となります。 ($[ == 0 であると仮定した場合) .nf push(@a,$x,$y)\h'|3.5i'splice(@a,$#a+1,0,$x,$y) pop(@a)\h'|3.5i'splice(@a,-1) shift(@a)\h'|3.5i'splice(@a,0,1) unshift(@a,$x,$y)\h'|3.5i'splice(@a,0,0,$x,$y) $a[$x] = $y\h'|3.5i'splice(@a,$x,1,$y); 次の例では、配列長は配列の前に渡されると仮定しています: sub aeq { # compare two array values local(@a) = splice(@_,0,shift); local(@b) = splice(@_,0,shift); return 0 unless @a == @b; # 同じ長さ? while (@a) { return 0 if pop(@a) ne pop(@b); } return 1; } if (&aeq($len,@foo[1..$len],0+@bar,@bar)) { ... } .fi .Ip "split(/PATTERN/,EXPR,LIMIT)" 8 8 .Ip "split(/PATTERN/,EXPR)" 8 8 .Ip "split(/PATTERN/)" 8 .Ip "split" 8 文字列を文字列の配列に分けて、その配列を返します。 (配列のコンテキストではない場合、見つかったフィールドの数を返し、 split したものは @_ 配列に入れます。 (配列のコンテキストでは、パターン区切りとして ?? を使うことで強制的に @_ に split させられますが、それでも配列値を返します。)) EXPR を省略すると、$_ 文字列を split します。 PATTERN も省略すると、空白文字 (/[\ \et\en]+/) で split します。 PATTERN にマッチするものは何でもフィールドを分ける区切りと解釈されます。 (区切りは 1 文字より長くてもよいことに注意して下さい。) LIMIT が指定されると、それを越えない数に split されます (少ない場合も あります) 。 LIMIT が指定されないと、後に続くヌルフィールドは除かれます (pop()を使う人は良く覚えておいた方がよいでしょう) 。 ヌル文字にマッチするパターン (ヌルパターン // と混同しないで下さい。 // はヌル文字にマッチするパターンの一つにすぎません。) は、 マッチするすべての点で EXPR を一文字ずつに split します。 例えば: .nf print join(\':\', split(/ */, \'hi there\')); .fi は、\*(L'h:i:t:h:e:r:e\*(R' を出力します。 .Sp LIMIT パラメータは、行を部分的に split することに使われます。 .nf ($login, $passwd, $remainder) = split(\|/\|:\|/\|, $_, 3); .fi (リストに代入するとき、LIMIT が省略されていると perl は不必要な動作を 避けるためにリストの変数の数より一つ大きい LIMIT を与えます。 上記のリストでは LIMIT はデフォルトで 4 だったはずです。 時間に制限のあるアプリケーションでは、本当に必要な数以上のフィールドに は split しないようにすべきです。) .Sp PATTERN が括弧を含むときは、区切りとしてマッチする文字列により、 更に配列要素が作成されます。 .Sp split(/([,-])/,"1-10,20"); .Sp は以下の配列値を作ります。 .Sp (1,'-',10,',',20) .Sp パターン /PATTERN/ は、実行時に変わるパターンを指定する式で 置き換え可能です。 (実行時コンパイルを一回にしたければ、/$variable/o を使って下さい。) 特別なケースとして空白 (\'\ \') を指定すると、引数無しで split する 場合と同様ですが、先頭に空白があってもヌルフィールドは作られません。 つまり split(\'\ \') は、 .IR awk のデフォルトの動作をエミュレートすることができるわけで、split(/\ /) は先頭に空白があると、最初にその数だけヌルフィールドを作ります。 .Sp 例: .nf .ne 5 open(passwd, \'/etc/passwd\'); while () { .ie t \{\ ($login, $passwd, $uid, $gid, $gcos, $home, $shell) = split(\|/\|:\|/\|); 'br\} .el \{\ ($login, $passwd, $uid, $gid, $gcos, $home, $shell) = split(\|/\|:\|/\|); 'br\} .\|.\|. } .fi (上の例の $shell は改行文字を含みます。 chop() を参照して下さい。) .IR join を参照して下さい。 .Ip "sprintf(FORMAT,LIST)" 8 4 通常の printf 変換でフォーマットされる文字列を返します。 * 文字はサポートされていません。 .Ip "sqrt(EXPR)" 8 4 .Ip "sqrt EXPR" 8 EXPR の平方根を返します。 EXPR を省略すると、$_ の平方根を返します。 .Ip "srand(EXPR)" 8 4 .Ip "srand EXPR" 8 .I rand 演算子のために、乱数用の seed をセットします。 EXPR を省略すると、srand(time) を実行します。 .Ip "stat(FILEHANDLE)" 8 8 .Ip "stat FILEHANDLE" 8 .Ip "stat(EXPR)" 8 .Ip "stat SCALARVARIABLE" 8 EXPR という名前のファイルや FILEHANDLE でオープンされたファイルの 情報を示す 13 要素の配列を返します。 stat が失敗するとヌルリストを返します。 普通次のように使います: .nf .ne 3 ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size, $atime,$mtime,$ctime,$blksize,$blocks) = stat($filename); .fi stat に特殊ファイルハンドル _ を渡すと、stat は実行されず最後に 行なわれた stat やファイルテストで使われた stat 構造体の内容を 返します。 例: .nf .ne 3 if (-x $file && (($d) = stat(_)) && $d < 0) { print "$file is executable NFS file\en"; } .fi (この例は、NFS 下でデバイス番号が負になるマシンでのみ動作します。) .Ip "study(SCALAR)" 8 6 .Ip "study SCALAR" 8 .Ip "study" SCALAR (指定しなければ $_) について、それが次に変更される前に多くの パターンマッチを予想してあらかじめ行います。 検索をするパターンの性質や数、検索される文字列中の文字の出現頻度分布 によっては、時間を節約できるかもしれませんし、できないかもしれません。 \*(--多分これを使った場合と使わない場合で、実行時どちらが速いかを 比べてみたいでしょう。たくさんの短い定数文字列(より複雑なパターンの 定数部を含む)をスキャンするループで最も恩恵にあずかれるでしょう。 一度に一つの study しか効果がありません。\*(--別のスカラを study すると、先に study したものは \*(L"unstudied\*(R" となってしまいます。 (study の動作の仕方は次の通りです: 検索される文字列のすべての文字の リンクリストを作ります。そうすると例えば、どこに \*(L'k\*(R' の文字が あるかがすべてわかるわけです。いくつかの C のプログラムと英文から 作成された統計頻度表に基づき、各検索文字について、最も頻度が少ない 文字を選びます。この \*(L"頻度が少ない\*(R" 文字を調べるのです。) .Sp 次の例は、あるパターンを含むすべての行の前にインデックスを含むエントリを 挿入します: .nf .ne 8 while (<>) { study; print ".IX foo\en" if /\ebfoo\eb/; print ".IX bar\en" if /\ebbar\eb/; print ".IX blurfl\en" if /\ebblurfl\eb/; .\|.\|. print; } .fi /\ebfoo\eb/ を検索するとき、\*(L'f\*(R' は \*(L'o\*(R' よりも頻度が 少ないため、$_ の中で \*(L'f\*(R' を含む位置が探されます。 一般に、病的な場合を除いて、これは非常にうまくいきます。 唯一、最初の時点でリンクリストを作成するためにかかる以上の 時間を節約できるかが問題になります。 .Sp 実行するまで解らない文字列を検索しなければならない場合、全ループを 一つの文字列として解析し eval することで、すべてのパターンを毎回 再コンパイルするのを避けることができることを覚えておきましょう。 それに加えて全ファイルが 1 レコードになるように $/ を undef すると、 大変速くなり、fgrep のように特殊化したプログラムより速くなることも 多いです。 以下の例は、ファイルのリスト (@files) と単語のリスト (@words) を 検索し、マッチするファイル名を出力します: .nf .ne 12 $search = \'while (<>) { study;\'; foreach $word (@words) { $search .= "++\e$seen{\e$ARGV} if /\e\eb$word\e\eb/;\en"; } $search .= "}"; @ARGV = @files; undef $/; eval $search; # これは(メモリ不足で)泣きそう $/ = "\en"; # 普通の入力区切りに戻そう foreach $file (sort keys(%seen)) { print $file, "\en"; } .fi .Ip "substr(EXPR,OFFSET,LEN)" 8 2 .Ip "substr(EXPR,OFFSET)" 8 2 EXPR から部分文字列を取り出し、それを返します。 $[ をセットしない限り、最初の文字はオフセット 0 です。 OFFSET が負だと、文字列の終りから OFFSET だけ離れた位置から始めます。 LEN を省略すると、終端までのすべての文字列を返します。 substr() 関数は左辺値としても使えます。その場合 EXPR は左辺値 でなくてはなりません。 LEN より短いものを代入すると、文字列は短くなり、長いものを代入すると それを含められるように長くなります。 文字列を同じ長さに保つためには、sprintf() を使ってパディングまたは 切り捨てをしなければならないかもしれません。 .Ip "symlink(OLDFILE,NEWFILE)" 8 2 OLDFILE へのシンボリックリンク NEWFILE を作成します。 成功すると 1 を、失敗すると 0 を返します。 シンボリックリンクをサポートしないシステムでは、実行時に致命的エラー となります。 これをチェックするには、eval を使います: .nf $symlink_exists = (eval \'symlink("","");\', $@ eq \'\'); .fi .Ip "syscall(LIST)" 8 6 .Ip "syscall LIST" 8 リストの最初の要素で指定されたものに、残りの要素を引数として付けて、 システムコールを呼び出します。 実装されていないと致命的エラーとなります。 引数は次のように解釈されます: 与えられた引数が数字なら、引数は 整数として渡されます。そうでなければ、文字列へのポインタが渡されます。 結果が受け取れるように、書き込まれるべき文字列を十分長くしておくのは、 あなたの責任です。 数字の引数がリテラルでなく、それまで数字のコンテキストで解釈されて いなかったものなら、強制的に数字に見せるように、 0 を足す必要があるかもしれません。 .nf # h2ph を実行しておく必要があるかもしれません require 'syscall.ph'; syscall(&SYS_write, fileno(STDOUT), "hi there\en", 9); .fi .Ip "sysread(FILEHANDLE,SCALAR,LENGTH,OFFSET)" 8 5 .Ip "sysread(FILEHANDLE,SCALAR,LENGTH)" 8 5 システムコール read(2) を使って、指定した FILEHANDLE から LENGTH バイトのデータを読み込み、変数 SCALAR に格納します。 これは標準入出力を経由しないので、read と混在して使うと、 混乱するかもしれません。 実際に読み込まれたバイト数を返します。エラーの場合は undef を返します。 SCALAR は実際に読み込まれた長さによって伸縮します。 文字列の始めでなく途中にデータを格納するように、OFFSET を指定できます。 .Ip "system(LIST)" 8 6 .Ip "system LIST" 8 \*(L"exec LIST\*(R" と全く同じことを行ないますが、違いは最初に fork が 実行されて、親プロセスは子プロセスが終了するのを待つことです。 引数の処理は、引数の数によって変わることに注意して下さい。 戻り値は、wait() で返るプログラムの終了時ステータスになります。 実際の終了時ステータスを得るには、256 で割って下さい。 .IR exec を参照。 .Ip "syswrite(FILEHANDLE,SCALAR,LENGTH,OFFSET)" 8 5 .Ip "syswrite(FILEHANDLE,SCALAR,LENGTH)" 8 5 システムコール write(2) を使って、指定した FILEHANDLE に 変数 SCALAR から LENGTH バイトのデータを書き込みます。 これは標準入出力を経由しないので、print と混在して使うと、 混乱するかもしれません。 実際に書き込まれたバイト数を返します。エラーの場合は undef を返します。 OFFSET で、文字列の始めでなく途中からデータを読むように指定できます。 .Ip "tell(FILEHANDLE)" 8 6 .Ip "tell FILEHANDLE" 8 6 .Ip "tell" 8 FILEHANDLE の現在のファイル位置を返します。 FILEHANDLE は、実際のファイルハンドルの名前を与える式でもかまいません。 FILEHANDLE を省略すると、最後に読んだファイルを使います。 .Ip "telldir(DIRHANDLE)" 8 5 .Ip "telldir DIRHANDLE" 8 DIRHANDLE について readdir() ルーチンの現在の位置を返します。 この値は、ディレクトリの特定の位置をアクセスするために、seekdir() の 引数に使います。 相当するシステムライブラリルーチン同様、directory compaction について は同じ注意が必要です。 .Ip "time" 8 4 1970 年 1 月 1 日 00:00:00 (UTC) からの通算の秒数(閏秒無し)を返します。 gmtime() や localtime() に使うことができます。 .Ip "times" 8 4 現在のプロセスと子プロセスのユーザ、システム時間(秒)からなる 4 要素の 配列を返します。 .Sp ($user,$system,$cuser,$csystem) = times; .Sp .Ip "tr/SEARCHLIST/REPLACEMENTLIST/cds" 8 5 .Ip "y/SEARCHLIST/REPLACEMENTLIST/cds" 8 SEARCHLIST にある文字が出現したら、すべて REPLACEMENTLIST の相当する 文字に変換します。 変換または削除された文字の数を返します。 =~ や !~ 演算子を介した文字列の指定をしなかった場合、$_ 文字列が 変換されます。 (=~ で指定した文字列は、スカラ変数か配列の要素かそれらへの代入 でなければいけません。つまり、左辺値ということになります。) .I sed 信者のために、 .I tr の別名 .I y が用意されています。 SEARCHLIST が [], <>, () で区切られていると、REPLACEMENTLIST は、 それ自身のクォートを持ち、それは [], <>, () であっても、そうでなくても 良いことになります。例えば、 tr[A-Z][a-z] または tr(+-*/)/ABCD/ のようになります。 .Sp c 修飾子が指定されると、SEARCHLIST の文字セットは補間されます。 d 修飾子が指定されると、SEARCHLIST で指定された文字で REPLACEMENTLIST に対応するものがないものは皆、削除されます。 (これは、SEARCHLIST で見つかったものを何でも削除してしまう ような .I tr プログラムの挙動よりも、やや柔軟です。) s 修飾子が指定されると、変換されて同じ文字が続いたとき、 それを 1 文字に縮めます。 .Sp d 修飾子が使われると、REPLACEMENTLIST は常に指定された通りに 解釈されます。それ以外の場合で、REPLACEMENTLIST が SEARCHLIST より 短いときは、同じ長さになるまで最後の文字が繰り返されます。 REPLACEMENTLIST がヌルだと、SEARCHLIST がコピーされます。 これは、あるクラスに含まれる文字をカウントしたり、あるクラスの文字の 重複を縮めるときに便利です。 .Sp 例: .nf $ARGV[1] \|=~ \|y/A\-Z/a\-z/; \h'|3i'# 小文字に統一します $cnt = tr/*/*/; \h'|3i'# $_ の中の * を数えます $cnt = tr/0\-9//; \h'|3i'# $_ の中の数字を数えます tr/a\-zA\-Z//s; \h'|3i'# bookkeeper \-> bokeper ($HOST = $host) =~ tr/a\-z/A\-Z/; y/a\-zA\-Z/ /cs; \h'|3i'# アルファベット以外を 1 文字の空白にします tr/\e200\-\e377/\e0\-\e177/;\h'|3i'# 8 ビット目を消します .fi .Ip "truncate(FILEHANDLE,LENGTH)" 8 4 .Ip "truncate(EXPR,LENGTH)" 8 FILEHANDLE や EXPR の名前のファイルを指定した長さに切り詰めます。 システムに truncate が実装されていないと、致命的エラーになります。 .Ip "umask(EXPR)" 8 4 .Ip "umask EXPR" 8 .Ip "umask" 8 プロセスに umask をセットし、変更前の値を返します。 EXPR が省略されると、単に現在の umask を返します。 .Ip "undef(EXPR)" 8 6 .Ip "undef EXPR" 8 .Ip "undef" 8 EXPR の値を undefined とします。これは左辺値でなければなりません。 スカラ値、配列全体、サブルーチン名 (& を使う) の場合でのみ使えます。 (undef は、多分ほとんどの予約変数、dbm 配列値では期待する動作となりません。) undef は、常に undefined 値を返します。 EXPR を省略することもできます。その場合は何も undef されませんが、 それでも undefined 値を得ることができます。 例えば、サブルーチンから return するときです。 例: .nf .ne 6 undef $foo; undef $bar{'blurfl'}; undef @ary; undef %assoc; undef &mysub; return (wantarray ? () : undef) if $they_blew_it; .fi .Ip "unlink(LIST)" 8 4 .Ip "unlink LIST" 8 リストに含まれるファイルを削除します。 削除に成功したファイルの数を返します。 .nf .ne 2 $cnt = unlink \'a\', \'b\', \'c\'; unlink @goners; unlink <*.bak>; .fi 注意: unlink は、自分がスーパユーザで .IR perl に .B \-U フラグを付けている場合を除くとディレクトリを消去はしません。 これらの条件がそろったとしても、ディレクトリの unlink は システムにダメージを与えることがあるので、気をつけて下さい。 代わりに rmdir を使って下さい。 .Ip "unpack(TEMPLATE,EXPR)" 8 4 unpack は pack の逆を行ないます: 構造体を示す文字列を引数に取り、 それを配列値に出力し、配列値を返します。 (スカラのコンテキストでは、生成された最初の値のみを返します。) TEMPLATE は、pack 関数と全く同じフォーマットになります。 以下は、substr を実行するサブルーチンです: .nf .ne 4 sub substr { local($what,$where,$howmuch) = @_; unpack("x$where a$howmuch", $what); } .ne 3 そして、 sub ord { unpack("c",$_[0]); } .fi というのもあります。 更に、フィールドの前に %<数字> の添字を付けることにより、 項目そのものの代わりに、項目の<数字>ビットのチェックサムが欲しいと いう指定になります。 デフォルトは、16 ビットのチェックサムです。 次の例で、System V の sum プログラムと同じ数が計算されます: .nf .ne 4 while (<>) { $checksum += unpack("%16C*", $_); } $checksum %= 65536; .fi .Ip "unshift(ARRAY,LIST)" 8 4 視点によって、 .IR shift の逆、または .IR push の逆を行ないます。 LIST を配列の前に付け加え、新しい配列の要素の数を返します。 .nf unshift(ARGV, \'\-e\') unless $ARGV[0] =~ /^\-/; .fi .Ip "utime(LIST)" 8 2 .Ip "utime LIST" 8 2 リストの各ファイルのアクセス時刻と最終変更時刻を変えます。 リストの最初の二つの要素には、*数値*で表されたアクセス時刻と変更時刻が この順で入っていなければなりません。 変更に成功したファイルの数が返ります。 各ファイルの inode 変更時刻には現在時間がセットされます。 以下は、\*(L"touch\*(R" コマンドの例です: .nf .ne 3 #!/usr/bin/perl $now = time; utime $now, $now, @ARGV; .fi .Ip "values(ASSOC_ARRAY)" 8 6 .Ip "values ASSOC_ARRAY" 8 名前付き連想配列のすべての値からなる普通の配列を返します。 値は、見かけ上ランダムな順で返るように見えますが、同じ連想配列に対して、 keys() 関数 や each() 関数が生成するものと同じ順になります。 keys() と each() を参照して下さい。 .Ip "vec(EXPR,OFFSET,BITS)" 8 2 文字列を unsigned integer のベクトルとして扱い、指定した ビットフィールドの値を返します。 代入もできます。 BITSは、2 の累乗で 1 から 32 まででなければなりません。 .Sp vec() に生成されたベクトルは、論理演算子 |, &, ^ で操作することができ、 両方のオペランドが文字列のとき、 ビットベクトル演算をするものとみなされます。 古いプログラムを守るために、プログラム中に少なくとも一つの vec() が ないと、この解釈はなされません。 .Sp ビットベクトルを 0 や 1 の文字列や配列に変換するには、 以下を使って下さい: .nf $bits = unpack("b*", $vector); @bits = split(//, unpack("b*", $vector)); .fi ビットの正確な長さがわかるならば、* の代わりに使うことができます。 .Ip "wait" 8 6 子プロセスが終了するのを待ち、死んだプロセスの pid を返します。 子プロセスがないときは、-1 を返します。 終了時ステータスは $? に返されます。 .Ip "waitpid(PID,FLAGS)" 8 6 特定の子プロセスが終了するのを待ち、死んだプロセスの pid を返します。 そのような子プロセスがなければ、-1 を返します。 終了時ステータスは $? に返されます。 次のように書くと、 .nf require "sys/wait.h"; .\|.\|. waitpid(-1,&WNOHANG); .fi どのプロセスに対しても、non-blocking wait を実行できます。 non-blocking wait は、 .I waitpid (2) か、または .I wait4 (2) システムコールをサポートしているマシンでのみ使えます。 しかし、FLAGS 0 での 特殊な pid の wait はどこでも実装されています。 (perl は、終了したものの perl スクリプトには採り入れられていない プロセスのステータス値を覚えていることでシステムコールをエミュレート します。) .Ip "wantarray" 8 4 現在実行しているサブルーチンのコンテキストが配列値なら真を返します。 スカラのコンテキストに見えれば、偽を返します。 .nf return wantarray ? () : undef; .fi .Ip "warn(LIST)" 8 4 .Ip "warn LIST" 8 \*(L"die\*(R" と同じようなメッセージを標準エラー出力に出しますが、 終了しません。 .Ip "write(FILEHANDLE)" 8 6 .Ip "write(EXPR)" 8 .Ip "write" 8 指定したファイルに、関連付けられたフォーマットを使って、 フォーマットレコード (複数行も可) を書き込みます。 デフォルトで、フォーマットはファイルハンドルと同じ名前を持つものに なりますが、$~ 変数にフォーマットの名前を明示的に割り当てることで、 現在の出力チャンネル ( .IR select を参照して下さい) に対するフォーマットをセットしてもかまいません。 .Sp 最上位の form 生成は自動的に行なわれます: フォーマットされたレコードに対して、現在のページに十分な空きがない 場合、改頁が書き込まれて、次のページに移ります。 新しいページのヘッダには、特別なページ先頭フォーマットが使われ、 その後レコードが書き込まれます。 デフォルトでページ先頭フォーマットは、 ファイルハンドルの名前に \*(L"_TOP\*(R" を付け加えたものになりますが、 ファイルハンドルが select されているときは、$^ 変数に名前を割り当てる ことで、好きなフォーマットを動的にセットしてもかまいません。 現在のページに残っている行数は、変数 $- に保持されていますが、0 を セットすることがで、強制的に新しいページに移ることができます。 .Sp FILEHANDLE が指定されないと、現在のデフォルト出力チャンネルに 出力されます。デフォルト出力は、起動時 .I STDOUT ですが、 .I select 演算子で変更できます。 FILEHANDLE が EXPR のとき、その式が実行時に評価され、結果の文字列が FILEHANDLE の名前として用いられます。 フォーマットについての詳細は、後述のフォーマットのセクションを 参照して下さい。 .Sp write は read の*逆ではない*ことに注意して下さい。 .Sh "優先度" .I perl の演算子は次のような結合規則と優先度を持っています: .nf なし\h'|1i'print printf exec system sort reverse \h'1.5i'chmod chown kill unlink utime die return 左から右\h'|1i', 右から左\h'|1i'= += \-= *= など 右から左\h'|1i'?: なし\h'|1i'.\|. 左から右\h'|1i'|| 左から右\h'|1i'&& 左から右\h'|1i'| ^ 左から右\h'|1i'& なし\h'|1i'== != <=> eq ne cmp なし\h'|1i'< > <= >= lt gt le ge なし\h'|1i'chdir exit eval reset sleep rand umask なし\h'|1i'\-r \-w \-x など 左から右\h'|1i'<< >> 左から右\h'|1i'+ \- 左から右\h'|1i'* / % x 左から右\h'|1i'=~ !~ 右から左\h'|1i'! ~ 単項の- 右から左\h'|1i'** なし\h'|1i'++ \-\|\- 左から右\h'|1i'\*(L'(\*(R' .fi 始めの方で述べたように、リストを引数にする演算子 (print 他) や、 任意の単項演算子 (chdir 他) のすぐ後に同じ行の次のトークンとして 左括弧がある場合、括弧の中の演算子と引数は、丁度通常の ファンクションコールと同様に再優先とみなされます。 例: .nf chdir $foo || die;\h'|3i'# (chdir $foo) || die chdir($foo) || die;\h'|3i'# (chdir $foo) || die chdir ($foo) || die;\h'|3i'# (chdir $foo) || die chdir +($foo) || die;\h'|3i'# (chdir $foo) || die しかし、* は || よりも優先度が高いので: chdir $foo * 20;\h'|3i'# chdir ($foo * 20) chdir($foo) * 20;\h'|3i'# (chdir $foo) * 20 chdir ($foo) * 20;\h'|3i'# (chdir $foo) * 20 chdir +($foo) * 20;\h'|3i'# chdir ($foo * 20) rand 10 * 20;\h'|3i'# rand (10 * 20) rand(10) * 20;\h'|3i'# (rand 10) * 20 rand (10) * 20;\h'|3i'# (rand 10) * 20 rand +(10) * 20;\h'|3i'# rand (10 * 20) .fi 括弧がないと、print, sort, chmod といったリストを引数に持つ演算子は、 演算子の左側を見ているか右側を見ているかによって、非常に高くも 非常に低くもなります。 例えば、次の例で .nf @ary = (1, 3, sort 4, 2); print @ary; # 1324 を出力 .fi sort の右側のコンマは、sort の前に評価されますが、左側のコンマは、 後で評価されます。 言い換えると、リストを引数に取る演算子は、それに続くすべての引数を 拾う傾向にあり、前の式にしたがって単一の命令語のように振舞います。 括弧に注意深くなければいけないことを覚えておいて下さい: .nf .ne 3 # これらを評価すると、print を実行する前に exit します。 print($foo, exit); # 明らかにやりたいこととは違います print $foo, exit; # これもそう .ne 4 # これらは、exit を評価する前に print を実行します。 (print $foo), exit; # これはやりたいことです print($foo), exit; # これもそう print ($foo), exit; # さらにこれも また、これは print ($foo & 255) + 1, "\en"; .fi 多分一目見て期待する動作とは違うことを実行するでしょう。 .Sh "サブルーチン" サブルーチンは次のように宣言されます: .nf sub NAME BLOCK .fi .PP ルーチンに渡されたすべての引数は、配列 @_ に入ります。 これは、($_[0], $_[1], .\|.\|.) です。 配列 @_ はローカル配列ですが、その値は実際のスカラパラメータへの参照 になります。 サブルーチンの戻り値は、最後の式が評価されたときの値で、配列値にも スカラ値にもなり得ます。 また、リターン文は戻り値を指定してサブルーチンを抜けることにも 使われます。 ローカル変数を作成するには、 .I local 演算子を参照して下さい。 .PP サブルーチンは、 .I do 演算子かまたは & 演算子を使って呼ばれます。 .nf .ne 12 例: sub MAX { local($max) = pop(@_); foreach $foo (@_) { $max = $foo \|if \|$max < $foo; } $max; } .\|.\|. $bestday = &MAX($mon,$tue,$wed,$thu,$fri); .ne 21 例: # 行を取得し、空白で始まる行は # 続きの行として結合されます。 sub get_line { $thisline = $lookahead; line: while ($lookahead = ) { if ($lookahead \|=~ \|/\|^[ \^\e\|t]\|/\|) { $thisline \|.= \|$lookahead; } else { last line; } } $thisline; } $lookahead = ; # 最初の行を取得します while ($_ = do get_line(\|)) { .\|.\|. } .fi .nf .ne 6 引数に名前を付けるには、ローカルリストへの配列の代入を使います: sub maybeset { local($key, $value) = @_; $foo{$key} = $value unless $foo{$key}; } .fi 代入は値をコピーするので、これは参照呼び出しを値呼び出しに換える効果も あります。 .Sp サブルーチンは再帰的に呼び出せます。 サブルーチンが & の型を使って呼び出されるとき、引数リストは省略 できます。 省略されると、サブルーチンには @_ 配列がセットされません; その代わり、呼び出し時に @_ 配列は、サブルーチンには可視となります。 .nf do foo(1,2,3); # 三つの引数を渡します &foo(1,2,3); # 上と同じです do foo(); # ヌルリストを渡します &foo(); # 上と同じです &foo; # 引数を渡しません\*(--より効率的 .fi .Sh "参照渡し" サブルーチンへ配列の値を渡すのではなく、その名前を渡して、サブルーチン がローカルなコピーに対してではなくグローバルな配列を変更できるように したいときがあるでしょう。 perl では名前を持つすべてのオブジェクトに対して、その名前の前に * を つけて参照できます: *foo のように。 これが評価されると、ファイルハンドル、フォーマット、サブルーチンを含む、 その名前を持つすべてのオブジェクトを表すスカラ値となります。 local() 演算子に代入されたとき、その名前がそれに代入された * 値を 参照するようになります。 例: .nf sub doubleary { local(*someary) = @_; foreach $elem (@someary) { $elem *= 2; } } do doubleary(*foo); do doubleary(*bar); .fi *name への代入は今のところ local() の中でしか勧められません。 実際には *name への代入はどこででもできますが、それ以前の *name への 参照が永遠に尾を引くかもしれません。 これにより困ったことになるかもしれませんし、ならないかもしれません。 .Sp スカラはすでに参照渡しですが、このメカニズムを用いなくても、 関心のある $_[nnn] への明示的な参照を行うことで、スカラの引数を 変更することができます。 すべての要素をスカラで渡すことで、すべての配列の要素を変更することが できますが、push や pop 、配列のサイズの変更には * メカニズムを 使わなければなりません。 どんな場合でも、* メカニズムは多分、より効率が良いはずです。 .Sp *name 値は表示不能なバイナリデータを含むので、print の引数または printf や sprintf の %s 引数として使われると、表示を綺麗にするため '*name' と いう値になります。 .Sp 通常 LIST メカニズムはすべての配列値をマージしてしまって、個々の配列を 取り出せなくなってしまうので、配列を変更したくないとしても、 このメカニズムは一つの LIST にたくさんの配列を渡すのに便利です。 .Sh "正規表現" パターンマッチで使われるパターンは、バージョン 8 regexp ルーチンで供給 されているものと同じ正規表現です。 (実際、このルーチンは Henry Spencer の自由に再配布可能な再実装 V8 ルーチン から抜き取って使われています。) それに加えて、\ew は英数字 (\*(L"_\*(R" を含む) にマッチし、 \eW は非英数字にマッチします。 単語境界は \eb に、非単語境界は \eB に。 空白文字は \es に、非空白文字は \eS に。 数字は \ed に、非数字は \eD にマッチします。 \ew, \es, \ed はキャラクタクラスでも使えます。 また、\en, \er, \ef, \et, \eNNN は通常と同じ意味となります。 キャラクタクラスの中では、\eb は単語境界ではなく、 バックスペースを表します。 選択候補は、| で区切ります。 括弧構造 \|(\ .\|.\|.\ \|) を使うと、\e<数字> はその数字番目の 部分文字列にマッチします。 (パターンの外では、数字の前に \e の代わりに常に $ を用いなければ なりません。$<数字> (と $\`, $&, $\') の有効範囲は、閉じたブロックの 終りか、eval 文字列か、次のパターンマッチまでとなります。 \e<数字> 記述は、ときに現在のパターンの外に作用しますが、それに頼って はいけません。) 括弧は好きなだけたくさん使ってかまいません。9 個以上の部分文字列が あると、変数 $10, $11, ... が対応する部分文字列を参照します。 後方参照の前に少なくともその数の左括弧があると、パターンの中では、 \e10, \e11 等が部分文字列を後方参照します。 -そうでなければ (下位互換性のために) \e10 は \e010 のバックスペースと +そうでなければ (以前との互換性のために) \e10 は \e010 のバックスペースと 同じ、\e11 は \e011 のタブと同じというようになります。 (\e1 から \e9 は常に後方参照です。) .PP $+ は、最後の括弧でマッチしたものを返します。 $& は、マッチした文字列全体を返します。 ($0 が同じものを返していましたが、今は違います。) $\` はマッチした文字列の前の全文字列を返します。 $\' はマッチした文字列の後の全文字列を返します。 例: .nf s/\|^\|([^ \|]*\|) \|*([^ \|]*\|)\|/\|$2 $1\|/; # 最初の二語を交換 .ne 5 if (/\|Time: \|(.\|.\|):\|(.\|.\|):\|(.\|.\|)\|/\|) { $hours = $1; $minutes = $2; $seconds = $3; } .fi デフォルトで、^ 文字は文字列の先頭に、$ 文字は文字列の最後 (または最後の改行文字の前) にマッチすることが保障されており、 .I perl は文字列が一行しか含んでいないという仮定のもとで、 ある最適化を行なっています。 改行が埋め込まれた場合の ^ や $ の振舞いは、矛盾を生じるでしょう。 しかし、^ が文字列内の任意の改行の後に、$ が改行の前にマッチするよう な、文字列を複数行バッファとして使いたい場合があるかもしれません。 少々のオーバヘッドを覚悟すれば、変数 $* に 1 をセットすることで、 それができます。 $* を 0 に設定し直せば、 .I perl は元の動作に戻ります。 .PP 複数行の置換を用意にするために、. 文字は改行文字にはマッチしません (たとえ $* が 0 であっても) 。 特に次の例では、改行文字が $_ 文字列に残ります: .nf $_ = ; s/.*(some_string).*/$1/; 改行文字が要らないなら、次のどれかを試して下さい。 s/.*(some_string).*\en/$1/; s/.*(some_string)[^\e000]*/$1/; s/.*(some_string)(.|\en)*/$1/; chop; s/.*(some_string).*/$1/; /(some_string)/ && ($_ = $1); .fi 正規表現のどの要素の後でも中括弧で囲んだ数字を {n,m} の形で 置くことができ、n で要素がマッチする最小の回数を、m で最大の回数を 指定します。 {n} の形は、{n,n} と同等で、正確に n 回にマッチします。 {n,} の形は、n 回以上にマッチします。 (中括弧が他のコンテキストの中に出て来た場合は、通常の文字として 扱われます。) * 修飾子は {0,} と、+ 修飾子は {1,} と、? 修飾子は {0,1} と 同等となります。 n と m のサイズには制限がありませんが、大きい数字はより多くのメモリを 消費するでしょう。 .Sp .I perl では、 \eb, \ew, \en のような バックスラッシュのつくメタキャラクタは、すべて英数字であること に気がつかれることでしょう。 他の正規表現言語とは違って、英数字でないバックスラッシュシンボルは ありません。 従って、\e\e, \e(, \e), \e<, \e>, \e{, \e} というようなものは皆、 メタキャラクタではなく、文字そのものとして解釈されます。 これにより、メタキャラクタに含まれるのではないかと心配になるような 文字列をパターンに使って、引用することが容易になります。 英数字でないすべての文字の引用は、このようにします: .nf $pattern =~ s/(\eW)/\e\e$1/g; .fi .Sh "フォーマット" .I write 演算子で使う出力レコードフォーマットは、次のように 宣言します: .nf .ne 3 format NAME = FORMLIST . .fi NAME を省略すると、\*(L"STDOUT\*(R" フォーマットが定義されます。 FORMLIST は複数行から成り、各行は次の三つの型のいずれかとなります: .Ip 1. 4 コメント .Ip 2. 4 一つの出力行のフォーマットを示す \*(L"picture\*(R" 行 .Ip 3. 4 picture 行に値を与える引数行 .PP picture 行は、その中で値が置換される特定のフィールドを除けば、 見た目そのままに出力されます。 各 picture フィールドは、@ か ^ で始まります。 @ フィールド (配列の先頭の @ と混乱しないように) は通常の場合 で、^ フィールドは基本的な複数行テキストブロックを埋めるのに 使われます。 フィールドの長さは、<, >, | の繰り返しで埋めることで指定し、それぞれ 左寄せ、右寄せ、センタリングを意味します。 右寄せの別な形として、# 文字を (それに . を付けても良い) 数字フィールドの指定として使うこともできます。 (@ のかわりに ^ を使うと、undefined なフィールドが空白になります。) これらのフィールドに与えられた値が改行を含むと、改行までのテキスト のみが出力されます。 特殊フィールド @* は複数行の値の出力に使われます。 その行に書かれているのは @* だけでなくてはいけません。 .PP 値は、次の行で指定され、picture フィールドと同じ順となります。 値はカンマで区切られていなければなりません。 .PP @ でなく ^ で始まる picture フィールドは、特別な扱いになります。 指定する値は、テキスト文字列が入っているスカラ変数名でなければ いけません。 .I perl は、フィールドに入れられるだけたくさんのテキストを入れ、変数が次に参照 されるときに続きが出力されるように、文字列の先頭からそのテキストを削ります。 通常、テキストのブロックを出力するには、垂直なスタックの中にフィールド の一続きを入れて使います。 全部を入れるにはテキストが長すぎるとき、そうしたければ 最後のフィールドを .\|.\|. で終らせることもできます。 変数 $: を好きな文字のリストにすることで、テキストを分割する文字を 変えることができます。 .PP ^ フィールドを使うと、可変長のレコードを生成するので、テキストの フォーマットを短くしたいとき、チルダ (~) 文字を行のどこかに入れて 空行を抑制することができます。 (可読性を高めるため、普通はできれば行頭に入れるべきです。) チルダは出力時には空白に変換されます。 一つ目に続けて二つ目のチルダを書くと、行中のすべてのフィールドが なくなるまで、その行を繰り返します。 (いろいろな @ のフィールドを使うとき、与える式はいつも同じ値ではない方が 良いでしょう。) .PP 例: .nf .lg 0 .cs R 25 .ft C .ne 10 # /etc/passwd ファイルの形式 format STDOUT_TOP = \& Passwd File Name Login Office Uid Gid Home ------------------------------------------------------------------ \&. format STDOUT = @<<<<<<<<<<<<<<<<<< @||||||| @<<<<<<@>>>> @>>>> @<<<<<<<<<<<<<<<<< $name, $login, $office,$uid,$gid, $home \&. .ne 29 # バグレポート形式 format STDOUT_TOP = \& Bug Reports @<<<<<<<<<<<<<<<<<<<<<<< @||| @>>>>>>>>>>>>>>>>>>>>>>> $system, $%, $date ------------------------------------------------------------------ \&. format STDOUT = Subject: @<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< \& $subject Index: @<<<<<<<<<<<<<<<<<<<<<<<<<<<< ^<<<<<<<<<<<<<<<<<<<<<<<<<<<< \& $index, $description Priority: @<<<<<<<<<< Date: @<<<<<<< ^<<<<<<<<<<<<<<<<<<<<<<<<<<<< \& $priority, $date, $description From: @<<<<<<<<<<<<<<<<<<<<<<<<<<<<< ^<<<<<<<<<<<<<<<<<<<<<<<<<<<< \& $from, $description Assigned to: @<<<<<<<<<<<<<<<<<<<<<< ^<<<<<<<<<<<<<<<<<<<<<<<<<<<< \& $programmer, $description \&~ ^<<<<<<<<<<<<<<<<<<<<<<<<<<<< \& $description \&~ ^<<<<<<<<<<<<<<<<<<<<<<<<<<<< \& $description \&~ ^<<<<<<<<<<<<<<<<<<<<<<<<<<<< \& $description \&~ ^<<<<<<<<<<<<<<<<<<<<<<<<<<<< \& $description \&~ ^<<<<<<<<<<<<<<<<<<<<<<<... \& $description \&. .ft R .cs R .lg .fi 同じ出力チャンネルに対して、write を使って出力を混ぜることはできます が、$\- (ページの残り行数) を自分でいじらなければなりません。 .PP ほとんどが空白のフィールドがたくさんあるとき、 レコード間で reset 演算子を使うことを考えるべきです。 効率的であるというだけでなく、別のフィールドを加えてしまい、0 に し忘れてしまうというバグを防ぐことができます。 .Sh "プロセス間通信" perl の プロセス間通信(IPC)の能力は Berkeley のソケット機構に 基づいています。 ソケットが無ければ、このセクションは無視できます。 この呼び出しは、同名のシステムコールに相当しますが、 二つの理由で大抵引数は異なります。 一つ目は、perl のファイルハンドルは C ファイルディスクリプタとは 異なる動作をするということです。 二つ目は、perl は文字列の長さを知っているので、その情報を渡さなくても 良いということです。 以下がクライアントのサンプル (未テスト) です: .nf ($them,$port) = @ARGV; $port = 2345 unless $port; $them = 'localhost' unless $them; $SIG{'INT'} = 'dokill'; sub dokill { kill 9,$child if $child; } require 'sys/socket.ph'; $sockaddr = 'S n a4 x8'; chop($hostname = `hostname`); ($name, $aliases, $proto) = getprotobyname('tcp'); ($name, $aliases, $port) = getservbyname($port, 'tcp') unless $port =~ /^\ed+$/; .ie t \{\ ($name, $aliases, $type, $len, $thisaddr) = gethostbyname($hostname); 'br\} .el \{\ ($name, $aliases, $type, $len, $thisaddr) = gethostbyname($hostname); 'br\} ($name, $aliases, $type, $len, $thataddr) = gethostbyname($them); $this = pack($sockaddr, &AF_INET, 0, $thisaddr); $that = pack($sockaddr, &AF_INET, $port, $thataddr); socket(S, &PF_INET, &SOCK_STREAM, $proto) || die "socket: $!"; bind(S, $this) || die "bind: $!"; connect(S, $that) || die "connect: $!"; select(S); $| = 1; select(stdout); if ($child = fork) { while (<>) { print S; } sleep 3; do dokill(); } else { while () { print; } } .fi これがサーバ側です: .nf ($port) = @ARGV; $port = 2345 unless $port; require 'sys/socket.ph'; $sockaddr = 'S n a4 x8'; ($name, $aliases, $proto) = getprotobyname('tcp'); ($name, $aliases, $port) = getservbyname($port, 'tcp') unless $port =~ /^\ed+$/; $this = pack($sockaddr, &AF_INET, $port, "\e0\e0\e0\e0"); select(NS); $| = 1; select(stdout); socket(S, &PF_INET, &SOCK_STREAM, $proto) || die "socket: $!"; bind(S, $this) || die "bind: $!"; listen(S, 5) || die "connect: $!"; select(S); $| = 1; select(stdout); for (;;) { print "Listening again\en"; ($addr = accept(NS,S)) || die $!; print "accept ok\en"; ($af,$port,$inetaddr) = unpack($sockaddr,$addr); @inetaddr = unpack('C4',$inetaddr); print "$af $port @inetaddr\en"; while () { print; print NS; } } .fi .Sh "予約変数" 次の変数名は、 .IR perl にとって特別な意味があります。 これらのうち幾つかはアルファベットのシンボルにもしても良かったのですが、 reset \*(L"a\-zA\-Z\*(R" で予約変数まで消されてしまうようなことに したくなかったのです。 そのため、これらのおかしなシンボル名に悩まされなければならないでしょう。 そのうち多くは筋が通ったニーモニック (記憶方法) で、シェルのものと 類似になっています。 .Ip $_ 8 入力およびパターン検索のデフォルト。 次の組はそれぞれ同等です: .nf .ne 2 while (<>) {\|.\|.\|. # while の中でのみ同等 while ($_ = <>) {\|.\|.\|. .ne 2 /\|^Subject:/ $_ \|=~ \|/\|^Subject:/ .ne 2 y/a\-z/A\-Z/ $_ =~ y/a\-z/A\-Z/ .ne 2 chop chop($_) .fi (覚え方: 下線は実行されるとわかる。) .Ip $. 8 最後に読み込まれたファイルハンドルの現在の行番号。 読み出し専用。 明示的なファイルハンドルの close でのみ行番号がリセットされることを 覚えておいて下さい。 <> は明示的な close を行なわないので、ARGV ファイル全部を通して行番号 が増えていきます (eof の例を参照して下さい) 。 (覚え方: 多くのプログラムは . を現在行番号の意味で使う。) .Ip $/ 8 入力レコードの区切り文字。デフォルトは改行。 ヌル文字列にセットされると空行を区切りとして扱うことも含めて、 .IR awk の RS 変数と同じ働きをします。 複数文字にセットすると複数文字区切りにマッチさせることができます。 ファイルに空行が連続してあるとき、 この変数を "\en\en" にセットすると、"" にセットする場合と 少々異なる意味を持つことに注意して下さい。 "" にセットすると、二つかそれ以上の連続した空行を一つの空行として 扱います。 "\en\en" にセットすると、空行の後にたとえ改行文字が 続いていても、次の段落に含まれているものと盲目的に解釈されます。 (覚え方: / は詩をクォートするとき行境界の区切りとして使える。) .Ip $, 8 print 演算子のための出力フィールド区切り文字。 通常は、print 演算子は単にカンマ区切りで指定したフィールドを 出力します。より .IR awk に似た挙動をさせるためには、フィールド間に出力する文字を 指定する .IR awk の OFS 変数と同じものを、この変数をセットして下さい。 (覚え方: print文に , があるとき出力すべきもの。) .Ip $"" 8 $, と似ていますが、この変数の異なる点は、"" で囲まれた 文字列 (または同様な挿入文字) に挿入される配列値に適用されることです。 デフォルトは空白文字です。 (覚え方: これは明白。) .Ip $\e 8 print 演算子の出力レコードセパレータ文字。 通常 print 演算子は、後に改行やレコードセパレータ文字を続いていないと 推定して、単にカンマ区切りの指定フィールドを出力します。 より .IR awk に似た挙動をさせるためには、print の終りに出力する文字を指定する .IR awk の ORS 変数と同じものをこの変数にセットして下さい。 (覚え方: print の終りに \en を加える代わりに $\e をセット。) / にも似ていますが、 .IR perl から \*(L"得る\*(R" ものです。) .Ip $# 8 数字の出力のための出力フォーマット。 この変数は .IR awk の OFMT 変数を半分だけ受け継いでいます。 しかし .I awk と .I perl では、実際に何が数字であるかという概念の異なることがしばしばあります。 初期値も、%.6g でなく %.20g ですので、 .IR awk の値を得るには、明示的に $# をセットする必要があります。 (覚え方: # は数字の記号。) .Ip $% 8 現在 select されている出力チャンネルの現在のページ番号。 (覚え方: % は nroff におけるページ番号。) .Ip $= 8 現在 select されている出力チャンネルの現在のページ長 (出力可能行) 。 デフォルトは 60 。 (覚え方: = は平行線。) .Ip $\- 8 現在 select されている出力チャンネルのページの残り行数。 (覚え方: 1 ページの行数 \- 出力済み行数) .Ip $~ 8 現在 select されている出力チャンネルの現在のレポートフォーマット名。 デフォルトは、ファイルハンドル名。 (覚え方: $^ の仲間。) .Ip $^ 8 現在 select されている出力チャンネルの現在のページ先頭フォーマット名。 デフォルトは、ファイルハンドル名に \*(L"_TOP\*(R" を加えたもの。 (覚え方: 先頭ページを指す。) .Ip $| 8 0 でない値をセットすると、現在 select されている出力チャンネルに write や print が行なわれる毎にフラッシュします。 デフォルトは 0 。 通常 .I STDOUT は、端末に出力するときは行バッファが使われ、それ以外では ブロックバッファが使われることに注意して下さい。 この変数をセットするのは、 .I perl スクリプトを rsh の基で走らせている時等、 パイプに出力している時に、 出力が起こる度に確認したい場合に便利です。 (覚え方: パイプを常に動かしておきたい。) .Ip $$ 8 .I perl が走らせているスクリプトのプロセス番号。 (覚え方: シェルと同じ。) .Ip $? 8 最後に close したパイプや (\`\`) コマンドや .I system 演算子の戻り値。 これは、wait() システムコールが返すステータスなので、サブプロセスの 終了値は実際は ($? >> 8) です。 プロセスを終了させたシグナルがあった場合、$? & 255 は どのシグナルであるか、dump された core があるかどうかを返します。 (覚え方: sh や ksh と同じ。) .Ip $& 8 4 最後に成功したパターンマッチでマッチした文字列。 (ブロック内や現在のブロックで閉じた eval でのマッチは含まれません。) (覚え方: あるエディタの & と同じ。) .Ip $\` 8 4 最後にパターンマッチに成功したパターンの前にある文字列。 (ブロック内や現在のブロックで閉じた eval でのマッチは含まれません。) (覚え方: \` は大抵クォートされた文字列の前。) .Ip $\' 8 4 最後にパターンマッチに成功したパターンの後ろにある文字列。 (ブロック内や現在のブロックで閉じた eval でのマッチは含まれません。) (覚え方: \' は大抵クォートされた文字列の後。) 例: .nf .ne 3 $_ = \'abcdefghi\'; /def/; print "$\`:$&:$\'\en"; # abc:def:ghi を出力 .fi .Ip $+ 8 4 最後に検索したパターンの最後の括弧にマッチします。 これは、複数候補のパターンマッチでどちらにマッチするかわからない ときに便利です。 例: .nf /Version: \|(.*\|)|Revision: \|(.*\|)\|/ \|&& \|($rev = $+); .fi (覚え方: 正で、前方を見ること。) .Ip $* 8 2 文字列内で、複数行のマッチを行なうとき 1 をセットし、 パターンマッチの最適化の目的で、単一行を含む文字列であると .I perl に決め打ちにさせるときに 0 とします。 $* が 0 のときに複数の改行を含む文字列のパターンマッチをすると、 混乱した結果となります。 デフォルトは 0 。 (覚え方: * は複数のものにマッチする。) この変数は、^ や $ の解釈に影響するだけであるということに 注意して下さい。 改行のリテラルは、when $* == 0 としても検索できます。 .Ip $0 8 .I perl 起動したスクリプトのファイル名を保持しています。 $0 修飾子への代入は、ps(1) プログラムの引数の部分を参照して下さい。 (覚え方: sh や ksh と同じ) .Ip $<数字> 8 最後に行なったパターンマッチで対応する数字番目の括弧のサブパターン。 入れ子になったブロック内で既に終了したパターンマッチの数は含まれません。 (覚え方: \e数字と同じ。) .Ip $[ 8 2 配列中の最初の要素や部分文字列の最初の文字の添字。 デフォルトは 0 ですが、index() や substr() 関数の 添字のつけ方や評価に関して、 .I perl を .I awk (や Fortran) の動作にさせるには、この変数に 1 をセットすることでできます。 (覚え方: [ は添字の始まり。) .Ip $] 8 2 \*(L"perl -v\*(R" で出力される文字列。 これは、perl インタープリタが正しいバージョンの範囲でスクリプトを 実行しているかどうかを決めるために、スクリプトの始めの方で使われます。 数値のコンテキストで使われると、バージョン + パッチレベル / 1000 を 返します。 例: .nf .ne 8 # getcがつかえるかどうかを調べます ($version,$patchlevel) = $] =~ /(\ed+\e.\ed+).*\enPatch level: (\ed+)/; print STDERR "(No filename completion available.)\en" if $version * 1000 + $patchlevel < 2016; また、数値で使われると、 warn "No checksumming!\en" if $] < 3.019; .fi (覚え方: このバージョンの perl は right(正しい、右) 括弧に入ってるか? ) .Ip $; 8 2 多次元配列エミュレーションの際の添字の区切り。 連想配列の要素を次のように参照するとき、 .nf $foo{$a,$b,$c} 実際には $foo{join($;, $a, $b, $c)} を意味しますが、 @foo{$a,$b,$c} # スライス\*(--@ に注意 と書いてはいけません。 ($foo{$a},$foo{$b},$foo{$c}) .fi を意味することになってしまうからです。 デフォルトは "\e034" で、 .IR awk の SUBSEP と同じです。 キーとしてバイナリデータを使うと、$; として安全な値はないだろうという ことに気をつけて下さい。 (覚え方: カンマ (文法上添字の区切り) はセミコロンの半分。 これは、ちょっとひどいね。でも、$, は他のもっと重要なことに 取られているので。) .Ip $! 8 2 数値のコンテキストで使うと、通常の警告の文字列と共に errono の 現在の値を返します。 (これは、システムエラーのような特別なエラーを除くと、$! の値に 依存した動作をさせてはいけないということを意味します。) 文字列のコンテキストで使うと、相当するシステムエラー文字列を返します。 errno をセットするために $! に代入することができます。 例えば、エラー番号 n に対して $! が文字列を返したいときや、 die 演算子に終了値をセットしたいときなどです。 (覚え方: 一体何が爆発したの? ) .Ip $@ 8 2 最後に評価したコマンドからくる perl の文法エラーメッセージ。 ヌルなら、最後の評価が、正常に解析、実行されたことになります (起動された演算は普通の形で失敗したかもしれません) 。 (覚え方: 文法エラーはどこに \*(L"アット (at where)\*(R" ?) .Ip $< 8 2 現在のプロセスの実 uid 。 (覚え方: setuid で走らせているとき、*どこから* きた uid か。) .Ip $> 8 2 現在のプロセスの実効 uid 。 例: .nf .ne 2 $< = $>; # 実効 uid に実 uid をセットします ($<,$>) = ($>,$<); # 実 uid と実効 uid を取り換えます .fi (覚え方: setuid で走らせているとき、*行く先の* uid 。) 注意: $< と $> は setreuid() をサポートしているマシンでだけ 交換できます。 .Ip $( 8 2 現在のプロセスの実 gid 。 同時に複数グループのメンバとなることをサポートしたマシンで、 属しているグループの空白区切りのリストが得られます。 最初の数は getgid() の返すもので、残りが getgroups() の返すものです。 残りの中には最初の数値と同じものも含まれているかもしれません。 (覚え方: 括弧は GROUP に使われる。 setgid スクリプトを走らせているとき、 実 gid は LEFT(残っている、左) のグループ。) .Ip $) 8 2 現在のプロセスの実効 gid 。 同時に複数グループのメンバとなることをサポートしたマシンで、 属しているグループの空白区切りのリストが得られます。 最初の数は getegid() の返すもので、残りが getgroups() の返すものです。 残りの中には最初の数値と同じものも含まれているかもしれません。 (覚え方: 括弧は GROUP に使われる。 setgid スクリプトを走らせているとき、 実効 gid はあなたの RIGHT(正しい、右の)グループ。) .Sp 注意: $<, $>, $(, $) は、相当する set[re][ug]id() ルーチンを サポートしているマシンでだけセットできます。 $( と $) は setregid() をサポートしているマシンでだけ交換できます。 .Ip $: 8 2 format の (^ で始まる) 継続フィールドを埋めるように文字列を分ける 際の直前の文字列セット。 デフォルトは "\ \en-" で、空白やハイフンで分けられます。 (覚え方: 詩では \*(L"コロン\*(R" は行の一部) .Ip $^D 8 2 デバッグフラグの現在の値。 (覚え方: .B \-D スイッチの値。) .Ip $^F 8 2 最大システムファイルディスクリプタ数。通常は 2 。 システムファイルディスクリプタは、子プロセスに渡されますが、 それより数字が上のファイルディスクリプタは渡されません。 open する間は、たとえ open に失敗したとしても、 システムファイルディスクリプタは保存されます。 open が試みられる前に、通常のディスクリプタは close されます。 .Ip $^I 8 2 ファイルをその場で変更する場合の拡張子の値。 その場で変更できないようにするには、この変数を undef します。 (覚え方: .B \-i スイッチの値) .Ip $^L 8 2 改ページするために出力するフォーマット。デフォルトは \ef です。 .Ip $^P 8 2 デバッガが、自分自身をデバッグしないためにクリアする内部フラグ。 これをクリアしておくと、デバッグを不可能にさせられると考えられます。 .Ip $^T 8 2 スクリプトが走り始めた時刻を、epoch からの秒で保持します。 .B \-M , .B \-A , .B \-C ファイルテストで返された値は、この変数の値に基づいています。 .Ip $^W 8 2 警告スイッチの現在の値。 (覚え方: .B \-w スイッチに関係する。) .Ip $^X 8 2 argv[0] から来る、起動された perl 自身の名前。 .Ip $ARGV 8 3 <> から読み込んでいるとき、読み込み中のファイル名を保持します。 .Ip @ARGV 8 3 配列 ARGV は、スクリプトに渡されたコマンドライン引数を保持します。 $ARGV[0] はコマンド名ではなく、最初の引数なので、$#ARGV は一般に 引数の数 -1 です。 コマンド名については、$0 を参照して下さい。 .Ip @INC 8 3 配列 INC は、 .I perl スクリプトが \*(L"do EXPR\*(R" や \*(L"require\*(R" で評価されるときに 探されるべきディレクトリのリストを保持します。 初期値として、 .B \-I コマンドラインスイッチの引数、 これに続きデフォルトの .I perl ライブラリ (おそらく \*(L"/usr/share/perl\*(R")、 これに続きカレントディレクトリを示す \*(L".\*(R" です。 .Ip %INC 8 3 連想配列 INC は、\*(L"do\*(R" や \*(L"require\*(R" を介してインクルー ドされる各ファイル名のためのエントリを含んでいます。 キーは、指定したファイル名で、値は実際にファイルが見つかった 位置の値です。 この配列は、\*(L"require\*(R" コマンドが与えるファイルが既に インクルード済みかどうかを決めるのに使われます。 .Ip $ENV{expr} 8 2 連想配列 ENV は、現在の環境変数を保持しています。 ENV へ値を設定すると、子プロセスの環境が変わります。 .Ip $SIG{expr} 8 2 連想配列 SIG は、各シグナルハンドラをセットするのに使われます。 例: .nf .ne 12 sub handler { # 第一引数はシグナル名 local($sig) = @_; print "Caught a SIG$sig\-\|\-shutting down\en"; close(LOG); exit(0); } $SIG{\'INT\'} = \'handler\'; $SIG{\'QUIT\'} = \'handler\'; .\|.\|. $SIG{\'INT\'} = \'DEFAULT\'; # デフォルト動作に戻す $SIG{\'QUIT\'} = \'IGNORE\'; # SIGQUIT を無視する .fi SIG 配列は、perl スクリプトで実際にシグナル用にセットされた値を 保持しています。 .Sh "パッケージ" perl は、パッケージ間で異なる名前空間持つメカニズムを用意しており、 各々の変数がぶつからないように、パッケージを守っています。 デフォルトで、perl スクリプトはパッケージ \*(L"main\*(R" として コンパイルを始めます。 .I package 宣言を使うことによって、名前空間を切り替えることができます。 パッケージ宣言の有効範囲は、宣言それ自身から、閉じたブロックの終端まで です (local() 演算子と同じ有効範囲) 。 普通 \*(L"require\*(R" 演算子によりインクルードされたファイルの中の 最初の宣言として使われます。 複数箇所で同一パッケージに入ることが出来ます; ブロック中でコンパイラがどのシンボルテーブルを使うかに影響するだけです。 他のパッケージの変数やファイルハンドルは、識別子の前にパッケージ名と シングルクォートを付けることで、参照できます。 パッケージ名がヌルの場合、\*(L"main\*(R" と解釈されます。 .PP 文字で始まる識別子は、パッケージシンボルテーブルに保存されます。 それ以外のすべてのシンボルは、パッケージ \*(L"main\*(R" に保持されます。 更に、識別子 STDIN, STDOUT, STDERR, ARGV, ARGVOUT, ENV, INC, SIG は、 たとえ組み込みの変数、関数と異なる目的で使われたとしても、 強制的にパッケージ \*(L"main\*(R" に属するものとして扱われます。 仮に、\*(L"m\*(R", \*(L"s\*(R", \*(L"y\*(R" と呼ばれるパッケージを 持っていたとすると、パターンマッチ、代入、変換として解釈されるので、 識別子を適した形で使うことができないことに注意しましょう。 .PP eval された文字列は、eval がコンパイルされたパッケージ内で コンパイルされます。 (しかし、$SIG{} への代入は、main パッケージで指定された シグナルハンドラと解釈されます。パッケージ内でシグナルハンドラを 持ちたい場合、シグナルハンドラ名を適切に指定して下さい。) 例えば、perl ライブラリ内の perldb.pl を調べてみましょう。 これは始めに DB パッケージに切り替わり、デバッガがデバッグしようとして いるスクリプト内の変数を変更しないようになっています。 しかし、いろいろな時点で、main パッケージのコンテキストのいろいろな 式を評価するために、これは main パッケージに一時的に戻って来ています。 .PP パッケージのシンボルテーブルは、パッケージ名の前に下線のついた連想配列に 蓄えられることになります。 連想配列の各エントリの値は、*name 表記を使うときに参照しようと しているものになります。 実際、次の例は同じ効果 (もちろん main パッケージの場合) がありますが、 最初のものの方がコンパイル時にシンボルテーブルを見るので、 より効率が良くなります: .nf .ne 2 local(*foo) = *bar; local($_main{'foo'}) = $_main{'bar'}; .fi 例えば、以下によりパッケージ内のすべての変数を出力できます。 これは perl ライブラリの dumpvar.pl から取ってます: .nf .ne 11 package dumpvar; sub main'dumpvar { \& ($package) = @_; \& local(*stab) = eval("*_$package"); \& while (($key,$val) = each(%stab)) { \& { \& local(*entry) = $val; \& if (defined $entry) { \& print "\e$$key = '$entry'\en"; \& } .ne 7 \& if (defined @entry) { \& print "\e@$key = (\en"; \& foreach $num ($[ .. $#entry) { \& print " $num\et'",$entry[$num],"'\en"; \& } \& print ")\en"; \& } .ne 10 \& if ($key ne "_$package" && defined %entry) { \& print "\e%$key = (\en"; \& foreach $key (sort keys(%entry)) { \& print " $key\et'",$entry{$key},"'\en"; \& } \& print ")\en"; \& } \& } \& } } .fi たとえサブルーチンがパッケージ dumpvar でコンパイルされるとしても、 サブルーチン名がパッケージ \*(L"main\*(R" に挿入されるように、 サブルーチン名の前にパッケージ名をつけなければならないことに注意して 下さい。 .Sh "スタイル" 各々のプログラマは、フォーマットに関してもちろん自分自身の好みが あるでしょうが、自分のプログラムを読み易くするための一般的な ガイドラインがあります。 .Ip 1. 4 4 あることを特別な方法で*できる*からといって、そうしなければならない ということはありません。 .I perl は、一つのことをするときに、幾つかの方法があるように設計されている ので、最も読み易いものを選ぶように考えて下さい。 例えば open(FOO,$foo) || die "Can't open $foo: $!"; は、 die "Can't open $foo: $!" unless open(FOO,$foo); よりも良いです。なぜなら、後者の方法は文の主題を修飾子内に隠しているからです。 一方、 print "Starting analysis\en" if $verbose; は $verbose && print "Starting analysis\en"; より良いです。主となるのは、ユーザが -v を打ったかどうかでは ないからです。 .Sp 同様に、演算子がデフォルトの引数を仮定しているからといって、 それはデフォルトを用いなければならないということではありません。 デフォルトというものは、ちょっとしたプログラムを書く、怠け者の システムプログラマのためにあります。 読み易いプログラムをしたければ、引数を付けるようにして下さい。 .Sp 同じようなこととして、 あちこちで括弧を省略 .I できる ということは、以下のように書けということではありません: .nf return print reverse sort num values array; return print(reverse(sort num (values(%array)))); .fi 疑わしいときは、括弧をつけて下さい。 もしかすると、物好きな輩が、vi で % キーを叩くかもしれません。 .Sp たとえ疑わしくなかったとしても、自分の後でそのコードを管理する人間の 精神衛生上好ましいですし、その人が間違ったところに括弧をつける可能性も 大いにあります。 .Ip 2. 4 4 無理にこじつけて、ループの先頭や終わりで終了しようとしないで下さい。 .I perl には、真ん中からでも抜けられるように "last" 演算子が 用意されているのですから。 少々はみ出しても、より見易くなるようにして下さい: .nf .ne 7 line: for (;;) { statements; last line if $foo; next line if /^#/; statements; } .fi .Ip 3. 4 4 ループラベルを使うのを恐がらないで下さい\*(--多重ループの抜けだしがで きるようにするためだけでなく、可読性を高めるためにあるのですから。 最後の例を参照して下さい。 .Ip 4. 4 4 可搬性のため、すべてのマシンには実装されていない機能を使うときは、 失敗しないかどうか、eval の中で構成を確かめてみて下さい。 どのバージョンやパッチレベルで特定の仕様が実装されているかを 知っているなら、$] を調べて、実装されているかどうかを確認できます。 .Ip 5. 4 4 覚え易い識別子を選んで下さい。 .Ip 6. 4 4 一貫性を持たせましょう。 .Sh "デバッグ" .I perl に .B \-d スイッチを付けて起動すると、デバッグモニタの基でスクリプトが走ります。 最初の実行文の前で一時停止し、以下のようなコマンド入力を促します: .Ip "h" 12 4 ヘルプメッセージを出力する。 .Ip "T" 12 4 スタックトレース。 .Ip "s" 12 4 シングルステップ。 次の文の始めに達するまでを実行します。 .Ip "n" 12 4 次。 サブルーチンコール内では止まらずに、次の文に達するまで実行します。 .Ip "f" 12 4 終了。 現在のサブルーチンが終了するまで、文を実行し続けます。 .Ip "c" 12 4 継続。 次のブレークポイントに達するまで実行します。 .Ip "c line" 12 4 指定した行まで実行します。 指定した行に、一回きりのブレークポイントを挿入します。 .Ip "" 12 4 最後に実行した n または s を繰り返します。 .Ip "l min+incr" 12 4 min 行目から incr+1 行を表示します。 min を省略すると、最後に表示した残りから始めます。 incr を省略すると、前回の incr 値が使われます。 .Ip "l min-max" 12 4 指定範囲内の行を表示します。 .Ip "l line" 12 4 指定行を表示します。 .Ip "l" 12 4 次のウィンドウを表示します。 .Ip "-" 12 4 前のウィンドウを表示します。 .Ip "w line" 12 4 その行と前後のウィンドウを表示します。 .Ip "l subname" 12 4 サブルーチンを表示します。 長いサブルーチンの場合は、始めの方だけを表示します。 それ以上表示するには、\*(L"l\*(R" を使って下さい。 .Ip "/pattern/" 12 4 正規表現の前方検索。最後の / は省略可能です。 .Ip "?pattern?" 12 4 正規表現の後方検索。最後の ? は省略可能です。 .Ip "L" 12 4 ブレークポイントまたはアクションの設定された行を表示します。 .Ip "S" 12 4 すべてのサブルーチン名を表示します。 .Ip "t" 12 4 トレースモードを on/off するトグル。 .Ip "b line condition" 12 4 ブレークポイントをセットします。 line を省略すると、実行されようとしている行にセットされます。 condition が指定されると、 ブレークポイントの文に達する毎に condition が評価され、 condition が真のときだけブレークします。 ブレークポイントは実行文の先頭にだけセットできます。 .Ip "b subname condition" 12 4 ブレークポイントをサブルーチンの最初の実行文にセットします。 .Ip "d line" 12 4 ブレークポイントを削除します。 line を省略すると、実行しようとしている行のブレークポイントが 削除されます。 .Ip "D" 12 4 すべてのブレークポイントを削除します。 .Ip "a line command" 12 4 行にアクションをセットします。 バックスラッシュの直後に改行すれば、複数行コマンドも入力できます。 .Ip "A" 12 4 すべての行のアクションを削除します。 .Ip "< command" 12 4 デバッガがプロンプトを出す前に実行するアクションをセットする。 バックスラッシュの直後に改行すれば、複数行コマンドも入力できます。 .Ip "> command" 12 4 コマンドを入力してスクリプト実行に移る時に、 プロンプトの後に実行するアクションをセットします。 バックスラッシュの直後に改行すれば、複数行コマンドも入力できます。 .Ip "V package" 12 4 パッケージ内のすべての変数をリストします。 デフォルトは、メインパッケージです。 .Ip "! number" 12 4 デバッグコマンドの再実行を行ないます。 number が省略されると、直前のコマンドを再実行します。 .Ip "! -number" 12 4 幾つか前のコマンドを再実行します。 .Ip "H -number" 12 4 最後の n 個のコマンドを表示します。 1 文字より長いコマンドをリストします。 number を省略すると、すべてをリストします。 .Ip "q or ^D" 12 4 終了します。 .Ip "command" 12 4 コマンドを perl の文として実行します。 足りないセミコロンは補われます。 .Ip "p expr" 12 4 \*(L"print DB'OUT expr\*(R" と同じことです。 DB'OUT ファイルハンドルは、どこに STDOUT がリダイレクトされているか に関わらず、/dev/tty にオープンされます。 .PP デバッガを変更したいときは、perldb.pl ファイルを perl のライブラリ から、カレントディレクトリにコピーして、必要に応じて修正して下さい。 (コマンドラインに -I. を付けなければならないでしょう。) 初期化コードを含む .perldb ファイルを設定することで、カスタマイズが できます。例えば、以下のようなエイリアスを作ることができます: .nf $DB'alias{'len'} = 's/^len(.*)/p length($1)/'; $DB'alias{'stop'} = 's/^stop (at|in)/b/'; $DB'alias{'.'} = 's/^\e./p "\e$DB\e'sub(\e$DB\e'line):\et",\e$DB\e'line[\e$DB\e'line]/'; .fi .Sh "setuid スクリプト" .I perl は、安全な setuid スクリプトや setgid スクリプトを簡単に書けるように デザインされています。 スクリプトの各行が何回も置換されるシェルとは違って、 .I perl は、隠された \*(L"わけの判らないもの\*(R" を少なくして、より伝統的な 評価機構を使っています。 それに加え、この言語は組み込み機構をより多く備えていて、目的を達成する ために外部の (すなわち信頼できない可能性がある) プログラムに 頼らなければならないことは、ほとんどありません。 .PP パッチが当たっていない 4.2 または 4.3bsd カーネルでは、 setuid スクリプトは本質的に危険をはらんでいますが、このカーネルの 機能は無効にできます。 この場合、 perl スクリプトに (無意味な) setuid/gid ビットが付いていると、 .I perl は setuid と setgid 機構をエミュレートできます。 カーネルの機能が無効でない場合、 .I perl は setuid スクリプトが安全でないことをうるさく訴えるでしょう。 カーネルの setuid スクリプト機能を無効にするか、そうでなければ スクリプトに C のラッパーをかぶせる必要があるでしょう。 .PP perl が setuid スクリプトを実行しているとき、明らかなトラップに はまらないように特別な注意を払います。 (いくつかの点で、perl スクリプトは同等の C プログラムより安全です。) コマンドライン引数と環境変数と入力は、\*(L"汚れ\*(R" とみなされ、 サブシェルを起動するコマンドや、ファイル、ディレクトリ、プロセスを 変更するようなコマンドの中では、直接にも間接的にも使われません。 それ以前に汚れた値を参照したような式の中でセットされた変数も、 また汚れていることなります。 (汚れた値が変数に影響することが、たとえ論理的に不可能だとしても) .br 例えば: .nf .ne 5 $foo = shift; # $foo は汚れています $bar = $foo,\'bar\'; # $bar も汚れています $xxx = <>; # 汚れています $path = $ENV{\'PATH\'}; # 汚れていますが、以下を見て下さい $abc = \'abc\'; # 汚れていません .ne 4 system "echo $foo"; # 危険です system "/bin/echo", $foo; # 安全です (shを使わないので) system "echo $bar"; # 危険です system "echo $abc"; # PATH がセットされるまで、 # 安全ではありません .ne 5 $ENV{\'PATH\'} = \'/bin:/usr/bin\'; $ENV{\'IFS\'} = \'\' if $ENV{\'IFS\'} ne \'\'; $path = $ENV{\'PATH\'}; # 汚れていません system "echo $abc"; # もはや汚れていません! .ne 5 open(FOO,"$foo"); # OK open(FOO,">$foo"); # 駄目です open(FOO,"echo $foo|"); # 駄目だけど.. open(FOO,"-|") || exec \'echo\', $foo; # OK $zzz = `echo $foo`; # 危険。 zzz は汚れてます。 unlink $abc,$foo; # 危険 umask $foo; # 危険 .ne 3 exec "echo $foo"; # 危険 exec "echo", $foo; # 安全 (sh を使いません) exec "sh", \'-c\', $foo; # 安全と見なされてしまう、嗚呼 .fi 汚れは、各スカラ値と関係するので、配列の要素は汚れているものも、 汚れていないものもあります。 .PP 何か安全でないことをしようとすると、 \*(L"Insecure dependency\*(R" とか \*(L"Insecure PATH\*(R" というような 致命的エラーになります。 それでも、危険なシステムコールや exec を書くことができますが、 上記の最後の例のようなことを明示的に行なった場合に限るということを 覚えておいて下さい。 サブパターンを参照することでも、汚れの機構を避けることが できます \*(--\c .I perl は、$1, $2 などを使った部分文字列の参照では、自分のしていることを 知っているはずだと解釈します。 次のようなパターンの場合です: .nf $ARGV[0] =~ /^\-P(\ew+)$/; $printer = $1; # 汚れていません .fi これは、\ew+ がシェルのメタキャラクタにマッチしないので、 まず安全です。 .+ を使うと危険でしょうが、 .I perl はそこまで調べないので、パターン指定には注意を払うべきです。 これは、ファイル操作をしたいときに ($> を $< と同じにしなければ) 、 ユーザが与えるファイル名を汚さないための唯一の機構です。 .PP 汚れた値を使うことを気にしないような他の操作でもトラブルを起こす場合が あります。 ユーザが与えたファイル名を扱うファイルテストは、慎重に使って下さい。 できれば、$> = $< というようにセットした後で open して下さい。 .I perl では、汚れたファイルをオープンして読みだすことが制限されないので、 出力する内容については注意して下さい。 汚れの機構は、ばかな間違いを防ぐように作られているのであって、 考える必要がなくなるようにするためではありません。 .SH 環境 .Ip HOME 12 4 chdir に引数がないときに使われます。 .Ip LOGDIR 12 4 chdir に引数が無く、HOME がセットされていないときに使われます。 .Ip PATH 12 4 サブプロセスを実行するとき、および \-S が使われたときは スクリプトを探す際に使われます。 .Ip PERLLIB 12 4 標準ライブラリやカレントディレクトリを見る前に、perl ライブラリ ファイルを探すディレクトリのコロン区切りのリストです。 .Ip PERLDB 12 4 デバッガコードを得るのに使われるコマンドのことです。セットされて いないと、 .br require 'perldb.pl' を使います。 .PP これらを別にすると、 .I perl は、スクリプト実行時と子プロセスに渡された環境変数しか使いません。 しかし、setuid で走っているスクリプトは、だまされないようにするために 何より先に以下の行を実行しておいた方が良いでしょう: .nf .ne 3 $ENV{\'PATH\'} = \'/bin:/usr/bin\'; # 必要なパスを入れましょう $ENV{\'SHELL\'} = \'/bin/sh\' if $ENV{\'SHELL\'} ne \'\'; $ENV{\'IFS\'} = \'\' if $ENV{\'IFS\'} ne \'\'; .fi .SH 作者 Larry Wall .br MS-DOS への移植 Diomidis Spinellis .SH 関連ファイル /tmp/perl\-eXXXXXX .B \-e コマンドのためのテンポラリファイル .SH 関連項目 a2p awk から perl への変換プログラム .br s2p sed から perl への変換プログラム .SH 診断 コンパイルエラーは、エラーの行番号と次にあるべきトークンか、または 調べられたトークンの型を教えてくれます。 ( .B \-e スイッチで .I perl に渡されたスクリプトの場合、各 .B \-e が一行に数えられます。) .PP setuid スクリプトには、更に \*(L"Insecure dependency\*(R" のような エラーメッセージを生じるという制約があります。 setuid スクリプトのセクションを参照して下さい。 .SH トラップ .IR awk に慣れたユーザは、以下のことに特に注意を払わなければなりません: .Ip * 4 2 .I perl では、(ブロックの終わりを除く) すべての単文の後にセミコロンが必要です。 改行は文の区切りではありません。 .Ip * 4 2 if や while には、中括弧 {} が必要です。 .Ip * 4 2 .IR perl では、変数は $ か @ で始まります。 .Ip * 4 2 配列の添字は、$[ をセットしなければ 0 で始まります。 substr() と index() の文字位置も同様です。 .Ip * 4 2 配列の添字が数字であるか文字列であるかを決めなければなりません。 .Ip * 4 2 連想配列は、参照するだけでは存在することになりません。 .Ip * 4 2 比較の際には、文字列比較か、数値比較かを決めなければなりません。 .Ip * 4 2 入力行を読み込んだだけでは、split は行なわれません。自分で split して、 配列に入れなければなりません。 そして、 .I split 演算子は、異なる引数を取ります。 .Ip * 4 2 現在の入力行は、通常 $0 ではなく $_ です。 一般に改行コードは除かれません。 ($0 は実行されたプログラム名です。) .Ip * 4 2 $<数字> は、フィールドの参照ではありません\*(--最後にマッチした パターンの部分文字列を参照します。 .Ip * 4 2 .I print 文は $, と $\e を設定しなければ、フィールド区切りやレコード区切りを 出力しません。 .Ip * 4 2 ファイルに出力する前には、オープンしなければなりません。 .Ip * 4 2 範囲演算子は \*(L".\|.\*(R" であって、コンマではありません。 (コンマ演算子は、C と同じ動作です。) .Ip * 4 2 マッチ演算子は、\*(L"~\*(R" でなく \*(L"=~\*(R" です。 (\*(L"~\*(R" は C と同じく補数の演算子です。) .Ip * 4 2 指数演算子は、\*(L"^\*(R" でなく \*(L"**\*(R" 演算子です。 (\*(L"^\*(R" は、C と同じく XOR 演算子です。) .Ip * 4 2 結合演算子は \*(L".\*(R" であり、ヌル文字列ではありません。 (ヌル文字列を使うと 3 番目の / が除算演算子と解釈されるため、 \*(L"/pat/ /pat/\*(R" が解析不能になります。\*(--トークン解析は、実際 のところ /, ?, < のような演算子ではコンテキストにやや敏感です。 そして、実は、. 自身は数字の始めになり得ます。) .Ip * 4 2 .IR next , .IR exit, .I continue の動作は異なります。 .Ip * 4 2 次の変数の動作は異なります。 .nf Awk \h'|2.5i'Perl ARGC \h'|2.5i'$#ARGV ARGV[0] \h'|2.5i'$0 FILENAME\h'|2.5i'$ARGV FNR \h'|2.5i'$. \- 何か FS \h'|2.5i'(何でもよい) NF \h'|2.5i'$#Fld かそのようなもの NR \h'|2.5i'$. OFMT \h'|2.5i'$# OFS \h'|2.5i'$, ORS \h'|2.5i'$\e RLENGTH \h'|2.5i'length($&) RS \h'|2.5i'$/ RSTART \h'|2.5i'length($\`) SUBSEP \h'|2.5i'$; .fi .Ip * 4 2 疑わしいときは、 .I awk のプログラムを a2p に通して、出て来たもの見て下さい。 .PP C に洗脳されたプログラマは、次のことを特に心に留めておかなければなりま せん: .Ip * 4 2 if や while には、中括弧 {} が必要です。 .Ip * 4 2 \*(L"else if\*(R" でなく、\*(L"elsif\*(R" を使わなければなりません。 .Ip * 4 2 .I break や .I continue は、それぞれ .I last や .IR next になります。 .Ip * 4 2 switch 文はありません。 .Ip * 4 2 .IR perl では、 変数は $ か @ で始まります。 .Ip * 4 2 printf には * は実装されていません。 .Ip * 4 2 コメントは、/* でなく # で始まります。 .Ip * 4 2 何者のアドレスを得ることもできません。 .Ip * 4 2 ARGV は大文字でなければなりません。 .Ip * 4 2 link, unlink, rename 等のシステムコールは、成功時に 0 でな く、非 0 を返します。 .Ip * 4 2 シグナルハンドラは、数字ではなくシグナル名を扱います。 .PP 経験豊かな .I sed プログラマは、次のことを心に留めておかなければなりません: .Ip * 4 2 置換の後方参照では、\e でなく $ を使います。 .Ip * 4 2 パターンマッチメタキャラクタ (, ), | の前にはバックスラッシュをつけません。 .Ip * 4 2 範囲演算子は、コンマでなく .\|. です。 .PP 鋭い shell プログラマは、次のことを心に留めておかなければなりません: .Ip * 4 2 `` 演算子のコマンド内では、'' にくくられていないと変数置換が行なわれます。 .Ip * 4 2 `` 演算子は csh と違って、戻り値の変換をしません。 .Ip * 4 2 シェル (特に csh) は、各コマンド行で複数レベルの置換を行ないます。 .I perl は、"", ``, <>, // のような決まった構造においてのみ、置換が行なわれます。 .Ip * 4 2 シェルは、スクリプトを一度に少しだけ解釈します。 .I perl は、すべてのプログラムを実行前にコンパイルします。 .Ip * 4 2 引数は、$1, $2,.. ではなく、@ARGV を介して利用できます。 .Ip * 4 2 環境は、変数として自動的に利用可能とはなりません。 .SH 訂正と追加 perl の本、 .I Programming\0Perl には以下のような省略と抜けがあります。 .PP 5 ページの例 .nf eval "/usr/bin/perl は、以下でなければいけません。 eval "exec /usr/bin/perl .fi .PP 195 ページの System V の sum 相当のプログラムは、極めて小さなファイル でしか動作しません。大きなファイルでは、以下を使って下さい。 .nf undef $/; $checksum = unpack("%32C*",<>) % 32767; .fi .PP alarm と sleep に関する記述は、シグナル SIGALARM と言っていますが、 SIGALRM でなければなりません。 .PP $/ の初期値をセットする .B \-0 スイッチは、この本が出版後に perl に追加されました。 .PP .B \-l スイッチでは、自動行末処理を行なうようになっています。 .PP qx// 構造は バックスラッシュ `` と同義です。 .PP $0 は、 .I ps (1) の引数表示を変更するために、代入可能となりました。 .PP 新しい @###.## フォーマットは、フォーマットの記述から 偶然省略されました。 .PP s///ee が置換式の多重評価を生じることが、出版時に 知られていませんでした。これは、仕様と解釈されるべきです。 .PP (LIST) x $count は、配列の繰り返しを実行します。 .PP 正規表現には、括弧の数に制限がなくなっています。 .PP ダブルクォート "" のコンテキストでは、更に以下のエスケープがサポート されています: \ee, \ea, \ex1b, \ec[, \el, \eL, \eu, \eU, \eE 最後の 5 つの制御コードは、大文字小文字の変換です。 .PP .B $/ 変数には、複数の区切り文字をセットできます。 .PP 通常のパターンマッチに g 修飾子が使えます。 これにより、文字列から複数のマッチを検索することで、 パターンマッチを繰り返します。 .PP $^T を除いて、すべての $^X 変数が増えてます。 .PP FILEHANDLE に対するデフォルトのページ先頭フォーマットは、top でなく FILEHANDLE_TOP になっています。 .PP eval {} と sort {} 構造は、version 4.018 で追加されました。 .PP pack と unpack の v と V (リトルエンディアン) テンプレートオプションは、 vertion 4.019 で追加されました。 .SH バグ .PP .I perl 型のキャスト、atof() 、sprintf() のようないろいろな操作は、 マシンの定義に左右されます。 .PP あるストリームで、stdio が各 read や write の間に seek や eof を 必要とする場合、 .IR perl はそのようにします。 (これは、sysread() と syswrite() には適用されません。) .PP どの組み込みデータタイプも勝手なサイズ制限は持っていません (メモリサイズは別です) が、それでもいくらかは限界はあります: 識別子は 255 文字以上にはできませんし、 \-S を使うとき、PATH の要素は 255 を超えてはいけません。 正規表現は、内部的に 32767 バイトを超えられません。 .PP .I perl は、実は 病理学的折衷主義のがらくたリスター (Pathologically Eclectic Rubbish Lister) なんですが、私がそう言ったとは誰にも話さないで下さい。 .rn }` '' diff --git a/ja/man/man1/pkg_create.1 b/ja/man/man1/pkg_create.1 index 77e212c0b7..7782f490c8 100644 --- a/ja/man/man1/pkg_create.1 +++ b/ja/man/man1/pkg_create.1 @@ -1,404 +1,404 @@ .\" .\" FreeBSD install - a package for the installation and maintainance .\" 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_create.1 .\" jpman %Id: pkg_create.1,v 1.3 1997/06/09 10:11:56 jsakai Stab % .\" %Id: pkg_create.1,v 1.16.2.7 1998/03/09 12:31:13 jkh Exp % .\" .\" hacked up by John Kohl for NetBSD--fixed a few bugs, extended keywords, .\" added dependency tracking, etc. .\" .\" [jkh] Took John's changes back and made some additional extensions for .\" better integration with FreeBSD's new ports collection. .\" .Dd April 21, 1995 .Dt pkg_create 1 .Os FreeBSD .Sh 名称 .Nm pkg_create .Nd ソフトウェア配布パッケージを作成するプログラム .Sh 書式 .Nm .Op Fl YNOhv .Op Fl P Ar pkgs .Op Fl p Ar prefix .Op Fl f Ar contents .Op Fl i Ar iscript .Op Fl k Ar dscript .Op Fl r Ar rscript .Op Fl t Ar template .Op Fl X Ar excludefile .Op Fl D Ar displayfile .Op Fl m Ar mtreefile .Fl c Ar comment .Fl d Ar description .Fl f Ar packlist .Ar pkg-name .Sh 解説 この .Nm コマンドは、パッケージ展開/情報プログラムに渡されるパッケージを 作成します。 パッケージ作成のために入力する説明とコマンドライン引数 は本来人間が生成することを意図していませんが、 そうすることも簡単にできます。 自力でどうにかすることも可能ですが、作成にはフロントエンドツールを 用いた方がいいでしょう。 とはいうものの、入力書式の概略はこの文書に含まれています。 .Sh オプション 以下のコマンドラインオプションが提供されています: .Bl -tag -width indent .It Fl f Ar packinglist ファイル .Ar packinglist から、もしくは .Ar packinglist が .Cm - (ダッシュ)であれば .Cm stdin から、パッケージ用の ``packing list'' を取得します。 .It Fl c Ar [-]desc ファイル .Ar desc から、もしくは先頭が .Cm - で始まっていれば引数自身から、パッケージの ``一行説明'' を取得します。 この文字列は、パッケージが提供するもののバージョンを知る 手がかりとなるべきです。 .It Fl d Ar [-]desc ファイル .Ar desc から、もしくは先頭が .Cm - で始まっていれば引数自身から、パッケージの長い説明を取得します。 .It Fl Y 質問に対してのデフォルトの解答を `Yes' とします。 .It Fl N 質問に対してのデフォルトの解答を `No' とします。 .It Fl O `packing list Only' モードに移行します。 これは .Em "FreeBSD Ports Collection" のための特別な修正であり、port がインストールされる時の `fake pkg_add' を行うために用いられます。 このような場合には、調整された最終的な packing list が どのようなものになるかを知る必要があるのです。 .It Fl v 饒舌な出力に切り替えます。 .It Fl h tar がシンボリックリンクをたどるようにします。 この結果、リンク自身ではなくリンク先のファイルが出力されます。 .It Fl i Ar iscript パッケージのインストール手続きとして .Ar iscript を用います。 これは実行可能なプログラム (もしくはシェルスクリプト) なら なんでも構いません。 これはパッケージがインストールされる時に自動的に起動されます。 .It Fl P Ar pkgs 初期のパッケージ依存リストとして .Ar pkgs を用います。 これはホワイトスペースで区切られたパッケージの名前となります。 また、packing list (後述の「PACKING LIST 詳細」セクションを参照) 内の複数の .Cm @pkgdep ディレクティブを指定する手っ取り早い方法でもあります。 .It Fl p Ar prefix パッケージのファイルを選択する際に基準となる初期ディレクトリとして .Ar prefix を用います。 .It Fl k Ar dscript パッケージのアンインストール手続きとして .Ar dscript を用います。 これは実行可能なプログラム (もしくはシェルスクリプト) なら なんでも構いません。 これはパッケージがアンインストールされる時に自動的に起動されます。 .It Fl r Ar rscript パッケージの ``requirements'' 手続きとして .Ar rscript を用います。 これは実行可能なプログラム (もしくはシェルスクリプト) なら なんでも構いません。 これはインストール時、アンインストール時に自動的に起動され、 インストール、アンインストールを継続するべきかどうかを決定するのに 用いられます。 .It Fl t Ar template .Xr mktemp 3 への入力として .Ar template を用います。 これはデフォルトでは .Pa /tmp/instmp.XXXXXX という文字列ですが、 .Pa /tmp ディレクトリの容量が制限されているような状況では 変更する必要があるかもしれません。 .Xr mktemp 3 が一意の ID を用いるために必要な `X' の文字をいくつか残しておく ことを忘れないでください。 .It Fl X Ar excludefile 最終的にパッケージを作成する際に、 .Ar excludefile を .Cm tar に .Fl exclude-from 引数として渡します。 このオプションを使うにあたっての詳しい情報は、 .Cm tar のマニュアルページ (もしくは .Fl -help 引数を付けて .Cm tar を実行) を参照してください。 .It Fl D Ar displayfile パッケージをインストールした後にファイルを ( .Xr more 1 を用いて) 表示します。 「ほとんど free なソフトウェア」などにおいて、 法的な通知のようなものなどに便利でしょう。 .It Fl m Ar mtreefile パッケージがインストールされる前に、mtreefile を入力として .Xr mtree 8 を実行します。mtree は .Cm mtree .Fl u .Fl f .Ar mtreefile .Fl d .Fl e .Fl p .Pa prefix として起動されます (ただし .Pa prefix は .Cm @cwd ディレクティブにより名付けられた最初のディレクトリの名前)。 .El .Pp .Sh PACKING LIST 詳細 ``packing list'' の書式 ( .Fl f を参照) は単純で、パッケージに含めるファイル名を一行につきひとつずつ 並べたものにすぎません。 どこにインストールされるかわからないパッケージに対して絶対パスを 用いるのは一般的に悪い方法なので、 どこにインストールされることを想定しているのか、 そしてどんな ownership と mode を伴ってインストールされるべきなのか (こちらはオプション) を指定する方法が用意されています。 これは packing list 内に一連の特殊コマンドを 埋め込むことで実現されています。以下に簡単に示します: .Bl -tag -width indent -compact .It Cm @cwd Ar directory 内部のディレクトリポインタが .Ar directory を指すようにします。以降のファイル名はこのディレクトリへの相対パス であるとみなされます。 .Cm @cd はこのコマンドの別名です。 .It Cm @srcdir Ar directory 「作成時のみ」の内部ディレクトリポインタを .Ar directory に設定します。 パッケージ作成時に .Cm @cwd に優先すると言えますが、展開時にはこれはあてはまりません。 .It Cm @exec Ar command 展開処理の一環として .Ar command を実行します。 .Ar command が以下の文字列を含んでいた場合、その場で置換されます。 以下の例では .Cm @cwd が .Pa /usr/local と設定されていて、最後に展開されたファイルが .Pa bin/emacs だったとしています。 .Bl -tag -width indent -compact .It Cm "%F" 最後に展開されたファイル名に置換されます。この例では .Pa bin/emacs となります。 .It Cm "%D" .Cm @cwd -で設定されたカレントディレクトリプレフィクスに置換されます。 +で設定されたカレントディレクトリプレフィックスに置換されます。 この例では .Pa /usr/local になります。 .It Cm "%B" 完全な(フルパスの)ファイル名の ``basename'' へ置換されます。 -これはカレントディレクトリプレフィクスに最後の filespec を +これはカレントディレクトリプレフィックスに最後の filespec を 加え、末尾のファイル名部分を除いたものです。 この例では、 .Pa /usr/local/bin になります。 .It Cm "%f" 完全な (フルパスを含む) ファイル名の ``filename'' 部分へ置換されます。 .Cm %B と対応していて、この例では .Pa emacs となります。 .El .It Cm @unexec Ar command アンインストール処理の一環として .Ar command を実行します。特別な .Cm % 文字列の置換は .Cm @exec と同様です。 このコマンドは .Cm @exec のようにパッケージを加える際に実行されるのではなく、パッケージが 削除されるときに実行されます。 これは、パッケージを加えるときに作られたリンクや他の 付随ファイル (パッケージの内容一覧に記されているファイルは自動的に 削除されるので除く) を削除するのに便利です。 アンインストールスクリプトよりも .Cm @unexec を用いる方が有利な点は、どこにインストールされているかわからない ( .Fl p を参照) ファイルの場所を得るのに ``特殊文字列置換'' を用いることが 可能なことです。 .It Cm @mode Ar mode この後で展開されるすべてのファイルのデフォルトの許可属性を .Ar mode に設定します。 書式は .Cm chmod コマンドで用いられているものと同じです (というよりも、そのまま 渡されています)。 引数無しで用いると、デフォルトの(展開)許可属性に戻します。 .It Cm @option Ar option 内部用パッケージオプションを設定します。 現在二つのオプションのみがサポートされています。 ひとつは .Ar extract-in-place で、これは pkg_add コマンドにパッケージの tarball を staging area に展開せずに、目的の階層に直接展開するよう指示します (これは主に配布物や他の特殊なパッケージなどに用いられます)。 もうひとつは .Ar preserve で、存在するファイルを別の所に保存しておくよう pkg_add に指示します (これらは pkg_delete の時に復活しますが、自分の責任で行ってください)。 .It Cm @owner Ar user この後で展開されるすべてのファイルのデフォルトの ownership を .Ar user に設定します。 引数無しで用いると、デフォルトの(展開) ownership に戻します。 .It Cm @group Ar group この後で展開されるすべてのファイルのデフォルトの group ownership を .Ar group に設定します。 引数無しで用いると、デフォルトの(展開) group ownership に戻します。 .It Cm @comment Ar string packing list 内にコメントを埋め込みます。 誰かが後で間違えてしまうかもしれない特に厄介な部分を説明しようとする 場合に便利です。 .It Cm @ignore 特殊な目的に使われるファイルなどのため、展開時に次のファイルを 無視する (どこにもコピーしない) ように、内部で用いられます。 .It Cm @ignore_inst .Cm @ignore と同様ですが、次のファイルを無視するのは一評価サイクルだけ 遅らせられます。 このおかげでこのディレクティブを .Ar packinglist ファイル内で用いることが可能になるので、インストーラが 無視するような、インストールスクリプトなどのための特殊な データファイルを、配布物内に入れることができるようになります。 .It Cm @name Ar name パッケージの名前を設定します。 これは必須項目であり、通常先頭に置かれます。 この名前はパッケージが提供するファイルの名前とは異なる可能性があり、 後でアンインストールする時のために パッケージの記録を残しておくのに使われます。 名前が指定されなかった場合には、 .Nm はパッケージ名から推定し、自動的に設定することに注意してください。 .It Cm @dirrm Ar name ディレクトリ .Pa name がアンインストール時に削除されるよう宣言します。デフォルトでは、 パッケージのインストール時に作成されたディレクトリは アンインストール時には削除されませんが、このディレクティブは明示的な ディレクトリ削除方法を提供します。 このディレクティブはパッケージリストの最後で用いるようにしてください。 一つ以上の .Cm @dirrm ディレクティブが指定された場合、指定された順番に削除されます。 .Pa name は空きディレクトリでなければ削除されません。 .It Cm @mtree Ar name .Pa name を、インストール時に用いられる .Xr mtree 8 への入力ファイルとして宣言します (上述の .Fl m を参照)。最初にひとつだけ .Cm @mtree ディレクティブを指定することが推奨されます。 .It Cm @display Ar name .Pa name を、インストール時に表示されるファイルとして宣言します (上述の .Fl D を参照)。 .It Cm @pkgdep Ar pkgname パッケージ .Ar pkgname に依存することを宣言します。 パッケージ .Ar pkgname はこのパッケージがインストールされる前にインストールされていなければ ならず、またこのパッケージはパッケージ .Ar pkgname がアンインストールされる前にアンインストールされなければなりません。 パッケージが複数のパッケージに依存する場合には、複数の .Cm @pkgdep ディレクティブが用いられます。 .El .Sh 関連項目 .Xr pkg_add 1 , .Xr pkg_delete 1 , .Xr pkg_info 1 , .Xr sysconf 3 . .Sh 歴史 .Nm コマンドは FreeBSD で最初に登場しました。 .Sh 作者 .Bl -tag -width indent -compact .It "Jordan Hubbard" ほとんどの仕事 .It "John Kohl" NetBSD 向け修正 .El .Sh バグ パッケージが展開される際にハードリンクを保存しておくために、 配布物のファイル間でのハードリンクは .Cm @cwd ディレクティブで括られていなければなりません。 その上、実行時の引数の長さの制限 (これは .Fn sysconf _SC_ARG_MAX により返される値に依存します) のために、それらのハードリンクは単一の .Cm tar 実行内で行われなければなりません。 .Pp バグは他にもあるはずです。 diff --git a/ja/man/man1/printf.1 b/ja/man/man1/printf.1 index 120169ea9c..313661aed6 100644 --- a/ja/man/man1/printf.1 +++ b/ja/man/man1/printf.1 @@ -1,259 +1,259 @@ .\" Copyright (c) 1989, 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. .\" .\" @(#)printf.1 8.1 (Berkeley) 6/6/93 .\" jpman %Id: printf.1,v 1.2 1997/05/20 01:08:19 mutoh Stab % .\" .Dd June 6, 1993 .Dt PRINTF 1 .Os .Sh 名称 .Nm printf .Nd formatted output .Sh 書式 .Nm .Ar format Op Ar arguments ... .Sh 解説 .Nm は第一引数より後の引数をフォーマットに合わせて出力します。 .Ar format は 3 種類のオブジェクトを含む文字列です。 一つは通常の文字列で、単純に標準出力にコピーされます。 一つはエスケープシーケンスで、変換されてから標準出力にコピーされます。 もう一つはフォーマット記述で、これらはそれぞれ、後に続く .Ar arguments を表示します。 .Pp 第一引数より後の .Ar arguments は対応するフォーマットが .Cm c か .Cm s の場合は文字列として扱われ、それ以外は以下のような拡張部分と 合わせて C の定数として評価されます。 .Pp .Bl -bullet -offset indent -compact .It 先頭に ``+'' や ``-'' の符号をつけることができます。 .It もし先頭がシングルクォートやダブルクォートで始まっているか、数字、プラ ス/マイナス記号で始まっているのでなければ、その値は次の文字の .Tn ASCII コードになります。 .El .Pp フォーマット文字列は .Ar arguments を変換するために何度も 再利用されます。余分なフォーマット記述は 0 やヌル文字列に 評価されます。 .Pp キャラクタエスケープシーケンスは .Tn ANSI C 規格 .Tn X3J11 で立案された定義で、バックスラッシュによる表記です。文字キャラクタとそ の意味は以下のようになります。 .Bl -tag -width Ds -offset indent .It Cm \ea <ベル> キャラクタを書きます。 .It Cm \eb <バックスペース> キャラクタを書きます。 .It Cm \ef <フォームフィード> キャラクタを書きます。 .It Cm \en <改行> キャラクタを書きます。 .It Cm \er -<キャリッジリターン> キャラクタを書きます。 +<復帰> キャラクタを書きます。 .It Cm \et <タブ> キャラクタを書きます。 .It Cm \ev <垂直タブ> キャラクタを書きます。 .It Cm \e\' <シングルクォート> キャラクタを書きます。 .It Cm \e\e <バックスラッシュ>キャラクタを書きます。 .It Cm \e Ns Ar num 1 から 3 桁の 8 進数 .Ar num で表される .Tn ASCII コードの 8 ビット文字を書きます。 .El .Pp 各フォーマットの指定はパーセント文字(``%'')から始まります。 フォーマットの他の部分は、以下の順番で続きます: .Bl -tag -width Ds .It "以下のフラグが 0 個以上つきます:" .Bl -tag -width Ds .It Cm # `#' キャラクタは数値を ``別形式'' で表示させるという指定です。 .Cm c , .Cm d , .Cm s フォーマットではこのオプションは無効です。 .Cm o フォーマットでは出力文字列の先頭に 0 をつけるため、 その値の精度が上がります。 .Cm x .Pq Cm X フォーマットでは、0 以外の値なら出力される文字列の先頭に .Li 0x .Pq Li 0X がつきます。 .Cm e , .Cm E , .Cm f , .Cm g , .Cm G のフォーマットでは、たとえ小数点以下の値がなくても常に小数点がつきます (通常のフォーマットでは、小数点以下の値がある時のみ結果に小数点が含ま れます)。 .Cm g と .Cm G のフォーマットでは、結果の終わりに付く 0 は通常のフォーマットと違って 省略されません。 .It Cm \&\- 指定したフィールド幅で .Em 左詰め で出力します。 .It Cm \&+ 符号つきのフォーマットの時に、数字の前に常に符号がつくように なります。 .It Sq \&\ \& 符号つきのフォーマットで正の値を表示する時に先頭に空白が一つ挿入されま す。 `+' と空白の両方が指定された場合、`+' が空白に優先されます。 .It Cm \&0 `0' は空白でパディングする代りに `0' でパディングを行ないます。 `\-' と `0' の両方が指定された場合、`\-' が優先されます。 .El .It "フィールド幅:" .Em field width ; .Em フィールド幅 を指定するためにオプションとしてつける数値です。 出力する文字列がこのフィールド幅よりも短い場合、フィールド幅を埋めるよ うに左側が(左詰めの指示があれば、右側が)空白でパディングされます。 (先頭につく 0 はフラグですが、埋め込まれた 0 はフィールド幅の一部であ ることに注意) .It 精度: オプションでつけるピリオド .Sq Cm \&.\& , には、 .Em 精度 を表わす数のオプションが続きます。この数は .Cm e と .Cm f フォーマットの場合に小数点以下の値を表示する桁数を指定し ます。 .Cm e , .Cm f 以外では、文字列から表示される文字の最大数になります。もし精度を表す数 がなければ、精度は 0 とされます。 .It Format: フォーマットの型を表す文字です( .Cm diouxXfwEgGbcs のうちのいずれか)。 .El .Pp フィールド幅や精度は数字の代りに .Sq Cm \&* も使えます。この場合、フィールド幅や精度は .Ar argument で与えます。 .Pp フォーマットキャラクタとその意味は以下のようになります: .Bl -tag -width Fl .It Cm diouXx .Ar argument はそれぞれ符号つき 10 進数(d または i)、符号なし 8 進数(o)、 符号なし 10 進数(u)、符号なし 16 進数(X または x)で表示されます。 .It Cm f .Ar argument が `[\-]ddd.ddd' のスタイルで表示され、引数の精度で指定した数だけ小数 点以下の d が続きます。精度の指定がなければ 6 文字になります。もし精度 が明示的に 0 と指定された場合は小数点とそれ以下の値は表示されません。 .It Cm eE .Ar argument が .Sm off .Pf [\-]d Cm \&. No ddd Cm e No \\*(Pmdd .Sm on のように、小数点の前に数字が一つで、後には引数の精度で指定した数だけ数 字が続きます。精度の指定がなければ 6 文字になります。 .Sq Cm \&E フォーマットが使われます。 .It Cm gG .Ar argument が、最小の長さで最大の精度が得られるように、 .Cm f または、 .Cm e .Pq Cm E で表示されます。 .It Cm c .Ar argument の最初の文字が表示されます。 .It Cm s .Ar argument が終わりまでか、または精度で指定された文字数だけ表示されます。 精度が 0 かもしくは指定されていない場合は文字列全てが表示されます。 .It Cm \&% `%' を表示します。引数はつきません。 .El .Pp 存在しないフィールド、もしくは小さなフィールド幅指定でフィールドが切り 詰められることはありません。指定されたフィールドが実際の幅を越えた時は、 パディングが起こります。 .Sh 戻り値 .Nm は成功時には 0 を返し、失敗時には 1 を返します。 .Sh 関連項目 .Xr printf 3 .Sh 歴史 .Nm は、 .Bx 4.3 Reno で追加され、標準ライブラリ関数 .Xr printf 3 に基いています。 .Sh バグ 浮動小数点数は .Tn ASCII から浮動小数に変換されてまた戻るので、浮動小数の精度が失われます。 .Pp .Tn ANSI 16 進文字定数はわざと用意されていません。 diff --git a/ja/man/man1/rcp.1 b/ja/man/man1/rcp.1 index 13cb86fa42..2db3f2eb07 100644 --- a/ja/man/man1/rcp.1 +++ b/ja/man/man1/rcp.1 @@ -1,145 +1,145 @@ .\" Copyright (c) 1983, 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. .\" .\" @(#)rcp.1 8.1 (Berkeley) 5/31/93 .\" jpman %Id: rcp.1,v 1.2 1997/05/20 01:30:55 mutoh Stab % .\" %Id: rcp.1,v 1.2.8.1 1997/02/28 07:54:41 mpp Exp % .\" .Dd May 31, 1993 .Dt RCP 1 .Os BSD 4.3r .Sh 名称 .Nm rcp .Nd リモートファイルのコピー .Sh 書式 .Nm rcp .Op Fl Kpx .Op Fl k Ar realm .Ar file1 file2 .Nm rcp .Op Fl Kprx .Op Fl k Ar realm .Ar file ... .Ar directory .Sh 解説 .Nm rcp は、ネットワークでつながれた複数のマシンの間でコピーをするプログラムです。 .Ar file および .Ar directory として ``rname@rhost:path'' の形式で指定する ことにより、それがリモートマシン上のファイルであるとみなされます。 ファイル指定に ``:'' が含まれていないか、含まれていても``/''のあとにある 場合は、ローカルマシンのファイルとみなされます。 .Pp .Bl -tag -width flag .It Fl K .Fl K オプションは全ての Kerberos による認証を無効にします。 .It Fl k .Xr krb_realmofhost 3 で決定されるリモートホストの realm のかわりに、 .Ar realm で指定したリモートホストの チケットを得るようにします。 .It Fl p .Ar umask を無視し、転送元のファイルの修正日付とアクセスモードを維持したままコピー します。デフォルトでは、転送先に同じファイル名のファイルがすでに -存在していれば、そのファイルのモードとオーナが引き継がれ、もしファイルが +存在していれば、そのファイルのモードと所有者が引き継がれ、もしファイルが 存在していなければ、転送元のファイルのモードに転送先のマシンで使われている .Xr umask 2 のマスクを施したアクセスモードになります。 .It Fl r 転送元としてディレクトリが指定された場合、ディレクトリ下の各ファイルも 再帰的にコピーします。この場合、転送先にはディレクトリを指定しなければ なりません。 .It Fl x .Nm rcp で送るすべてのデータを .Tn DES 暗号化します。これによりレスポンスタイムと .Tn CPU の利用率に影響が生じますが、セキュリティは向上します。 .El .Pp .Ar file がフルパスでなかった場合は、リモートマシン .Ar rhost 上のユーザ .Ar ruser のログインディレクトリ (リモートユーザー名が指定されていなければ、現在のユーザー名の ログインディレクトリ)からの相対パスと解釈します。 リモートマシン上のファイル指定にワイルドカードなどのメタキャラクタを 含める場合は、ローカルマシンのシェルによりワイルドカードが 展開されないよう \e、" または \(aa でクォートする必要があります。 .Pp .Nm rcp では .Xr rsh 1 を使用するため同様のユーザーの認証が必要とされ、パスワードを要求する プロンプトを出しません。 .Pp .Nm rcp では転送元、転送先ともにリモートマシンを指定し、第3者によるリモートマシン間での ファイルのコピーを行うこともできます。 .Sh 関連項目 .Xr cp 1 , .Xr ftp 1 , .Xr rlogin 1 , .Xr rsh 1 .Sh 歴史 .Nm rcp コマンドは .Bx 4.2 から登場しました。 このバージョンの .Nm rcp は、 .Bx 4.3 Reno において Kerberos を組み込んで再インプリメントされました。 .Sh バグ ディレクトリが指定されるべき場所にファイルが指定されている場合を検出で きるとは限りません。 .Pp リモートホストの .Pa \&.login , .Pa \&.profile または .Pa \&.cshrc 内のコマンドの出力によって混乱することがあります。 .Pp 転送先のマシンにバージョン .Bx 4.2 の .Nm rcp が動作している場合、``rhost.rname''のように転送先のユーザー名とホスト 名を指定しなければなりません。 diff --git a/ja/man/man1/rdist.1 b/ja/man/man1/rdist.1 index 43a9e8dc84..8b2afdb87c 100644 --- a/ja/man/man1/rdist.1 +++ b/ja/man/man1/rdist.1 @@ -1,442 +1,442 @@ .\" 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. .\" .\" @(#)rdist.1 8.3 (Berkeley) 3/17/94 .\" jpman %Id: rdist.1,v 1.2 1997/06/05 02:50:01 yugawa Stab % .\" Original revision: 1.3.2.5 .\" .Dd March 17, 1994 .Dt RDIST 1 .Os BSD 4.3 .Sh 名称 .Nm rdist .Nd リモートファイル配布プログラム .Sh 書式 .Nm rdist .Op Fl nqbRhivwy .Op Fl P Ar rshcmd .Op Fl f Ar distfile .Op Fl d Ar var=value .Op Fl m Ar host .Op Ar name ... .Nm rdist .Op Fl nqbRhivwy .Op Fl P Ar rshcmd .Fl c .Ar name ... .Oo login@ Oc Ns Ar host Ns Op :dest .Sh 解説 .Nm は、複数のホストに対し、ファイルの内容を同一に維持するためのプログラムです。 -本プログラムによるファイルコピーでは、可能な限りオーナ、グループ、アクセスモー -ド、そして更新時刻を保存しようとします。そして、現在実行中のプログラム -の更新も可能です。 +本プログラムによるファイルコピーでは、可能な限り所有者、グループ、 +アクセスモード、そして更新時刻を保存しようとします。 +そして、現在実行中のプログラムの更新も可能です。 .Nm は、コマンドを .Ar distfile から読み出し、その内容に従ってファイルやディレクトリの更新を制御します。 .Pp 第 1 の書式特有のオプション: .Pp .Bl -tag -width indent .It Fl .Ar distfile に .Sq Fl を指定した場合、標準入力からデータを入力します。 .It Fl f Ar distfile 指定した .Ar distfile を使用します。 .El .Pp .Fl f オプションも .Sq Fl オプションも指定されない場合には、本プログラムは最初に .Dq Pa distfile を、次に .Dq Pa Distfile を探し、入力として使用します。 コマンド行にて何の指定も与えられない場合には、 .Nm は、 .Ar distfile に記述されたすべてのファイルとディレクトリを更新します。 それ以外の場合では、引数は、更新対象となるファイル名あるいは 実行されるコマンドのラベルと解釈されます。 ラベルやファイル名が衝突する場合には、すべてラベルとして取り扱います。 これらの名前は、指定したコマンドを用いて指定したファイルを更新するのに 用いられます。 .Pp 第 2 の書式特有のオプション: .Pp .Bl -tag -width Fl c .It Fl c .Nm に、残りの引数を小規模の .Ar distfile として解釈するように指示します。 .Pp このオプションを使用した場合と等価な distfile は、以下のようになります。 .Pp .Bd -filled -offset indent -compact .Pq Ar name ... .Li -> .Op Ar login@ .Ar host .Bd -filled -offset indent -compact .Li install .Op Ar dest ; .Ed .Ed .El .Pp 両方の書式に共通のオプション: .Pp .Bl -tag -width Ic .It Fl P Ar rshcmd .Xr rsh 1 と同様な機能を持つ他のプログラムをリモートサーバへの転送に使用します。 指定したプログラムはリモートサーバへバイナリ透過な経路を使用できる必要が あり、コマンド引数の書式が .Xr rsh 1 と互換でなければなりません。 .It Fl d Ar var=value .Ar var に対して .Ar value を代入することを定義します。 .Fl d オプションは、変数を定義したり、 .Ar distfile 中の変数を変更したりするのに用いられます。 .Ar value には、空白文字列、名前、もしくは括弧で囲まれて、タブやスペースで区切ら れた名前の列挙が指定可能です。 .It Fl h シンボリックリンクを追いかけます。リンクしてあるファイルの場合、リンクファ イルそのものでなく、リンク先にある実体をコピーします。 .It Fl i 解決できないリンクを無視します。 .Nm は、通常はリンクファイルについてもコピーを行ない、リンクが解決出来ない場合 には、その旨をユーザに通知します。 .It Fl m Ar host ファイルを更新するホストを制限します。 複数の .Fl m 引数を指定する事で、 .Ar distfile に記述のあるホスト名の中から複数のホスト名を選択して与えることが可能です。 .It Fl n 実行しないで、コマンド自身を表示します。本オプションは .Ar distfile のデバッグに有効です。 .It Fl q QUIETモードに入ります。更新されるファイルについては、通常は標準出力に 表示されますが、 .Fl q オプションはこの出力を抑制します。 .It Fl R 無関係なファイルを削除します。ディレクトリを更新する場合に、 リモートホスト上に存在するファイルが、配布元のディレクトリ中に存在しないなら、 該当するファイルを削除します。本オプションは、配布元と配布先で完全にディ レクトリ配下の内容を一致させたい場合に有効です。 .It Fl v すべてのホストのファイルが最新の物であるかの確認を行ないます。すべての 古いファイルについては一覧が表示されますが、そのファイルが変更されたり、 そのファイルに関してシステムからメールが届いたりすることはありません。 .It Fl w WHOLE モードを有効にします。指定されたファイル名全体が、配布先ディレクトリ名の 後に付加されます。通常は、ファイル名からディレクトリ名を取り除いた 最後の部分のみがファイル名を変更する時に使われます。 本オプションは、ディレクトリ構造をフラットにせず、配布元のディレクトリ 構造をそのまま配布先に持っていきたい場合に用いられます。例えば、 ( dir1/f1 dir2/f2 )のように表されるファイルを、dir3 というディレクトリに 配布した場合、配布先では dir3/f1 や dir3/f2 ではなく、 dir3/dir1/f1 や dir3/dir2/f2 が作成されます。 .It Fl y YOUNGERモードを有効にします。通常、ファイルの更新は、 .Ar mtime と .Ar size ( .Xr stat 2 参照) が一致しない場合に行なわれます。しかし、 .Fl y オプションが有効になっている場合には、 .Nm は、配布元のファイルより新しいファイルは更新しません。 通常本オプションは、他のホストに存在する、より新しいファイルを置き換えない 目的で用いられます。 配布元より新しいファイルが配布先にあった場合には、その旨を通知するメッセー ジが表示されます。 .El .Pp .Ar distfile は、コピーされるファイル、配布先ホスト、そして更新のための手順を指定 するエントリを含みます。各エントリは、以下の形式のいずれかに分類され ます。 .Pp .Bd -literal -offset indent -compact `=' [label:] `\->' [label:] `::' .Ed .Pp 一番目の形式は、値を定義するのに用いられます。 二番目の形式は、他のホストへファイルを配布するのに用いられます。 三番目の形式は、指定した日付以降に更新されたファイルの一覧を作成するのに 用いられます。 .Ar source list は、配布元のファイルやディレクトリの一覧を指定します。 .Ar destination list は、ファイルの配布先のホスト一覧です。配布元ファイルリスト (source list) 中の各ファイルが、更新を行なおうとしているホストにおいて古いもの である(二番目の形式)か、または、指定のファイルのタイムスタンプより新し い場合(三番目の形式)には、変更対象リストに追加されます。 .Pp ラベルの使用は、任意です。ラベルについては、部分的な変更を行なう場合 に、コマンドを識別するために用いられます。 .Pp 改行、タブ、そして空白は、セパレータとしてのみ用いられ、それ以外の場で 用いられた場合には無視されます。コメントは、`#' で始まり改行で終ります。 .Pp `$' で始まり、1文字もしくは `{''}' でくくられた名前の変数については、処理中に その値に置き換えられます(最後に出てくる例を参照して下さい)。 .Pp 配布元ファイルリストと配布先ホストリストの一覧は、以下の形式を取ります。 .Bd -literal -offset indent <名前> .Ed または .Bd -literal -offset indent -compact `(' <空白で区切られた 0 個以上の名前> `)' .Ed .Pp シェルのメタ文字であるところの `[', `]', `{', `}', `*', そして `?' は、(配布元のホスト上でのみ) .Xr csh 1 同様に解釈され、展開されます。 これは、バックスラッシュを用いて回避する事が出来ます。 `~' 文字もまた、 .Xr csh 1 同様に展開されますが、配布元と配布先のホストで別々に展開されます。 .Fl w オプションが `~' ではじまるファイル名とともに用いられた場合、ホームディ レクトリを除くすべてのファイル/ディレクトリ名が配布先の名前に加えられます。 `/' や `~' 以外の文字ではじまるファイル名は、配布先のユーザのホームディ レクトリをルートディレクトリとみなして、指定されたファイルの名前を 追加して配布先でのファイル名を作成します。 .Pp コマンドリストは、以下の形式に従った、0 個以上のコマンドからなります。 .Bd -ragged -offset indent -compact .Bl -column except_patx pattern\ listx .It `install' opt_dest_name `;' .It `notify' `;' .It `except' `;' .It `except_pat' `;' .It `special' string `;' .El .Ed .Pp .Ic install コマンドは、古いファイルやディレクトリをコピーするのに用いられます。 各配布元のファイルは、配布先ホストリスト中の各ホストへコピーさ れます。ディレクトリも同様にして、再帰的にコピーされます。 .Ar Opt_dest_name は、ファイル名を変更するための任意的なパラメータです。 .Ic install コマンドがコマンドリストに存在しない場合や、配布先での ファイル名が指定されていない場合、配布元のファイル名がそ のまま配布先でのファイル名として採用されます。 パス名に含まれるディレクトリが配布先のホスト上に存在しない 場合には、そのディレクトリを作成します。 不慮の事故を回避するために、配布先のホスト上に空でないディレクトリがあっ ても、通常のファイルやシンボリックリンクに置き換えたりはしません。 しかし、`\-R'オプションを付加して実行した場合には、配布元のディレクト リに当該ファイルが存在しなければ、空でないディレクトリでも削除されます。 .Ar option には、`\-R', `\-h', `\-i', `\-v', `\-w', `\-y', `\-b' があり、それらが配布元ファイルリストに記述されたファイルに対 してのみ適用される事を除いて、コマンドライン中に指定した事と同じ意味と なります。 配布先ホストにおけるログイン名は、配布元でのログイン名と同じですが、配 布先のログイン名が ``login@host" という形式で指定されている場合にはこの 限りではありません。 .Pp .Ic notify コマンドは、更新されたファイル一覧(および、発生した何らかのエラー)をメール によって通知する場合に用いられます。 指定のメールアドレス中に `@' がない場合には、配布先のホスト名がメールア ドレスに付加されます(例: name1@host, name2@host, ...)。 .Pp .Ic except コマンドは、 .Ar name list に列挙されているファイルを除き、配布元ファイルリストに記述されているすべての ファイルを更新するのに用いられます。 本コマンドは、特定ファイルを除くすべてのファイルをコピーするのに用い られます。 .Pp .Ic except_pat コマンドは、 .Ic except コマンドと似てますが、 .Ar pattern list として正規表現を用いたリストを指定できるところが異なります (詳細については、 .Xr re_format 7 を参照して下さい)。 ファイル名に含まれる文字列が、正規表現のパターンに一致すると、そのファ イルは無視されます。 `\e' が文字をクオートする事に注意して下さい。正規表現に含めるためには、 2 個続ける必要があります。 .Ar pattern list の中の変数は展開されますが、シェルのファイルパターンマッチ方法とは異なります。 `$' を含めるためには、`\e' を用いてエスケープする必要があります。 .Pp .Ic special コマンドは、 .Ar name list にて指定されたファイルを更新、または、コピーした後に、配布先の ホスト上で実行される .Xr sh 1 コマンドを指定するのに用いられます。 .Ar name list が省略された場合には、シェルコマンドは各ファイルの更新が終了する度に 実行されます。シェル変数 `FILE' には、 文字列 .Ar string で指定したコマンドを実行する前に、直前に処理したファイル名が格納されます。 文字列 .Ar string を、`"'で囲む事で、 .Ar distfile において複数行にわたって記述する事が出来ます。 シェルに対する複数の実行コマンドは、`;'で区切られる必要があります。 指定されたコマンドは、ファイルの更新を行なおうとしている配布先ホストの 当該ユーザのホームディレクトリで実行されます。 .Ar special コマンドは、プログラムがファイルを更新した後にプライベートデータベース を再構築する用途をはじめとして、いろいろな場面で用いる事が出来ます。 .Pp 以下に示す例は簡単な一例です。 .Bd -literal -offset indent HOSTS = ( matisse root@arpa ) FILES = ( /bin /lib /usr/bin /usr/games \t/usr/include/{*.h,{stand,sys,vax*,pascal,machine}/*.h} \t/usr/lib /usr/man/man? /usr/ucb /usr/local/rdist ) EXLIB = ( Mail.rc aliases aliases.dir aliases.pag crontab dshrc \tsendmail.cf sendmail.fc sendmail.hf sendmail.st uucp vfont ) ${FILES} -> ${HOSTS} \tinstall -R ; \texcept /usr/lib/${EXLIB} ; \texcept /usr/games/lib ; \tspecial /usr/lib/sendmail "/usr/lib/sendmail -bz" ; srcs: /usr/src/bin -> arpa \texcept_pat ( \e\e.o\e$ /SCCS\e$ ) ; IMAGEN = (ips dviimp catdvi) imagen: /usr/local/${IMAGEN} -> arpa \tinstall /usr/local/lib ; \tnotify ralph ; ${FILES} :: stamp.cory \tnotify root@cory ; .Ed .Sh 関連ファイル .Bl -tag -width /tmp/rdist* -compact .It Pa distfile 入力コマンドファイル .It Pa /tmp/rdist* 更新リストのために用いられる一時ファイル .El .Sh 関連項目 .Xr csh 1 , .Xr sh 1 , .Xr stat 2 , .Xr re_format 7 .Sh 歴史 .Nm コマンドは、 .Bx 4.3 から登場しました。 .Sh 診断 .Nm のバージョン不一致についての通知は、実際にはシェルを起動する際の 何らかの問題に起因して発生します。例えば、ユーザの所属グループがあまり 多すぎるなどが挙げられます。 .Pp .Nm は、 .Xr rcmd 3 タイプのリモートサービス実行が、静かに成功することに依存します。 よくある誤りとしては、非対話の初期化スクリプト、例えば .Pa .cshrc が出力を行なってしまうことがあります (出力を行う他のプログラムを実行するものの、 そのプログラムが端末に接続されていないということもあります -- よくある原因が .Xr stty 1 です)。 このような余計な出力のために、 .Nm が失敗して次のようなエラーメッセージが表示されます: .Pp .Dl rdist: connection failed: version numbers don't match .Sh バグ 配布元ファイルは、 .Nm コマンドが起動される配布元ホストに存在しなければなりません。 .Pp ディレクトリ配下のすべてのファイルが更新された後に特定のコマンドを実行 するのは困難です。 .Pp 変数の置換は、name list に対してのみ働きます。より一般的なマクロ の機能があるべきでしょう。 .Pp .Nm は、負 (1970 年 1 月 1 日以前の日付)の mtime を持つファイルに対してのアクセスを 行なうと異常終了します。 .Pp 空でないディレクトリを通常ファイルやシンボリックリンクで置換できる、 `force' オプションがあるべきでしょう。内容自体は一致しているファイルのモード やオーナを更新する方法も必要でしょう。 diff --git a/ja/man/man1/sdiff.1 b/ja/man/man1/sdiff.1 index 3249bd8484..752df76749 100644 --- a/ja/man/man1/sdiff.1 +++ b/ja/man/man1/sdiff.1 @@ -1,201 +1,201 @@ .\" jpman %Id: sdiff.1,v 1.3 1997/06/18 16:52:25 horikawa Stab % .TH SDIFF 1 "22sep1993" "GNU Tools" "GNU Tools" .SH 名称 sdiff \- 2 つのファイルの違いを調べ、インタラクティブにマージを行なう .SH 書式 .B sdiff .B -o outfile [options] from-file to-file .SH 解説 .I sdiff は、2 つのファイルつを読み込んでマージし、 結果を対話的に .IR outfile に出力します。 もし、 .I from-file としてディレクトリを指定し、 .I to-file がディレクトリでなかった場合、 .I sdiff は、 .I to-file で指定したファイル名と同じ名前のファイルを .I from-file のディレクトリから捜して、そのファイルとの間で比較を行ないます。 その逆も同じです。 .I from-file と .I to-file の両方にディレクトリを指定することはできません。 .I sdiff のオプションは .B \- から始まりますので、通常 .I from-file や .I to-file に .B \- から始まるものを指定できません。しかし、引数に .B \-\- を指定することにより、残りの引数がたとえ .B \- で始まっていたとしてもファイル名として扱わせます。 .B \- を入力ファイルとして使用することは出来ません。 .B \-o (や .BR \-\-output ) 無しで .I sdiff を使用すると、左右に差分を表示します。この使い方は廃れています; .B "diff \-\-side\-by\-side" として使って下さい。 .SS オプション 以下は GNU .I sdiff が受け付けるオプションのまとめです。 どのオプションも 2 つの等価な名前を持ちます。 一つは一文字で前に .BR \- が付き、もう一つは長い名前で前に .BR \-\- が付きます。 一文字のオプション(引数を取らない場合に限ります)は、 まとめて一つのコマンドライン引数に出来ます。 長い名前のオプションは識別できる限りにおいて短縮できます。 .TP .B \-a テキストに見えないとしても、 全てのファイルをテキストとして扱い、行毎に比較します。 .TP .B \-b 空白の量の違いを無視します。 .TP .B \-B 空白行の増減を無視します。 .TP .B \-d より小さい違いを見付けるかも知れないアルゴリズムに変更します。 .I sdiff は遅く(あるときには過度に遅く)なります。 .TP .B \-H 多くの小さな違いを持つ 大きなファイルを高速に扱うヒューリスティクスを使用します。 .TP .B \-\-expand\-tabs 出力においてタブを空白に展開し、 -入力ファイルのタブのアラインメントを保存します。 +入力ファイルのタブの境界条件を保存します。 .TP .B \-i 大文字小文字の違いを無視します; 大文字と小文字とを同一視します。 .TP .BI "\-I " regexp .I regexp にマッチする行の挿入および削除を無視します。 .TP .B \-\-ignore\-all\-space 行を比較している時に、空白を無視します。 .TP .B \-\-ignore\-blank\-lines 空行の挿入削除を無視します。 .TP .B \-\-ignore\-case 大文字小文字の違いを無視します; 大文字と小文字とを同一視します。 .TP .BI \-\-ignore\-matching\-lines= regexp .I regexp にマッチする行の挿入および削除を無視します。 .TP .B \-\-ignore\-space\-change 空白の量に関する違いを無視します。 .TP .B \-l .br .ns .TP .B \-\-left\-column 共通の行に関しては左のカラムだけを表示します。 .TP .B \-\-minimal より小さい違いを見付けるかもしれないアルゴリズムに変更します。 .I sdiff は遅く(あるときには過度に遅く)なります。 .TP .BI "\-o " file .br .ns .TP .BI \-\-output= file マージした出力を .I file に出力します。 マージ時にはこのオプションが必要です。 .TP .B \-s .br .ns .TP .B \-\-suppress\-common\-lines 共通行を表示しません。 .TP .B \-\-speed\-large\-files 多くの小さな違いを持つ 大きなファイルを高速に扱うヒューリスティクスを使用します。 .TP .B \-t 出力においてタブを空白に展開し、 -入力ファイルのタブのアラインメントを保存します。 +入力ファイルのタブの境界条件を保存します。 .TP .B \-\-text テキストに見えないとしても、 全てのファイルをテキストとして扱い、行毎に比較します。 .TP .B \-v .br .ns .TP .B \-\-version .I sdiff のバージョンを表示します。 .TP .BI "\-w " columns .br .ns .TP .BI \-\-width= columns 出力の幅を .I columns にします。 歴史的な理由で、 .I diff では .B \-W に、 .I sdiff では .B \-w になっています。 .TP .B \-W 行を比較する時に水平空白を無視します。 歴史的な理由で .I diff では .B \-w に、 .I sdiff では .B \-W になっています。 .SH 関連項目 cmp(1), comm(1), diff(1), diff3(1) .SH 診断 比較結果として、違いが無かった場合は、0 を、違いが発見された場合は 1 を、何かエラーがおきた場合は、2 を返します。 diff --git a/ja/man/man1/sh.1 b/ja/man/man1/sh.1 index af683ecaee..f84e99a603 100644 --- a/ja/man/man1/sh.1 +++ b/ja/man/man1/sh.1 @@ -1,1192 +1,1192 @@ .\" 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 .\" %Id: sh.1,v 1.9.2.8 1998/02/15 11:32:26 jkh Exp % .\" jpman %Id: sh.1,v 1.2 1997/05/31 16:40:31 jsakai Stab % .\" 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 /+abCEefIimnpsuVvx .Op Fl /+o Ar longname .Op Fl c Ar string .Op Ar arg ... .Sh 解説 .Nm sh はシステムの標準コマンドインタープリタです。 現在 .Nm は .St -p1003.2 のシェル規約に対応する途上にあります。 本バージョンのシェルは、見方によっては Korn shell と同様に 見える機能を多数持っていますが、 Korn shell のクローンではありません(もし Korn shell クローンを望むなら、 Gnu の bash を使いましょう)。 このシェルには、POSIX で規定された仕様といくつかの Berkeley 拡張のみが 取り入れられています。 本マニュアルは、shell のチュートリアルでは ありませんし、仕様を完全に記述するものでもありません。 .Ss 概要 シェルは、ファイルまたは端末から 1 行ずつ読み込み、それを解釈し、 コマンドを実行します。シェルはユーザがシステムにログインしたときに起動 されるプログラムです(ただし、ユーザは chsh(1) コマンドによって他のシェルを選択することもできます)。 シェルは、制御構文を持つ言語であり、 データ記憶をはじめとして多様な機能を提供するマクロ機能、 ヒストリ、行編集機能も内蔵しています。 このシェルは対話的に使うときに便利な機能を多くとり入れており、 対話的に用いるときも非対話的に (シェルスクリプトとして) 用いるときも、 共通のインタプリタ言語を用いることができる利点があります。 すなわち、コマンド名をシェルに直接タイプする ことも、コマンド名をファイルに書いておいてそのファイルをシェルに 実行させることもできます。 .Ss 起動 引数が与えられず、かつシェルの標準入力が端末の場合 (または -i フラグが指定 された場合)、シェルは対話的に動作します。対話的シェルは、通常、コマンド 入力時にプロンプトを表示し、文法的なエラーとコマンドエラーを 異なった方法で処理します (後述します)。 起動時に、シェルは 0 番目の引数を検査します。もしそれが ダッシュ `-' で始まっているなら、シェルはログインシェルとして 動作します。ユーザがシステムにログインした場合は自動的にこの状況に なります。ログインシェルは、まず (以下の各ファイルが存在する場合)、 .Pa /etc/profile と .Pa .profile ファイルからコマンドを読み込みます。 シェル起動時に、もしくはログインシェルで .Pa .profile を実行中に環境変数 .Ev ENV が設定されているなら、シェルは、その次に環境変数 .Ev ENV で示されたファイルからコマンドを読み込みます。 つまり、ユーザはログイン時にのみ実行したいコマンドを .Pa .profile に書き、シェルが起動されるたびに実行したいコマンドを環境変数 .Ev ENV で示すファイルに書くことになります。 環境変数 .Ev ENV を設定するには、ユーザのホームディレクトリ下のファイル .Pa .profile に以下のように記述します。 .sp .Dl ENV=$HOME/.shinit; export ENV .sp ここで、 .Pa .shinit のかわりに好きな名前を指定することができます。 オプション以外にコマンドライン引数が指定された場合、シェルは最初の引数 を、コマンドを読み込むべきファイル (シェルスクリプト) の名前であると解釈し、 それ以後の引数はシェルの位置パラメータ ($1, $2, ...) に設定します。 それ以外の場合、シェルはコマンドを標準入力から読み込みます。 .Pp 古いバージョンの .Nm とは異なり、環境変数 .Ev ENV で指定したスクリプトが実行されるのは、対話的シェルの呼び出し時のみです。 これにより、いい加減に書かれた .Ev ENV スクリプトに起因する、簡単に食いものにされることが多い有名な セキュリティホールがふさがれたことになります。 .Ss 引数リスト処理 .Nm の 1 文字からなるオプションはそれぞれ対応する名前を持っており、 .Xr set 1 組み込みコマンド (後述) の引数として用いることができます。 これらの名前は、以下の説明で 1 文字オプションのすぐあとに書いてあります。 マイナス記号 .Dq - でオプションを指定することは、そのオプションを有効にすることを意味し、 プラス記号 .Dq + でオプションを指定することは、そのオプションを無効にすることを意味します。 .Bl -tag -width Ds .It Fl a Li allexport 値が代入された変数の全てをエクスポートします(未実装です)。 .It Fl b Li notify バックグラウンドジョブ実行の完了を、コマンドが実行中でも即座に報告しま す(未実装です)。 .It Fl C Li noclobber すでに存在するファイルに対して .Dq > リダイレクトにより上書きしません (未実装です)。 .It Fl E Li emacs 組込みの .Xr emacs 1 風のコマンド行編集機能を有効にします (それ以前に -V オプションが指定 された場合、それを無効にします)。 .It Fl e Li errexit 非対話的シェルで、テスト状態にないコマンドの実行に失敗した場合、 直ちにシェルを終了します。 コマンドは、if, elif, while, until 構文を 制御するのに用いられている場合に、テスト状態であるとみなされます。 また、 .Dq && や .Dq || の左辺値として用いられているコマンドも、テスト状態とみなされます。 .It Fl f Li noglob パス名展開を行ないません。 .It Fl I Li ignoreeof 対話的シェルの場合、入力の 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 コマンドを標準入力から読み込みます (引数でファイル名が指定されていない 場合には、このオプションが自動的に設定されます)。 シェルが実行されてから本オプションを( .Xr set 1 などによって)設定しても効果はありません。 .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 各コマンドを実行する前に、そのコマンドを標準エラー出力に (各コマンドの 前に `+' を付加して) 書き出します。デバッグのときに便利です。 .It Fl c Ar string 文字列引数 string はシェルに渡され、入力として解釈されます。このオプショ ンは引数として文字列を一つだけ受け取ることに注意して下さい。ですから、複 数の単語からなる文字列は引用符で囲う必要があります。 .El .Ss 構文構造 シェルは、ファイルを行単位で読み込み、空白文字 (ブランクおよびタブ) や シェルにとって特別な意味を持つ特定の文字列 ( .Dq 演算子 と呼ばれるもので す) を区切りとして、複数の単語に分割します。演算子には、制御演算子とリ ダイレクト演算子の 2 種類があります (これらの意味については後述します)。 以下に、それらの一覧を示します。 .Bl -tag -width Ds .It No 制御演算子: & && ( ) ; ;; | || .No \en .It No リダイレクト演算子: < > >| << >> <& >& <<- <> .El .Ss 引用(クォート) 引用は、特殊な意味を持つ文字や単語 (演算子、空白、キーワードなど) の意味 を打ち消すために用います。引用には、シングルクォート文字のペアを使う方法、 ダブルクォート文字のペアを使う方法、バックスラッシュ文字を使う方法 の 3 種類があります。 .Bl -tag -width Ds .It シングルクォート文字 シングルクォートのペアで囲まれた文字は、すべてその文字そのまま(リテラ ル)として扱われます (ただしシングルクォートは別です。シングルクォート で囲った文字列の中にシングルクォートを含めることはできません)。 .It ダブルクォート文字 ダブルクォートのペアで囲まれた文字は、ドル記号文字($)、バッククォート 文字(`)、バックスラッシュ文字(\\) を除き、すべてリテラルとして扱われま す。ダブルクォート文字による引用の中にあるバックスラッシュ文字は、歴史 的経緯によりすこし変わった扱いを受けます。つまり、直後に $, `, ", \\, 改行文字 が来るときにのみ、それらの文字がリテラルとして扱われます。そ れ以外の文字が来る場合、バックスラッシュ文字自体がリテラルとして扱われ ます。 .It バックスラッシュ バックスラッシュは、その後ろの 1 文字を、リテラルとして扱うように指示 します。ただし改行文字は別です。改行文字の直前のバックスラッシュは、行 の継続であるとみなされます。 .El .Ss 予約語 予約語はシェルにとって特別な意味を持つ単語で、行の先頭または制御演算子 の直後でのみ予約語として認識されます。以下に予約語の一覧を挙げます。 .Bd -literal -offset indent ! { } case do done elif else esac fi for if then until while .Ed .Ss エイリアス エイリアスは、名前とそれと対応する値が対になったもので、 組込みコマンド .Xr alias 1 によって定義されます。 シェルは、予約語が現れる可能性がある場所(上記を参照)で、 ある単語に対して、それが予約語かどうかの検査を済ませたのち、 それがエイリアスに一致するかどうかを検査します。 もし一致したならば、入力行の中で、その単語をエイリアスの値に置き換えます。 たとえば、``lf'' という名前で ``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 単語の前にある ``name=value'' の形式の単語を取り除き、 単純コマンドの環境に代入します。 リダイレクト演算子とその引数 (後述) を取り除き、 あとで処理できるように保存します。 .It 残った単語を、「展開」の節で説明する方法で展開します。 展開後の最初の単語をコマンド名とみなし、コマンドの位置を探索します。 残りの単語はコマンドへの引数とみなされます。 処理の結果、コマンド名が残らなかった場合、手順 1) で 取り出した ``name=value'' の変数代入を、現在のシェルの環境に反映します。 .It 次節で説明する方法で、リダイレクトを行ないます。 .El .Ss リダイレクト リダイレクトは、コマンドがどこから入力するか、どこへ出力するかを 変更するときに用います。 一般には、リダイレクトでは、ファイルのオープン、クローズ、または ファイルへの参照の複写 (duplicate) を行います。 リダイレクトで用いられる全般的な形式は、以下のとおりです。 .sp .Dl [n] redir-op file .sp ここで、redir-op は前述したリダイレクト演算子のいずれかです。 これらの演算子をどのように利用するかの例をいくつか以下に挙げます。 .Bl -tag -width "1234567890" -offset indent .It [n]> file 標準出力 (またはファイル記述子 n への出力) をファイル file に書き出します。 .It [n]>| file 上と同様。ただし、-C オプションの効果を打ち消します。 .It [n]>> file 標準出力 (またはファイル記述子 n への出力) をファイル file に追加します。 .It [n]< file 標準入力 (またはファイル記述子 n からの入力) をファイル file から取ります。 .It [n1]<&n2 ファイル記述子 n2 を標準入力 (またはファイル記述子 n1) に複写します。 .It [n]<&- 標準入力 (またはファイル記述子 n) をクローズします。 .It [n1]>&n2 ファイル記述子 n2 を標準出力 (またはファイル記述子 n1) に複写します。 .It [n]>&- 標準出力 (またはファイル記述子 n) をクローズします。 .It [n]<> file 標準入力 (あるいはファイル記述子 n) により、ファイル file を 読み書きするようにします。 .El .Pp 以下のリダイレクトは、しばしば``ヒア・ドキュメント(here-document)''と 呼ばれます。 .Bd -literal -offset indent [n]<< delimiter here-doc-text... delimiter .Ed .Pp シェルは、delimiter までの行を保存し、コマンドへの標準入力またはファイ ル記述子 n にリダイレクトします。最初の行の delimiter が引用 (クォー ト) されていた場合、here-doc-text の内容をリテラルとして扱います。そ うでない場合、パラメータ展開、コマンド置換、数値演算 (「展開」の節で説 明します) を適用します。演算子が (``<<'' でなく) ``<<-'' の場合は、 here-doc-text の各行の行頭のタブを取り除きます。 .Ss コマンド検索と実行 コマンドには、シェル関数、組込みコマンド、通常プログラムの 3 種類があり、 コマンドを検索する際には、シェルは名前の検索をこの順序で行います。 それぞれのコマンドは異なる方法で実行されます。 .Pp シェル関数を実行するとき、$0 を除くすべての位置パラメータ ($1, $2,..) をシェル関数への引数として設定します。$0 は変更されません。シェル関数 の環境として指定された変数 (関数名の直前に ``name=value'' を置いて指定 されたもの) は、その関数に局所的な変数となり、指定された初期値が設定さ れます。そして、シェルは関数定義で与えられたコマンドを実行します。コマ ンドの実行が完了すると、位置パラメータを元の値に戻します。これは全て現 在のシェルの中で処理されます。 .Pp 組込みコマンドは、新たなプロセスを作成せずにシェル内部で実行されます。 .Pp コマンドが関数でも組込みコマンドでもない場合は、通常のプログラムとみなし (次節で説明するとおり) ファイルシステムの中でそのコマンドを検索します。 通常のプログラムを実行する場合、シェルは引数と 環境をプログラムに渡して、そのプログラムを実行します。 プログラムが通常の実行ファイル形式ではない場合 (つまり、 .Tn ASCII 表現で "#!" となる「マジックナンバ」でファイルが始まっておらず、 .Fn execve 2 が .Er ENOEXEC を返す場合)、 サブシェルの中でそのプログラムを解釈実行します。この場合、あたかも新た にシェルが起動されたかのような効果を得るために、子シェルは自分自身を再 初期化します。ただし、子プロセスは、親シェル中のハッシュされたコマンド 位置情報を憶えており、これは再初期化されません。 .Pp 本ドキュメントの古いバージョンや古いソースコードでは、ときおり、マジッ クナンバのないシェルスクリプトのことを「シェルプロシージャ」と呼んでい て、まぎらわしい場合がありますので注意して下さい。 .Ss パス検索 コマンドを検索するとき、シェルは、まず、その名前のシェル関数があるかどうかを 調べます。次に、その名前の組込みコマンドがあるかどうかを調べます。 組み込みコマンドでもない場合、以下のいずれかの処理が行われます: .Bl -enum .It コマンド名にスラッシュが含まれていれば、検索は行わず、 単にそのコマンドが実行されます。 .It 変数 .Ev PATH に含まれる各エントリに対して、順にそのコマンドを検索します。 変数 .Ev PATH の値はコロン(``:'')で区切られたエントリの列でなければなりません。 各エントリは、それぞれディレクトリ名一つに対応します。 カレントディレクトリは、 空のディレクトリ名を指定することで暗黙的に、 あるいは 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 パイプラインの形式は次のとおりです。 .Bd -literal -offset indent [!] command1 [ | command2 ...] .Ed .Pp command1 の標準出力は command2 の標準入力に接続されます。コマンドの標 準入出力がパイプラインによって割り当てられるのは、各コマンドに属するリ ダイレクト演算子で指定されたリダイレクトを処理する前のことだと考えて下 さい。 .Pp パイプラインがバックグラウンド (後述) でなければ、シェルはすべての コマンドが終了するのを待ちます。 .Pp パイプラインの直前に予約語 `!' が置かれなかった場合、終了ステータスは パイプラインの最後のコマンドの終了ステータスとなります。 `!' が前置された場合、終了ステータスはパイプラインの最後のコマンドの 終了ステータスの論理否定を取った値となります。 すなわち、最後のコマンドが 0 を返した場合、パイプラインの 終了ステータスは 1 に、最後のコマンドが 0 より大きな値を返した場合、 終了ステータスは 0 になります。 .Pp パイプラインによる標準入出力の接続はリダイレクトに先立って行われるため、 パイプラインの接続をリダイレクトによって修正することができます。たとえば、 .Bd -literal -offset indent $ command1 2>&1 | command2 .Ed .Pp は、command1 の標準出力と標準エラー出力の両方を command2 の標準入力に 接続します。 .Pp \&; または改行文字を終端として用いることにより、直前の AND-OR リスト (後述) を 順次実行します。& は、直前の AND-OR リストを非同期に実行します。 .Pp 注: 他のいくつかのシェルと異なり、パイプラインの各プロセスは 起動したシェルの子プロセスとなります (シェルの組み込みコマンドである ときは別です。その場合は現在のシェルで実行されます --- ただし 環境に対して行った操作は取り消されます)。 .Ss バックグラウンドコマンド -- & コマンドが制御演算子 & で終了している場合、シェルはそのコマンドを 非同期に実行します。すなわち、シェルはそのコマンドの終了を待たずに、 次のコマンドの実行を開始します。 .Pp コマンドをバックグラウンドで実行させるための形式は以下のとおりです。 .Bd -literal -offset indent command1 & [command2 & ...] .Ed .Pp シェルが対話的でない場合、非同期コマンドの標準入力には /dev/null が 接続されます。 .Ss リスト -- 一般的な話 リストは 0 個またはそれ以上のコマンドを改行文字、セミコロン文字、アン パーサント文字 (&) で区切った列です。リストは、これら 3 つの記号のいず れかで終了させることもできます。リスト中のコマンドは並べられた順に実行 されます。もし、コマンドに続けてアンパーサント文字が置かれている場合、 シェルはそのコマンドを起動したあと、すぐに次のコマンドの処理を開始しま す。その他の場合、そのコマンドの終了を待ってから次のコマンドの処理を開 始します。 .Ss 短絡リスト演算子(Short-Circuit List Operators) ``&&'' と ``||'' は AND-OR リスト演算子です。 ``&&'' は最初のコマンド を実行し、もし最初のコマンドの終了ステータスが 0 ならば次のコマンドを 実行します。 ``||'' も同様ですが、最初のコマンドの終了ステータスが 0 でない場合に、次のコマンドを実行します。 ``&&'' と ``||'' の優先順位は 同じです。 .Ss 制御構造 -- if, while, for, case if コマンドの文法は以下のとおりです。 .Bd -literal -offset indent if list then list [ elif list then list ] ... [ else list ] fi .Ed .Pp while コマンドの文法は以下のとおりです。 .Bd -literal -offset indent while list do list done .Ed .Pp 最初のリストの終了ステータスが 0 であるかぎり、2 つのリストを繰り返し 実行します。until コマンドも同様に実行しますが、 単語 while の代わりに単語 until を使うことと、 最初のリストの終了ステータスが 0 になるまで、 2 つのリストを繰り返し実行することが異なります。 .Pp for コマンドの文法は以下のとおりです。 .Bd -literal -offset indent for variable in word... do list done .Ed .Pp 各 word は展開され、変数 variable に word を順に設定しながらリストを 繰り返し実行します。do と done は ``{'' と ``}'' で置き換えることができます。 .Pp break と continue コマンドの文法は以下のとおりです。 .Bd -literal -offset indent break [ num ] continue [ num ] .Ed .Pp break は内側から num 個の for ループまたは while ループを終了します。 continue は、 num 個目のループの次の繰り返しに制御を移します。 .\" 上の文、原文では以下のようになっているが、the *num* innermost loop が .\" 正しいと思われる。実際の sh の動作もそうなっているようだ。 .\" --- 97/05/31 sakai@jp.freebsd.org ↓ .\" Continue continues with the next iteration of the innermost loop. これらのコマンドは組込みコマンドとして実装されています。 .Pp case コマンドの文法は以下のとおりです。 .Bd -literal -offset indent case word in pattern) list ;; ... esac .Ed .Pp pattern は、1 つあるいは複数のパターン (後述の「シェルパターン」を参照 のこと) を ``|'' で接続したものです。 .Ss 複数のコマンドのグループ化 コマンドは、以下のいずれかの方法によりグループ化することができます .Bd -literal -offset indent (list) .Ed .Pp または、 .Bd -literal -offset indent { list; } .Ed .Pp 最初の形式では、コマンドはサブシェル上で実行されます。 (list) のなかの組込みコマンドは、現在のシェルには影響を与えません。 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 は 通常、``{'' と ``}'' で囲まれたリストです。 .Pp local コマンドを用いて関数に局所的な変数を宣言することができます。 これは関数定義中の最初の文で行わなければなりません。構文は次のとおりです。 .Bd -literal -offset indent local [ variable | - ] ... .Ed .Pp local コマンドは、組込みコマンドとして実装されています。 .Pp 変数を局所変数にする場合、関数を呼び出した環境に同じ名前の変数があれば、 新しい局所変数は値と export、readonly フラグを引き継ぎます。もし同じ名 前の変数がなければ、局所変数は初期値を持ちません。シェルは動的スコープ を用います。すなわち、関数 f に局所的な変数 x を作成し、関数 f から関 数 g を呼び出した場合、関数 g 内部での変数 x に対する操作は大域変数 x ではなく、関数 f で宣言された変数 x への操作となります。 .Pp 特殊パラメータのうち局所宣言できるのは ``-'' だけです。 ``-'' を 局所宣言すると、関数内で set コマンドを用いてシェルオプションを 変更しても、関数が終了するとそれらのオプションは元の値に戻ります。 .Pp return コマンドの文法は以下のとおりです。 .Bd -literal -offset indent return [ exitstatus ] .Ed .Pp return は現在実行中の関数を終了させます。return は組込みコマンドとして 実装されています。 .Ss 変数とパラメータ シェルはパラメータの集合を管理しています。名前を持つパラメータを 変数と呼びます。シェルは、起動時にすべての環境変数をシェル変数に取り込みます。 新たな変数は、次の形式によって設定できます。 .Bd -literal -offset indent name=value .Ed .Pp ユーザが設定する変数は、アルファベット、数字、アンダースコア (_) のみ からなる名前を持つ必要があります。また、最初の文字が数字であっては いけません。 パラメータは、以下に示す数字または特殊記号により参照することもできます。 .Ss 位置パラメータ 位置パラメータは、数字 (n > 0) によって参照されるパラメータです。シェルは 位置パラメータの初期値としてシェルスクリプト名に続く引数を設定します。 組込みコマンド .Xr set 1 により再設定や消去ができます。 .Ss 特殊パラメータ 特殊パラメータは、以下に挙げる特殊文字のいずれかにより参照される パラメータです。各パラメータの値の説明を各文字の後ろに示します。 .Bl -hang .It * 位置パラメータ 1,2,... に展開されます。ダブルクォート文字列内部で展開 される場合、展開結果は各位置パラメータの間を変数 IFS の先頭の文字 (IFS が設定されていない場合は空白文字) で区切った単一の文字列になります。 .It @ 位置パラメータ 1,2,... に展開されます。ダブルクォート引用の内部で展開 される場合、各位置パラメータは別々の引数となります。 もし、位置パラメータが設定されていない場合には、 @ の展開結果は 0 個の引数となります (ダブルクォート引用の内部であっても)。 すなわち、$1 が ``abc''、$2 が ``def ghi'' であっ た場合、"$@" は次の 2 つの引数に展開されます。 .Bd -literal -offset indent "abc" "def ghi" .Ed .It # 位置パラメータの数に展開されます。 .It ? 最後に実行したパイプラインの終了ステータスに展開されます。 .It - (ハイフン) 現在のオプションフラグ (1文字オプション名をつないだ文字列) に展開されます。起動時に指定されたもの、組込みコマンド set で指定した もの、シェルが暗黙に設定したもののすべてを含みます。 .It $ 起動されたシェルのプロセス ID に展開されます。 サブシェルも親シェルと同じ値を持ちます。 .It ! 現在のシェルが最後にバックグラウンドで実行したコマンドのプロセス ID に 展開されます。パイプラインの場合、パイプラインの最後のコマンドの プロセス ID になります。 .It 0 (ゼロ) シェルの名前またはシェルスクリプト名に展開されます。 .El .Ss 単語展開 本節では、単語に対して適用されるさまざまな展開について説明します。あとで 述べるように、すべての展開がすべての単語に対して適用されるわけではありません。 .Pp 単一の単語に対して適用されたチルダ展開、パラメータ展開、コマンド置換、 数式展開、クォート削除の結果は単一のフィールドになります。単一の単語が 複数のフィールドに分割される可能性があるのは、フィールド分割または パス名展開の場合だけです。この規則の唯一の例外は、ダブルクォート中の パラメータ @ の展開です (前述)。 .Pp 単語展開の順序は以下のとおりです。 .Bl -enum .It チルダ展開、パラメータ展開、コマンド置換、数式展開 (これらはすべて 同時に行われます) .It 変数 IFS の値が空でなければ、(1) の結果の各フィールドに対して フィールド分割が行われる .It パス名展開 (-f オプションが無効の場合) .It クォート削除 .El .Pp 文字 $ はパラメータ展開、コマンド置換、数式評価を行うきっかけになります。 .Ss チルダ展開 (ユーザのホームディレクトリ名への置換) 引用されていないチルダ文字 (~) で始まる単語は、チルダ展開の対象になります。 チルダ文字からスラッシュ文字または単語の終端までのすべての文字がユーザ名 とみなされ、そのユーザのホームディレクトリに置換されます。もしユーザ名が 省略された場合(たとえば ~/foobar)、チルダ文字は変数 HOME の値(現在のユーザ のホームディレクトリ)に置換されます。 .Ss パラメータ展開 パラメータ展開の形式は以下のとおりです。 .Bd -literal -offset indent ${expression} .Ed .Pp ここで、expression は対応した `}' までのすべての文字です。対応する`}' を調べる際に、バックスラッシュ文字によりエスケープされたり、クォート文字に 狭まれた `}' や、数式展開に埋め込まれている文字や、コマンド置換や変数展開中に ある文字は調べる対象になりません。 .Pp パラメータ展開の形式のうちもっとも単純なものは以下のとおりです。 .Bd -literal -offset indent ${parameter} .Ed .Pp そのパラメータに値が存在する場合、その値に置き換えられます。 .Pp パラメータ名やシンボルを中括弧({})で囲んでも構いません。この中括弧は、 数字 2 文字以上からなる位置パラメータの場合や、パラメータ名の直後に パラメータ名の一部であるとみなし得る文字が続く場合を除き、 省略可能です。ダブルクォート引用中のパラメータ展開は以下 のようになります。 .Bl -enum .It パラメータ展開を行った結果の単語に対しては、パス名展開は適用されません。 .It パラメータが @ の場合を除き、フィールド分割は適用されません。 .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 通りのパラメータ展開は部分文字列切り出し処理を行います。各場合 において、パターンは正規表現ではなく、パターンマッチ記法 (シェルパターン の項を参照) が用いられます。パラメータが` * 'または` @ 'の場合、展開の結果 がどうなるかは規定しません (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 が標準出力 に出力したものから最後の改行文字を削除した結果で置換します (最後以外の 改行は削除しません。ただし、フィールド分割の際に、IFS の値や引用のされかたに よっては、ここで残った改行文字が結局は空白に置換されることもあります)。 .Ss 数式展開 数式展開とは、数式を評価し、その値に置換する仕組みです。数式展開の形式は以下 のとおりです。 .Bd -literal -offset indent $((expression)) .Ed .Pp 数式 expression は、その中のダブルクォート文字が特別扱いを受けないという 点を除いては、ダブルクォート文字で囲まれている文字列と同様に扱われます。 シェルは expression 中のすべてのトークンにパラメータ展開、コマンド置換、 クォート削除を適用します。 .Pp 次にシェルはその結果を数式として扱い、その値に置換します。 .Ss 空白文字による分割 (フィールド分割) パラメータ展開、コマンド置換、数式展開のあと、シェルは展開結果を調べて、 ダブルクォートの外にある部分に対してフィールド分割を適用します。 その結果、複数のフィールドになる場合もあります。 .Pp シェルは、変数 IFS に設定されている文字それぞれ区切り文字とみなし、 パラメータ展開の結果、およびコマンド置換の結果をフィールドに分割します。 .Ss パス名展開 (ファイル名生成) -f フラグが設定されていなければ、フィールド分割が行われたあと、ファイル名生成 が行われます。各単語は、スラッシュで区切られたパターンの列であるとみなさ れます。パス名展開処理において、単語は、条件を満たすファイル すべてのファイル名の列で置換されます。この各ファイル名は、単語の 各パターン部分を、そのパターンに一致する文字列に置換することで 生成されるものです。 これには 2 つの制限があります: まず、パターンはスラッシュを含む文字列には 一致しません。次に、パターンは、そのパターンがピリオドで始まらないかぎり、 ピリオドで始まる文字列に一致しません。 次節では、パス名展開と .Xr case 1 コマンドで用いられるパターンについて説明します。 .Ss シェルパターン パターンは、通常の文字とメタキャラクタからなります。通常の文字は、 その文字そのものに一致します。 メタキャラクタは ``!''、 ``*''、 ``?''、 ``['' です。これらの文字を引用 すると、各々の特殊な意味を失います。コマンド置換や変数置換において、 ドル記号やバッククォート文字がダブルクォート文字の中にない場合には、 変数の値やコマンドの出力の中に、これらの特殊な文字が存在するかどうかが 調べられ、それらがあれば、メタキャラクタとして扱われます。 .Pp アスタリスク文字 (``*'') は、どのような文字列とも一致します。 クエスチョンマーク文字 (``?'') は、任意の文字 1 文字と一致します。 左大括弧 (``['') は文字クラスを開始します。 文字クラスの最後は右大括弧 (``]'') です。``]'' がない場合 は、``['' は文字そのものに一致し、文字クラスの開始とは見なされません。文字 クラスは大括弧内に出現するすべての文字に一致します。 マイナス記号を用いれば、文字の範囲を指定することができます。 文字クラスの最初にエクスクラメーションマーク (``!'') を置くことで、 文字クラスの意味を反転させることができます。 .Pp 文字クラスに文字 ``]'' を含めるには、 ``]'' を文字クラスの最初 (``!'' を 置く場合はそのあと) に置きます。 文字クラスにマイナス記号を含めるときも同様で、 リストの最初もしくは最後に置きます。 .Ss 組込みコマンド 本節では、別プロセスでは実行できない処理を行なうために組み込まれている コマンドを列挙します。 さらに、効率を上げるために組込みされているコマンド (例えば test(1) .Xr printf 1 , .Xr echo 1 , .Xr test 1 , 等) もあわせて列挙します。 .Bl -tag -width Ds .It : 終了ステータス 0 (真) を返すヌルコマンドです。 .It \&. file 指定されたファイル file に記述されたコマンドがシェルに読み込まれ、 実行されます。 .Ar file に .Ql / 文字を含む場合、その通りに扱われます。 そうでなければ、シェルは .Ev PATH を使用して、ファイルを検索します。 .Ev PATH を使用しても見付からない場合、カレントディレクトリを検索します。 .It alias [ name[=string] ... ] name=string が指定されている場合、シェルは名前 ``name'' を持つ値 ``value'' のエイリアスを定義します。単に ``name'' だけが指定された場合、 エイリアス ``name'' の値が表示されます。引数が指定されない場合、定義さ れているすべてのエイリアスの名前と値を表示します (unalias も参照)。 .It bg [ job ] ... 指定されたジョブ (指定されなかった場合は現在のジョブ) を、 続けてバックグラウンドで実行させます。 .It command command arg ... 指定された組込みコマンドを実行します (組込みコマンドと同じ名前のシェル関数 がある場合に使います)。 .It cd [ directory ] 指定されたディレクトリに移動します (directory 無指定時は $HOME に移動します)。 cd コマンドの 環境に CDPATH 変数があるか、シェル変数 CDPATH が設定されていて、かつ 指定されたディレクトリ directory がスラッシュ文字から始まっていないなら、 CDPATH に列挙されたディレクトリ以下に 指定されたディレクトリ directory がないか検索されます。 CDPATH の形式は PATH と同様です。対話的シェルでは、ユーザ が指定したディレクトリと異なる場所に移動した場合、移動先のディレクトリ名 を表示します。これは、CDPATH の機構が動作した場合と、シンボリックリンクを 辿った場合に発生します。 .It eval string ... 指定されたすべての引数を空白で結合し、その結果を解析し直してから コマンドとして実行します。 .It exec [ command arg ... ] コマンドが省略されない場合、そのシェルプロセスは指定されたプログラムに 置き換えられます (command は、シェル組込みコマンドや関数ではない、本物の プログラムでなければなりません)。exec コマンドにおけるリダイレクトは、 永久性を持つと見なされ、 exec コマンド完了後にも引き続き効力を持ちます。 .It exit [ exitstatus ] シェルを終了します。指定された exitstatus は、シェルの終了ステータスに なります。exitstatus が省略された場合、直前に実行したコマンドの 終了ステータスがシェルの終了ステータスとなります。 .It export name ... それ以後にシェルから実行されるコマンドの環境に、指定された名前の変数が 含まれるようにします (変数のエクスポート)。 変数のエクスポートを取り消す唯一の方法は、変数を unset することです。 以下のように記述することで、エクスポートすると 同時に変数の値を設定することができます。 .Bd -literal -offset indent export name=value .Ed .Pp 引数を指定しない場合、すべてのエクスポートされている名前と値が表示されます。 .It fc [-e editor] [first [last]] .It fc -l [-nr] [first [last]] .It fc -s [old=new] [first] fc は、対話的シェルにそれ以前に入力されたコマンドの内容を 表示、編集、再実行します。 .Bl -tag -width Ds .It -e editor 編集に際し、指定されたエディタ editor を使用します。 editor は変数 PATH を通して検索できるコマンド名です。 -e が指定されなかった場合は、変数 FCEDIT の値が 用いられます。FCEDIT が設定されていないか空に設定されている場合は EDITOR の値が用いられ、それも設定されていないか空ならば .Xr ed 1 が用いられます。 .It -l (ell) (小文字のエル) エディタを起動せずに、コマンド履歴の内容を一覧出力します。 パラメータ first と last で指定した範囲のコマンドが順に (出力の順番は -r オプションの影響を受けます)出力されます。 各コマンドの出力の際にはコマンド番号が付加されます。 .It -n -l で一覧出力する際にコマンド番号を付加しません。 .It -r -l オプションでの一覧や、 編集時 (-l も -s も指定されなかった場合) の順序を反転します。 .It -s エディタを起動せずにコマンドを再実行します。 .It first .It last 一覧出力や編集の対象となるコマンドを選択します。アクセス可能なコマンド の数は変数 HISTSIZE の値で決まります。 first、last の値は以下のいずれかの形式で指定します。 .It [+]number 正の数で、コマンド番号を指定します。コマンド番号は -l オプションで表示させて 調べることができます。 .It -number 負の数で、指定された数だけ現在から遡ったコマンドを指定します。たとえば、 -1 は直前に実行されたコマンドを指定します。 .It string 文字列 string は、過去に実行されたコマンドのうち、 その文字列から始まる最新のものを指定します。 もし -s オプションが指定されて ``old=new'' が指定されていなければ、 最初のオペランドにイコール記号(``='')を含めることはできません。 .El .\" 次の行の .Pp はもともとコメントアウトされていた .Pp fc コマンドの実行にあたり、以下の環境変数の影響を受けます。 .Bl -tag -width Ds .It Va FCEDIT 使用するエディタ名 .It Va HISTSIZE アクセス可能なコマンド数 .El .It fg [ job ] 指定されたジョブまたは現在のジョブをフォアグラウンドに移動します。 .It getopts optstring var POSIX に準拠した getopts コマンドです。 この getopts コマンドにより、以前の getopt コマンドの必要性は減少しました。 最初の引数は文字の列です。各文字の後ろにはコロンをつけることができ、 そのオプションが引数をとることを指示します。 指定された変数に、解析され見つかったオプションが設定されます。 -見つかったオプションの次の引数のインデクスはシェル変数 OPTIND に格納されます。 +見つかったオプションの次の引数のインデックスはシェル変数 OPTIND に格納されます。 あるオプションが引数をとる場合、その引数はシェル変数 OPTARG に置かれます。 有効でないオプションに出くわすと、変数 var には `?' がセットされます。 getopts はオプション群の末尾に到達すると偽の値 (1) を返します。 .It hash -rv command ... シェルは、コマンドの位置を保持するハッシュテーブルを維持管理しています。 hash コマンドに引数が指定されなかった場合、このテーブルの内容が出力されます。 最後に cd コマンドが実行されてから参照されていない項目には アスタリスク文字 (``*'') が表示されます。 この項目は無効になっているかもしれません。 .Pp 引数を指定した場合、hash コマンドは指定したコマンドをハッシュテーブル から削除し (command が関数ではない場合)、その後でそのコマンドを検索します。 -v オプションを指定した場合、発見したコマンドの位置を表示します。-r オ プションを指定した場合、関数以外のすべてのエントリをハッシュテーブルから 削除します。 .It jobid [ job ] ジョブ job 中の各プロセスのプロセス ID を表示します。引数 job が 省略された場合、現在のジョブに対して処理を行います。 .It jobs バックグラウンドで走行中の、現在のシェルプロセスの子プロセスの 一覧を出力します。 .It pwd カレントディレクトリを表示します。組込みコマンドの pwd は カレントディレクトリ名を覚えており、表示するときに再計算しないので、 組込みコマンドの pwd は同名のプログラムとは異なった表示をする場合があります。 このため処理は高速ですが、カレントディレクトリ の名前を変更した場合でも、以前のディレクトリ名を表示し続けます。 .It Li "read [ -p prompt ] [ -e ] variable ... -p オプションが指定され、かつ標準入力が端末の場合、 prompt をプロンプトとして表示します。 そして標準入力から 1 行入力します。行端の改行文字を削除し、行を前述の 単語分割の方法に従って分割し、各単語を、valiable... で指定する各変数に 順に代入します。 もし、指定された変数の数より分割された単語の数が多ければ、最後の変数に 残りの単語すべて (IFS の文字を区切りにしてそれらも一緒に) が代入されます。 分割された単語の数より多くの変数が指定されていたなら、 余った変数には空文字列が設定されます。 .Pp -t オプションが指定され、かつ入力がなされる前にタイムアウトすると、 read コマンドは値を割当てずに戻ります。 タイムアウト値の後にはオプションで 's', 'm', 'h' のいずれかの一文字 を付けることが出来、それぞれ秒, 分, 時間を陽に指定します。 どれも指定しない場合には 's' であるものとします。 .Pp -e オプションを指定すると、入力中のバックスラッシュ文字を特別扱いします。 バックスラッシュ文字が改行文字の直前にある場合、 バックスラッシュ文字と改行文字は削除されます。 その他の文字の直前にバックスラッシュがある場合、バックスラッシュは削除され、 文字が IFS に含まれていても、IFS の文字でないかのように扱われます。 .It readonly name ... 指定された名前の変数を読み出し専用とし、あとで値を変更したり unset した りすることができないようにします。以下のように記述することで、 変数を読み出し専用と宣言するのと同時に値を設定することも可能です。 .Bd -literal -offset indent readonly name=value .Ed .Pp 引数が指定されない場合、読み出し専用になっている変数の名前の一覧が表示され ます。 .It Li "set [ { -options | +options | -- } ] arg ... set コマンドは 3 通りの異なった機能を持ちます。 .Bl -item .It 引数を指定しなかった場合、すべてのシェル変数の名前と値の一覧を表示します。 .It options が指定された場合、「引数リスト処理」の節で説明した方法で、 指定されたオプションフラグを設定あるいは解除します。 .It 第 3 の用法は、シェルの位置パラメータを変更する際に使用します。オプションの 設定を変更せずに位置パラメータのみを変更したい場合は set コマンドへの最初 の引数として ``--'' を指定します。arg が指定されない場合、 すべての位置パラメータはクリアされます (``shift $#'' を実行することと 等価です)。 .El .Pp .It setvar variable value 変数に値を代入します。(一般に、setvar を使うよりも variable=value と書くほう が望ましいといえます。setvar は、関数内で、パラメータとして渡された名前を持つ 変数に値を代入するためのものです。) .It shift [ n ] 位置パラメータを n 回シフトします。1 回のシフトにより、$2 の値が $1 に、$3 の 値が $2 に代入されます (以下同様)。また、$# の値は 1 減少します。 位置パラメータがない場合、shift は何もしません。 .It trap [ action ] signal ... シェルが指定されたシグナル signal を受けとったときに、action を解析し実行する ように設定します。シグナルはシグナル番号で指定します。action は空文字列に したり、省略したりすることができます。空文字列の場合、指定されたシグナルは 無視され、省略した場合は、指定したシグナルを受けとったときデフォルトの処理を 行ないます。シェルがサブシェルを起動するとき、trap で指定された (かつ 無視するように設定されていない) シグナルの動作をデフォルトの処理に戻します。 シェルが起動したときにすでに無視されるように設定されていたシグナルに対して trap コマンドを使用しても効果はありません。 .It type [name] ... 各 name をコマンドとして解釈し、コマンド検索の結果を出力します。出力さ れる結果は以下のものがあります。シェルのキーワード、エイリアス、シェル の組込みコマンド、コマンド、痕跡つきエイリアス(tracked alias)、最後に not found (見つからず)があります。エイリアスについては、エイリアス展開 の結果が出力されます。コマンドと痕跡つきエイリアスについては、そのコマ ンドの完全なパス名が印刷されます。 .It ulimit [ -HSacdflmnust ] [ limit ] リソースのリミット値 (リミット値については .Xr getrlimit 2 参照) を設定あるいは表示します。 ``limit'' が指定されている場合、指定されたリソースが設定されます。 それ以外の場合、現在のリソース設定値が表示されます。 .Pp ``-H'' が指定された場合、ハードリミットが設定ないし表示されます。 ハードリミット値を下げることは誰にでもできますが、 それを増やすことができるのはスーパユーザだけです。 オプション ``-S'' を指定した場合はソフトリミットになります。 リミット値を表示する場合、``-S'' か ``-H'' のいずれか一方だけしか 指定できません。 デフォルトでは、表示はソフトリミット、設定はハード/ソフトリミット両方です。 .Pp オプション ``-a'' を指定すると全リソースの設定値が表示されます。 この場合、パラメータ ``limit'' は指定できません。 .Pp この他のオプションは、表示あるいは設定するリソースの種類を指定するものです。 これらは互いに排他的です。 .Bl -tag -width Ds .It -c coredumpsize コアダンプファイルの最大サイズ。512 バイトのブロック単位。 .It -d datasize プロセスのデータセグメントの最大サイズ。キロバイト単位。 .It -f filesize ファイルの最大サイズ。512 バイトブロック単位。これがデフォルトです。 .It -l lockedmem プロセスがロックできるメモリサイズの最大値。キロバイト単位。 .It -m memoryuse プロセスの常駐セットサイズの最大値。キロバイト単位。 .It -n nofiles あるプロセスがオープンできるファイル記述子の最大数。 .It -s stacksize スタックセグメントサイズの最大値。キロバイト単位。 .It -t time 各プロセスで消費できる CPU 時間の最大値。秒単位。 .It -u userproc このユーザ ID で同時に走らせうる最大プロセス数。 .El .It umask [ mask ] umask の値 ( .Xr umask 2 を参照) を、指定された 8 進数の値に設定します。引数が 省略された場合、現在の umask の値が表示されます。 .It unalias [-a] [name] ``name'' が指定された場合、指定された名前のエイリアスを削除します。 ``-a'' オプションが指定された場合、すべてのエイリアスを削除します。 .It unset name ... 指定された変数または関数を unset し、エクスポートされていない状態にします。 指定された名前の変数も関数も存在する場合、変数と関数の両方が unset されます。 .It wait [ job ] 指定されたジョブ job が終了するのを待ち、ジョブ内の最後のプロセスの 終了ステータスを返します。引数が省略された場合、すべてのジョブが終了する まで待ち、終了ステータス 0 を返します。 .El .Ss コマンド行編集 .Nm が端末から対話的に実行されている場合、現在入力中のコマンドおよび コマンド履歴 (組込みコマンド fc 参照) を vi モードのコマンド行編集機能 により編集することができます。 このモードでは、vi のマニュアルに示されているコマンドのサブセットを用います。 コマンド `set -o vi' により vi モードが開始され、vi の挿入モードに移行します。 vi モード中では、 挿入モードとコマンドモードの両方を自由に切り替えることが可能です。 vi モードは vi と同様であり、 キー によりコマンドモードに移行し、コマンドモードで キーを叩くことで、 行の内容がシェルに渡されます。 .Pp 同様に、コマンド `set -o emacs' により emacs 風のコマンド行編集機能の サブセットを使うことができるようになります。 .Sh 歴史 .Nm コマンドは、 .At V.1 で登場しました。 .\" -Amended by N.Kumagai 97.12.30 diff --git a/ja/man/man1/systat.1 b/ja/man/man1/systat.1 index 1540298f6f..9190589b1b 100644 --- a/ja/man/man1/systat.1 +++ b/ja/man/man1/systat.1 @@ -1,399 +1,399 @@ .\" 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. .\" .\" @(#)systat.1 8.2 (Berkeley) 12/30/93 .\" jpman %Id: systat.1,v 1.3 1997/10/05 12:58:19 horikawa Stab % .\" .Dd December 30, 1993 .Dt SYSTAT 1 .Os BSD 4.3 .Sh 名称 .Nm systat .Nd システムの統計情報を CRT に表示します .Sh 書式 .Nm systat .Op Fl display .Op Ar refresh-interval .Sh 解説 .Nm systat はシステムの各種統計情報をスクリーン指向な方法で .Xr curses 3 の curses スクリーンディスプレイライブラリを用いて表示します。 .Pp .Nm systat の走行中はスクリーンが通常 2 つのウィンドウに分割されます (例外は vmstat を表示する場合で この時はスクリーン全体を使います)。 上のウィンドウはその時のシステムのロードアベレージを表示します。 下のウィンドウに表示される情報は、ユーザのコマンドに応じて 変化するかもしれません。スクリーンの最終行はユーザの入力と エラーメッセージのために予約されています。 .Pp デフォルトでは .Nm systat はプロセッサ使用率が最大のプロセスを下のウィンドウに表示します。 他にはスワップ領域の使用状況、ディスク .Tn I/O の統計情報 ( .Xr iostat 8 式に)、仮想記憶の統計情報 ( .Xr vmstat 8 式に)、ネットワークの ``mbuf'' 利用率、ネットワークコネクション ( .Xr netstat 1 式に) を表示します。 .Pp 入力は 2 つの異なるレベルで解釈されます。 ``グローバル'' なコマンドインタプリタがすべてのキーボード入力を 処理します。もしこのコマンドインタプリタがコマンドを認識できないと、 入力行は表示する種類毎のコマンドインタプリタに渡されます。 これによって各表示内容に応じたコマンドを持つ事が可能になります。 .Pp コマンド行のオプション: .Bl -tag -width "refresh_interval" .It Fl Ns Ar display .Fl に続けて .Ar display として以下のいずれか一つを指定します: .Ic pigs , .Ic iostat , .Ic swap , .Ic mbufs , .Ic vmstat , .Ic netstat 。これらの表示内容は対話的にも ( .Dq Fl 無しに) 指定でき、そして詳細は以下の説明にあります。 .It Ar refresh-interval .Ar refresh-value にスクリーンの更新間隔を秒数で指定します。 .El .Pp いくつかの文字は .Nm systat を即座に反応させます。 そういった文字には以下の物があります .Bl -tag -width Fl .It Ic \&^L スクリーンを更新します。 .It Ic \&^G その時点で下のウィンドウに表示されている ``表示内容'' の名称と 更新間隔を表示します。 .It Ic \&^Z .Nm systat を停止します。 .It Ic \&: カーソルをコマンドラインに移動して打ち込まれた入力行を コマンドとして解釈します。コマンドの入力中は 現位置文字消去、単語消去、行取消の各編集機能が使えます。 .El .Pp 以下のコマンドは ``グローバル'' なコマンドインタプリタによって 解釈されます。 .Bl -tag -width Fl .It Ic help 指定可能な表示内容をコマンドラインに表示します。 .It Ic load 過去 1、5、15分間のロードアベレージをコマンドラインに表示します。 .It Ic stop スクリーンの更新を止めます。 .It Xo .Op Ic start .Op Ar number .Xc スクリーンの更新を開始 (継続) します。もし数値で秒数指定の 引数が与えられると更新間隔 (の秒数) として解釈されます。 数値のみを与えると更新間隔がその値にセットされます。 .It Ic quit .Nm systat を終了します。 (これは .Ic q と省略できます。) .El .Pp 指定可能な表示内容には以下があります: .Bl -tag -width Ic .It Ic pigs 下のウィンドウに、主記憶を占めプロセッサ利用率が最大のプロセスを 表示します (デフォルトの表示内容です)。 ユーザプロセスへのプロセッサの割当が 100% 未満の時は、 残りは ``idle'' プロセスに割り当てられているものと扱います。 .It Ic iostat 下のウィンドウに、プロセッサ利用率とディスクのスループットの 統計情報を表示します。プロセッサ利用率の統計情報は ユーザモード (``user'')、低いプライオリティで実行された ユーザモードのプロセス (``nice'')、システムモード (``system'')、 割り込みモード (``interrupt'')、アイドル (``idle'') での総実行時間 の棒グラフとして表示されます。 ディスクのスループットの統計情報としては、各ドライブについて、 転送データのキロバイト数、実行されたディスクトランザクション数、 平均シーク時間 (単位はミリ秒) が表示されます。 この情報は棒グラフまたは下へスクロールする数値の列で表示されます。 棒グラフでの表示がデフォルトです; .Pp 以下のコマンドは表示内容が .Ic iostat の場合に特有です; 先頭からの一意に識別可能な文字数だけで指定可能です。 .Pp .Bl -tag -width Fl -compact .It Cm numbers ディスク .Tn I/O の統計情報を数値形式で表示します。値は下へスクロールする 数値の列として表示されます。 .It Cm bars ディスク .Tn I/O の統計情報を棒グラフ形式で表示します (デフォルト)。 .It Cm msps 平均シーク時間の表示を切替えます (デフォルトではシーク時間は 表示されません)。 .El .It Ic swap カーネルに組み込まれている全スワップ領域について 利用状況に関する情報を表示します。 最初の列はパーティションのデバイス名です。 次の列はパーティションの総容量です。 .Ar Used の列は それまでに使われた総ブロックを示します; グラフは各パーティションで使用中の部分の割合を示します。 2つ以上の使用中のスワップパーティションがある場合は、 合計の行も表示されます。 カーネルに組み込まれているものの、使われていない物は 使用不可として表示されます。 .It Ic mbufs 下のウィンドウに、何らかの用途、すなわち、データ、ソケット構造体等々に 確保された mbuf の個数を表示します。 .It Ic vmstat 画面全体を使って、 仮想記憶の利用状況、プロセススケジューリング、 デバイスからの割り込み、システムの名前変換キャッシュ、 ディスク .Tn I/O 等々に関する (やや込み入った) 統計情報の要約を表示します。 .Pp 画面の左上の領域にはログインしているユーザ数と過去 1、5、15分間の ロードアベレージが表示されます。 この行の下はメモリ利用率の統計情報です。 この表の 1行目はアクティブなプロセス、つまり過去 20秒以内に 走行状態だったことのあるプロセスのみのメモリ利用率を報告します。 2番目の行は全プロセスのメモリ利用状況を報告しています。 1番目の列はプロセスによって要求された物理ページ数を表示します。 2番目の列は読みだし専用のテキストページに当てられた 物理ページ数を表示します。 3番目と 4番目の列は同じ物に関して仮想ページの情報を表示します。 これは全プロセスが全ページを持つとした時に必要となるページ数を表します。 最後に、最終列はフリーリスト上の物理ページ数を示します。 .Pp メモリ情報の下は平均プロセス数のリスト (1更新期間前からのもの) で、 走行可能 (`r')、ページ待ち中 (`p')、 ページング以外のディスク待ち中 (`d')、 スリープ状態 (`s')、スワップアウトされているが実行されるのを 待っている状態 (`w') です。このキューの長さのリストの下は 時間の総計をシステム (`=' で示されます)、割り込み (`+' で示されます)、 ユーザ (`>' で示されます)、ナイス (`-' で示されます)、 アイドル (` ' で示されます) について数値のリストと棒グラフで 表した物です。 .Pp .\" この文は原文では もっと後ろにあったが、画面構成が変わっているようなので .\" 移動した (訳注) 平均プロセス数の右にコンテキストスイッチ (`Csw')、 トラップ (`Trp'; ページフォルトを含む)、 システムコール (`Sys')、割り込み (`Int')、 ネットワークソフトウェア割り込み (`Sof')、 ページフォルト (`Flt') の 1更新間隔での秒あたりの平均回数を報告します。 .Pp プロセス情報の下はファイル名変換の統計情報です。 これは前の更新期間中に行われたファイル名から iノード番号への変換の 回数、システム全体で共通の変換キャッシュで処理された物の回数と 割合、プロセス毎の変換キャッシュで処理された物の回数と割合を 表示しています。 .Pp 左下はディスクアクセス状況です。 ここでは 1更新間隔 (デフォルトでは 5秒) のシーク回数、転送回数、 平均転送量をキロバイト/秒で報告します。 ディスクによっては平均シーク時間をミリ秒単位で報告します。 システムは最大で 8台 (これは /sys/dkstat.h の定数 DK_NDRIVE で 決まるカーネルのコンパイル時定数です) のディスクまでしか 統計情報を管理しないことに注意して下さい。 .Pp 右上の日時の下はページングとスワップの稼働状況です。 最初の 2列は、1更新間隔の間にページフォルトとページデーモンによって、 読み込まれたページ数と掃き出されたページ数の 1秒あたりの平均を報告します。 3番目と 4番目の列は、1更新間隔の間にスケジューラによって発行された スワップ要求により 読み込まれたページ数と掃き出されたページ数の 1秒あたりの平均を報告します。 この情報の 1行目は 1更新間隔での秒あたりの平均ディスク転送回数を 示します; この情報の 2行目は 1更新間隔での秒あたりの平均転送ページ数を 示します。 .Pp .\" この文は原文が VAX 4.3BSD のままのようだったので直した (訳注) ページングの統計情報の下は copy-on-writes が行われたページ数 (`cow')、 要求時 0クリアが行われたページ数 (`zfod')、 I/O等のためにページング対象から外され、固定されているページ数 (`wire')、 最近参照されたページ数 (`act')、 ページングの候補になっているページ数 (`inact')、 クリーンな状態のキャッシュページ数 (`cache')、 フリーページ数 (`free')、 -デーモンがフリーしたページ数 (`daefr')、 -プロセスが終了した事によってフリーされたページ数 (`prcfr')、 +デーモンが解放したページ数 (`daefr')、 +プロセスが終了した事によって解放されたページ数 (`prcfr')、 フリーリストから最近参照されたか、 またはページングの候補になったページ数 (`react')、 デーモンが起こされた回数 (`pdwak')、 デーモンが調べたページ数 (`pdpgs')、 フォルトしたページが読み込み途中だった回数 (`intrn')、 キロバイト単位のバッファキャッシュのサイズ (`buf') の 1更新間隔での秒あたりの平均値です。 .Pp 画面の右下はシステムによって処理された割り込みの詳細です。 リストのトップは更新期間中の秒あたりの総割り込み数です。 列の残りの部分は総割り込み数のデバイス毎の詳細です。 ブートしてから少なくとも 1回は割り込みを発生したデバイスについてのみ 表示されます。 .Pp 以下のコマンドは表示内容が .Ic vmstat の場合に特有です; 先頭からの一意に識別可能な文字数だけで指定可能です。 .Pp .Bl -tag -width Ar -compact .It Cm boot システムがブートしてからの累積の統計情報を表示します。 .It Cm run このコマンドが与えられてからの走行中のトータルとして統計情報を表示します。 .It Cm time 更新期間の平均で統計情報を表示します (デフォルト)。 .It Cm zero 走行中の統計情報を 0 にリセットします。 .El .It Ic netstat 下のウィンドウにネットワーク接続状況を表示します。デフォルトでは、 リクエストを待っているネットワークサーバは表示されません。 各アドレスは ``host.port'' のフォーマットで、可能であれば シンボルで表示されます。アドレスを数字で表示することや、 ポート、ホスト、プロトコルの表示を制限することが可能です。 (先頭からの一意に識別可能な文字数だけで指定可能です): .Pp .Bl -tag -width Ar -compact .It Cm all リクエストを待っているサーバプロセスの表示を切り替えます (これは .Xr netstat 1 の .Fl a フラグと等価です)。 .It Cm numbers ネットワークアドレスを数字で表示します。 .It Cm names ネットワークアドレスをシンボルで表示します。 .It Ar protocol 指定されたプロトコルを使っているネットワークコネクションのみを 表示します (現在の所 ``tcp'' か ``udp'' のいずれかです)。 .It Cm ignore Op Ar items 指定されたホストまたはポートとの接続に関する情報を表示しません。 ホストとポートは名前 (``vangogh'' や ``ftp'')、または数字で 指定できます。ホストのアドレスはインターネットのドット表記を 使用します (``128.32.0.9'')。空白で区切って 1つのコマンドに 複数の指定が可能です。 .It Cm display Op Ar items 指定されたホストまたはポートとの接続に関する情報を表示します。 .Ar ignore と同様に、 .Op Ar items は名前または数字が使用可能です。 .It Cm show Op Ar ports\&|hosts コマンドラインに、その時点で選択されているプロトコル、 ホスト、ポートを表示します。無視されるホストとポートには `!' を前置します。もし .Ar ports か .Ar hosts が .Cm show の引数として与えられると、 指定された情報だけが表示されます。 .It Cm reset ポート、ホスト、プロトコルの選択メカニズムをデフォルト (あらゆるプロトコル、ポート、ホスト)の状態にリセットします。 .El .El .Pp 表示内容の切り替えコマンドは先頭からの一意に識別可能な 文字数に短縮できます; 例えば ``iostat'' は ``io'' と省略できます。 画面サイズが表示内容に不十分な時は情報が捨てられる可能性があります。 例えば、10台のドライブがあるマシンでは .Ic iostat の棒グラフは 24行の端末では 3ドライブ分しか表示しません。 棒グラフが割り当てられた画面のスペースに収まらない時は 切り詰められて実際の値は棒の ``先端部分'' に表示されます。 .Pp 以下のコマンドはディスクドライブに関する情報を表示する物に 共通です。これらのコマンドは、あなたのシステムに、通常 画面に表示しきれない数のドライブがある場合に、情報を表示する ドライブのセットを選択するために使うためのものです。 .Pp .Bl -tag -width Tx -compact .It Cm ignore Op Ar drives 指定されたドライブに関する情報を表示しません。複数のドライブを 空白で区切って指定できます。 .It Cm display Op Ar drives 指定されたドライブに関する情報を表示します。複数のドライブを 空白で区切って指定できます。 .El .Sh 関連ファイル .Bl -tag -width /etc/networks -compact .It Pa /kernel ネームリストを読み出します。 .It Pa /dev/kmem 主記憶の情報を取ります。 .It Pa /dev/drum スワップアウトされたプロセスの情報のために使います。 .It Pa /etc/hosts ホスト名をひきます。 .It Pa /etc/networks ネットワーク名をひきます。 .It Pa /etc/services ポート名をひきます。 .El .Sh 歴史 .Nm systat プログラムは .Bx 4.3 に初めて登場しました。 .Sh バグ CPU の 2-10 パーセントを消費します。 表示内容によっては 1行に最低で 80文字が表示できる事を想定しています。 .Ic vmstat は表示領域が足りないようです。なぜなら (訳注: 原文が切れています) (新規のプログラムとしてではなく独立した表示画面として追加されました)。 .Sh 日本語訳 野首 寛高(h-nokubi@nmit.tmg.nec.co.jp): FreeBSD 用に翻訳 diff --git a/ja/man/man1/tar.1 b/ja/man/man1/tar.1 index 67849b7e75..660181412d 100644 --- a/ja/man/man1/tar.1 +++ b/ja/man/man1/tar.1 @@ -1,483 +1,483 @@ .\" Copyright (c) 1991, 1992, 1993 Free Software Foundation -*- nroff -*- .\" See /usr/src/gnu/COPYING for conditions of redistribution .\" .\" Written by John F. Woods .\" Updated by Robert Eckardt .\" .\" %Id: tar.1,v 1.6.2.3 1998/02/15 17:05:30 steve Exp % .\" jpman %Id: tar.1,v 1.2 1997/06/24 07:09:44 bobson Stab % .\" .Dd 25 August 1997 .Os FreeBSD .Dt TAR 1 .Sh 名称 .Nm tar .Nd テープアーカイバ; "tar" アーカイブファイルの操作 .Sh 書式 .Nm tar .Op [-] Ns Ar bundled-options .Op Ar gnu-style-flags .Op Ar tarfile .Op Ar blocksize .Op Ar exclude-file .Op Ar filenames .Op Fl C Ar directory-name .Sh 解説 .Nm は、歴史的な理由により .Dq tape archiver を省略して名付けられました。 .Nm プログラムは、 .Ar tarfile と呼ばれる .Dq tar フォーマットのアーカイブファイルを作成し、アーカイブにファイルを追加したり、 またアーカイブからファイルを抽出したりします。 tarfile は通常磁気テープを指しますが、フロッピディスケットや 通常のファイルでも構いません。 .Pp 通常、 .Nm コマンドラインの最初の引数は、機能文字および機能変更文字からなる単語であり、 その前に ダッシュ(-)をつけてもつけなくてもいいようになっています。 単語には、次の機能文字のうちちょうど 1 つを含んでいなければなりません: .Cm A , .Cm c , .Cm d , .Cm r , .Cm t , .Cm u , .Cm x , これらはそれぞれ 追加 (append) 、作成 (create) 、差分 (difference) 、 置換 (replace) 、リスト表示 (table of contents) 、更新 (update) 、 そして抽出 (extract) を意味しています (下記に詳細があります) 。 これらの他に、以下に詳細を述べる機能変更文字を、コマンド単語に 含めることができます。それらのいくつかは、コマンド単語内と同じ順で コマンドライン引数を要求します (使用例の節を参照) 。 機能文字と機能変更文字は、GNU 形式の引数で指定することもできます (2 つのダッシュを最初につけ、1 つのコマンド単語ごとに機能文字か 機能変更文字を 1 つだけ指定する) 。 アーカイブへの追加、アーカイブからの抽出、そしてリスト表示のために コマンドライン指定するファイル名には、 シェルのパターンマッチ文字列を使用することができます。 .Sh 機能 以下の機能のいずれか1つだけを必ず指定しなければなりません。 .Pp .Bl -tag -width "--concatenate" -compact .It Fl A .It Fl -catenate .It Fl "-concatenate" 指定された(tar アーカイブ形式の)ファイルを tar アーカイブの末尾 に追加します。(追加する前の古い end-of-archive ブロックは削除さ れます。) これは、指定されたファイルがアーカイブの中の1ファイルとなるので はなく、指定したファイルの中に含まれているファイルを、最初に指定 したアーカイブに追加するという効果を持ちます。 .Em 注: このオプションは tarfile を再書き込みする必要があるため、1/4 インチカートリッジテープでは動作しません。 .It Fl c .It Fl -create 新しいアーカイブを作成して (もしくは古い内容を切り捨てて)、指定 されたファイルをアーカイブに書き込みます。 .It Fl d .It Fl -diff .It Fl -compare アーカイブの中のファイルと、それに相当するファイルシステム内の ファイルとの違いを調査します。 .It Fl -delete 指定されたファイルをアーカイブから削除します。(1/4 インチテープ では動作しません。) .It Fl r .It Fl -append アーカイブの末尾にファイルを追加します。(1/4 インチテープでは 動作しません。) .It Fl t .It Fl -list アーカイブ内容のリスト表示をします。もし引数としてファイル名が 指定されていれば、そのファイルだけがリスト表示されます。そうでなけ れば、アーカイブに含まれるすべてのファイルリストが表示されます。 .It Fl u .It Fl -update 指定したファイルのうち、アーカイブ内のファイルよりもディスク上の ファイルの変更時刻が新しいものだけを追加します。1/4 インチテープ では動作しません。 .It Fl x .It Fl -extract .It Fl -get -アーカイブからファイルを抽出します。可能ならば、オーナ、 +アーカイブからファイルを抽出します。可能ならば、所有者、 変更時刻、ファイル属性はリストアされます。もし .Ar file 引数が指定されていなければ、アーカイブ内の全ファイルが抽出されます。 もし .Ar filename 引数がテープ上のディレクトリ名にマッチしていれば、そのディレクトリと ディレクトリ内のファイルが抽出されます。(ディレクトリ内のす べてのディレクトリについても同様に抽出されます。) もしアーカイブ内に、相当する同じファイルが複数含まれていれば(上記の .Fl -append コマンドを参照)、最後に含まれているものが他のすべてのファイルを 上書きする形で抽出されます。 .Sh オプション .Nm の他のオプションは、組み合わせて使用することができます。 1文字オプションは、コマンド単語の中で指定することができます。 引数を与えるべきオプションの場合、オプションに続けて引数を指定し ます。1文字オプションであれば、これに続くコマンドライン引数を 使用します (以下の .Sx 使用例 を参照してください。) .Pp .Bl -tag -width "--preserve-permissions" -compact .It Fl -help .Nm のすべてのコマンドオプションについて一覧と解説を表示します。 .It Fl -atime-preserve テープに書かれている、ファイルのアクセス時刻をリストアします。 (inodeの変更時刻が変更されることに注意してください!) .It Fl b .It Fl -block-size Ar number 読み書きするブロックサイズを .Ar number * 512-byte ブロック に設定します。 .It Fl B .It Fl -read-full-blocks 短い読みだしブロックを、完全なブロックに再組み立てします。 (4.2BSD パイプの読み込み用。) .It Fl C Ar directory .It Fl -directory Ar directory 抽出時に .Ar directory へ移動します。 .It Fl -checkpoint アーカイブを読み書きする間に読み書きしたバッファの数を表示します。 .It Fl f Ar [hostname:]file .It Fl -file Ar [hostname:]file 指定された .Ar file (デフォルトは /dev/rst0) を読み書きします。 もし .Ar hostname が指定されていれば、 .Nm は .Xr rmt 8 を使って、リモートマシン上の .Ar file を読み書きします。"-" はファイルネームとして使用されることもありますが、 これは標準入力から読み出したり、標準出力へ書き出したりするために使用されます。 .It Fl -force-local コロンがある時でさえ、アーカイブファイルはローカルのものとします。 .It Fl F Ar file .It Fl -info-script Ar file .It Fl -new-volume-script Ar file それぞれのアーカイブが終ると、スクリプトを実行します (暗黙の .Fl M 指定が行なわれます。) .It Fl -fast-read ワイルドカードで指定されていないすべての抽出ターゲットが アーカイブ内に見つかったら、その時点で終了します。 .It Fl G .It Fl -incremental 古い GNU-format インクリメンタルバックアップファイルを作成/リスト/ 抽出します。 .It Fl g Ar file .It Fl -listed-incremental Ar file 新しい GNU-format インクリメンタルバックアップファイルを作成/リスト/ 抽出します。 .It Fl h .It Fl -dereference シンボリックリンクをシンボリックのまま書き込みません。シンボリックリンクが 指しているデータを書き込みます。 .It Fl i .It Fl -ignore-zeros アーカイブの中のゼロブロック(通常、End-Of-File を意味する)を無視します。 .It Fl -ignore-failed-read ファイルが読めなくても、非 0 のステータスで exit しません。 .It Fl k .It Fl -keep-old-files ディスク上に既にあるファイルを保持します。つまり、アーカイブから 抽出するファイルは、ディスク上のファイルへ上書きしません。 .It Fl K Ar file .It Fl -starting-file Ar file アーカイブの中の .Ar file から(抽出、リストなどを)始めます。 .It Fl l .It Fl -one-file-system あるファイルシステム内にあるファイルだけでアーカイブを作成します。 (他ファイルシステムへのマウントポイントを跨ぎません。) .It Fl L Ar number .It Fl -tape-length Ar number .Ar number * 1024 バイト書き込んだ後でテープの交換を要求します。 .It Fl m .It Fl -modification-time ファイルの変更時刻を抽出しません。 .It Fl M .It Fl -multi-volume マルチボリュームアーカイブを作成/リスト/抽出します。 .It Fl n .It Fl -norecurse 作成時に再帰的にサブディレクトリを走査しません。 .It Fl -volno-file Ar file ボリューム番号付きのファイル名です。 .It Fl N Ar date .It Fl -after-date Ar date .It Fl -newer Ar date 作成時間が .Ar date より新しいファイルだけを抽出します。 .It Fl -newer-mtime Ar date 変更時間が .Ar date より新しいファイルだけを抽出します。 .It Fl o .It Fl -old-archive .It Fl -portability POSIX フォーマットではなく、V7 フォーマットのアーカイブを作成します。 .It Fl O .It Fl -to-stdout ファイルを標準出力に抽出します。 .It Fl p .It Fl -same-permissions .It Fl -preserve-permissions 保護情報を完全に抽出します。 .It Fl -preserve .Fl p s の指定と同じ効果を持ちます。 .It Fl P .It Fl -absolute-paths ファイル名から先頭の `/' をとりません。 .It Fl R .It Fl -record-number メッセージ中にアーカイブ内のレコード番号を埋め込み表示します。 .It Fl -remove-files アーカイブに追加したファイルを、追加後に削除します。 .It Fl s .It Fl -same-order .It Fl -preserve-order アーカイブ内から抽出するファイルを、指定された順のままにします。 .It Fl -show-omitted-dirs アーカイブ作成中に除外されたディレクトリを表示します。 .It Fl S .It Fl -sparse 「少ない」ファイルを効率的に扱うようにします。 .It Fl T Ar file .It Fl -files-from Ar file .Ar file から抽出もしくは作成するファイル名を得ます。(1行1ファイル名。) .It Fl -null nullで終わっている名前を考慮し、 .Fl T の振舞を変更します。 これは .Fl C 指定を無効にします。 .It Fl -totals .Fl -create によって書かれたトータルバイト数を表示します。 .It Fl v .It Fl -verbose .Fl -create でアーカイブに書くファイルや .Fl -extract でアーカイブから 取り出すファイル名をリスト表示します。 ファイルの保護情報をファイル名とともに表示させるには、 .Fl -list を使います。 .It Fl V Ar volume-name .It Fl -label Ar volume-name 指定された .Ar volume-name を持ったアーカイブを作成します。 .It Fl -version .Nm プログラムのバージョン番号を表示します。 .It Fl w .It Fl -interactive .It Fl -confirmation すべての動作に対して、確認を求めるようになります。 .It Fl W .It Fl -verify アーカイブを書き込んだ後、ベリファイを試みます。 .It Fl -exclude Ar pattern .Ar pattern にマッチするファイルを除外します。 (抽出しません。追加しません。リスト表示しません。) .It Fl X Ar file .It Fl -exclude-from Ar file .Ar file に一覧されているファイルを除外します。 .It Fl Z .It Fl -compress .It Fl -uncompress アーカイブを .Xr compress 1 でフィルタリングします。 .It Fl z .It Fl -gzip .It Fl -gunzip アーカイブを .Xr gzip 1 でフィルタリングします。 .It Fl -use-compress-program Ar program アーカイブを .Ar program でフィルタリングします。 (これは、 .Fl d が指定されたときは ``decompress'' を意味しなければなりません。) .It Fl -block-compress テープもしくはフロッピのために、圧縮プログラムの出力をブロック 化します。(そうしないと、ブロック長がおかしくなり、デバイスドライバは そのブロックを拒絶するでしょう。) .It Fl [0-7][lmh] テープドライブと密度を指定します。 .It Fl -unlink ファイルを作成する前に、いったん削除します。 .El .Sh 使用例 "bert" と "ernie" というファイルを含む、 ブロックサイズが 20 ブロックのアーカイブを、 テープドライブ /dev/rst0 に作るには、 .Pp .Dl tar cfb /dev/rst0 20 bert ernie .Pp もしくは .Pp .Dl tar\ --create\ --file\ /dev/rst0\ --block-size\ 20\ bert\ ernie .Pp と入力します。 .Fl f および .Fl b フラグは両方とも引数を必要としていることに注意してください。 この引数は、コマンド単語に書かれているのと同じ順序でコマンドラインから 取得されます。 .Pp /dev/rst0 はデフォルトのデバイスであり、20 はデフォルトのブロック サイズですので、上記の例は次のように単純化できます。 .Pp .Dl tar c bert ernie .Pp "backup.tar" というアーカイブから、すべての C ソース及びヘッダを 抽出するには、次のようにタイプします。 .Pp .Dl tar xf backup.tar '*.[ch]' .Pp シェルがカレントディレクトリ内のファイル名に展開しないよう、パタ ーンをクォートしなければならないことに注意してください。(当然、 シェルはアーカイブ内のファイル一覧にアクセスすることはできません。) .Pp ファイルを階層構造ごとコピーするには、このようにコマンドを使用してください: .Bd -literal tar cf - -C srcdir . | tar xpf - -C destdir .Ed .Pp ディスケットに、gzip を使った圧縮アーカイブを作成するには、次の ようなコマンドラインを使うといいでしょう。 .Pp .Dl tar --block-compress -z -c -v -f /dev/rfd1a -b 36 tar/ .Pp まとめ指定フラグと --スタイルのフラグを混在させることができない ことに注意してください。次のようにタイプしなければならないわけで はなく、上記のような書き方で1文字フラグを使うことができます。 .Pp .Dl tar --block-compress --gzip --verbose --file /dev/rfd1a --block-size 20 tar / .Pp 上のようにして作成したディスクの内容は、次のようにすればリスト表 示できます。 .Pp .Dl tar tvfbz /dev/rfd1a 36 .Pp 2 つの tar アーカイブを 1 つのアーカイブにまとめるには、 .Pp .Dl tar Af archive1.tar archive2.tar .Pp を使います。こうすると、archive2.tar に含まれているファイルが archive1.tar の末尾に追加されます。(単純に .Pp .Dl cat archive2.tar >> archive1.tar .Pp とタイプしてもうまくいかないことに注意してください。なぜなら、 tar アーカイブの末尾には end-of-file ブロックがあるからです。) .Pp srcdir ディレクトリから 1997 年 2 月 9 日 13:00 以降に変更をされた 全てのファイルをアーカイブするためには、以下の形式を使って下さい。 .Dl tar\ -c\ -f\ backup.tar\ --newer-mtime\ 'Feb\ 9\ 13:15\ 1997'\ srcdir/ .Pp 他の時間指定形式としては、'02/09/97 13:15', \&'1997-02-09 13:15', '13:15 9 Feb 1997', '9 Feb 1997 13:15', \&'Feb. 9, 1997 1:15pm', '09-Feb', '3 weeks ago', 'May first Sunday' があります。 正しいタイムゾーンを指定するためには、 `13:15 CEST' や `13:15+200' を使用して下さい。 .Sh 環境変数 .Nm プログラムは、以下の環境変数を参照します。 .Bl -tag -width "POSIXLY-CORRECT" .It POSIXLY-CORRECT 通常、 .Nm はファイル指定の中に混ざったフラグを処理します。 この環境変数を設定すると、 .Nm は最初のフラグ以外の引数を見つける とそれ以降の引数に対してフラグ処理を行なわないという、POSIX 仕様 に合わせた動作を行なうようになります。 .It SHELL インタラクティブモードにおいて、サブシェルの起動が要求されたとき、 SHELL 変数が設定されていればそれが、設定されていなければ "/bin/sh" が使用されます。 .It TAPE tar のデフォルトのテープドライブを変更します。(これは、さらに .Fl f フラグによって変更することができます。) .El .Sh 関連ファイル .Bl -tag -width "/dev/rst0" .It Pa /dev/rst0 デフォルトのテープドライブ .El .\" This next request is for sections 1, 6, 7 & 8 only .\" (command return values (to shell) and fprintf/stderr type diagnostics) .\" .Sh 診断 .Sh 関連項目 .Xr compress 1 , .Xr gzip 1 , .Xr pax 1 , .Xr ft 8 , .Xr rmt 8 .\" .Sh 規格 .Sh 歴史 .Nm フォーマットは立派な歴史を持っていて、Sixth Edition UNIX に 原点があります。 この .Nm の実装は GNU 実装であり、John Gilmore によって書かれた パブリックドメイン tar が元になっています。 .Sh 作者 次の人を含む、大変多くの人々。[ソースの中の ChangeLog ファイルに記 述されている人々] John Gilmore (オリジナルのパブリックドメイン版の 作者), Fenlason (最初の GNU 作者), Joy Kendall, Jim Kingdon, David J. MacKenzie, Michael I Bushnell, Noah Friedman, そして バグフィックスや追加を貢献してくれた無数の人々。 このマニュアルページは NetBSD 1.0 release から、FreeBSD グループが 取り込んだものです。 .Sh バグ 特徴的な .Fl C オプションは、これまでの tar プログラムのようには動作しないため、 おそらく信頼できません。 .Pp -A コマンドは、任意の数の tar アーカイブを結合するよう動くべきで すが、そうは動作しません。2 番目やそれ以降のアーカイブの end-of-archive ブロックを取り除くことを試みます。 diff --git a/ja/man/man1/uustat.1 b/ja/man/man1/uustat.1 index 9820922806..90b9e96521 100644 --- a/ja/man/man1/uustat.1 +++ b/ja/man/man1/uustat.1 @@ -1,555 +1,555 @@ ''' %Id: uustat.1,v 1.6 1996/02/02 00:26:06 mpp Exp % .\" jpman %Id: uustat.1,v 1.2 1997/03/29 11:58:00 horikawa Stab % .TH uustat 1 "Taylor UUCP 1.06" .SH 名称 uustat \- UUCP システム状態のチェックや制御を行なう .SH 書式 .B uustat \-a .PP .B uustat \-\-all .PP .B uustat [ .B \-eKRiMNQ ] [ .B \-sS system ] [ .B \-uU user ] [ .B \-cC command ] [ .B \-oy hours ] [ .B \-B lines ] [ .B \-\-executions ] [ .B \-\-kill-all ] [ .B \-\-rejuvenate-all ] [ .B \-\-prompt ] [ .B \-\-mail ] [ .B \-\-notify ] [ .B \-\-no-list ] [ .B \-\-system system ] [ .B \-\-not-system system ] [ .B \-\-user user ] [ .B \-\-not-user user ] [ .B \-\-command command ] [ .B \-\-not-command command ] [ .B \-\-older-than hours ] [ .B \-\-younger-than hours ] [ .B \-\-mail-lines lines ] .PP .B uustat [ .B \-kr jobid ] [ .B \-\-kill jobid ] [ .B \-\-rejuvenate jobid ] .PP .B uustat \-q [ .B \-sS system ] [ .B \-oy hours ] [ .B \-\-system system ] [ .B \-\-not-system system ] [ .B \-\-older-than hours ] [ .B \-\-younger-than hours ] .PP .B uustat \-\-list [ .B \-sS system ] [ .B \-oy hours ] [ .B \-\-system system ] [ .B \-\-not-system system ] [ .B \-\-older-than hours ] [ .B \-\-younger-than hours ] .PP .B uustat \-m .PP .B uustat \-\-status .PP .B uustat \-p .PP .B uustat \-\-ps .SH 解説 .I uustat コマンドは、UUCPシステムに関するいろんな情報を表示します。また、 本コマンドを用いることで、 .I uucp (1) や .I uux (1)で作成されたジョブを取り消したり、ジョブのタイムスタンプの若返りを行なったりすることが 出来ます。 デフォルトでは、 .I uustat は、コマンド を起動したユーザが要求したジョブをすべて表示します。これは、 .B \-\-user オプションで自分を指定した場合の動作と同じです。 .B \-a, .B \-\-all, .B \-e, .B \-\-executions, .B \-s, .B \-\-system, .B \-S, .B \-\-not-system, .B \-u, .B \-\-user, .B \-U, .B \-\-not-user, .B \-c, .B \-\-command, .B \-C, .B \-\-not-command, .B \-o, .B \-\-older-than, .B \-y, .B \-\-younger-than のいずれかのオプションが指定されると、指定条件の組合せに合致するすべてのジョブを 表示します。 .B \-K または .B \-\-kill-all オプションは、要求してから7日間経過した全てのジョブのような、選択したグルー プのジョブを削除出来ます。 .SH オプション .I uustat では、以下のオプションが使用可能です。 .TP 5 .B \-a, \-\-all キューイングされたすべてのファイル転送要求を表示します。 .TP 5 .B \-e, \-\-executions ファイル転送要求ではなく、 コマンド実行要求を表示します。キューイングされた コマンド実行要求は、 .I uucico (8) ではなく .I uuxqt (8) にて処理されます。 キューイング中のコマンド実行要求には、リモートシステムから転送される ファイルを待っているものもあります。これらの要求は、 .I uux (1)を起動することで作成されます。 .TP 5 .B \-s system, \-\-system system 指定したシステムに対するジョブをすべて表示します。本オプションは、 1回のコマンド起動時に複数指定することが可能です。 この場合、指定したシステムに対応するジョブが全て表示されます。 .B \-\-list オプションと共に指定したときは、指定したシステムのジョブだけが表示されます。 .TP 5 .B \-S system, \-\-not-system system 指定したシステム向け以外のジョブをすべて表示します。本オプションは、 1回のコマンド起動時に複数指定することが可能です。 この場合、指定しなかったシステムのジョブが全て表示されます。 .B \-\-list オプションと共に指定したときは、指定しなかったシステムのジョブだけが表示されます。 なお、本オプションは、 .B \-s や .B \-\-system とは同時に指定してはいけません。 .TP 5 .B \-u user, \-\-user user 指定したユーザのジョブをすべて表示します。本オプションは、 1回のコマンド起動時に複数指定することが可能です。 この場合、指定したユーザのジョブが全て表示されます。 .TP 5 .B \-U user, \-\-not-user user 指定したユーザのジョブを除くジョブをすべて表示します。本オプションは、 1回のコマンド起動時に複数指定することが可能です。 この場合、指定しなかったユーザのジョブが全て表示されます。 なお、本オプションは、 .B \-u や .B \-\-user とは同時に指定してはいけません。 .TP 5 .B \-c command, \-\-command command 指定したコマンドの実行を要求するジョブをすべて表示します。 .B command を .I ALL と指定した場合、すべての(単なる .I uucp ファイル転送ではない)コマンドの実行を要求するジョブ を表示します。本オプションは、1回のコマンド起動時に複数指定することが 可能です。 この場合、指定したコマンドの実行を要求するジョブが全て表示されます。 .TP 5 .B \-C command, \-\-not-command command 指定したコマンド以外の実行を要求するジョブをすべて表示します。 .B command が .I ALL と指定した場合、 単なる .I uucp ファイル転送要求がすべて表示されます。 本オプションは、1回のコマンド起動時に複数指定することが 可能です。 この場合、指定したコマンドの実行を要求しないジョブが全て表示されます。 なお、本オプションは、 .B \-c や .B \-\-command と同時に指定してはいけません。 .TP 5 .B \-o hours, \-\-older-than hours キューイングされてから指定した時間(単位:時間)以上超過した ジョブを全て表示します。 .B \-\-list オプションと共に指定した場合は、 そのシステムに関するもっとも古いジョブが、指定した時間より 古いという条件を満たすシステムの名前だけを表示します。 .TP 5 .B \-y hours, \-\-younger-than hours キューイングされてから経過した時間が指定した時間(単位:時間)を 超過していないジョブを全て表示します。 .B \-\-list オプションと共に指定した場合は、 そのシステムに関するもっとも古いジョブが指定した時間より 新しいという条件を満たすシステムの名前だけを表示します。 .TP 5 .B \-k jobid, \-\-kill jobid 指定したジョブを削除します。jobidは、デフォルトの出力結果から取得可能 です。また、 .I uucp (1) や .I uux (1)にて .B \-j や .B \-\-jobid オプションを付加して実行することで、当該ジョブのジョブidを取得する ことも出来ます。 ジョブの削除を行なうことが出来るのは、ジョブを要求したユーザ、UUCP システム管理者、もしくはスーパーユーザです。 .B \-k や .B \-\-kill オプションは、1回のコマンド実行で複数回指定することが可能です。 .TP 5 .B \-r jobid, \-\-rejuvenate jobid 指定したジョブのジョブ時刻を、本コマンドを起動した時刻に変更します。 このことにより、 .B \-o, .B \-\-older-than, .B \-y, .B \-\-younger-than の各オプションの出力結果に影響が出ます。 このオプションの使用により、 クリーンアップデーモンにより削除されるのを免れることができます。 jobidは、デフォルトの出力結果から取得可能 です。また、 .I uucp (1) や .I uux (1)にて .B \-j や .B \-\-jobid オプションを付加して実行することで、当該ジョブのジョブidを取得する ことも出来ます。 本操作を行なうことが出来るのは、ジョブを要求したユーザ、UUCPシステム管 理者、もしくはスーパーユーザです。 .B \-r や .B \-\-rejuvenate オプションは、1回のコマンド実行で複数回指定することが可能です。 .TP 5 .B \-q, \-\-list 要求がキューイングされている全てのリモートシステムに対する要求の ステータス、そして対話のステータスを表示します。 .B \-s, .B \-\-system, .B \-S, .B \-\-not-system, .B \-o, .B \-\-older-than, .B \-y, .B \-\-younger-than の各オプションはシステムの表示を制限するために用います。要求がキューイングさ れていないシステムは表示されません。 .TP 5 .B \-m, \-\-status すべてのリモートシステムとの対話のステータスを表示します。 .TP 5 .B \-p, \-\-ps UUCPロックまたはポートを保持するすべての処理のステータスを表示します。 .TP 5 .B \-i, \-\-prompt 各ジョブについて、削除するかどうかを問い合わせるよう指示します。その 問い合わせに対してユーザが .I y もしくは .I Y を先頭に含む文字列を入力した場合(y もしくは Y だけでも)、そのジョブ は削除されます。 .TP 5 .B \-K, \-\-kill-all 各ジョブを自動的に削除します。本機能は、 .B \-\-mail や .B \-\-notify オプションと組み合わせて使用することで、自動メンテナンスを行なう スクリプトを作成するのに役立ちます。 .TP 5 .B \-R, \-\-rejuvenate-all 指定したジョブを自動的に若返らせます。本オプションは .B \-\-kill-all と同時に指定できません。 .TP 5 .B \-M, \-\-mail 各ジョブについて、UUCPシステム管理者に対してメールを送ります。もし ジョブが( .B \-\-kill-all や .B \-\-prompt を用いることで)削除された場合、その旨がメールに明記されます。 .B \-\-comment オプションで指定したコメントについても、そのメールの中に含まれます。 ジョブが実行された場合、標準入力から入力された最初の部分がメールの メッセージに含まれます。 メールに含まれる行数は、 .B \-\-mail-lines オプションで設定可能です(デフォルトでは100行です)。 標準入力からの入力データがNULLキャラクタを含む場合、そのファイルはバイナリ ファイルであるとみなされ、メールには含まれません。 .TP 5 .B \-N, \-\-notify 各ジョブについて、要求を行なったユーザに対してメールを送ります。メール の内容については、 .B \-M や .B \-\-mail オプションで説明したものと同一です。 .TP 5 .B \-W comment, \-\-comment comment .B \-M, .B \-\-mail, .B \-N, .B \-\-notify の各オプションでメールを送る際に、そのメールに含めるコメントを指定します。 .TP 5 .B \-B lines, \-\-mail-lines lines .B \-M, .B \-\-mail, .B \-N, .B \-\-notify のいずれかのオプションで、 標準入力を用いるコマンドを実行するジョブの結果をメールで送るように 指定している場合、メールに含める標準入力の行数を指定します。 デフォルトは 100行です。 .TP 5 .B \-Q, \-\-no-list .B \-i, .B \-\-prompt, .B \-K, .B \-\-kill-all, .B \-M, .B \-\-mail, .B \-N .B \-\-notify オプションと同時に使用します。ジョブの表示を行なわず、 指定した動作のみ行います。 .TP 5 .B \-x type, \-\-debug type 特定のデバッグタイプを指定します。タイプとしては、abnormal, chat, handshake, uucp-proto, proto, port, config, spooldir, execute, incoming, outgoing がありますが、 .I uustat では、abnormal, config, spooldir ,execute のみが意味を持ちます。 本オプションでは、コンマで区切ることで複数のデバッグタイプが指定可能です。そして、 .B \-\-debug オプションは、1回のコマンド起動で複数回指定可能です。 また、タイプとして数字を指定することも可能です。例えば、 .B \-\-debug 2 という指定は、 .B \-\-debug abnormal,chat と同じ意味です。 .TP 5 .B \-I file, \-\-config file -使用するコンフィギュレーションファイルの指定を行ないます。ただし、本 +使用する設定ファイルの指定を行ないます。ただし、本 オプションは、本コマンドの コンパイル条件によっては使用できないことがあります。 .TP 5 .B \-v, \-\-version バージョン情報を表示します。実行は行ないません。 .TP 5 .B \-\-help ヘルプメッセージを表示します。実行は行ないません。 .SH 使用例 .br .nf uustat --all .fi 全てのジョブのステータスを表示します。出力例を以下に示します。 .br .in +0.5i .nf bugsA027h bugs ian 04-01 13:50 Executing rmail ian@airs.com (sending 1283 bytes) .fi .in -0.5i フォーマットは、以下の通りです。 .br .in +0.5i .nf jobid system user queue-date command (size) .fi .in -0.5i jobid は、 .B \-\-kill もしくは .B \-\-rejuvenate オプションで主に使用します。 size は、リモートシステムにどれだけのデータが転送されるかを示します。 また、ファイル受信要求の場合は表示されません。 .B \-\-system, .B \-\-not-system, .B \-\-user, .B \-\-not-user, .B \-\-command, .B \-\-not-command, .B \-\-older-than, .B \-\-younger-than オプションは、ジョブの表示制御のために用いられます。 .br .nf uustat --executions .fi キューイングされたコマンド実行ジョブのステータスを表示します。出力 例を以下に示します。 .br .in +0.5i .nf bugs bugs!ian 05-20 12:51 rmail ian .fi .in -0.5i フォーマットは以下の通りです。 .br .in +0.5i .nf system requestor queue-date command .fi .in -0.5i .B \-\-system, .B \-\-not-system, .B \-\-user, .B \-\-not-user, .B \-\-command, .B \-\-not-command, .B \-\-older-than, .B \-\-younger-than オプションは、ジョブの表示制御のために用いられます。 .br .nf uustat --list .fi 全てのシステムについてキューイングされたコマンドのステータスを表示します。以 下に出力例を示します。 .br .in +0.5i .nf bugs 4C (1 hour) 0X (0 secs) 04-01 14:45 Dial failed .fi .in -0.5i システム、キューイングされたコマンド数、 もっとも古いコマンドがキューイングされてからの時間、 キューイングされたローカル実行数と もっとも古いコマンドがローカル実行キューイングされてからの時間、 最後の対話の日時とステータスが表示されています。 .br .nf uustat --status .fi 全てのリモートシステムについて対話のステータスを表示します。出力例を以下に示 します。 .br .in +0.5i .nf bugs 04-01 15:51 Conversation complete .fi .in -0.5i システム、最後の対話の日時とステータスが示されています。最後の対話が失敗した 場合、 .I uustat はシステムを呼び出そうとした回数を表示します。 次のリトライ間隔までシステムを呼び出せないときには .I uustat は次にコールできる時刻を表示します。 .br .nf uustat --ps .fi UUCPロックしている全てのプロセスのステータスを表示します。 .I uustat は単にロックしている各プロセス上で .I ps (1) を起動するだけなので、出力書式はシステムにより異なります。 .br .in +0.5i .nf uustat --command rmail --older-than 168 --kill-all --no-list --mail --notify --comment "Queued for over 1 week" .fi .in -0.5i これは一週間(168 時間)以上配送待ちになっているキューイングされている全ての .I rmail コマンドの実行を取り止めます。各コマンドに対し、UUCP 管理者と rmail の実行を 要求したユーザの双方にメールが送られます。メールには .B \-\-comment オプションで指定した文字列が含まれています。 .B \-\-no-list オプションはジョブの出力を端末に出力しません。このときプログラムから出力される のはエラーメッセージだけです。 .SH 関連ファイル 関連ファイル名は、コンパイル時の指定により変化します。以下に挙げるものは、 一例です。 .br /usr/lib/uucp/config - 初期化ファイル .br /usr/spool/uucp - UUCP スプールディレクトリ .SH 関連項目 ps(1), rmail(8), uucp(1), uux(1), uucico(8), uuxqt(8) .SH 作者 Ian Lance Taylor (ian@airs.com) diff --git a/ja/man/man1/window.1 b/ja/man/man1/window.1 index 911439bc69..b6eb76df5c 100644 --- a/ja/man/man1/window.1 +++ b/ja/man/man1/window.1 @@ -1,887 +1,887 @@ .\" Copyright (c) 1985, 1990, 1993 .\" The Regents of the University of California. All rights reserved. .\" .\" This code is derived from software contributed to Berkeley by .\" Edward Wang at The University of California, Berkeley. .\" .\" 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. .\" .\" @(#)window.1 8.2 (Berkeley) 12/30/93 .\" jpman %Id: window.1,v 1.3 1997/08/31 14:19:38 horikawa Stab % .\" .Dd December 30, 1993 .Dt WINDOW 1 .Os BSD 4.3 .Sh 名称 .Nm window .Nd ウインドウ環境を実現します .Sh 書式 .Nm window .Op Fl t .Op Fl f .Op Fl d .Op Fl e Ar escape-char .Op Fl c Ar command .Sh 解説 .Nm window は、 .Tn ASCII 端末上でウインドウ環境を実装します。 .Pp ウインドウとは物理的な端末スクリーンの中の部分的な長方形部分を指し、 ここをプロセスの集合が利用します。その大きさと位置はユーザがいつでも 変更できます。プロセスは 標準入力、標準出力、標準エラー出力を通して端末と通信する通常の方法と 同じ方法で、そのウインドウと通信します。 ウインドウプログラムはそのウインドウに対する入力と出力のリダイレクトに関する 細かい処理を行います。どんな時でも、 1 つのウインドウだけがキーボードからの 入力を受けることが出来ますが、全てのウインドウが同時にディスプレイへの出力を 送ることが可能です。 .Pp .Nm window が立ち上がった時、ユーザのホームディレクトリにある .Pa .windowrc 内のコマンドが実行されます。もしこのファイルが存在しない時は、 デフォルトとして同じ大きさのウインドウが 2 つ作成されます。 .Pp コマンドラインオプションには以下のものがあります。 .Bl -tag -width Fl .It Fl t terse モードをオンにします (以下の .Ic terse コマンドを参照)。 .It Fl f 高速モードです。スタートアップ動作は何もしません。 .It Fl d .Pa .windowrc を無視する代わりに 2 つのデフォルトウインドウを作成します。 .It Fl e Ar escape-char エスケープ文字を .Ar escape-char にします。 .Ar escape-char は文字 1 つか、もしくは .Ic ^X .Ns ( No control\- Ns Ar X ) のような形式です .Ns ( Ar X はどんな文字でも構いません)。 .It Fl c Ar command .Ar command をロングコマンド(以下参照)として最初に実行します。 .El .Pp ウインドウはオーバラップ可能で、枠が必要です。 各ウインドウには、``1'' から ``9'' の数字のうちの一つの名前が 付いています。この一文字の識別子は、ユーザが定義できるラベル文字と 同じように、ウインドウのフレームの上の辺に表示されます。 ウインドウは .Ar フォアグラウンド にあるように設計されています。フォアグランドウインドウは、 普通の他のフォアグラウンドではないウインドウよりもつねに上にあります。 このウインドウより上になるのは、他のフォアグランドウインドウだけです。 ウインドウは、端末画面の辺内に完全に入っている必要はありません。 したがって、(画面よりも大きくても良い)大きいウインドウは、その全画面の 一部分だけが表示されるでしょう。 .Pp 各ウインドウは、カーソルと制御機能を持っています。最も知的な端末操作、 すなわち行や文字消去や挿入が提供されています。下線を引いたり反転表示等の ディスプレイモードは、端末によって提供されている場合には、利用可能です。 更に、複数ページ分のメモリがある端末と同じように、各ウインドウは ウインドウ画面に表示されるよりも多くの行を保持できるテキストバッファを 持っています。 .Ss プロセス環境 新しく作成されたウインドウでは、 呼び出されたウインドウからプロセス環境を引き継いで、 シェルプログラムが実行されます。 標準入力・出力・エラー出力は、仮想端末 ( .Xr pty 4 参照) または、 .Ux ドメインのソケット ( .Xr socketpair 2 参照)と結びつけられます。 仮想端末が使われている場合、特別な文字やモード( .Xr stty 1 参照)は、物理端末から複製されます。 このウインドウに対する .Xr termcap 5 のエントリが作成されて、環境として( .Xr environ 7 参照)変数 .Ev TERMCAP に渡されます。 termcap エントリには、下線・反転表示・その他の表示モード・ 可能であれば端末のファンクションキーによって生み出されるコード等の 物理端末からの情報と同じように、ウインドウの大きさや特徴が含まれています。 更に、仮想端末のウインドウサイズ属性は、ウインドウの大きさを反映するように 設定され、その大きさが変更された場合はその情報が更新されます。 特に、エディタ .Xr vi 1 は、この情報を画面を再表示するために利用します。 .Ss 操作 普通の実行中には、 .Nm window は、二つの状態の内の一つの状態にあります。 この二つの状態は、会話モードとコマンドモードです。 会話モードでは、端末の実際のカーソルは、特定のウインドウのカーソル位置 に位置します。この特定のウインドウはカレントウインドウと呼ばれます。 そして、キーボードからの入力は、そのウインドウにあるプロセスに 送られます。カレントウインドウは、他のウインドウがフォアグランドに ある時を除いて、いつも他のウインドウよりも上にあります。 更に、その識別子とラベルは反転表示で強調されています。 .Pp .Nm window のエスケープ文字 (通常は、 .Ic ^P です) を入力することで、会話モードからコマンドモードへ移行します。 コマンドモードでは、端末画面の一番上の行は コマンドプロンプトウインドウに変わり、 .Nm window はキーボードからの入力をウインドウを操作するコマンドであると解釈します。 .Pp 二つの種類のコマンドがあります。短いコマンドは普通 1文字ないし 2文字 から構成されます。長いコマンドはコマンドウインドウ (以下の .Dq Ic \&: コマンドを参照) で入力される文字列もしくは、ファイル (以下の .Ic source 参照) から読み込まれます。 .Ss 短いコマンド 以下では、 .Ar \&# は、ウインドウ 1 から 9 に結びつけられた、 数字の ``1'' から ``9'' のひとつを表現します。 .Ic ^X は、 .No control\- Ns Ar X を意味します。ここで、 .Ar X は任意の文字です。 特に、 .Ic ^^ は、 .Li control\-^ です。 .Ar escape はエスケープキーもしくは、 .Ic ^\&[ です。 .Bl -tag -width Ds .It Ar # ウインドウ .Ar # をカレントウインドウとして選択し、会話モードに戻ります。 .It Ic \&% Ns Ar # ウインドウ .Ar # を選択しますが、コマンドモードのままです。 .It Ic ^^ 一つ前のウインドウを選択し、会話モードに戻ります。 これは、二つのウインドウの間を交互に移動する時に便利です。 .It Ic escape 会話モードに戻ります。 .It Ic ^P 会話モードに戻り、現在のウインドウに .Ic ^P を書き込みます。したがって、会話モード中で二つの .Ic ^P を入力することで、一つを現在のウインドウに送ることができます。 .Nm window のエスケープを別の文字に変更している場合には、その文字がここでいう .Ic ^P と同じ動作をします。 .It Ic ? コマンドの短いまとめを表示します。 .It Ic ^L 画面を再描画します。 .It Ic q .Nm window を終了します。 確認が行われます。 .It Ic ^Z .Nm window を中断します。 .It Ic w 新しいウインドウを作成します。ユーザはウインドウの左上の場所と 右下の場所を指定します。カーソルが画面上に表示され、 ``h'', ``j'', ``k'', ``l'' キーでカーソルをそれぞれ 左 , 下 , 上 , 右 に移動します。 ``H'', ``J'', ``K'', ``L'' キーでは、カーソルはそれぞれの方向の 画面の限界まで移動します。移動キーの前に数字を入力することで、 移動を数字の回数だけ繰り返します。リターンでカーソル位置をウインドウの 左上の位置として入力します。右下の角も同じような方法で入力します。 この手続き中には、新しいウインドウの位置は画面に表示される長方形の 箱として示されます。この枠が、新しいウインドウが表示される枠です。 エスケープキーを入力することで、どの時点でも、このコマンドを キャンセルします。 .Pp このウインドウはカレントウインドウになります。そして、最初に利用可能な ID が与えられます。また、デフォルトのバッファサイズが使われます (以下の .Ar default_nline コマンドを参照) 。 .Pp 完全に見ることのできるウインドウだけがこの方法で作成できます。 .It Ic c Ns Ar # ウインドウ .Ar # を閉じます。 -ウインドウ中のプロセスには、ハングアップシグナル ( +ウインドウ中のプロセスには、回線切断シグナル ( .Xr kill 1 参照) が送られます。 .Xr csh 1 は、このシグナルを正しく扱うべきで、そうであれば問題は起こりません。 .It Ic m Ns Ar # ウインドウ .Ar # を別の位置に移動します。 ウインドウの形をした箱が新しい位置を示すために画面に表示され、 .Ic w コマンドで使われたのと同じようなキーで箱の位置を指定できます。 ウインドウは一部が画面の外にでても構いません。 .It Ic M Ns Ar # ウインドウ .Ar # を以前の位置に動かします。 .It Ic s Ns Ar # ウインドウ .Ar # の大きさを変更します。 ウインドウの新しい右下の角を指定する必要があります。 新しいウインドウの大きさを示すために、箱が書かれます。 .Ic w や .Ic m コマンドで使われたのと同じキーが位置を入力するために使われます。 .It Ic S Ns Ar # ウインドウ .Ar # を以前の大きさに変更します。 .It Ic ^Y カレントウインドウを一行上にスクロールします。 .It Ic ^E カレントウインドウを一行下にスクロールします。 .It Ic ^U カレントウインドウを画面の半分上にスクロールします。 .It Ic ^D カレントウインドウを画面の半分下にスクロールします。 .It Ic ^B カレントウインドウを一画面分、上にスクロールします。 .It Ic ^F カレントウインドウを一画面分、下にスクロールします。 .It Ic h カレントウインドウのカーソルを一カラム左に動かします。 .It Ic j カレントウインドウのカーソルを一行下に動かします。 .It Ic k カレントウインドウのカーソルを一行上に動かします。 .It Ic l カレントウインドウのカーソルを一カラム右に動かします。 .It Ic y ヤンクします。ユーザはカレントウインドウの 2点を指定します。 この 2点で示される内容がヤンクバッファに保存されます。 .It Ic p プットです。ヤンクバッファの内容を、現在のウインドウに入力として 書き込みます。 .It Ic ^S カレントウインドウの出力を停止します。 .It Ic ^Q カレントウインドウの出力を開始します。 .It Ic : 長いコマンドとして実行する行を入力します。 通常の行編集文字 (エスケープ文字、単語の消去、行の消去) が提供されます。 .El .Ss 長いコマンド ロングコマンドはプログラム言語の様に解釈される文の列です。 この文法は C 言語に似ています。数字や文字列の表現や変数が、 条件分岐と同じように提供されています。 .Pp 二つのデータ型があります。文字列と数字です。 文字列は、文字で始まる文字や数字の列です。 ``_'' と ``.'' は文字と 考えられます。別の方法として、アルファベットや数字に含まれない文字を ``"''で括るか、``\\''でエスケープすることで、文字列に含めることもできます。 更に、 C言語で提供されている ``\\'' シーケンスがクオートの内外で 利用可能です (例えば、 ``\\n'' は改行を、``\\r'' はキャリッジリターンを表現します)。 以下の例は規則にあった文字列です。 abcde01234, "&#$^*&#", ab"$#"cd, ab\\$\\#cd, "/usr/ucb/window" .Pp 数字は、以下の3つの形式のうちの一つの整数値です。 10進数・``0'' に続いて表現される 8 進数・``0x'' もしくは ``0X'' に続いて 表現される 16 進数です。機械にとって自然な整数サイズが使われます (つまり、 Cコンパイラの符号付き整数型です)。 C 言語と同じように、 非ゼロの表現が論理的な真をあらわします。 .Pp 文字 ``#'' は、行末までのコメントの始まりを表現します。 .Pp 文は条件式もしくは式です。式文は改行 もしくは ``;'' で終りになります。式を次の行に継続するためには、 最初の行を ``\\'' で終らせます。 .Ss 条件文 .Nm window は、単一の制御構造を持ちます: それは完全にまとめられた if 文で、以下の形式です .Pp .Bd -literal -offset indent -compact if then \t \t... elsif then \t \t... else \t \t... endif .Ed .Pp .Ic else や .Ic elsif 部分はオプションです。 .Ic elsif は、必要なだけ繰り返して利用することができます。 は数値である必要が有ります。 .Ss 式 .Nm window における式は、 C 言語中のものと似ており、ほとんどの C の演算子が 数値オペランドとして提供されています。更に、いくつかの演算子は、 文字列を操作するために拡張されています。 .Pp ある式が文として使われている時、その値は評価の後で 捨てられます。したがって、(代入や関数呼び出しの様な) 副作用を持った式のみが文として有用です。 .Pp (配列でない) 一つの値の変数が、数値と文字列に対して提供されています。 いくつかの変数は、あらかじめ定義されています。 これらは後でに示してあります。 .Pp 優先順序が増加していくように、演算子を以下に示します。 .Bl -tag -width Fl .It Xo .Aq Va expr1 .Ic = .Aq Va expr2 .Xc 代入です。名前が .Aq Va expr1 で文字列を値として持つ変数に、 .Aq Va expr2 の結果が代入されます。 .Aq Va expr2 の値を返します。 .It Xo .Aq Va expr1 .Ic ? .Aq Va expr2 .Ic : .Aq Va expr3 .Xc .Aq Va expr1 の評価値が真 (非 0 数値) である時、 .Aq Va expr2 の値を返します。そうでない場合は、 .Aq Va expr3 の値を返します。 .Aq Va expr2 と .Aq Va expr3 のどちらか一方だけが、評価されます。 .Aq Va expr1 は数値表現でなくてはなりません。 .It Xo .Aq Va expr1 .Ic \&|\&| .Aq Va expr2 .Xc 論理的和 (or) です。数値だけが使えます。短絡評価が提供されています (つまり、 .Aq Va expr1 が評価されて真である場合は、 .Aq Va expr2 は評価されません) 。 .It Xo .Aq Va expr1 .Ic \&&\&& .Aq Va expr2 .Xc 短絡評価付きの論理的積 (and) です。数値だけが使えます。 .It Xo .Aq Va expr1 .Ic \&| .Aq Va expr2 .Xc ビット毎の論理和 (or) です。数値だけが使えます。 .It Xo .Aq Va expr1 .Ic ^ .Aq Va expr2 .Xc ビット毎の排他的論理和 (xor) です。数値だけが使えます。 .It Xo .Aq Va expr1 .Ic \&& .Aq Va expr2 .Xc ビット毎の論理積 (and) です。数値だけが使えます。 .It Xo .Aq Va expr1 .Ic == .Aq Va expr2 , .Aq Va expr1 .Ic != .Aq expr2 .Xc (それぞれ、等価と非等価の) 比較です。ブール値の結果 (1 か 0 のどちらか) が比較の結果として返されます。 オペランドは、数値もしくは文字列です。片一方が文字列の場合、 他のオペランドも必要であれば変換されます。 .It Xo .Aq Va expr1 .Ic < .Aq Va expr2 , .Aq Va expr1 .Ic > .Aq Va expr2 , .Aq Va expr1 .Ic <= .Aq Va expr2 , .Aq Va expr1 .Ic >= .Aq Va expr2 .\" >= を補足 .\" Aug 31 1997 .Xc それぞれ、より小さい・より大きい・以下・以上をあらわします。 数値と文字列の両方が利用可能です。 上で述べたように、自動的な変換が行われます。 .It Xo .Aq Va expr1 .Ic << .Aq Va expr2 , .Aq Va expr1 .Ic >> .Aq Va expr2 .Xc 両方のオペランドが数値である場合、 .Aq Va expr1 は、左 (もしくは、右) に .Aq Va expr2 ビットシフトされます。 .Aq Va expr1 が文字列で、最初 (もしくは、最後) の .Aq Va expr2 文字が返されます( .Aq Va expr2 も文字列の場合、その長さがその値として利用されます)。 .It Xo .Aq Va expr1 .Ic + .Aq Va expr2 , .Aq Va expr1 .Ic - .Aq Va expr2 .Xc 数値においては、加算と減算です。 ``+'' に対して、片方が文字列の場合、他方は文字列に変換され、 結果は二つの文字列の結合となります。 .It Xo .Aq Va expr1 .Ic \&* .Aq Va expr2 , .Aq Va expr1 .Ic \&/ .Aq Va expr2 , .Aq Va expr1 .Ic \&% .Aq Va expr2 .Xc かけ算・割算・モジュロ演算 (余りの計算) です。 数字だけが利用可能です。 .\".(訳注)モジュロ演算の後ろのカッコは訳で付け加えました。 .\" 2.2.1R 対象(1997/06/02) Takeshi MUTOH .It Xo .Ic \- Ns Aq Va expr , .Ic ~ Ns Aq Va expr , .Ic \&! Ns Aq Va expr , .Ic \&$ Ns Aq Va expr , .Ic \&$? Ns Aq Va expr .Xc 最初の 3つは、単項演算子のマイナス・ビット毎の補をとる (ビットの反転) ・論理的な否定であり、数値だけを取ります。 演算子 ``$'' は .Aq Va expr を取り、その名前の変数の値を返します。 .Aq Va expr が値 .Ar n を持った数値で、それが (後述の) 別名マクロ中に現れた場合、 別名呼び出しの n 番目の引数を参照します。 ``$?'' は変数 .Aq Va expr の存在を調べ、存在する場合は 1 を、それ以外では 0 を返します。 .It Xo .Ao Va expr Ac Ns Pq Aq Ar arglist .Xc 関数呼び出しです。 .Aq Va expr は文字列でなくてはならず、 .Nm window の組み込み関数名の区別できる範囲でのプレフィックスであるか、 ユーザ定義の別名マクロの完全な名前でなくてはなりません。 組み込み関数の場合、 .Aq Ar arglist は以下の 2つの形式のどちらか一方です。 .Bd -literal -offset indent , , ... argname1 = , argname2 = , ... .Ed .Pp 実際、両方の形式はお互い混ぜて使うことができますが、その結果は 予想できません。ほとんどの引数は省略可能です。デフォルトの値が それらに対しては適用されます。 .Ar argnames は、引数名を区別できる範囲でのプレフィックスとすることができます。 引数を分離するコンマは、曖昧さを避けるためだけに用いられ、 通常は省略できます。 .Pp 最初の引数の形式は、ユーザ定義別名のために有効です。別名は、 .Ic alias 組み込み関数を使うことで定義されます(以下参照)。 引数は、変数機能の変種を使ってアクセスされます (前述の ``$'' 演算子を参照) 。 .Pp ほとんどの関数は値を返しますが、いくつかは副作用のためだけに 使われるため文として使われなければなりません。 関数や別名が文として使われた時、引数リストを囲むカッコは 省略可能です。別名は値を返しません。 .El .Ss 組み込み関数 引数は自然な順番で名前で並べられます。 オプション引数は、四角カッコ .Sq Op で囲みます。名前の無い引数は、角カッコ .Sq <> 内に書きます。 ブール値のフラグを意味する引数 (しばしば .Ar flag という名前を付けられます) は、意味が明らかである .Ar on , .Ar off , .Ar yes , .Ar no , .Ar true , .Ar false , の内の一つの値をもつか、数値表現においては非ゼロの値が真となります。 .Bl -tag -width Fl .It Xo .Ic alias Ns ( Bq Aq Ar string , .Bq Aq Ar string\-list ) .Xc .\" マクロが誤っているので修正 .\" Aug 31 1997 引数が与えられない場合は、全ての現在定義されている別名マクロが 表示されます。そうでない場合、 .Aq Ar string が表現 .Aq Ar string\-list の別名として定義されます。もし存在すれば、以前の .Aq Ar string の定義が返されます。デフォルトでは、 .Aq Ar string\-list は変更されません。 .It Ic close Ns Pq Aq Ar window\-list .Aq Ar window\-list で指定されたウインドウを閉じます。 .Aq Ar window\-list が単語 .Ar all の場合、全てのウインドウが閉じられます。値は返しません。 .It Ic cursormodes Ns Pq Bq Ar modes ウインドウカーソルを .Ar modes に設定します。 .Ar modes は、変数 .Ar m_ul (下線)・ .Ar m_rev (反転表示)・ .Ar m_blk (点滅)・ .Ar m_grp (グラフィック、端末依存です。)で示される モードビットのビット毎の論理和です。 以前のモードの値が返されます。引数に何も指定しないと変更を行いません。 例えば、 .Li cursor($m_rev$m_blk) は、ウインドウカーソルを点滅する反転表示に設定します。 .It Ic default_nline Ns Pq Bq Ar nline デフォルトバッファサイズを .Ar nline に設定します。 初期設定では、 48 行になっています。古いデフォルトバッファサイズが 返されます。引数に何も指定しないと変更は行いません。とても大きなバッファを 使うと、プログラムの速度が低下します。 .It Ic default_shell Ns Pq Bq Aq Ar string\-list デフォルトのウインドウシェルプログラムを .Aq Ar string\-list に設定します。 最初の文字列として古いシェル設定が返されます。 引数に何も指定しないと変更を行いません。 初期設定では、デフォルトシェルは環境変数 .Ev SHELL から取られます。 .It Ic default_smooth Ns Pq Bq Ar flag コマンド .Nm window (以下参照)への .Ar smooth 引数のデフォルトの値を設定します。 引数はブール値フラグ (上記の .Ar on , .Ar off , .Ar yes , .Ar no , .Ar true , .Ar false または数字のうちの一つ) です。引数に何も指定しないと変更を行いません。 古い値が (数字として) 返されます。 初期値は 1 (true) です。 .It Xo .Ic echo Ns ( Op Ar window , .Bq Aq Ar string\-list ) .Xc 文字列のリスト .Aq Ar string-list を、空白で分割し最後に改行を付けて .Nm window へ書き出します。 文字列はウインドウにだけ表示され、ウインドウ中のプロセスには 影響を与えません (以下の .Ic write を参照) 。 値は返されません。デフォルトはカレントウインドウです。 .It Ic escape Ns Pq Bq Ar escapec エスケープ文字を .Ar escape-char に設定します。古いエスケープ文字を一文字の文字列として返します。 引数に何も指定しないと変更を行いません。 .Ar escapec は、一文字の文字列か、 .No control\- Ns Ar X を意味する .Fl ^X という形式です。 .It Xo .Ic foreground Ns ( Bq Ar window , .Bq Ar flag ) .Xc .Nm window をフォアグラウンドに動かしたり、フォアグラウンドから外したりします。 .Ar flag はブール値です。古いフォアグランドフラグが返されます。 .Nm window に対するデフォルトはカレントウインドウで、 .Ar flag に対するデフォルトは無変更です。 .It Xo .Ic label Ns ( Bq Ar window , .Bq Ar label ) .Xc .Nm window のラベルを .Ar label に設定します。 古いラベル文字列が返されます。 .Nm window に対するデフォルトはカレントウインドウで、 .Ar label に対するデフォルトは無変更です。ラベルを無くすためには、 空文字列 ("") を設定します。 .It Ic list Ns Pq 引数はありません。 全てのウインドウの ID と ラベルが表示されます。 値は返されません。 .It Ic select Ns Pq Bq Ar window .Nm window をカレントウインドウとします。以前のカレントウインドウが返されます。 引数を指定しないと変更を行いません。 .It Ic source Ns Pq Ar filename .Ar filename 内の長いコマンドを読み込み、実行します。 ファイルが読み込めない場合には -1 を返し、それ以外では 0 を返します。 .It Ic terse Ns Pq Bq flag 簡素 (terse) モードを .Ar flag に設定します。簡素モードでは、コマンドウインドウはコマンドモード中 でさえ隠されたままで、エラーは端末のベルをならすことで報告されます。 .Ar flag は、上記の .Ar foreground 中の値と同じです。 古い簡素フラグが返されます。 引数を指定しないと変更は行いません。 .It Ic unalias Ns Pq Ar alias 別名定義 .Ar alias を消去します。 別名がない場合には -1 を返します。それ以外の場合は 0 を返します。 .It Ic unset Ns Pq Ar variable .Ar variable 変数の定義を消去します。 .Ar variable が存在しない場合には -1 を返します。それ以外の場合は 0 を返します。 .It Ic variables Ns Pq 引数はありません。全ての変数を表示します。値は返されません。 .It Xo .Ic window Ns ( Bq Ar row , .Bq Ar column , .Bq Ar nrow , .Bq Ar ncol , .Bq Ar nline , .Bq Ar label , .Bq Ar pty , .Bq Ar frame , .Bq Ar mapnl , .Bq Ar keepopen , .Bq Ar smooth , .Bq Ar shell ) . .Xc 左上の角が .Ar row , .Ar column で、大きさが .Ar nrow , .Ar ncol のウインドウを開きます。 .Ar nline が指定された場合、テキストバッファにその行が割り当てられます。 そうでない場合は、デフォルトのバッファサイズが使われます。 .Ar row , .Ar column , .Ar nrow , .Ar ncol に対するデフォルトの値は、それぞれ画面の一番上, 一番左, 一番下, 一番右 になります。 .Ar label は、ウインドウのラベル文字列です。 .Ar frame , .Ar pty , .Ar mapnl は、 (上記の) .Ar foreground への引数と同じ方法で解釈されるフラグの値です。 これはそれぞれ、このウインドウの周りに枠を付けるか (デフォルトでは真)、 ウインドウのためにソケットペアではなく仮想端末を割り当てるか (デフォルトでは真)、改行文字をこのウインドウでは 復帰と行送りに マップするか (デフォルトではソケットペアの場合は真、それ以外は偽) です。 一般に、ウインドウは、プロセスが終了した時に、自動的に閉じられます。 .Ar keepopen を真に設定する (デフォルトでは偽) ことでこの動作は妨げられます。 .Ar smooth が真である時、より端末らしい振舞いを実現するために、 画面は (このウインドウに対して) より頻繁に更新されます。 .Ar smooth のデフォルトの値は、 (上記) .Ar default_smooth コマンドで設定します。 .Ar shell は、このウインドウ内でシェルプログラムとして使われる文字列のリストです (デフォルトは、上記 .Ar default_shell で指定されたプログラムです)。 作成されたウインドウの ID が数字で 返されます。 .It Xo .Ic write Ns ( Bq Ar window , .Bq Aq Ar string\-list ) .Xc .Nm window に空白で分割されているが最後に改行の無い文字列リスト .Aq Ar string-list を送ります。 文字列は、実際にウインドウの入力として使われます。 値は返しません。 デフォルトはカレントウインドウです。 .El .Ss 定義済み変数 これらの変数は、情報のためだけにあります。これらを再定義しても、 .Nm window の内部操作には影響ありません。 .Bl -tag -width modes .It Ar baud 50 から 38400の間のボーレートです。 .It Ar modes 物理端末で提供されている(反転表示・下線・点滅・グラフィック等の) 表示モードです。 .Ar modes の値は、1 ビット値 .Ar m_blk , .Ar m_grp , .Ar m_rev , .Ar m_ul (以下参照)のビット毎の論理和になっています。 これらの値は、ウインドウのカーソルモードを設定する時に便利です (上の .Ar cursormodes 参照) 。 .It Ar m_blk 点滅モードのビットです。 .It Ar m_grp グラフィックモードのビットです (それほど有用ではありません)。 .It Ar m_rev 反転表示モードのビットです。 .It Ar m_ul 下線モードのビットです。 .It Ar ncol 物理端末の列数です。 .It Ar nrow 物理端末の行数です。 .It Ar term 端末の形式です。 端末の .Ev TERMCAP エントリの 2番目のフィールドに書かれている標準名が使われます。 .Sh 環境変数 .Nm window は、以下のような環境変数を利用します。 .Ev HOME , .Ev SHELL , .Ev TERM , .Ev TERMCAP , .Ev WINDOW_ID .Sh 関連ファイル .Bl -tag -width /dev/[pt]ty[pq]? -compact .It Pa ~/.windowrc スタートアップコマンドファイル .It Pa /dev/[pt]ty[pq]? 仮想端末デバイス .El .Sh 歴史 .Nm window コマンドは、 .Bx 4.3 から導入されました。 .Sh 診断 自己説明的な診断メッセージになっています。 diff --git a/ja/man/man8/IPXrouted.8 b/ja/man/man8/IPXrouted.8 index a87c8fe8ca..59f00bb84b 100644 --- a/ja/man/man8/IPXrouted.8 +++ b/ja/man/man8/IPXrouted.8 @@ -1,177 +1,177 @@ .\" Copyright (c) 1986, 1991, 1993 .\" The Regents of the University of California. All rights reserved. .\" .\" Copyright (c) 1995 John Hay. 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. .\" jpman %Id: IPXrouted.8,v 1.3 1997/07/27 13:00:54 horikawa Stab % .\" .Dd Oct 11, 1995 .Dt IPXROUTED 8 .Os FreeBSD .Sh 名称 .Nm IPXrouted .Nd IPX Routing Information Protocol デーモン .Sh 書式 .Nm IPXrouted .Op Fl q .Op Fl s .Op Fl S .Op Fl t .Op Ar logfile .Sh 解説 .Nm は IPX 経路テーブルを扱うために、ブート時に起動されます。 IPX 経路デーモンは、カーネルの経路テーブルエントリを最新に 保つために Novell の IPX Routing Information Protocol を用います。 .Pp 使用可能なオプション: .Bl -tag -width logfile .It Fl q (下記の .Fl s オプションとは反対に) 経路情報を提供しません。 .It Fl s ネットワークをつなぐルータであるないにかかわらず、 .Nm が強制的に経路情報を提供するようにします。 .It Fl S Service Advertizing Protocol .Nm (SAP) 情報を提供しません。デフォルトでは .Nm SAP 情報を提供します。 .It Fl t 送信・受信されたすべてのパケットを標準出力に表示します。 加えて、 .Nm -はコントロールターミナルから切り離されないので、キーボードからの +は制御端末から切り離されないので、キーボードからの 割り込みはプロセスを kill することになります。 .It Ar logfile .Nm IPXrouted の 行動が記録されるファイル名を指定します。 このログには、経路テーブルのすべての変更についての情報や、 経路の変更に関わる最近の送受信メッセージの履歴が記録されます。 .El .Pp 通常、 .Nm は経路情報パケットを listen します。 ホストが複数の IPX ネットワークに接続されている場合には、 直接接続されているホストやネットワークすべてに経路テーブルの コピーを定期的に提供します。 .Pp .Nm が起動されると、 .Dv SIOCGIFCONF .Xr ioctl 2 を用いて、システムに組み込まれ、 .Dq up となっているインタフェースを探します (ソフトウェアループバックインタフェースは無視されます)。 インタフェースが複数ある場合には、そのホストがネットワーク間で パケットを転送するとみなします。 そして .Nm は各インタフェースに .Em リクエスト パケットを送信し(インタフェースがサポートしていれば ブロードキャストパケットを用います)、他のホストから .Em リクエスト と .Em レスポンス のパケットが来るのを listen し続けます。 .Pp .Em リクエスト パケットを受け取ると、内部のテーブルに基づく情報から返答パケットを 作成します。 作成された .Em レスポンス パケットは既知の経路の一覧を含み、各々は .Dq hop count metric を持っています(16 以上の count は .Dq 無限大 (到達不可能) を示します)。 返答された各々の経路に関する metric は、送信元からの .Em "相対的な" metric を提供します。 .Pp 以下の条件を一つでも満たす場合、 .Nm が受け取った .Em レスポンス パケットは経路テーブルの更新に使われます: .Bl -bullet .It 宛先となるネットワークやホストへの経路テーブルエントリが 存在せず、 metric が宛先が到達可能であるとしている (hop count が無限大でない)とき。 .It パケットの送信元ホストが、保持している経路テーブルエントリ内の ルータと同じであるとき。 すなわち更新された情報が、 宛先へのパケットが経由するネットワーク間ルータからもたらされたとき。 .It 経路テーブル内に存在するエントリがしばらくの間(定義では 90 秒) 更新されず、その経路が現在の経路と少なくとも同じ程度効率的であるとき。 .It 現在経路テーブル内に保持しているものよりも、新しい経路のほうが短いとき。 この判断にはテーブル内の経路の metric と新しい経路の metric が 比較されます。 .El .Pp 更新が受け入れられた場合、 .Nm は変更を内部テーブルに記録し、 .Em レスポンス パケットをすべての直接つながったホストとネットワークに流します。 .Xr routed 8 は、カーネルの経路テーブルを更新する前に、不安定な状態から 抜け出せるようにするために、しばらくの間(30 秒以内)待ちます。 .Pp .Nm は入ってくるパケットを処理するだけではなく、経路テーブル エントリを定期的にチェックします。 エントリが 3 分間更新されなかった場合、エントリの metric は 無限大に設定され、削除予定の印がつけられます。 実際の削除は、エントリの無効化が他のルータに伝わるのを確実に するために、さらに 60 秒後に行われます。 .Pp ネットワークをつなぐルータとなっているホストは、 30 秒ごとに 直接つながったすべてのホストとネットワークに自分の 経路テーブルを提供します。 .Pp .Nm が SIGINFO シグナルを受け取った場合、RIP と SAP テーブルの 現在の内容がファイル /tmp/ipxrouted.dmp に追加されます。 .Sh 関連項目 .Xr ipx 3 .Sh 歴史 diff --git a/ja/man/man8/adduser.8 b/ja/man/man8/adduser.8 index a5da6e90d3..c58f38965d 100644 --- a/ja/man/man8/adduser.8 +++ b/ja/man/man8/adduser.8 @@ -1,295 +1,295 @@ .\" Copyright (c) 1995-1996 Wolfram Schneider . Berlin. .\" 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. .\" .\" %Id: adduser.8,v 1.12.2.8 1998/03/18 16:14:48 hoek Exp % .\" jpman %Id: adduser.8,v 1.4 1997/08/07 17:53:51 ken Stab % .\" .Dd January 9, 1995 .Dt ADDUSER 8 .Os FreeBSD 2.1 .Sh 名称 .Nm adduser .Nd 新しいユーザを加えるためのコマンド .Sh 解説 .Nm adduser .Oo .Fl batch Ar username .Op Ar group Ns , Ns Op Ar group,... .Op Ar class .Op Ar fullname .Op Ar password .Oc .br .Op Fl check_only .br .Op Fl class Ar login_class .br .Op Fl config_create .br .Op Fl dotdir Ar dotdir .br .Op Fl group Ar login_group .br .Op Fl h | help .br .Op Fl home Ar home .br .Op Fl message Ar message_file .br .Op Fl noconfig .br .Op Fl shell Ar shell .br .Op Fl s | silent | q | quiet .br .Op Fl uid Ar uid_start .br .Op Fl v | verbose .Sh 解説 .Nm は新しいユーザを加えるための簡単なプログラムです。 .Nm はパスワード, グループ, シェル等のデータベースをチェックし、 passwd/group の登録を行い、 .Ev HOME ディレクトリとドットファイルを作成し、 新しいユーザに歓迎メッセージを送ります。 .Sh 制限事項 .Bl -tag -width Ds -compact .It Sy username ログイン名は、小文字もしくは数字だけからなる最大 8 文字の文字列でな ければなりません ( .Xr setlogin 2 のバグの章を参照してください)。この制限の理由は、 ``歴史的な'' 物で す。美的な理由からこの制限を破りたいとする人々はいつもいましたが、 UNIX における基本的なパラメータを変更するほどの重要な理由ではありま せんでした。 .Pa /usr/include/utmp.h ファイル内の .Dv UT_NAMESIZE パラメータを変更し、全てを再コンパイルすることで、変更できますが、コ ンパイル済みのプログラムや名前の8文字制限を前提としたソースコード、 そして NIS については、問題が起こるでしょう。 NIS のプロトコルは、ユー ザ名を 8 文字と定めています。電子メールアドレスとして、もっと長いロ グイン名を必要とする場合には、別名を .Pa /etc/aliases ファイルに定義することができます。 .It Sy fullname 姓と名です。 .Ql Pa \: (コロン) は、使えません。 .It Sy shell シェルデータベースに定義されている有効なシェル、もしくは、 sliplogin と pppd だけが有効です。 .It Sy uid 自動生成されますが、自分で指定することもできます。ただし、 32000 よ りも小さい数字でなければなりません。 .It Sy gid/login group あなたが指定したものです。さもなければ、自動的に生成されます。 .It Sy password 定義した時には、パスワードは .Xr crypt 3 を利用して暗号化されます。 .El .Sh 一意なグループ ひょっとして、あなたは、この方法ではできても他のほとんどの方法ではう まく行かないことがあるのを見逃しているかもしれません。個々のユーザを そのユーザ独自のグループに入れることで、 umask を 002 としておいても 安全になり、ホームディレクトリにファイルを作っても、他の人にファイル を読まれる心配がなくなります。 .Pp 共有場所を作るためには、 (freefall における cvs や ncvs のように) uid/gid を別に設けて、ユーザを個別にその新しいグループに入れることで、 その場所へのアクセスを可能とすべきです。 .Pp この uid/gid の管理モデルは、たくさんのユーザをグループにまとめるよ り柔軟性があり、共有場所で仕事をする時に umask をいじり回さずにすみ ます。 .Pp この方法をほぼ 10 年間使っていますが、ほとんどの場合に使えることがわ かり、じゃまになったことはありませんでした。 (Rod Grimes) .Sh 設定 .Bl -enum .It 内部変数を読込みます。 .It 設定ファイル (/etc/adduser.conf) を読込みます。 .It コマンドラインオプションを解析します。 .El .Sh オプション .Bl -tag -width Ds .It Sy -batch username [group[,group]...] [class] [fullname] [password] バッチモードです。 列挙されるグループは、ユーザがメンバとなる二番目のグループであり、 デフォルトのログイングループ以外のものを書きます。 ヌル文字列の引数を埋め草として使用することができ、 この場合デフォルト値の動作となります。 .It Sy -check_only /etc/passwd, /etc/group, /etc/shells をチェックし、終了します。 .It Sy -class Ar login_class デフォルトのログインクラスを設定します。 .It Sy -config_create 新しい設定を設定ファイルに書込み、メッセージファイルを作成して、 終了します。 .It Sy -dotdir Ar directory ファイルを .Ar directory から、新しいユーザの .Ev HOME ディレクトリへコピーします。 .Ql Pa dot.foo というファイルは、 .Ql Pa .foo という名前に変更されます。 .Ar directory として .Ar no が指定された場合には、コピーを行いません。セキュリティ的な理由から全 -てのファイルはオーナに対して読み書き可能となり、グループや他の人達に -対しては書込み可能にはなりません。また、以下のファイルは、オーナに +てのファイルは所有者に対して読み書き可能となり、グループや他の人達に +対しては書込み可能にはなりません。また、以下のファイルは、所有者に 対してのみ読み書き実行可能となります。 .Pa .rhost , .Pa .Xauthority , .Pa .kermrc , .Pa .netrc , .Pa Mail , .Pa prv , .Pa iscreen , .Pa term .It Sy -group Ar login_group ログイングループの指定です。 .Ar USER はユーザ名がログイングループとして使用されることを意味します。 .It Sy -help,-h,-? オプションの要約を表示して、終了します。 .It Sy -home Ar partition 全てのユーザがホームディレクトリを持つデフォルトのディレクトリ (home partition) を指定します。 .It Sy -message Ar file 新しいユーザに .Ar file の歓迎メッセージを送ります。 .Ar file が .Ar no であった時にはメッセージは送りません。 .It Sy -noconfig デフォルトの設定ファイルを読みません。 .It Sy -shell Ar shell 新しいユーザに対するデフォルトのシェルを指定します。 .It Sy -silent,-s,-quiet,-q 警告や質問、バグの報告を少ししか行いません。 .It Sy -uid Ar uid ユーザ id を .Ar uid かそれ以上にします。 .It Sy -verbose,-v 警告と質問をたくさん行います。初心者ユーザにはおすすめです。 .Sh フォーマット .Bl -tag -width Ds -compact .Ql Pa # はコメントです。 .It Sy 設定ファイル .Nm はこのファイルを読み書きします。 より詳しくは、 .Pa /etc/adduser.conf を見てください。 .It Sy メッセージファイル このファイル内では変数は評価されます。 より詳しくは、 .Pa /etc/adduser.message を見てください。 .El .Sh 使用例 .Pp $ adduser .Pp adduser を会話モードで動かします。 .Pp $ adduser -batch baerenkl guest,staff,baer '' 'Teddy II' qwerty7 .Pp ユーザ名 'baerenkl' ログイングループ名 'baerenkl' のユーザを作成 します。このユーザは、 guest, staff, baer グループにも入っています。 デフォルトのログインクラスを用います。 このユーザーの本名 (氏名) は 'Teddy II' であり、パスワードは 'qwerty7' です (が、こんなパスワードを使ってはいけません !)。 .Ev HOME ディレクトリは、 .Pa /home/baerenkl に作られ、全てのファイルやディレクトリが、 .Pa /usr/share/skel から、 .Pa /home/baerenkl にコピーされます。ユーザ 'baerenklau' に対して、歓迎メッセージが送ら れます。 .Pp $ adduser -uid 5000 -group guest -message no -batch vehlefan .Pp ユーザ 'vehlefan' を作成します。ログイングループは guest で ユーザ id は 5000 以上で利用可能な最小のもの (例えば、5007など) となります。 他に入っているグループはなく、本名もパスワードもありません。歓迎 メッセージも送られません。 .Sh 関連ファイル .Bl -tag -width /etc/master.passwdxx -compact .It Pa /etc/master.passwd ユーザのデータベース .It Pa /etc/group グループのデータベース .It Pa /etc/shells シェルデータベース .It Pa /etc/login.conf ログインクラスデータベース .It Pa /etc/adduser.conf adduser 用の設定ファイル .It Pa /etc/adduser.message adduser 用のメッセージファイル .It Pa /usr/share/skel ログインディレクトリの雛型 .It Pa /var/log/adduser adduser の ログ記録ファイル .El .Sh 関連項目 .Xr chpass 1 , .Xr finger 1 , .Xr passwd 1 , .Xr setlogin 2 , .Xr yp 4 , .Xr aliases 5 , .Xr group 5 , .Xr login.conf 5 , .Xr passwd 5 , .Xr shells 5 , .Xr addgroup 8 , .Xr pwd_mkdb 8 , .Xr rmgroup 8 , .Xr rmuser 8 , .Xr vipw 8 .\" .Sh バグ .Sh 歴史 .Nm コマンドは .Fx 2.1 から導入されました. diff --git a/ja/man/man8/apmconf.8 b/ja/man/man8/apmconf.8 index 7651ff6b2a..ef25955fc5 100644 --- a/ja/man/man8/apmconf.8 +++ b/ja/man/man8/apmconf.8 @@ -1,64 +1,64 @@ .\" LP (Laptop Package) .\" .\" Copyright (c) 1994 by HOSOKAWA, Tatsumi .\" .\" This software may be used, modified, copied, and distributed, in .\" both source and binary form provided that the above copyright and .\" these terms are retained. Under no circumstances is the author .\" responsible for the proper functioning of this software, nor does .\" the author assume any responsibility for damages incurred with its .\" use. .\" jpman %Id: apmconf.8,v 1.3 1997/06/28 09:27:16 jsakai Stab % .Dd November 1, 1994 .Dt APMCONF 8 .Os .Sh 名称 .Nm apmconf .Nd APM BIOS ドライバの設定を行う .Sh 書式 .Nm apmconf .Op Fl e .Op Fl d .Op Fl h .Op Fl t .Sh 解説 .Nm apmconf は、ラップトップ PC 上の APM (Advanced Power Management) BIOS ドライバ .Xr apm 4 の設定のために使われます。 .Pp 以下のオプションが利用可能です。 .Bl -tag -width indent .It Fl e パワー管理を有効にします。 .It Fl d パワー管理を無効にします。 .El .Pp これらのオプションは、 .Xr apm 4 によって提供されるパワー管理機能を有効もしくは無効とします。 .Bl -tag -width indent .It Fl h -カーネルのコンテクストスイッチルーチン内の HLT 命令を有効とします。 +カーネルのコンテキストスイッチルーチン内の HLT 命令を有効とします。 .It Fl t -カーネルのコンテクストスイッチルーチン内の HLT 命令を無効とします。 +カーネルのコンテキストスイッチルーチン内の HLT 命令を無効とします。 .El .Pp これらのオプションは、ほとんど全ての APM の実装においては必要では ありませんが、 .Dq Pa Idle CPU 呼び出しが CPU クロックの減速と HLT 命令を同時に実行する場合は、 そのピーク性能の減少からシステムをまもるために .Fl t オプションが必要です。 詳細については、 .Xr apm 4 を参照してください。 .Sh 関連項目 .Xr apm 4 , .Xr apm 8 , .Xr zzz 8 .Sh 作者 細川 達己 ( 慶応大学, 日本 ) diff --git a/ja/man/man8/bootpd.8 b/ja/man/man8/bootpd.8 index b9bb53cfd9..7ff92ced50 100644 --- a/ja/man/man8/bootpd.8 +++ b/ja/man/man8/bootpd.8 @@ -1,315 +1,313 @@ .\" Copyright (c) 1988, 1989, 1991 Carnegie Mellon University .\" .\" %Header: /home/ncvs/src/libexec/bootpd/bootpd.8,v 1.4.2.5 1998/02/18 05:55:24 jkh Exp % .\" jpman %Id: bootpd.8,v 1.4 1997/10/11 07:39:12 horikawa Stab % .\" .TH BOOTPD 8 "November 06, 1993" "Carnegie Mellon University" .SH 名称 bootpd, bootpgw \- インターネットブートプロトコルサーバ/ゲートウェイ .SH 書式 .B bootpd [ .B \-i .B \-s .B \-t timeout .B \-d level .B \-c chdir\-path ] [ .I bootptab [ .I dumpfile ] ] .br .B bootpgw [ .B \-i .B \-s .B \-t timeout .B \-d level ] server .SH 解説 .I bootpd は RFC951, RFC1532, RFC1533 で定義された インターネットブートプロトコル (BOOTP) サーバを実装したものです。 .I bootpgw は、要求と応答を、あるサブネット上のクライアントと、 別のサブネット上の BOOTP サーバ (すなわち .IR bootpd ) との間で転送するのに使われる、単純な BOOTP ゲートウェイを実装しています。 .I bootpd または .I bootpgw は BOOTREPLY パケットを転送しますが、 .I bootpgw だけが BOOTREQUEST パケットを転送します。 .PP 各々のネットワークセグメントにつき、通常一つのホストで、 以下の行のどれかをファイル .IR /etc/inetd.conf に含めることにより、 .I bootpd あるいは .I bootpgw が .I inetd から起動されるように設定されます: .IP bootps dgram udp wait root /usr/libexec/bootpd bootpd /etc/bootptab .br bootps dgram udp wait root /usr/libexec/bootpgw bootpgw server .PP この動作モードは「inetd モード」と呼ばれ、 ブート要求が到着した時にだけ .I bootpd (あるいは .IR bootpgw ) を開始します。 もし最後にパケットを受信してから 15 分以内に別のパケットを受信しないのなら、 システムの資源を浪費しないように終了します。 .B \-t オプションがこのタイムアウト時間を制御します (オプション参照)。 .PP 他の通常のコマンドのように単にシェルから起動することで、 .I bootpd (あるいは .IR bootpgw ) を「スタンドアローンモード」( .IR inetd なし) で実行することも可能です。 .I bootpd が大きなコンフィギュレーションデータベースのもとで使われる時には、 inetd モードでの起動時の遅延が クライアントの要求に対する素早い応答を妨げるので、 スタンドアローンモードは特に役に立ちます。 (例えば .IR /etc/rc.local から .I bootpd を呼びだすことによって、 スタンドアローンモードで自動的に起動することができます) .I bootpgw -はコンフィギュレーションファイルを読まないので、 +は設定ファイルを読まないので、 起動時の遅延はかなり小さく、 スタンドアローンモードはあまり役に立ちません。 .PP どちらのプログラムも、inetd から呼び出されたかシェルから呼び出されたかを 自動的に検出し、自動的に適当なモードを選択します。 .B \-s と .B \-i オプションは各々、スタンドアローンモードと inetd モードを強制するのに 使います (オプション参照) .SH オプション .TP .BI \-t \ timeout .I bootpd あるいは .I bootpgw プロセスが終了する前に BOOTP パケットを待つ .I timeout 値 (分単位) を指定します。 もし .I timeout 分内にパケットを受信しなければ、プログラムは終了します。 timeout の値が 0 の場合は「永遠に実行する」という意味です。 スタンドアローンモードでは、このオプションは 0 に強制されます。 .TP .BI \-d \ debug\-level 生成されるデバッグメッセージの量を制御する変数 .I debug\-level を設定します。 例えば、-d4 あるいは -d 4 では、デバッグレベルが 4 に設定されます。 古いバージョンの .IR bootpd との互換性のため、数字のパラメータを省略 (つまり、-d だけ) すると 単にデバッグレベルを一つだけ増加させます。 .TP .BI \-c \ chdir\-path クライアントのブートファイルの存在とサイズを検査する間に .I bootpd で使われるカレントディレクトリを設定します。 クライアントのブートファイルが相対パス名で指定されていて、 .I bootpd が TFTP サーバと同じカレントディレクトリ (典型的には /tftpboot) を必要とするときに有用です。 このオプションは .IR bootpgw によっては認識されません。 .TP .B \-i 強制的に inetd モードにします。 このオプションは時代遅れですが、古いバージョンの .IR bootpd との互換性のために残してあります。 .TP .B \-s 強制的にスタンドアローンモードにします。 このオプションは時代遅れですが、 古いバージョンの .IR bootpd との互換性のために残してあります。 .TP .I bootptab .I bootpd がロードする -コンフィギュレーションファイルの名前を指定します ( +設定ファイルの名前を指定します ( .RI bootpd のみ)。 これはあらかじめ知っているクライアントと そのクライアントのオプションに関するデータベースです。 .TP .I dumpfile .I bootpd が、SIGUSR1 シグナルを受信したときに 内部データベースをダンプするファイルの名前を指定します ( .RI bootpd のみ)。 このオプションは .I bootpd が -DDEBUG フラグ付きでコンパイルされたときだけ認識されます。 .TP .I server .I bootpgw が受信した全ての BOOTREQUEST パケットを転送する、 BOOTP サーバの名前を指定します ( .RI bootpgw のみ)。 .SH 操作 .PP .I bootps ポートに送られたどんなパケットも取り込んで どんな BOOTREPLY パケットも単純に転送するという点で .I bootpd と .I bootpgw の双方が似た動きをします。 BOOTREQUEST の扱いは違います。 .PP .I bootpgw は動作開始時に、コマンド行パラメタとして名前を与えられた BOOTP サーバのアドレスを決めます。 .I bootpgw が BOOTREQUEST パケットを受信したとき、 パケットの「ゲートウェイアドレス」と「ホップ数」フィールドを設定し、 パケットを前に決めたアドレスの BOOT サーバへ転送します。 要求パケットは、 クライアントが少くとも 3 秒は待っているとパケットが示している時にだけ 転送されます。 .PP .I bootpd -は動作開始時にコンフィギュレーションファイル (通常 +は動作開始時に設定ファイル (通常 .IR /etc/bootptab ) を読みこみます。 これで、あらかじめ知っているクライアントと クライアントのオプションに関する内部データベースを初期化します。 この内部データベースは、 .I bootpd -がハングアップシグナル (SIGHUP) を受信したとき、 -またはコンフィギュレーションファイルが変更されたことを +が回線切断シグナル (SIGHUP) を受信したとき、 +または設定ファイルが変更されたことを 発見したときに、再読み込みが行なわれます。 .PP .I bootpd が BOOTREQUEST パケットを受信したとき、 -.\" コンフィギュレーションファイルの変更時刻を検査し、 -.\" 必要ならデータベースの再読み込みをします。それから、 クライアントの要求に一致するデータベースエントリを探します。 もしそのクライアントをあらかじめ知っていれば .I bootpd は前に見付けたデータベースエントリを使って BOOTREPLY パケットを構成し、 (ひょっとしたらゲートウェイを使って) クライアントに返答を送ります。 もしクライアントが未知ならば、(debug > 0 のときは注意を出して) 要求は捨てられます。 .PP .I bootpd が -DDEBUG オプションでコンパイルされていれば、 SIGUSR1 シグナルを送ると内部データベースをファイル .I /tmp/bootpd.dump か、コマンド行パラメータで指定されたダンプファイルに にダンプします。 .PP 初期化の時どちらのプログラムも、 (普通は .IR /etc/services を使う) .I getservbyname を呼ぶことで UDP ポート番号を決定します。 二つのサービス名 (とポート番号) が使われます: .IP bootps \- BOOTP サーバ待機ポート .br bootpc \- BOOTP クライアント届け先ポート .LP もしポート番号が .I getservbyname を使って決定できないときには、 デフォルト値は bootps=67 と bootpc=68 です。 .SH 関連ファイル .TP 20 /etc/bootptab .IR bootpd によって読み込まれるデータベースファイル。 .TP /tmp/bootpd.dump .IR bootpd によって生成されるデバッグダンプファイル。 .TP /etc/services インターネットサービス番号。 .TP /tftpboot TFTP サーバと .IR bootpd で使われる典型的カレントディレクトリ。 .SH バグ 各々のホストエントリは 1024 文字を越えてはいけません。 .SH 功労者 .PP この配布版は現在、 Walter L. Wimer によって 保守されています。 .PP オリジナルの BOOTP サーバは スタンフォード大学の Bill Croft によって 1986 年 1 月に作成されました。 .PP 現在のバージョンの .I bootpd は第一に、Carnegie Mellon University の David Kovar, Drew D. Perkins, Walter L. Wimer の仕事にるものです。 .TP 機能拡張とバグフィクスは以下の方の貢献によります: (アルファベット順) .br Danny Backx .br John Brezak .br Frank da Cruz .br David R. Linn .br Jim McKim .br Gordon W. Ross .br Jason Zions .SH 関連項目 .LP bootptab(5), inetd(8), tftpd(8) .LP DARPA Internet Request For Comments: .TP 10 RFC951 Bootstrap Protocol .TP 10 RFC1532 Clarifications and Extensions for the Bootstrap Protocol .TP 10 RFC1533 DHCP Options and BOOTP Vendor Extensions diff --git a/ja/man/man8/bootpef.8 b/ja/man/man8/bootpef.8 index d2653697b0..547569dc31 100644 --- a/ja/man/man8/bootpef.8 +++ b/ja/man/man8/bootpef.8 @@ -1,49 +1,49 @@ .\" bootpef.8 .\" jpman %Id: bootpef.8,v 1.2 1997/05/17 16:59:57 horikawa Stab % .TH BOOTPEF 8 "4 Dec 1993" "MAINTENANCE COMMANDS" .SH 名称 bootpef \- BOOTP エクステンションファイルコンパイラ .SH 書式 .LP .B bootpef .RI [ "-c chdir" ] .RI [ "-d debug-level" ] .RI [ "-f config-file" ] .RI [ client-name " [...]]" .SH 解説 .B bootpef は、RFC 1497 (tag 18) で示されている .I エクステンションパス ファイルを作成します。 .I client-name が指定されていれば、 .I bootpef はそれらのクライアントのためだけのエクステンションファイルを コンパイルします。 .SH オプション .TP .BI \-c \ chdir\-path .I bootpef がエクステンションファイルを作るカレントディレクトリを指定します。 これは、エクステンションファイル名が相対パスで指定され、 .I bootpef が TFTP サーバと同じカレントディレクトリ (一般には /tftpboot) を使う 必要がある場合に有効です。 .TP .BI \-d \ debug\-level 生成されるデバッグメッセージの量を制御する変数 .I debug\-level を設定します。たとえば、-d4 や -d 4 はデバッグレベルを 4 にセットします。 .TP .BI \-f \ config\-file 各クライアントに送られるオプションデータを指示する -コンフィギュレーションファイルの名前を設定します。 +設定ファイルの名前を設定します。 .SH 関連項目 bootpd(8), tftpd(8) .SH リファレンス .TP RFC951 BOOTSTRAP PROTOCOL (BOOTP) .TP RFC1497 BOOTP Vendor Information Extensions diff --git a/ja/man/man8/chat.8 b/ja/man/man8/chat.8 index 4edcb84467..ad34f8ec8b 100644 --- a/ja/man/man8/chat.8 +++ b/ja/man/man8/chat.8 @@ -1,502 +1,502 @@ .\" -*- nroff -*- .\" manual page [] for chat 1.8 .\" %Id: chat.8,v 1.4.2.2 1997/09/14 20:39:29 jkh Exp % .\" jpman %Id: chat.8,v 1.3 1997/08/31 14:02:42 horikawa Stab % .\" SH section heading .\" SS subsection heading .\" LP paragraph .\" IP indented paragraph .\" TP hanging label .TH CHAT 8 "5 May 1995" "Chat Version 1.9" .SH 名称 chat \- モデム接続の確立を自動化するスクリプト言語 .SH 書式 .B chat [ .I options ] .I script .SH 解説 .LP \fIchat\fR プログラムはコンピュータとモデムの間のメッセージ交換を制御します。 このコマンドの主な目的は、Point-to-Point Protocol デーモン (\fIpppd\fR) と リモートの \fIpppd\fR プロセスの間の接続を確立することです。 .SH オプション .TP .B -f \fI チャットスクリプトを \fIchat file\fR から読み込みます。このオプションと script パラメータとは、互いに排他の関係にあります。 chat コマンドを実行するユーザは、このファイルのリードアクセス権を 持っていなければなりません。このファイルの中では、文字列の区切りとして スペースとタブを使うことができます。 .TP .B -t \fI 文字列の受信待ちのタイムアウトを指定します。もし、タイムリミットまでに 指定された文字列を受信できなかった場合には、応答文字列の送信をおこないません。 この時、かわりの応答文字列が指定されていれば それが送信され、 指定されていなければ スクリプトの実行が失敗します。 スクリプトの実行が失敗すると、\fIchat\fR プログラムは 0 以外のエラーコードを返して終了します。 .TP .B -r \fI レポート文字列を出力するファイルを指定します。 キーワード \fIREPORT\fR を用いると、結果の文字列がこのファイルに 出力されます。このオプションを指定せずに \fIREPORT\fR キーワードを 使用すると、レポート文字列は \fIstderr\fR に出力されます。 .TP .B -e エコーオプションを有効にして開始します。 \fIchat\fR スクリプトの特定の場所において \fIECHO\fR キーワードにて エコーの有効および無効を切り替えることができます。 エコーが有効にされると、モデムからの出力は全て \fIstderr\fR へエコーされます。 .TP .B -v \fIchat\fR スクリプトを冗長モードで実行します。 これを指定すると、\fIchat\fR プログラムはモデムから受信したすべてのテキストと .IR syslogd (8) に送られる出力のログをとります。 冗長トレースのログとりは \fIlocal2\fR ファシリティのレベル \fIinfo\fR でおこなわれ、エラーについてはレベル \fIerr\fR が使われます。 .TP .B -V \fIchat\fR スクリプトを stderr 冗長モードにて実行するように要求します。 \fIchat\fR プログラムは、 モデムから受信する全てのテキストおよび stderr デバイスへ送出する出力文字列をログします。 chat もしくは pppd プログラムを動作させている場所では、 このデバイスは通常ローカルのコンソールです。 stderr が /dev/null にリダイレクトされている場合には、 このオプションはうまく働きません。 pppd が `デタッチ' モードで動作している時がその場合です。 この場合、`-v' オプションを使用して、 セッションを SYSLOG デバイスへ記録してください。 .TP .B script \fI-f\fR オプションのファイルでスクリプトが指定されていなければ、 \fIchat\fR プログラムに対するパラメータ文字列が スクリプトとして読み込まれます。 .SH チャットスクリプト .LP \fIchat\fR スクリプトには通信の手順を定義します。 .LP スクリプトは一つまたはそれ以上の「受信待ち-送信」文字列の組からなり、 それぞれは空白で区切られています。 オプションとして「副受信待ち-副送信」文字列の組を追加することもでき、 その場合には以下の例のようにダッシュで区切ります: .IP ogin:-BREAK-ogin: ppp ssword: hello2u2 .LP これにより、\fIchat\fR プログラムは文字列 "ogin:" の受信待ちをおこないます。 もしもタイムアウトする前にログインプロンプトを受信できなければ、 リモートホストにブレーク信号を送信し、それから文字列 "ogin:" を受信待ちします。 もしも最初の "ogin:" が受信できていれば、ブレーク信号は送信されません。 .LP 一旦ログインプロンプトを受信すると、\fIchat\fR プログラムは文字列 ppp を 送信して、プロンプト "ssword:" の受信を待ちます。 パスワードプロンプトを 受信すると、chat プログラムはパスワード hello2u2 を送信します。 .LP 応答文字列に続いて、通常はキャリッジリターン文字が送られます。 「受信待ち」文字列中では、\\r 文字シーケンスで明示的に指定しないかぎり、 キャリッジリターンは文字列に含まれません。 .LP 目的の文字列を識別するのに必要な部分だけを受信待ち文字列に 指定するようにするべきです。 なぜなら、受信待ち文字列は通常ディスクファイルに記録されるため、 動的に変化する情報を含むことができないからです。 一般には、時刻を表す文字列やネットワーク ID 文字列その他の 変化するデータの塊を受信待ちさせることはできません。 .LP 通信の初期段階では、文字が化けて受信される場合があります。 この場合にも正しく認識ができるように、 文字列 "login:" ではなく "ogin:" を待つようにします。 仮に最初の "l" という文字が化けて受信されたとしますと、 リモートシステムが "login:" を送信したとしても、 その文字列は認識されないことになります。 このため、スクリプトでは "login:" ではなく "ogin:" を、 "password:" ではなく "ssword:" を待つようにします。 .LP 非常に単純なスクリプトは、以下のようになるでしょう: .IP ogin: ppp ssword: hello2u2 .LP 言いかえると、....ogin: を受信待ちして ppp を送信し、...ssword: を 受信待ちして hello2u2 を送信するということになります。 .LP 現実問題としては、単純なスクリプトが使われることはほとんどないでしょう。 少なくとも、最初の受信待ち文字列が受信できなかった場合に、 副受信待ち文字列を実行するようにするべきでしょう。 たとえば、以下のスクリプトを考えてみます: .IP ogin:--ogin: ppp ssword: hello2u2 .LP これは以前に使った単純なものよりも良いスクリプトでしょう。 以前のものと同様に login: プロンプトを待ちますが、もし受信できなかった場合には リターンを一つ送ってから再び login: が送られてくるのを待ちます。 最初のログインプロンプトがラインノイズによって化けたとしても、 空行が送られることで、通常はもう一度ログインプロンプトが送信されます。 .SH コメント コメントを chat スクリプト中に埋め込むことが可能です。 コメントは \fB#\fR (ハッシュ) 文字をカラム 1 から開始する行です。 このようなコメント行は chat プログラムは単に無視します。 「受信待ち」文字列の最初の文字が `#' 文字の場合、 「受信待ち」文字列をクォートする必要があります。 文字 # (ハッシュ)から始まるプロンプトを待ちたい場合には、 以下のように書かねばならないでしょう: .IP # Now wait for the prompt and send logout string .br \'# ' logout .LP .SH 中断文字列 多くのモデムはダイアルの結果を文字列としてレポートします。 これらの文字列は \fBCONNECTED\fR だったり、\fBNO CARRIER\fR や \fBBUSY\fR だったりするでしょう。 モデムが相手との接続に失敗した場合には、スクリプトを終了させたいと 思うことがよくあるでしょう。 問題は、どの文字列を次に受信するかということを、 スクリプトが正確に知ることはできないということです。 ある時には \fBBUSY\fR を受信するかもしれませんが、 次には \fBNO CARRIER\fR を受信するかもしれません。 .LP これらの「中断」文字列は、\fIABORT\fR シーケンスにより スクリプト中に指定することができます。 それは、以下の例のようにスクリプトに指定します: .IP ABORT BUSY ABORT 'NO CARRIER' '' ATZ OK ATDT5551212 CONNECT .LP このシーケンスは受信待ちをおこないません。それから文字列 ATZ を送信します。 受信待ち文字列は \fIOK\fR です。 \fIOK\fR を受信すると、電話をかけるために文字列 ATDT5551212 を送信します。 受信待ち文字列は \fICONNECT\fR です。 文字列 \fICONNECT\fR を受信すると、スクリプトの残りが実行されます。 一方、モデムが話中を検出すると、文字列 \fIBUSY\fR が送られて 中断文字列への一致が起こります。 この一致が起きたことにより、スクリプトは失敗します。 もしも文字列 \fINO CARRIER\fR を受信すると、それは同じ理由で中断されます。 どちらの文字列が受信されても、\fIchat\fR スクリプトは終了します。 .SH CLR_ABORT 文字列 このシーケンスは以前に設定した \fBABORT\fR 文字列をクリアします。 \fBABORT\fR 文字列は規定サイズ(コンパイル時に決定)の配列に保持されます; \fBCLR_ABORT\fR はクリアされたエントリの領域を再要求し、 新たな文字列をそこに格納できるようにします。 .SH SAY 文字列 \fBSAY\fR ディレクティブにて、 script が標準エラー出力を介してユーザ端末ヘ文字列を送ることができます。 \fBchat\fR が pppd から起動される場合、 pppd はデーモンとして実行され(制御端末から切離され)、 標準エラー出力は通常 /etc/ppp/connect-errors へとリダイレクトされます。 .LP \fBSAY\fR 文字列は、シングルクォートもしくはダブルクォートにて 括る必要があります。 出力中にキャリッジリターンおよびラインフィードが必要な場合、 明示的に文字列中に含める必要があります。 .LP SAY 文字列を使用して script の進捗状況メッセージを表示することで、'ECHO OFF' しつつもユーザになにが起っているのか示すことが可能です。 例を示します: .IP ABORT BUSY .br ECHO OFF .br SAY "Dialling your ISP...\\n" .br \'' ATDT5551212 .br TIMEOUT 120 .br SAY "Waiting up to 2 minutes for connection ... " .br CONNECT '' .br SAY "Connected, now logging in ...\n" .br ogin: account .br ssword: pass .br $ \c SAY "Logged in OK ...\n" \fIetc ...\fR .LP このシーケンスは SAY 文字列のみユーザに示し、script の詳細は隠します。 例えば、上記 script を実行した場合、ユーザが見るのは以下です: .IP Dialling your ISP... .br Waiting up to 2 minutes for connection ... Connected, now logging in ... .br Logged in OK ... .LP .SH レポート文字列 \fBレポート\fR 文字列は ABORT 文字列に似ています。 違うのは、その文字列自身とキャリッジリターン等の 次の制御文字までの すべての文字がレポートファイルに書かれるということです。 .LP レポート文字列はモデムのコネクト文字列の転送レートと chat ユーザへのリターン値を切りわけるために使えます。 レポート文字列ロジックの分析は、受信待ち文字列の検索などの 他の文字列処理と同時におこなわれます。 レポート文字列と中断文字列に同じ文字列を使用することも可能ですが、 おそらくあまり使い道がないでしょう。 .LP レポート文字列はプログラムの終了コードに影響を及ぼしません。 .LP これらの「レポート」文字列は、\fIREPORT\fR シーケンスにより スクリプト中に指定することができます。 それは、以下の例のようにスクリプトに指定します: .IP REPORT CONNECT ABORT BUSY '' ATDT5551212 CONNECT '' ogin: account .LP このシーケンスは受信待ちをおこなわず、文字列 ATDT5551212 を送信して 電話をかけます。受信待ち文字列は \fICONNECT\fR です。 文字列 \fICONNECT\fR を受信すると、スクリプトの残りが実行されます。 さらに、文字列 "CONNECT" と、それに続く接続レートなどの 任意の文字がレポートファイルに記録されます。 .\" 原文では expect-file となっているが、report-file の間違いと思われる。 .\" send-pr する予定。 .\" 2.2.2R 対象(1997/06/04) Saeki Takashi .SH CLR_REPORT 文字列 このシーケンスを使用して、以前に設定した \fBREPORT\fR 文字列をクリア できます。 \fBREPORT\fR 文字列は規定サイズ(コンパイル時に決定)の配列に保持されます; \fBCLR_REPORT\fR はクリアされたエントリの領域を再要求し、 新たな文字列をそこに格納できるようにします。 .SH エコー エコーオプションはモデムからの出力を \fIstderr\fR へエコーするか否か を制御します。 このオプションを \fI-e\fR オプションにて設定することができますし、 \fIECHO\fR キーワードにて制御することもできます。 「受信待ち-送信」文字列の組 \fIECHO\fR \fION\fR はエコーを有効にし、 \fIECHO\fR \fIOFF\fR は無効にします。 このキーワードを使用してどの会話を見せるかを選択可能です。 例えば以下の script では: .IP ABORT 'BUSY' .br ABORT 'NO CARRIER' .br '' ATZ .br OK\\r\\n ATD1234567 .br \\r\\n \\c .br ECHO ON .br CONNECT \\c .br ogin: account .LP モデム設定結果およびダイヤル結果は見せませんが、 \fICONNECT\fR (もしくは \fIBUSY\fR) メッセージ語は全てをエコーします。 -.SH ハングアップ -HANGUP オプションはモデムハングアップをエラーと扱うか否かを制御します。 +.SH 回線切断 +HANGUP オプションはモデムの回線切断をエラーと扱うか否かを制御します。 このオプションは、 -システムにダイヤル後にハングアップしコールバックする script 中で有効です。 +システムにダイヤル後に回線切断しコールバックする script 中で有効です。 HANGUP オプションは \fBON\fR もしくは \fBOFF\fR にできます。 .br -HANGUP を OFF に設定しモデムをハングアップ +HANGUP を OFF に設定しモデムを回線切断 (つまりコールバックシステムへの最初のログイン)すると、\fBchat\fR は script の実行を続けます (つまり呼び出しと二度目のログインプロンプトを待ちます)。 呼び出しにて接続後すぐに、\fBHANGUP ON\fR ディレクティブを使用して -通常のハングアップシグナルの動作を戻す必要があります。 +通常の回線切断シグナルの動作を戻す必要があります。 (簡単な) script 例を示します: .IP ABORT 'BUSY' .br '' ATZ .br OK\\r\\n ATD1234567 .br \\r\\n \\c .br CONNECT \\c .br \'Callback login:' call_back_ID .br HANGUP OFF .br ABORT "Bad Login" .br \'Callback Password:' Call_back_password .br TIMEOUT 120 .br CONNECT \\c .br HANGUP ON .br ABORT "NO CARRIER" .br ogin:--BREAK--ogin: real_account .br \fIetc ...\fR .LP .SH タイムアウト タイムアウトの初期値は 45 秒です。これは \fB-t\fR パラメータにより 変更することができます。 .LP 次に受信待ちする文字列のタイムアウト値を変更するには、以下のようにします: .IP ATZ OK ATDT5551212 CONNECT TIMEOUT 10 ogin:--ogin: TIMEOUT 5 assword: hello2u2 .LP これは login: プロンプトを受信待ちする際のタイムアウトを 10 秒に変更します。 さらに password プロンプトを受信待ちする際にはタイムアウトを 5 秒に変更します。 .LP 一旦タイムアウト値が変更されると、次に変更されるまでは そのままになります。 .SH EOT の送信 チャットプログラムは特殊な応答文字列 \fIEOT\fR により、 リモート側へ EOT 文字を送信します。 通常、これはファイル終了を表す文字です。 EOT に続けてリターン文字が送られることはありません。 .PR \fI^D\fR シーケンスを使って EOT を送信文字列に埋め込むことができます。 .SH ブレークの生成 特殊な応答文字列 \fIBREAK\fR により、ブレーク信号が送られます。 ブレークは送信側では特殊な信号として扱われます。 受信側では通常、転送レートの変更要求として処理されます。 これにより、正常に login プロンプトを受信できるまで ブレーク信号を送ることで、リモート側がサポートしている転送レートを 順次切替えさせることができます。 .PR \fI\\K\fR シーケンスを使ってブレーク信号を送信文字列に埋め込むことができます。 .SH エスケープシーケンス 受信待ち文字列と応答文字列には、エスケープシーケンスを指定することができます。 応答文字列では、すべてのエスケープシーケンスが使えます。 受信待ち文字列では、ほとんどのエスケープシーケンスが使えます。 受信待ち文字列では使えないエスケープシーケンスについては、 説明文中にそのことが書かれています。 .TP .B '' 空文字列を受信待ちしたり、送信したりします。 もし、空文字列を送信しようとすると、それはリターン文字を送ることになります。 このシーケンスはアポストロフィ文字またはクォート文字のペアの どちらでもかまいません。 .TP .B \\\\b バックスペース文字を表します。 .TP .B \\\\c 応答文字列の末尾の改行を抑制します。 これは末尾に改行文字のつかない文字列を送る唯一の方法です。 これは送信文字列の最後に置かれなければいけません。 たとえば、文字列 hello\\c は単に h, e, l, l, o という文字だけを送ります。 .I (受信待ち文字列では使えません) .TP .B \\\\d 1 秒のディレイです。プログラムは 1 秒のディレイのために sleep(1) を使います。 .I (受信待ち文字列では使えません) .TP .B \\\\K ブレーク信号を挿入します。 .I (受信待ち文字列では使えません) .TP .B \\\\n 改行文字を送信します。 .TP .B \\\\N 空 (null) 文字を送信します。\\0 でも同じシーケンスを表すことができます。 .I (受信待ち文字列では使えません) .TP .B \\\\p 1 秒以下のポーズです。ディレイ時間は 1/10 秒です。 .I (受信待ち文字列では使えません) .TP .B \\\\q .IR syslogd (8) への文字列出力を抑止します。 かわりに文字列 ?????? がログに出力されます。 .I (受信待ち文字列では使えません) .TP .B \\\\r キャリッジリターン文字を送信または受信待ちします。 .TP .B \\\\s 文字列中のスペース文字を表します。 これはスペースを含む文字列をクォートしたくない場合に使います。 シーケンス 'HI TIM' と HI\\sTIM は等価です。 .TP .B \\\\t タブ文字を送信または受信待ちします。 .TP .B \\\\\\\\ バックスラッシュ文字を送信または受信待ちします。 .TP .B \\\\ddd 8 進数 (ddd) を一つの ASCII 文字に変換し、その文字を送信します。 .I (受信待ち文字列では使えない文字がいくつかあります) .TP .B \^^C C で表現される制御文字に置きかえられます。 例えば、文字 DC1 (17) は \^^Q で表されます。 .I (受信待ち文字列では使えない文字がいくつかあります) .SH 終了コード \fIchat\fR プログラムは以下の終了コードを返します。 .TP .B 0 プログラムは正常終了しました。これは、スクリプトがエラーを起こさずに 実行されて、正常に終了したことを示します。 .TP .B 1 一つまたはそれ以上のパラメータが不正であるか、受信待ち文字列が 内部バッファよりも大きすぎます。これはプログラムが正しく 実行されなかったことを示します。 .TP .B 2 プログラムの実行中にエラーが発生しました。これは、何らかの理由で リードまたはライトの操作が失敗したか、chat が SIGINT のような シグナルを受信したためでしょう。 .TP .B 3 「-副送信」文字列のない\fI受信待ち\fR文字列があり、タイムアウトイベントが 発生しました。これは、スクリプトが正しくプログラムされていないか、 予期しないイベントが発生して受信待ち文字列を見つけられなかったためでしょう。 .TP .B 4 \fIABORT\fR 条件としてマークされた 1 番目の文字列を検出しました。 .TP .B 5 \fIABORT\fR 条件としてマークされた 2 番目の文字列を検出しました。 .TP .B 6 \fIABORT\fR 条件としてマークされた 3 番目の文字列を検出しました。 .TP .B 7 \fIABORT\fR 条件としてマークされた 4 番目の文字列を検出しました。 .TP .B ... その他の終了コードも、\fIABORT\fR 条件としてマークされた文字列を 検出したことを示します。 .LP 終了コードを使うと、どのイベントによりスクリプトが終了したのかを 判断することができます。 つまり、"NO DIAL TONE" を受信したのか "BUSY" を受信したのかを 識別することができるということです。 最初のイベント (BUSY) ならばリトライする価値がありますが、 二つ目のイベント (NO DIAL TONE) だと、 おそらくリトライしてもそれがうまくいく可能性は低いでしょう。 .SH 関連項目 UUCP のドキュメントからも、\fIchat\fR スクリプトに関する 追加情報が得られるでしょう。 \fIchat\fR スクリプトは \fIuucico\fR プログラムで使われる スクリプトによって提示されたアイデアを基にしています。 .LP uucico(1), uucp(1) .SH 著作権 \fIchat\fR プログラムは、パブリックドメインのソフトウェアです。 これは GNU のパブリックライセンス(一般公有使用許諾)とは ことなります。 このプログラムを分割する場合には、その両方を管理するようにしてください。 .\" 原文は The \fIchat\fR program is in public domain. This is not .\" the GNU public license. If it breaks then you get to keep both pieces. .\" 最後の文章にはあまり自信がありません。(^_^;; .\" 2.2.2R 対象(1997/06/26) Saeki Takashi diff --git a/ja/man/man8/comsat.8 b/ja/man/man8/comsat.8 index c98ef8999c..d41e25d30f 100644 --- a/ja/man/man8/comsat.8 +++ b/ja/man/man8/comsat.8 @@ -1,99 +1,99 @@ .\" 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 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. .\" .\" @(#)comsat.8 8.1 (Berkeley) 6/4/93 .\" %Id: comsat.8,v 1.3 1996/09/22 21:53:05 wosch Exp % .\" jpman %Id: comsat.8,v 1.2 1997/03/31 13:32:20 horikawa Stab % .\" .Dd June 4, 1993 .Dt COMSAT 8 .Os BSD 4.2 .Sh 名称 .Nm comsat .Nd biff サーバ .Sh 書式 .Nm comsat .Sh 解説 .Nm comsat は受信メールのレポートを受け取り、 サービスを要求しているユーザに対して通知を行なうサーバプロセスです。 .Nm comsat は、 .Dq biff サービス仕様 ( .Xr services 5 および .Xr inetd 8 を参照) に関連するデータグラムポートのメッセージを受信します。 1 行メッセージは次の形式です: .Pp .Dl user@mailbox-offset[:mailbox-name] .Pp もし、この .Em user -がシステムにログインしていて、割り当てられた端末のオーナ実行ビットが ( +がシステムにログインしていて、割り当てられた端末の所有者実行ビットが ( .Dq Li biff y によって) ON になっていれば、 .Em offset はメールボックスのシークオフセットとして使用され、 メッセージの先頭 7 行か、もしくは 560 文字がユーザの端末に表示されます。 .Dq From , .Dq \&To , .Dq Date , .Dq Subject 以外のメッセージヘッダの一部とみなされる行は、 表示されるメッセージに含まれません。 .Pp mailbox-name を省略した場合, システム標準のメールボックスを監視します。 .Sh 関連ファイル .Bl -tag -width /var/mail/user -compact .It Pa /var/run/utmp 誰がどの端末でログオンしたかを識別します。 .It Pa /var/mail/user システム標準のメールボックスです。 .El .Sh 関連項目 .Xr biff 1 , .Xr inetd 8 .Sh バグ メッセージヘッダのフィルタリングは誤りがちです。 表示される情報は、最低限のものです。 .Pp 現在ログインしているマシン以外のマシンへのメールの到着は、 ユーザに通知されるべきです。 .Pp スクリーン表示を分かりやすくするために、通知は別のウィンドウに 表示されるべきです。 .Sh 歴史 .Nm コマンドは .Bx 4.2 から登場しました。 diff --git a/ja/man/man8/config.8 b/ja/man/man8/config.8 index 41fd444ed1..ee8f75f91b 100644 --- a/ja/man/man8/config.8 +++ b/ja/man/man8/config.8 @@ -1,175 +1,175 @@ .\" Copyright (c) 1980, 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 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. .\" .\" @(#)config.8 8.2 (Berkeley) 4/19/94 .\" jpman %Id: config.8,v 1.2 1997/03/31 13:33:05 horikawa Stab % .\" .Dd April 19, 1994 .Dt CONFIG 8 .Os BSD 4 .Sh 名称 .Nm config .Nd システムを構築するために必要なファイルの作成 .Sh 書式 .Nm config .Op Fl gpn .Ar SYSTEM_NAME .Sh 解説 これは古いバージョンの .Nm プログラムです。 このプログラムは、古いオートコンフィギュレーションスキームを理解します。 このスキームは HP300, i386, DECstation やその派生プラットフォームにて 使用されます。 新しいバージョンの config は SPARC プラットフォームで使用されます。 あなたが使用しているアーキテクチャに適合したバージョンの .Nm のみがあなたのマシンにインストールされているでしょう。 .Pp .Nm -は、システムの構成を記述したコンフィギュレーションファイル +は、システムの構成を記述した設定ファイル .Ar SYSTEM_NAME にもとづいてシステムを構築するために必要なファイルを作成します。 別のファイルが、 .Nm に対し、 システム生成に必要なファイルと、 構成依存ファイルセットにより追加されるファイルとを指示します。 構成依存ファイルセットは、固有マシン用代替ファイルを指定します (以降に示す .Sx 関連ファイル を参照)。 .Pp オプションとオペランドしては以下のものがあります: .Pp .Bl -tag -width SYSTEM_NAME .It Fl g システムのデバッグのための設定をします。 .It Fl p プロファイリングを行うシステムを構築します。プロファイルを行うものは例えば .Xr kgmon 8 や .Xr gprof 1 などです。 .Fl p オプションを 2 度以上指定すると、 .Nm より詳細なプロファイリングを行うシステムを構築します。 .It Fl n 以前のコンパイル用ディレクトリを削除しません(以降参照)。 .It Ar SYSTEM_NAME .Ar SYSTEM_NAME -はシステムコンフィギュレーションファイルの名前であり、システムコンフィギュレーションファイル +はシステム設定ファイルの名前であり、システム設定ファイル にはデバイスの仕様、構築するシステムのオプション、その他のシステムパラメータの記述をします。 .El .Pp .Nm はシステムソースの .Pa conf サブディレクトリで起動します(通常 .Pa /sys/ARCH/conf )。 .Nm は必要により .Pa ../../compile/SYSTEM_NAME ディレクトリを作成し、そこにすべての出力ファイルを置きます。 .Fl n オプションが指定されているか、環境変数 .Ev NO_CONFIG_CLOBBER が設定されていないと、ディレクトリが既に存在する場合にはあらかじめ 削除されます。 .Nm の出力は多くのファイルです; .Tn i386 の場合は次のようなファイルになります: .Pa ioconf.c , システムに接続された I/O デバイスの記述; .Pa vector.h , 割り込み計測関連のマクロ定義; .Pa Makefile , .Xr make 1 がシステム構築に使用する; ヘッダファイル, システムに組み込まれる多くのデバイスに関する定義; -スワップ構成ファイル, +スワップ設定ファイル, スワップ、ルートファイルシステム、引数処理、システムダンプに使用する ディスク領域に関する定義。 .Pp .Nm の実行後は、 .Dq Li make depend を Makefile が作成されたディレクトリで実行する必要があります。 .Nm は正常終了すると、これを促すメッセージ表示を行います。 .Pp .Nm が、これとは異なるエラーメッセージ表示を行った場合には、 -コンフィギュレーションファイルの記述の誤りを修正し、再度 +設定ファイルの記述の誤りを修正し、再度 .Nm を実行する必要があります。 コンフィギュレーションでエラーとなったシステムをコンパイルしようとしても、 おそらく失敗するでしょう。 .Pp -コンフィギュレーションファイル中に +設定ファイル中に オプション "INCLUDE_CONFIG_FILE" を指定した場合、 該ファイル全体が作成されるカーネルに埋め込まれます。 これは、 .Xr strings 1 によって該ファイルをカーネルから引き出す事が出来ることを意味します。 .Pp strings | grep ___ によって構成情報を表示できます。 .Sh 関連ファイル .Bl -tag -width /sys/i386/conf/Makefile.i386 -compact .It Pa /sys/conf/files システム生成に必要な共通のファイルのリスト .It Pa /sys/i386/conf/Makefile.i386 .Tn i386 用の一般的な makefile .It Pa /sys/i386/conf/files.i386 .Tn i386 特有のファイルのリスト .It Pa /sys/i386/conf/devices.i386 .Tn i386 特有の、名前からメジャーデバイスへのマップ .It Pa /sys/i386/conf/files. Ns Em ERNIE .Em ERNIE システム特有のファイルのリスト .El .Sh 関連項目 セクション 4 にある、デバイスのマニュアルの書式の部分。 .Rs .%T "Building 4.3 BSD UNIX System with Config" .Re .Sh バグ エラーメッセージにおいて報告される行番号は1行ずれます。 .Sh 歴史 .Nm コマンドは .Bx 4.1 から登場しました。 diff --git a/ja/man/man8/dm.8 b/ja/man/man8/dm.8 index 376ec8adbb..7cc0f1ee61 100644 --- a/ja/man/man8/dm.8 +++ b/ja/man/man8/dm.8 @@ -1,111 +1,111 @@ .\" Copyright (c) 1987, 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 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. .\" .\" @(#)dm.8 8.1 (Berkeley) 5/31/93 .\" jpman %Id: dm.8,v 1.3 1997/09/05 16:44:02 taku Stab % .\" .Dd May 31, 1993 .Dt DM 8 .Os .Sh 名称 .Nm dm .Nd ダンジョンマスタ .Sh 書式 .Nm ln .Fl s Cm dm Ar game .Sh 解説 .Nm dm はゲームプレイを統制するプログラムです。 ユーザは、プレイしたいゲームの名前で .Nm dm を起動することになります。それには、 .Pa /usr/games 中の統制対象となるゲームの名前すべてで .Nm dm へのシンボリックリンクをつくります。 これらのゲームのバイナリ本体は、 .Dq 隠された ディレクトリ .Pa /usr/games/hide に置かなくてはなりません。 このディレクトリは .Nm dm プログラムのみアクセス可能となっているでしょう。 .Nm dm は要求されたゲームを使用可能か判定し、もし使用可能ならば実行します。 ファイル .Pa /etc/dm.conf がどのゲームを実行可能かどうかを制御します。 .Pp ファイル .Pa /etc/nogames を使用すると、ゲームプレイを .Dq 禁止 します。 このファイルが存在すると、ゲームプレイを許しません; ゲームをしようとしたユーザに対して、このファイルの内容を表示します。 .Sh 関連ファイル .Bl -tag -width /var/log/games.log -compact .It Pa /etc/dm.conf -構成ファイル +設定ファイル .It Pa /etc/nogames ゲームプレイを禁止 .It Pa /usr/games/hide ``実際の'' バイナリを保持するディレクトリ .It Pa /var/log/games.log ゲームをログするファイル .El .Sh 関連項目 .Xr dm.conf 5 .Sh バグ .Nm dm が .Dq games に setuid されたゲームを走らせることで、問題が 2 つ出てきます。 第 1 に、 .Tn UNIX コマンドの実行をユーザに許すゲームは、 コマンド実行前に実/実効ユーザ ID 両方を適切に設定しなければならないことです。 おそらくより重要なことは、 .Nm dm を .Dq games 以外に setuid してはならないことです。 これを守っておけば、ゲームとの妥協は、 自己の意志でゲームをプレイする能力のみに帰します。 第 2 は、それまで setuid させて走らせずに済んでいたゲームで、 ユーザファイルにアクセスするものは、 修正しなければならないかもしれないことです。 .Sh 歴史 .Nm dm コマンドは .Bx 4.3 tahoe から登場しました。 diff --git a/ja/man/man8/dumpon.8 b/ja/man/man8/dumpon.8 index 3c1b445371..322a64f631 100644 --- a/ja/man/man8/dumpon.8 +++ b/ja/man/man8/dumpon.8 @@ -1,105 +1,105 @@ .\" Copyright (c) 1980, 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 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: @(#)swapon.8 8.1 (Berkeley) 6/5/93 .\" jpman %Id: dumpon.8,v 1.3 1997/08/16 13:12:52 horikawa Stab % .\" %Id: dumpon.8,v 1.3 1996/08/23 00:55:54 mpp Exp % .\" .Dd May 12, 1995 .Dt DUMPON 8 .Os FreeBSD 2.1 .Sh 名称 .Nm dumpon .Nd クラッシュダンプ用デバイスの指定 .Sh 書式 .Nm dumpon .Op Fl v .Ar special_file .Sh 解説 .Nm dumpon は、パニック時にカーネルがクラッシュダンプをセーブするデバイスを 指定するのに用いられます。 安全のため、 .Xr config 8 への入力において .Dq dumps on 記述がされていない限り、 システムはダンプエリアなしで開始します。 -ダンプデバイスは、コンフィギュレーションファイル中で指定された +ダンプデバイスは、設定ファイル中で指定された スワップエリアのひとつでなければならず、 また、少なくとも物理メモリ分のサイズがなければなりません。 普通、 .Nm dumpon は、システムのマルチユーザ初期化ファイル .Pa /etc/rc の中で .Xr savecore 8 の実行前に呼び出されます。 .Fl v オプションを指定すると、 .Nm はその処理に関する詳細情報を出力します。 .Pp .Nm プログラムの動作は、 .Xr sysctl 3 の MIB 変数 .Dq kern.dumpdev に指定された .Ar special_file のデバイス番号を設定するか、 あるいは .Ar special_file が文字列 .Dq Li off の場合は .Dv NODEV (ダンプはとらないことを意味します) を設定する、というものです。 .Sh 関連項目 .Xr sysctl 3 , .Xr init 8 , .Xr rc 8 , .Xr savecore 8 .Sh 関連ファイル .Bl -tag -width /dev/[ws]d?b -compact .It Pa /dev/[ws]d?b 標準のページングデバイス .El .Sh バグ クラッシュダンプをとるときには 既にファイルシステムレイヤは動作していないので、 クラッシュダンプを直接ファイルに落すことはできません。 .Sh 歴史 .Nm コマンドは .Fx 2.1 で登場しました。 diff --git a/ja/man/man8/fdcontrol.8 b/ja/man/man8/fdcontrol.8 index 4358eefa79..9d93fae0c0 100644 --- a/ja/man/man8/fdcontrol.8 +++ b/ja/man/man8/fdcontrol.8 @@ -1,104 +1,104 @@ .\" .\" Copyright (C) 1994 by Joerg Wunsch, Dresden .\" 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(S) ``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(S) 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. .\" .\" jpman %Id: fdcontrol.8,v 1.3 1997/08/16 13:14:53 horikawa Stab % .Dd May 22, 1994 .Os .Dt FDCONTROL 8 .Sh 名称 .Nm fdcontrol .Nd フロッピディスクパラメータの変更 .Sh 書式 .Nm fdcontrol .Op Fl d Ar 0|1 .Ar device .Nm fdcontrol .Op Fl s .Ar device .Sh 解説 .Nm fdcontrol は .Ar device で指定したフロッピディスクデバイスの実行時の振る舞いを変更します。 .Ar device はキャラクタデバイスでなければなりません。 .Pp 現在のところ .Nm fdcontrol では、 フロッピディスクドライブのデバイスパラメータの指定 .Po .Fl s , これがデフォルトモードでもあります .Pc や、フロッピドライバが .Em DEBUG オプション付きでカーネルに組み込まれている場合には ドライバのデバッグレベルの変更 .Pq Fl d を行なうことができます。 .Pp これらの操作は他に悪影響を及ぼす可能性があるため、 この中で行なわれる .Xr ioctl 2 コマンドの実行はスーパユーザに限定されています。 .Pp 新しいパラメータ指定を要求すると、 .Nm は調整可能な各パラメータをユーザに問い合わせてきます。 これらは現在使われている値がデフォルト値となっています。 .Sh 診断 内部で呼び出される .Xr ioctl 2 のエラーコードが .Xr perror 3 によって表示されます。 .Sh バグ .Nm コマンドは現在開発途上です。 ユーザインタフェースはややお粗末で、将来は変更される可能性があります。 コマンドラインから何でも変更できるようなオプション整備も必要でしょう。 .Pp 現実のドライバはデバッグレベルとして .Pq 0 and 1 しかサポートしていません。 デバッグレベル 1 にすると非常に多量の出力を生成するので、 -よく注意して使わないと syslog をオーバフローさせかねません。 +よく注意して使わないと syslog をあふれさせかねません。 .Sh 関連項目 .Xr ioctl 2 , .Xr perror 3 , .Xr fdc 4 .Sh 歴史 .Nm fdcontrol は現在開発途上です。 そのユーザインタフェースと全体機能は、 将来改良あるいは変更される可能性があります。 .Sh 作者 本プログラムは .if n Joerg Wunsch, .if t J\(:org Wunsch, Dresden から寄贈されました。 diff --git a/ja/man/man8/fdisk.8 b/ja/man/man8/fdisk.8 index 00c158a08f..94c1c7ef08 100644 --- a/ja/man/man8/fdisk.8 +++ b/ja/man/man8/fdisk.8 @@ -1,435 +1,435 @@ .Dd October 4, 1996 .\" jpman %Id: fdisk.8,v 1.4 1997/07/26 21:56:04 horikawa Stab % .Dt FDISK 8 .\".Os BSD 4 .Sh 名称 .Nm fdisk .Nd DOS パーティションのメンテナンスプログラム .Sh 書式 .Nm fdisk .Op Fl i .Op Fl u .Op Fl a .Op Fl 1234 .Op Ar disk .Bl -tag -width time .Nm fdisk .Op Fl f Ar configfile .Op Fl i .Op Fl v .Op Fl t .Op Ar disk .Sh 前置き BIOS がカーネルをブートするために、 一定の約束をちゃんと守らねばなりません。 ディスクのセクタ 0 はブートコード、パーティションテーブル、 マジックナンバを含んでいなければならないのです。 BIOS パーティションはディスクをいくつかの部分に分けるのにも使われます。 BIOS はセクタ 0 を読み込んできて、(本当にそのコードを使うか?) マジックナンバを確かめます。 それから、 セクタ 0 に書き込まれた 4 つの BIOS パーティションを探して、 それらのどれが .Em アクティブ かを決定します。 それから、二次ブートブロックを .Em アクティブ パーティションから読み込み、それを実行します。 DOS では一つの以上のパーティションと一つの .Em アクティブ を持てます。 DOS の .Nm プログラムは、 ディスク空間を一つ以上のパーティションに分割して、一つの .Em アクティブ を設定することができます。 .Sh 解説 .Pp FreeBSD のプログラム .Nm は、DOS のそれと似た目的に役立ちます。 第一の形は、パーティション情報の表示や、 パーティションテーブルの対話的な編集に使われます。 第二の形は、 .Ar configfile を使ってパーティションテーブルを書き込むという使い方であり、 他のスクリプト/プログラムから利用するよう設計されています。 .Pp オプション: .It Fl u ディスクのセクタ 0 を更新 (編集) するのに使われます。 .Fl f があるときには無視されます。 .It Fl i ディスクのセクタ 0 を初期化します。 もし .Fl f がなければ、 .Fl u の意味も含みます。 .It Fl a アクティブパーティションの変更のみを行ないます。 .Fl f があるときには無視されます。 .It Fl 1234 一つの fdisk エントリの操作だけを行ないます。 .Fl f があるときには無視されます。 .It Fl f Ar configfile パーティションの値をファイル .Ar configfile を使って設定します。 .Fl i もあるときには、 .Ar configfile が読み込まれるに先立って、 存在するパーティションは全部消され(つまり「未使用」の印をつけられる) ますが、この場合を除いて、 .Ar configfile はいつも存在するパーティションの変更を行ないます。 .Ar configfile は "-" であってもよく、この場合 .Ar 標準入力 が読まれます。 ファイルの構文は、以降の -.Em コンフィギュレーションファイル +.Em 設定ファイル の節をご覧下さい。 .Pp .Em 警告: .Fl f が使われたときには、 (対話モードで尋ねられるように) 本当にパーティションテーブルを書き込むのかどうかを尋ねられません。 用心して使うこと! .It Fl t テストモード; パーティションテーブル値を書き込みません。一般に .Fl f オプションを付けて、パーティションテーブルに書き込まれるはずのものを 見るのに使われます。 .Fl v の意味を含みます。 .It Fl v 冗長になります。 .Fl f が使われたときには、 .Nm はディスクに書き込まれるパーティションテーブルを表示します。 .El .Pp 最後のディスク名 .Ar disk は、 .Sq 裸の ディスク名だけ、 つまり .Ql sd0 か、あるいは .Pa /dev の下に完全に限定されたデバイスノードで与えることができます。 もし省略された場合、ディスク .Ql wd0 , .Ql sd0 , と .Ql od0 が、一つが応答して見付かるまで この順序で検索されます。 .Pp 引数なしで呼び出されたときには、 セクタ 0 パーティションテーブルを表示します。 例えば: .Bd -literal ******* Working on device /dev/rwd0 ******* parameters extracted from in-core disklabel are: cylinders=769 heads=15 sectors/track=33 (495 blks/cyl) parameters to be used for BIOS calculations are: cylinders=769 heads=15 sectors/track=33 (495 blks/cyl) Warning: BIOS sector numbering starts with sector 1 Information from DOS bootblock is: The data for partition 1 is: sysid 165,(FreeBSD/NetBSD/386BSD) start 495, size 380160 (185 Meg), flag 0 beg: cyl 1/ sector 1/ head 0; end: cyl 768/ sector 33/ head 14 The data for partition 2 is: sysid 164,(unknown) start 378180, size 2475 (1 Meg), flag 0 beg: cyl 764/ sector 1/ head 0; end: cyl 768/ sector 33/ head 14 The data for partition 3 is: The data for partition 4 is: sysid 99,(ISC UNIX, other System V/386, GNU HURD or Mach) start 380656, size 224234 (109 Meg), flag 80 beg: cyl 769/ sector 2/ head 0; end: cyl 197/ sector 33/ head 14 .Ed .Pp このディスクは、たまたまディスク全体を満す 3 つのパーティションに分割されています。 二つ目のパーティションは最初のパーティションの最後に重なっています。 (デバッグ目的に使われます) .Bl -tag -width "cyl, sector と head" .It Em "sysid" パーティションのラベル付に使われます。 FreeBSD ではマジックナンバ 165 (10進) A5 (16進)を予約しています。 .It Em "start と size" パーティションのセクタ単位での 開始アドレスとサイズです。 .It Em "flag 80" これがアクティブパーティションであることを指定します。 .It Em "cyl, sector と head" パーティションの 開始アドレスと終了アドレスを指定するのに使われます。 .It Em "注釈:" これらの数字は、 BIOS の理解するディスクジオメトリを使って計算され、 ブートブロックに保存されます。 .El .Pp フラグ .Fl i または .Fl u は、 もし .Fl f オプションが使われていない限り、 パーティションデータを更新すべきであることを指示します。 もし .Fl f がなければ、 .Nm プログラムは対話モードに入ります。 このモードでは明示的に指示しない限り、どんなデータも変更しないように 設計されています。 .Nm はこのような振舞いを保証するよう、質問のデフォルトを選択しています。 .Pp .Nm は各々のパーティションを表示し、 それを編集したいかどうかを尋ねます。 yes と答えたら、 古い値を表示し、新しい値を尋ねて 各々のフィールドを進みます。 一つのパーティションが終了したら、 .Nm はそれを表示して、それで正しいかどうかを尋ねます。 そして .Nm は次のエントリに進みます。 .Pp .Em cyl, sector, と .Em head のフィールドを正しく得るにはちょっとした芸当が要ります。 そのためデフォルトでは、 .Nm が代わって計算しますが、選択してそれらの値を指定することもできます。 .Pp 全てのパーティションが進行した後、 .Em アクティブ パーティション変更をすることができます。 最後に、 最初のセクタのデータが全部集めれらたときに、 本当にセクタ 0 を書換えても良いか尋ねられます。 yes と答えた場合だけ、データはディスクに書き込まれます。 .Pp .Fl u フラグと .Fl i の間の違いは、 .Fl u フラグはディスク上にあるフィールドの値を編集するだけですが、 一方 .Fl i フラグはセクタ 0 を "初期化" するのに使われます; ディスク全体を FreeBSD 用に使えるように、 最後の BIOS パーティションをセットアップして、それをアクティブにします。 .Sh 注釈 .Pp 開始シリンダ等の自動計算は、 BIOS がそのドライブのジオメトリであると思っている数字をもとに行なわれます。 これらの数字はデフォルトでは、メモリ上のディスクラベルから取りますが、 プログラムの起動時にそれらを変更する機会が与えられます。 このおかげでユーザは、 BIOS がジオメトリ変換を行なうドライブでも動作できるブートブロックを 作ることができます。 .Pp もしディスクのレイアウトを手作業で変更するのなら、 どうか FreeBSD パーティションがシリンダ境界から開始することを確認してください。 その後のたくさんの決定がこのことを仮定しています。 (これは必要ではなかったのかもしれませんが) .Pp すでにあるパーティションを編集すると、 たぶんそのパーティションのデータを失うことになるでしょう。 .Pp このプログラムがどう働くかを調べるために、 一度か二度は対話的に実行するべきです。 これは、最後の質問に否定で答える限り完全に安全です。 このマニュアルでは完全に説明されていませんが、 プログラムが検出する微妙な点があります。 -.Sh コンフィギュレーションファイル +.Sh 設定ファイル .Pp .Fl f オプションが与えられたとき、 .Ar configfile の値を使ってディスクのパーティションテーブルを書換えることができます。 このファイルの構文はたいへん単純です。 各行はコメントか仕様のどちらかで、空白 (改行を除く) は無視されます。 .Bl -tag -width Ds .It Xo .Ic # .No Ar comment ... .Xc "#" で開始している行はコメントで無視されます。 .It Xo .Ic g .No Ar spec1 .No Ar spec2 .No Ar spec3 .Xc パーティション計算で使う BIOS ジオメトリを設定します。 前に文字を伴った数字で、三つの値を指定しなければいけません。 .Bl -tag -width Ds .Sm off .It Cm c No Ar num .Sm on シリンダの数を .Ar num に設定します。 .Sm off .It Cm h No Ar num .Sm on ヘッドの数を .Ar num に指定します。 .Sm off .It Cm s No Ar num .Sm on トラックあたりのセクタの数を .Ar num に設定します。 .El .Pp これらの指定はどんな順序でもよく、先頭の文字がどの値かを決定します; しかし、三つ全てを指定しなければなりません。 .Pp この行はパーティション情報を指定するどんな行よりも前に現れなくてはなりません。 .Pp 次の条件が真でなければ、エラーです: .Pp .nf 1 <= シリンダの数 1 <= ヘッドの数 <= 256 1 <= トラックあたりのセクタの数 < 64 .fi .Pp シリンダの数は 1024 以下でなければなりませんが、 しかしこれは強制されるものではなく、警告が出力されるでしょう。 ブート可能な FreeBSD パーティション ("/" ファイルシステム) は 最初の 1024 シリンダ以内に収まっていなといけません; もしそうでなければ、ブートに失敗するかもしれません。 ブートしないパーティションには、この制限はありません。 .Pp 1019 シリンダ、39 ヘッド、63 セクタのディスクの例 (これらの全てはみな等価): .Pp .nf g c1019 h39 s63 g h39 c1019 s63 g s63 h39 c1019 .fi .It Xo .Ic p .No Ar partition .No Ar type .No Ar start .No Ar length .Xc .Ar partition (1-4) で与えられたパーティションに、タイプ .Ar type 、開始セクタ .Ar start 、長さ (セクタ数) .Ar length を設定します。 .Pp これらの行で明示的に言及されたパーティションだけが変更されます; "p" 行で参照されていないパーティションは変更されません。 しかし、無効なパーティションテーブルがあるか、 .Fl i オプションが指定されているなら、 存在するパーティションエントリは全て取り除かれ (未使用の印がつけられ)、 パーティション情報を明示的に設定するのに、 "p" 行が使われなければなりません。 もし複数のパーティションを設定する必要があるなら、 複数の "p" 行が指定されなければなりません; 一つの行で一つのパーティションを設定します。 .Pp これらのパーティション行は、もしあればジオメトリ指定行の後に現れなければ なりません。 .Pp FreeBSD パーティションの .Ar type は 165 です。0 のパーティションタイプを指定すると、 パーティションを取り除き未使用の印をつけたのと同じことになります; しかし、("0" とかの) ダミーの値が .Ar start と .Ar length に指定されなければなりません。 .Pp 注: パーティションの開始オフセットはヘッド境界まで必要なら繰り上げられ、 終了オフセットはシリンダ境界まで必要なら繰り下げられます。 .Pp 例: パーティション 4 を取り除いて、未使用の印をつける: .Pp .nf p 4 0 0 0 .fi .Pp 例: パーティション 1 を FreeBSD パーティションであって、 セクタ 1 から始まって 2503871 セクタの長さに設定する (注: これらの値は、 対応するヘッドとシリンダ境界に繰り上げ/繰り下げられます): .Pp .nf p 1 165 1 2503871 .fi .It Xo .Ic a .No Ar partition .Xc .Ar partition パーティションをアクティブにします。 -コンフィギュレーションファイルのどこに現われても構いませんが、 +設定ファイルのどこに現われても構いませんが、 一つだけしか現われてはいけません。 .Pp 例: パーティション 1 をアクティブパーティションにします: .Pp .nf a 1 .fi .El .Pp .Sh 関連項目 .Xr disklabel 8 .Sh バグ プログラム全体をよりユーザフレンドリにするべきです。 .Pp このマニュアルを通して使われている術語 .Sq パーティション は、他で使われる術語に一致させるため、 本当は .Sq スライス であるべきです。 .Pp ディスク全体を FreeBSD に捧げるためには、このコマンドは使えません。 これには .Xr disklabel 8 コマンドを使わなればなりません。 diff --git a/ja/man/man8/fsdb.8 b/ja/man/man8/fsdb.8 index 42b9bf2c41..a3c283274c 100644 --- a/ja/man/man8/fsdb.8 +++ b/ja/man/man8/fsdb.8 @@ -1,248 +1,248 @@ .\" %NetBSD: fsdb.8,v 1.2 1995/10/08 23:18:08 thorpej Exp % .\" .\" Copyright (c) 1995 John T. Kohl .\" 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. .\" .\" %Id: fsdb.8,v 1.3.2.1 1997/03/03 07:01:25 mpp Exp % .\" jpman %Id: fsdb.8,v 1.3 1997/06/23 15:01:41 horikawa Stab % .\" .Dd September 14, 1995 .Dt FSDB 8 .Os FreeBSD .Sh 名称 .Nm fsdb .Nd FFS デバッグ/編集ツール .Sh 書式 .Nm .Op Fl d .Op Fl f .Ar fsname .Sh 解説 .Nm は .Ar fsname (通常は raw ディスクパーティション) を open し、そのファイルシステムの inode データを操作するためのコマンドを受け付けます。コマンドは .Ic "fsdb (inum X)>" のプロンプトに対して入力します。ここでの .Va X は現在選択されている i-number となります。最初に選択されている inode はファイルシステムのルート (i-number 2) となります。 コマンドプロセッサには .Xr libedit 3 ライブラリを使用しており、コマンド行を編集することによってタイピングの 量を減らすことができます。 コマンドループから抜けて終了する時には、ファイルシステムのスーパブロック が dirty とマークされ、バッファリングされているブロックがあれば ファイルシステムに書き込まれます。 .Pp .Fl d オプションを指定すると、デバッグ情報 (元は .Xr fsck 8 のコードに由来するもの) を出力します。 .Pp .Fl f オプションは歴史的な理由により残されているもので、特に意味は持ちません。 .Sh コマンド 組み込みの .Xr libedit 3 のコマンドの他に .Nm は以下のコマンドをサポートしています: .Pp .Bl -tag -width indent -compact .It Cm help 入力できるコマンドのリストを表示します。 .Pp .It Cm inode Ar i-number 新しい現在の inode として inode .Ar i-number を選択します。 .Pp .It Cm back 以前の inode に戻ります。 .Pp .It Cm clri 現在の inode をクリアします。 .Pp .It Cm lookup Ar name .It Cm cd Ar name .Ar name を現在のディレクトリの中で探し、その inode を現在の inode に設定します。 .Ar name はマルチコンポーネントの名前か、スラッシュで始めて検索をルートの inode から始めることを指定できます。パス名の中のコンポーネントが見 つからない場合、最後に有効であったディレクトリがアクティブな inode と して使われます。 .br このコマンドは開始する inode がディレクトリの場合のみ有効です。 .Pp .It Cm active .It Cm print アクティブな inode を表示します。 .Pp .It Cm uplink アクティブな inode のリンク数をインクリメントします。 .Pp .It Cm downlink アクティブな inode のリンク数をデクリメントします。 .Pp .It Cm linkcount Ar number アクティブな inode のリンク数を .Ar number に設定します。 .Pp .It Cm ls 現在の inode のディレクトリエントリをリストします。このコマンドは現在 の inode がディレクトリである場合のみ有効です。 .Pp .It Cm rm Ar name .It Cm del Ar name 現在のディレクトリ inode からエントリ .Ar name を取り除きます。このコマンドは現在の inode がディレクトリで ある場合のみ有効です。 .Pp .It Cm ln Ar ino Ar name 現在のディレクトリ inode に inode .Ar ino へのリンクを .Ar name の名前で作成します。このコマンドは現在の inode がディレクトリである場 合のみ有効です。 .Pp .It Cm chinum Ar dirslot Ar inum ディレクトリエントリ .Ar dirslot 中の i-number を .Ar inum に変更します。 .Pp .It Cm chname Ar dirslot Ar name ディレクトリエントリ .Ar dirslot 中の名前を .Ar name に変更します。 このコマンドではディレクトリエントリを拡張することはできません。名前が 現在存在するディレクトリスロットに収まる場合にのみ、エントリの名前の変 更が可能です。 .Pp .It Cm chtype Ar type 現在の inode のタイプを .Ar type に変更します。 .Ar type には .Em file , .Em dir , .Em socket , .Em fifo のいずれかが指定できます。 .Pp .It Cm chmod Ar mode 現在の inode のモードビットを .Ar mode に変更します。 このサブコマンドではファイルのタイプを変更することはできません。その場 合は .Ic chtype を使ってください。 .Pp .It Cm chflags Ar flags 現在の inode のファイルフラグを .Ar flags に変更します。 .Pp .It Cm chown Ar uid -現在の inode のオーナを +現在の inode の所有者を .Ar uid に変更します。 .Pp .It Cm chgrp Ar gid 現在の inode のグループを .Ar gid に変更します。 .Pp .It Cm chgen Ar gen 現在の inode の世代番号 (generation number) を .Ar gen に変更します。 .Pp .It Cm mtime Ar time .It Cm ctime Ar time .It Cm atime Ar time それぞれ、現在の inode の修正時間、変更時間、アクセス時間を .Ar time に変更します。 .Ar time は .Em YYYYMMDDHHMMSS[.nsec] の形式でなければなりません。ここで、 .Em nsec はオプションで指定できるナノ秒の値となります。もし、ナノ秒が指定されて いないと、 .Va mtimensec , .Va ctimensec , .Va atimensec のそれぞれのフィールドにはゼロがセットされます。 .Pp .It Cm quit, Cm q, Cm exit, Em プログラムを終了します。 .El .Sh 関連項目 .Xr libedit 3 , .Xr fs 5 , .Xr clri 8 , .Xr fsck 8 .Sh バグ ``short'' のシンボリックリンクの操作は動作しません。(特に、 シンボリックリンクのタイプは変更しないでください。) .br モードはシンボル名ではなく数字で指定してください。 .br 多分 .Nm に実装されていないことで、もっとやりたいことが沢山あるでしょう。 .br .Xr libedit 3 のリファレンスページはまだ書かれていません。 .Sh 歴史 .Nm は .Xr fsck 8 のソースコードを使ってファイルシステムの操作のコードのほとんどを実装し ています。 .Nm の残りの部分は NetBSD において John T. Kohl によって最初に書かれました。 .br FreeBSD へは Peter Wemm によって移植されました。 .Sh 警告 このツールは最大限に注意を払って使って下さい。 .Xr fsck 8 を使っても修復できないほど FFS ファイルシステムを壊す恐れがあります。 diff --git a/ja/man/man8/ftpd.8 b/ja/man/man8/ftpd.8 index 8505ef13f6..68bf410d0b 100644 --- a/ja/man/man8/ftpd.8 +++ b/ja/man/man8/ftpd.8 @@ -1,462 +1,462 @@ .\" Copyright (c) 1985, 1988, 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 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. .\" .\" @(#)ftpd.8 8.2 (Berkeley) 4/19/94 .\" %Id: ftpd.8,v 1.9.2.13 1998/03/05 12:24:20 jkh Exp % .\" jpman %Id: ftpd.8,v 1.3 1997/09/08 07:23:46 kuma Stab % .\" .Dd April 19, 1994 .Dt FTPD 8 .Os BSD 4.2 .Sh 名称 .Nm ftpd .Nd インターネットファイル転送プロトコルサーバ .Sh 書式 .Nm ftpd .Op Fl dl .Op Fl D .Op Fl R .Op Fl S .Op Fl U .Op Fl T Ar maxtimeout .Op Fl t Ar timeout .Op Fl a Ar address .Op Fl p Ar file .Sh 解説 .Nm は、インターネットファイル転送プロトコルサーバプロセスです。 このサーバは .Tn TCP プロトコルを用いて、 .Dq ftp サービスに割り当てられたポートを listen() します。 .Dq ftp サービスについては、 .Xr services 5 を参照して下さい。 .Pp 利用可能なオプションは以下の通りです: .Bl -tag -width indent .It Fl d syslog の LOG_FTP のファシリティ (facility) を用いてデバッグ情報を出力します。 .It Fl l .Xr ftp 1 セッションそれぞれの結果を、成功も失敗もともども syslog の LOG_FTP のファシリティを用いて ログに残します。このオプションが 2 回指定されると、 retrieve (get), store (put), append, delete, make directory, remove directory, rename の各操作およびそれらの引数で指定された ファイル名も記録されます。 注意: LOG_FTP メッセージはデフォルトでは .Xr syslogd 8 によって表示されません。場合によっては .Xr syslogd 8 Ns -のコンフィギュレーションファイルでそれを有効にしなければなりません。 +の設定ファイルでそれを有効にしなければなりません。 .It Fl D このオプションがセットされると、 .Nm は制御端末を切り離してデーモンとなり、 FTP ポートへの接続要求を待ち、 子プロセスを生成して接続要求に対応します。 この方式は .Nm を .Xr inetd 8 から起動するよりオーバヘッドが少ないため、 処理量の多いサーバで負荷を低減するのに役立ちます。 .It Fl R このオプションがセットされると、 .Nm は、ユーザ操作のセキュリティチェックや PORT 要求の制限に関して 古き良き時代の振る舞いに戻ります。 現在では、 .Nm はリモートユーザのホストの非特権ポートに向けられた PORT コマンド だけを用います (これは FTP プロトコルの仕様に違反していますが、 いくつかのセキュリティホールを閉じることができます)。 .It Fl S このオプションがセットされると、 .Nm は匿名 (anonymous) による転送の全てについてのログを、ファイル .Pa /var/log/ftpd が存在する場合に限り、このファイルに残します。 .It Fl U 以前のバージョンの .Nm では、パッシブモードのクライアントがサーバにデータ接続を要求すると、 サーバは 1024 〜 4999 の範囲のデータポートを使用していました。 現在のバージョンでは、サーバはデフォルトでは 40000 〜 44999 の範囲の データポートを使用しますが、 このオプションを指定することにより、以前の振る舞いに戻ります。 .It Fl T クライアントは異なったタイムアウト秒数を要求することもできます。 .Fl T オプションにより、 .Ar タイムアウト までの最大待ち時間を設定できます。 デフォルトは 2 時間です。 .It Fl t 何も操作しないで放置した場合のタイムアウト時間を .Ar timeout 秒に設定します (デフォルトは 15 分)。 .It Fl a .Fl D オプションが指定されている場合、 .Ar address で指定されたアドレスに対する接続のみを許可します。 .It Fl p .Fl D オプションが指定されている場合、 デーモンのプロセス ID を .Ar file に書き出します。 .It Fl A 匿名 ftp アクセスのみ許可します。 .El .Pp ファイル .Pa /etc/nologin は、ftp アクセスを拒否するのに使うことができます。 このファイルが存在する場合、 .Nm はそのファイルの内容を表示して終了します。 .Pa /etc/ftpwelcome ファイルが存在する場合、 .Nm は .Dq ready メッセージを表示する前にその内容を表示します。 もし .Pa /etc/ftpmotd ファイルが存在する場合、 ログイン成功後に .Nm はその内容を出力します。 使用される motd ファイルはログイン環境に対して相対であることに 注意してください。 つまり、匿名ユーザの場合には、 .Pa ~ftp/etc に存在することを意味じます。 .Pp この ftp サーバは、現在、以下の ftp リクエストをサポートしています。 リクエストの文字の大文字小文字の区別は無視されます。 .Bl -column "Request" -offset indent .It Sy リクエスト Ta Sy "説明" .It ABOR Ta "abort previous command" .It ACCT Ta "specify account (ignored)" .It ALLO Ta "allocate storage (vacuously)" .It APPE Ta "append to a file" .It CDUP Ta "change to parent of current working directory" .It CWD Ta "change working directory" .It DELE Ta "delete a file" .It HELP Ta "give help information" .It LIST Ta "give list files in a directory" Pq Dq Li "ls -lgA" .It MKD Ta "make a directory" .It MDTM Ta "show last modification time of file" .It MODE Ta "specify data transfer" Em mode .It NLST Ta "give name list of files in directory" .It NOOP Ta "do nothing" .It PASS Ta "specify password" .It PASV Ta "prepare for server-to-server transfer" .It PORT Ta "specify data connection port" .It PWD Ta "print the current working directory" .It QUIT Ta "terminate session" .It REST Ta "restart incomplete transfer" .It RETR Ta "retrieve a file" .It RMD Ta "remove a directory" .It RNFR Ta "specify rename-from file name" .It RNTO Ta "specify rename-to file name" .It SITE Ta "non-standard commands (see next section)" .It SIZE Ta "return size of file" .It STAT Ta "return status of server" .It STOR Ta "store a file" .It STOU Ta "store a file with a unique name" .It STRU Ta "specify data transfer" Em structure .It SYST Ta "show operating system type of server system" .It TYPE Ta "specify data transfer" Em type .It USER Ta "specify user name" .It XCUP Ta "change to parent of current working directory (deprecated)" .It XCWD Ta "change working directory (deprecated)" .It XMKD Ta "make a directory (deprecated)" .It XPWD Ta "print the current working directory (deprecated)" .It XRMD Ta "remove a directory (deprecated)" .El .Pp 以下に示した非標準コマンドあるいは .Tn UNIX に特有のコマンドが、SITE リクエストでサポートされています。 .Pp .Bl -column Request -offset indent .It Sy リクエスト Ta Sy 説明 .It UMASK Ta change umask, e.g. ``SITE UMASK 002'' .It IDLE Ta set idle-timer, e.g. ``SITE IDLE 60'' .It CHMOD Ta change mode of a file, e.g. ``SITE CHMOD 755 filename'' .It HELP Ta give help information. .El .Pp Internet RFC 959 で規定されている ftp リクエストのうちの、これ以外のものは 解釈はされますがインプリメントされていません。 MDTM および SIZE は RFC 959 では規定されていませんが、次に改訂される FTP RFC には登場するでしょう。 .Pp ftp サーバがアクティブなファイル転送を中断するのは、ABOR コマンドの前に、 Telnet "Interrupt Process" (IP) シグナルか Telnet "Synch" シグナルが Telnet ストリーム内にある場合だけです。 これは Internet RFC 959 に記述されています。 もし、データの転送中に STAT コマンドを受けとり、その前に Telnet IP や Synch があった場合、転送ステータスが返されます。 .Pp .Nm は、 .Xr csh 1 で使われているファイル名展開を解釈します。これにより、 ユーザはメタキャラクタ .Dq Li \&*?[]{}~ を利用できます。 .Pp .Nm は、5 つのルールに従ってユーザの認証を行います。 .Pp .Bl -enum -offset indent .It ログイン名はパスワードデータベース になければならず、空のパスワードであってはいけません。 この場合、あらゆるファイルの操作に先だって、クライアント側からパスワードが 提供されていなければなりません。ユーザが S/Key のキーを持っている場合は、 USER コマンドが成功した際の応答には S/Key チャレンジを含めて送られます。 クライアントは、それに対して PASS コマンドを使って応答する際に、 通常のパスワードか S/Key のワンタイムパスワードのどちらをつけて応答 するかを選択できます。サーバはどちらのパスワードを受け取ったかを自動的に 判定し、それに応じて認証を試みます。S/Key の認証に関する詳細は .Xr key 1 を参照して下さい。S/Key は Bellcore 社の商標です。 .It ログイン名はファイル .Pa /etc/ftpusers に載っていてはいけません。 .It ログイン名はファイル .Pa /etc/ftpusers で指定されているグループのメンバであってはいけません。 このファイルでグループ名として解釈されるエントリの先頭には アットマーク .Ql \&@ が付きます。 .It ユーザは .Xr getusershell 3 が返す標準のシェルを持っていなければなりません。 .It ユーザ名がファイル .Pa /etc/ftpchroot に載っているか、そのファイルにあるグループエントリ (つまり .Ql \&@ で始まるエントリ) のメンバである場合、アカウント .Dq anonymous や .Dq ftp と同様、 .Xr chroot 2 によって、 そのセッションのルートディレクトリが ユーザのログインディレクトリに変ります (次の項目を参照して下さい)。 この機能は、 .Xr login.conf 5 でブール型フラグ "ftp-chroot" をオンにしても有効になります。 しかし、ユーザは依然、パスワードを与える必要があります。 この特徴は、完全に匿名 (anonymous) なアカウントと 完全な特権のあるアカウントの間での妥協的な利用のためのものです。 このアカウントは匿名アカウントで設定するのと同様に設定されていなければ なりません。 .It もしユーザ名が .Dq anonymous または .Dq ftp の場合は、匿名の ftp アカウントがパスワードファイル (ユーザ .Dq ftp ) で提供されていなければなりません。 この場合、ユーザはどのようなパスワードでもログインを許可されます (慣習としては ユーザの email アドレスをパスワードとして用いることになっています)。 .Fl S オプションがセットされていると、全ての転送操作も記録されます。 .El .Pp 最後のケースの場合、 .Nm は特別な手段でクライアントのアクセス権を制限します。 サーバは .Dq ftp ユーザのホームディレクトリへ .Xr chroot 2 します。 システムのセキュリティが侵害されないために、 .Dq ftp サブツリーは、以下の規則に従って慎重に構築することを推奨します。 .Bl -tag -width "~ftp/pub" -offset indent .It Pa ~ftp ホームディレクトリは .Dq root の所有とし、誰も書き込みできないようにします。 .It Pa ~ftp/bin このディレクトリは .Dq root の所有とし、誰も書き込みできないようにします (モード 555)。 list コマンドのサポートのため、ここに .Xr ls 1 プログラムを置くことが必要です。 このプログラムのモードは 111 とすべきです。 .It Pa ~ftp/etc このディレクトリは .Dq root の所有とし、誰も書き込みできないようにします (モード 555)。 .Xr ls が所有者を数字でなく名前で表示できるようにするために、 ファイル pwd.db ( .Xr passwd 5 参照) 及び .Xr group 5 が必要です。 ファイル .Xr passwd 中のパスワードは使用されませんので、本当のパスワードを入れてはいけません。 ファイル .Pa ftpmotd が存在すると、ログイン成功後、その内容が表示されます。 このファイルのモードは 444 とすべきです。 .It Pa ~ftp/pub このディレクトリのモードは 777、所有者は .Dq ftp とします。 ゲストユーザは、このディレクトリ中にあって匿名アカウントで アクセス可能なファイルをアクセスします。 .El .Pp システムに複数の IP アドレスがある場合、 .Nm は仮想ホストの概念をサポートします。 仮想ホストは、複数の匿名 ftp 領域それぞれを別々のインターネットアドレス に割り当てる機能を提供します。 ファイル .Pa /etc/ftphosts は各仮想ホストに関連した情報を保持します。 各ホストはそれぞれの行で定義され、 各行は空白で区切ったいくつかのフィールドからなります: .Bl -tag -offset indent -width hostname .It hostname 仮想ホストのホスト名あるいは IP アドレス。 .It user システムのパスワードファイル中のユーザレコードを含みます。 普通の匿名 ftp と同様に、このユーザのアクセス UID, GID および グループによって匿名 ftp 領域のファイルアクセス権が決まります。 匿名 ftp 領域 (ログイン時にユーザが chroot するディレクトリ) は、 そのアカウントに対するホームディレクトリとして決定されます。 他の ftp アカウントのユーザ ID およびグループも、 標準 ftp ユーザと同じであって構いません。 .It statfile 全てのファイル転送のログが記録されるファイル。デフォルトでは .Pa /var/log/ftpd です。 .It welcome サーバがプロンプトを出す前に表示される welcome メッセージ。デフォルトでは .Pa /etc/ftpwelcome です。 .It motd このファイル内容はユーザがログインした後に表示されます。デフォルトでは .Pa /etc/ftpmotd です。 .El .Pp プライマリ IP アドレスあるいはホスト名に対する仮想ホストを定義すると、 そのアドレスへの ftp ログインのデフォルト値が変更されます。 'user', 'statfile', 'welcome', 'motd' の各フィールドは デフォルト値を用いる場合、ブランクのままもしくはハイフン一つ '-' と しても構いません。 .Pp いかなる匿名ログインの設定についても言えることですが、 設定と保守には十分に注意を払い、セキュリティ上の問題をきたさないよう 防御しなければなりません。 .Pp .Em FTPD_INTERNAL_LS オプションをつけてコンパイルすると、 .Nm はリモートからのファイル一覧表示要求に対応するための内部サポートを用意し、 chroot された環境でもそれ以外でも .Pa /bin/ls を実行しなくなります。 この場合、 .Pa ~/bin/ls の実行形式ファイルは chroot されたディレクトリになくてよく、 .Pa ~/bin ディレクトリも存在する必要はありません。 このサポートは、 .Pa /etc/make.conf あるいはシェルの環境で .Em INTERNAL_LS 変数を設定して ftpd を作成することで追加されます。 .Sh 関連ファイル .Bl -tag -width /etc/ftpwelcome -compact .It Pa /etc/ftpusers 歓迎されない/制限を受けるユーザのリスト。 .It Pa /etc/ftpchroot chroot される一般ユーザのリスト。 .It Pa /etc/ftphosts -仮想ホストのための構成ファイル +仮想ホストのための設定ファイル .It Pa /etc/ftpwelcome welcome メッセージ。 .It Pa /etc/ftpmotd login 後の welcome メッセージ。 .It Pa /etc/nologin 内容を表示し、アクセスを拒否します。 .It Pa /var/log/ftpd 匿名による転送のログファイル。 .El .Sh 関連項目 .Xr ftp 1 , .Xr key 1 , .Xr getusershell 3 , .Xr login.conf 5 , .Xr inetd 8 , .Xr syslogd 8 .Sh バグ 特権ポート番号を用いてソケットを作成するために、 ftpd はスーパーユーザの権限で実行させて下さい。 サーバはログインユーザの実効ユーザ ID を保持しておき、 アドレスをソケットにバインドする場合にのみスーパユーザの権限を使います。 考えられるセキュリティホールについてはかなり詳細にわたって調べ込みをおこないましたが、 それでも不完全かもしれません。 .Sh 歴史 .Nm コマンドは .Bx 4.2 から登場しました。 diff --git a/ja/man/man8/getty.8 b/ja/man/man8/getty.8 index 1c200da850..3226a8087d 100644 --- a/ja/man/man8/getty.8 +++ b/ja/man/man8/getty.8 @@ -1,125 +1,125 @@ .\" Copyright (c) 1980, 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 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: @(#)getty.8 8.1 (Berkeley) 6/4/93 .\" %Id: getty.8,v 1.4.2.3 1997/12/15 07:10:52 charnier Exp % .\" jpman %Id: getty.8,v 1.3 1997/05/19 17:00:46 horikawa Stab % .\" " .Dd April 25, 1991 .Dt GETTY 8 .Os BSD 4 .Sh 名称 .Nm getty .Nd 端末のモードを設定する .Sh 書式 .Nm getty .Oo .Ar type .Op Ar tty .Oc .Sh 解説 .Nm プログラムは、 .Xr init 8 から呼ばれ、tty回線をオープンしたあと初期化 し、ログイン名を読んで .Xr login 1 を起動します。 .Pp .Ar tty は、端末にどの .Pa /dev のスペシャルデバイスファイルを使うかを指定します(例:``ttyh0'')。 引数がないか .Ql Fl ならば、tty回線はファイルディスクリプタ0としてオープンされます。 .Pp .Ar type は、 .Nm が端末回線を特別に扱うようにするために使われます。 この .Ar type は、 .Xr gettytab 5 のデータベースのインデックスとして使われ、 回線の特徴を決定します。引数が与えられないか、データベースにマッチする テーブルがなければ、 .Em default テーブルが使われます。もし、 .Pa /etc/gettytab ファイルがなければ、システムのデフォルトが使われます。 テーブルにより指示されれば、 .Nm は端末画面をクリアし、 バナーヘッダを表示し、 ログインプロンプトを表示します。通常、このプロンプトのなかに システムのホスト名が含まれます。 .Pp .Nm のデフォルトの行動は、大抵の場合、適当な .Pa gettytab テーブルを作成することによって、回避したり修正したりすることができます。 .Pp .Nm はタイムアウト時間を設定することができます。これによって、 ログイン名がすぐに入力されないような場合に、ダイアル回線を切断 することができます。 .Sh 診断 .Bl -diag .It "ttyxx: No such device or address." .It "ttyxx: No such file or address." .Pp .Pa ttys -ファイルのなかで有効にされていたターミナルがオープンできませんでした。 +ファイルのなかで有効にされていた端末がオープンできませんでした。 必要な回線がシステムに設定されていなかったか、 関係するデバイスがブート時のシステム設定の際に組み込まれなかったか、 もしくは .Pa /dev にスペシャルファイルがありませんでした。 .El .Sh 関連ファイル .Bl -tag -width /etc/gettytab -compact .It Pa /etc/gettytab .It Pa /etc/ttys .El .Sh 関連項目 .Xr login 1 , .Xr ioctl 2 , .Xr tty 4 , .Xr gettytab 5 , .Xr ttys 5 , .Xr init 8 .Sh 歴史 .Nm は .At v6 から登場しました。 diff --git a/ja/man/man8/init.8 b/ja/man/man8/init.8 index 91641f377c..4ab1b2e881 100644 --- a/ja/man/man8/init.8 +++ b/ja/man/man8/init.8 @@ -1,303 +1,303 @@ .\" Copyright (c) 1980, 1991, 1993 .\" The Regents of the University of California. All rights reserved. .\" .\" This code is derived from software contributed to Berkeley by .\" Donn Seeley at Berkeley Software Design, 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. .\" .\" @(#)init.8 8.3 (Berkeley) 4/18/94 .\" %Id: init.8,v 1.4.2.3 1997/08/18 03:30:04 davidn Exp % .\" jpman %Id: init.8,v 1.2 1997/05/27 08:12:44 yugawa Stab % .\" .Dd April 18, 1994 .Dt INIT 8 .Os BSD 4 .Sh 名称 .Nm init .Nd プロセス制御の初期化を行う .Sh 書式 .Nm init .Sh 解説 .Nm init はブート処理の最後に起動されます。 .Nm init は通常、 .Xr reboot 8 で説明されている自動リブートシーケンスを実行します。それが成功すると、 システムはマルチユーザモードになります。 リブートスクリプトの実行に失敗すると、 .Nm init はスーパユーザが使うシェルを起動してシングルユーザモードを 開始させます。 .Nm init プログラムは、ブートプログラムからのパラメータの指示を受けて、マルチユー ザモードに移行せず、一般のデーモンを起動することなくシングルユーザモードの シェルを起動させることができます。 その場合、システムはメンテナンスのためのモードになり、 シェルを抜ける (^D を入力する)ことで シングルユーザモードからマルチユーザモードになります。 これによって、 .Nm init は .Pa /etc/rc をファストブートモード(ディスクチェック省略)で実行します。 .Pp もし .Xr ttys 5 ファイルの .Nm console のエントリが ``insecure'' にマークされていた場合には、 .Nm init はシングルユーザモードのシェルを起動する前に、スーパユーザのパスワードを 要求します。 パスワードチェックは、 .Nm console が ``secure'' にマークされていればスキップされます。 .Pp カーネルは 4 種類のセキュリティレベルで走行します。どのスーパーユーザ プロセスもセキュリティレベルを上げることができますが、レベルを下げることが できるのは .Nm init だけです。セキュリティレベルは以下のように定義されます: .Bl -tag -width flag .It Ic -1 常に危険なモード \- システムは常にレベル 0 モードで走行します。 .It Ic 0 危険なモード \- 変更不可(immutable)フラグや追加のみ(append-only)フラグは 無効にされます。 全てのデバイスは、そのパーミッションに従って読み書きされます。 .It Ic 1 安全なモード \- 変更不可フラグや追加のみのフラグは変更されません。 マウントされたファイルシステムのディスクおよび .Pa /dev/mem や .Pa /dev/kmem は read-only となります。 .It Ic 2 安全度の高いモード \- レベル 1 のモードの効果に加え、ディスクは マウントさていようといまいと、( .Xr mount 2 を除き) 常に read-only となります。 このレベルは、ファイルシステムをアンマウントして変更を加えることを不可能に します。また、システムがマルチユーザで走行中に .Xr newfs 8 を実行することも出来なくなります。 .El .Pp 初期のセキュリティレベルが -1 だった場合、 .Nm init はセキュリティレベルを変更しません。 それ以外の場合、シングルユーザモードではレベル 0 で、マルチユーザモードでは レベル 1 で、システムは動作します。マルチユーザモードにおいてレベル 2 で システムを走らせたい場合は、シングルユーザの状態の間に、つまり、 .Pa /etc/rc の中で .Xr sysctl 8 を使って設定します。 .Pp マルチユーザモードの場合、 .Nm init は .Xr ttys 5 -ファイルで指示されたターミナルポートのためのプロセスを管理します。 +ファイルで指示された端末ポートのためのプロセスを管理します。 .Nm init はこのファイルを読み込み、2 番目のフィールドに指示されたコマンドを 実行します。 そのコマンドは通常、 .Xr getty 8 で、 .Nm getty はtty をオープン、初期化し、 .Xr login 1 プログラムを実行します。 .Nm login プログラムは、ユーザがログインするとシェルを起動します。ユーザが ログアウトするか異常終了するなどして、そのシェルが終了すると、 .Nm init プログラムが起こされ、 .Xr utmp 5 ファイルからユーザを消し、 .Xr wtmp 5 ファイルにログアウトを記録します。 このサイクルは、 .Nm init プログラムがその端末に新しい .Nm getty を実行することで繰り返されます。 .Pp ラインの状態 (on, off, secure, getty, ウインドウの情報) は、 .Xr ttys 5 ファイルを書き換えて .Dq Li "kill -HUP 1" によってシグナル .Dv SIGHUP を .Nm init に送ることで、リブートせずに変更できます。 このシグナルを受け取ると .Nm init は .Xr ttys 5 ファイルを再度読み込みます。 .Xr ttys 5 でラインがオフにされると、 .Nm init はそのラインに関係するセッションの制御プロセスに SIGHUP シグナルを送ります。 オフであったラインが .Xr ttys 5 ファイルでオンにされると、 .Nm init は新しい .Nm getty を起動して、新しいログインを可能にします。 ラインの getty やウインドウフィールドが変更された場合、その変更は現在 のログインセッションが終了するまで有効にはなりません。 (例えば、 .Nm init によって新しいプロセスが起動されるまで有効にならない。) .Xr ttys 5 中のあるラインをコメントアウトあるいは削除した場合は、 .Nm init はそのラインに関しては何も実行しません。 しかしこの場合、 .Xr ttys 5 ファイルと .Xr utmp 5 ファイル内の記録情報が一致しなくなるため、試すことはお勧めしません。 .Pp .Dq Li "kill \-TERM 1" などによって terminate シグナル .Pq Dv TERM を受けると、 .Nm init はマルチユーザモードを終了し、シングルユーザモードに復帰します。 ハードウェアまたはソフトウェアの問題でデッドロックしたプロセスがある場合、 .Xr init はすべてのプロセスの終了を待たず(これは無限に終らないかも知れません)、 30 秒間でタイムアウトして警告のメッセージを出力します。 .Pp terminal stop シグナル .Pq Dv TSTP を送ると( .Dq Li "kill \-TSTP 1" )、 .Nm init は新しい .Xr getty を起動するのをやめ、徐々にシステム停止可能な状態にします。 その後、hangup シグナルで完全なマルチユーザモードに戻り、terminate シグナル でシングルユーザモードに移ります。 この hook は .Xr reboot 8 と .Xr halt 8 で使われています。 .Pp interrupt シグナル .Pq Dv INT を送ると( .Dq Li "kill \-INT 1" )、 .Nm init はすべてのプロセスを(デッドロックプロセスを待たずに)終了させ、 リブートを実行します。 この操作は、マシンがハングした時に、カーネルの中から、あるいは、X から、 システムを安全にシャットダウンするのに便利です。 .Pp マシンをシャットダウンする時、 .Nm init は .Pa /etc/rc.shutdown スクリプトを実行しようとします。 このスクリプトは .Nm innd (インターネットニュースサーバ) のような特定のプログラムを綺麗に終了させるために使用可能です。 .Pp .Nm init の役割は非常に重要で、もし .Nm init が死ぬとシステムが自動的にリブートされます。 もしブート時に .Nm init プログラムを見つけられなければ、システムは以下のようなメッセージを出力 して panic で終了します。 ``panic: init died (signal %d, exit %d)'' .Sh 診断 .Bl -diag .It "getty repeating too quickly on port %s, sleeping" ラインにサービスを提供するプロセスが、起動されるたびにすぐ終了してしまう。 これは、端末ラインに着信があるかノイズが大きい場合にしばしば起こります。 .Em "init は 10 秒間スリープし、" .Em "その後、プロセスを開始させようとし続けます。" .Pp .It "some processes would not die; ps axl advised." シャットダウンの際、ハングしていて終了させられないプロセスがあります。 この状態は、通常、デバイスに異常があるときにデバイスドライバではり付い てしまうことにより起こります。 .El .Sh 関連ファイル .Bl -tag -width /var/log/wtmp -compact .It Pa /dev/console システムのコンソールデバイス .It Pa /dev/tty* .Xr ttys 5 内にある端末ポート .It Pa /var/run/utmp 現在ログインしているのユーザの情報 .It Pa /var/log/wtmp すべてのログイン・ログアウトの情報 .It Pa /etc/ttys 端末の初期化情報が書かれたファイル .It Pa /etc/rc システム立ち上げ用スクリプト .It Pa /etc/rc.shutdown システムシャットダウン用スクリプト .El .Sh 関連項目 .Xr kill 1 , .Xr login 1 , .Xr sh 1 , .Xr ttys 5 , .Xr crash 8 , .Xr getty 8 , .Xr halt 8 , .Xr rc 8 , .Xr reboot 8 , .Xr shutdown 8 .Sh 歴史 .Nm コマンドは .At v6 から登場しました。 .Sh バグ .Xr sysctl を持たないシステムは、セキュリティレベル \-1 で動作します。 diff --git a/ja/man/man8/lptcontrol.8 b/ja/man/man8/lptcontrol.8 index 3993155dc0..ff119d56b8 100644 --- a/ja/man/man8/lptcontrol.8 +++ b/ja/man/man8/lptcontrol.8 @@ -1,78 +1,78 @@ .\" .\" lptcontrol - a utility for manipulating the lpt driver .\" .\" 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. .\" .\" .\" %Id: lptcontrol.8,v 1.3.2.2 1997/09/29 06:30:31 charnier Exp % .\" jpman %Id: lptcontrol.8,v 1.3 1997/08/16 13:20:55 horikawa Stab % .Dd September 3, 1994 .Dt LPTCONTROL 8 .Os FreeBSD 2 .Sh 名称 .Nm \&lptcontrol .Nd lpt プリンタドライバ操作ユーティリティ .Sh 書式 .Nm \&lptcontrol .Cm -i | .Cm -p .Op Fl u Ar unit no .Sh 解説 .Nm コマンドは、各 .Xr lpt 4 デバイスの割り込み駆動モード/ポーリングモードを設定するのに用いられます。 プリンタが割り込み駆動モード/ポーリングモード間で切り替えられると、 その切り替えは次回デバイスがオープンされたときに有効になります。 .Sh オプション .TP 以下のコマンドラインオプションがサポートされています: .Bl -tag -width indent .It Fl i 割り込み駆動モードにします。 .It Fl p ポーリングモードにします。 .It Fl u Ar n .Em n で指定されたプリンタデバイスのモードを設定します。 .Em n のデフォルト値は .Em 0 (つまり .Pa /dev/lpt0 )です。 .El .Pp .Fl i または .Fl p のいずれか一方を必ず指定しなければなりません。 .Pp .Sh 関連ファイル .Bl -tag -width /sys/i386/conf/GENERIC -compact .It Pa /dev/lpt? プリンタデバイス。 .It Pa /dev/lpctl? プリンタ制御デバイス。 .It Pa /sys/i386/conf/GENERIC -カーネル構成ファイル。 +カーネル設定ファイル。 .El .Sh バグ きっといくつかあるでしょう。 .Sh 関連項目 .Xr lpt 4 .Sh 作者 .An Geoffrey M. Rehmet .Sh 歴史 .Nm は .Fx 1.1.5 で初めて登場しました。 diff --git a/ja/man/man8/mountd.8 b/ja/man/man8/mountd.8 index 9bee5dcf84..48fbef874b 100644 --- a/ja/man/man8/mountd.8 +++ b/ja/man/man8/mountd.8 @@ -1,177 +1,177 @@ .\" Copyright (c) 1989, 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 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. .\" .\" @(#)mountd.8 8.4 (Berkeley) 4/28/95 .\" %Id: mountd.8,v 1.5.2.3 1997/05/14 08:19:20 dfr Exp % .\" jpman %Id: mountd.8,v 1.3 1997/05/19 17:06:05 horikawa Stab % .\" .Dd April 28, 1995 .Dt MOUNTD 8 .Os .Sh 名称 .Nm mountd .Nd リモートの .Tn NFS マウント要求に対するサービスを行うデーモン .Sh 書式 .Nm /sbin/mountd .Op Fl 2nr .Op Ar exportsfile .Sh 解説 .Nm mountd は、他のクライアントマシンからの .Tn NFS マウント要求のためのサーバです。 .Nm mountd は、 .Tn NFS サーバの仕様で示されているポート 番号でサービス要求を待ちます。詳細は RFC1094 .%T "Network File System Protocol Specification" の Appendix A と .%T "NFS: Network File System Version 3 Protocol Specification" の Appendix I を参照してください。 .Pp .Nm mountd では、以下のオプションや引数を指定できます: .Bl -tag -width Ds .It Fl 2 .Fl 2 オプションを使用すると、 このサーバからファイルシステムをマウントするクライアントに対し、 管理者はバージョン 2 NFS プロトコルのみの使用を強制できます。 .It Fl n このオプションは、非ルートからのマウント要求を許可します。 このオプションは、 クライアントが PC であるなど、それがどうしても必要な 場合にのみ使うようにしてください。 その場合、自動的に vfs.nfs.nfs_privport sysctl フラグがクリアされます。 このフラグはカーネルが nfs 要求を受け付けるのが、 予約されたポートからのみか否かを制御します。 .It Fl r .Fl r オプションは,レギュラーファイルに対するマウント RPC 要求を許可します。 これは,マウントプロトコルの仕様によると危険なようですが, いくつかのディスクレスワークステーションは,スワップファイルをマウント しようとしますし,それがレギュラーファイルであることを期待しています。 レギュラーファイルは, .Pa /etc/exports , で指定できないので,スワップが置かれようとしているファイルシステム全体 が, .Fl alldirs フラグとともに公開されていなければなりません。 .Ar exportsfile には、公開する( .Tn NFS エキスポートする) ファイルシステムを記述したファイル (公開設定ファイル:エキスポートファイル)のある場所を 指定します。 .\" ↓以下の文も原文に対応が無い .\" デフォルトは .\" .Pa /etc/exports .\" です。 .El .Pp 起動されると、 .Nm mountd は .Xr mount 2 システムコールによって、公開するホストアドレスとオプションを カーネル内にロードします。 公開設定ファイルを変更した場合は、 .Nm mountd -に対してハングアップシグナルを送って +に対して回線切断シグナルを送って 公開設定情報を再ロードする必要があります。 .Dv SIGHUP を送ったあと(例: kill -HUP `cat /var/run/mountd.pid` )、エキスポートファイルにエラーがあるかどうか、 syslogの出力をチェックしてください。 .Pp 動作中のカーネルは .Tn NFS を組み込んでいないものであると判明した場合、 .Nm mountd は、 .Xr vfsload 3 を用いる .Xr modload 8 コマンドを使って、 .Tn NFS を含むローダブルカーネルモジュールのロードを試みます。 これが失敗するか、 .Tn NFS LKM が使用できない場合は、 .Nm mountd はエラー終了します。 .\" ↓使用例の章は原文には存在しないのでコメントアウトする -- jpman J.Sakai .\" .Sh 使用例 .\" .Pa /etc/exports .\" の例: .\" .Pp .\" .Bd -literal -offset indent .\" /home/aino -alldirs .\" .Ed .\" .Pp .\" これは、 .\" .Pa /home/aino .\" 以下のファイルシステムをすべて .\" .Tn NFS .\" で公開しています。 .\" 詳細は、 .\" .Xr exports 5 .\" を参照してください。 .Sh 関連ファイル .Bl -tag -width /var/run/mountd.pid -compact .It Pa /etc/exports 公開設定ファイル(エキスポートファイル) .It Pa /var/run/mountd.pid 現在実行中の .Nm mountd のプロセス id .Tn ID .It Pa /var/db/mountdtab 現在マウントされているリモートファイルシステムのリスト .El .Sh 関連項目 .Xr nfsstat 1 , .Xr exports 5 , .Xr modload 8 , .Xr nfsd 8 , .Xr portmap 8 , .Xr showmount 8 .Sh 歴史 .Nm mountd ユーティリティは .Bx 4.4 から登場しています。 diff --git a/ja/man/man8/newsyslog.8 b/ja/man/man8/newsyslog.8 index 9fa4ae1c1c..849fb3ef64 100644 --- a/ja/man/man8/newsyslog.8 +++ b/ja/man/man8/newsyslog.8 @@ -1,181 +1,181 @@ .\" This file contains changes from the Open Software Foundation. .\" .\" from: @(#)newsyslog.8 .\" jpman %Id: newsyslog.8,v 1.3 1997/08/16 13:33:00 horikawa Stab % .\" %Id: newsyslog.8,v 1.1.1.1.2.6 1998/03/22 22:58:21 steve Exp % .\" .\" Copyright 1988, 1989 by the Massachusetts Institute of Technology .\" .\" Permission to use, copy, modify, and distribute this software .\" and its documentation for any purpose and without fee is .\" hereby granted, 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 names of M.I.T. and the M.I.T. S.I.P.B. not be .\" used in advertising or publicity pertaining to distribution .\" of the software without specific, written prior permission. .\" M.I.T. and the M.I.T. S.I.P.B. make no representations about .\" the suitability of this software for any purpose. It is .\" provided "as is" without express or implied warranty. .\" .Dd January 12, 1989 .Dt NEWSYSLOG 8 .Os .Sh 名称 .Nm newsyslog .Nd システムのログファイルを保守し、適切なサイズに保つ .Sh 書式 .Nm newsyslog .Op Fl Fnrv .Op Fl f Ar config_file .Sh 解説 .Nm は .Xr cron 8 から定期的に実行されるようにスケジュールされるべきプログラムです。 実行されると、 .Nm は必要に応じてログファイルを保存(アーカイブ)します。 あるログファイルを保存する必要があると判断すると、 .Nm は、``logfile'' が空になり、``logfile.0'' に前回のログファイルが入り、 ``logfile.1'' に前々回のログが入り‥‥ といった具合に、 ユーザが指定した数の保存ログが残るよう、ファイルを再編します。 オプションにより、保存ログを圧縮してスペースを節約することもできます。 .Pp ログが保存される場合には 2 つの理由があります。 そのログファイルのサイズが予めセットしておいたキロバイト数より大きくなった、 もしくは、前回ログを保存してから指定した時間が経過した、という理由です。 .Nm の粒度は、このコマンドが .Xr cron 8 からどの程度の頻度で実行されるかに依存しています。 .Nm の実行は十分速いので、毎時間実行するようにスケジュールしても 悪影響はありません。 .Pp 起動されると、 .Nm -はコンフィギュレーションファイルを読み込んで、 +は設定ファイルを読み込んで、 どのログファイルをチェックすべきかを決定します。 デフォルトでは、このコンフィギュレーションファイルは .Pa /etc/newsyslog.conf です。 コンフィギュレーションファイルの各行には、 .Nm が処理すべき特定のログファイルに関する情報を記述します。 各行は 5 つの必須フィールドと、3 つのオプションフィールドから成り、 それらは空白で区切られています。 空行や ``#'' で始まる行は無視されます。 コンフィギュレーションファイルの各フィールドは以下の通りです: .Pp .Bl -tag -width indent .It Ar logfile_name 保存するシステムログファイル名。 .It Ar owner.group 保存ファイルの所有者とグループ名を指定します。 .Ar owner あるいは .Ar group が空白のままである場合でも "." は必須です。 指定は数値、あるいは .Pa /etc/passwd か .Pa /etc/group にある名前で行います。 .It Ar mode ログファイルと保存ログファイルのモードを指定します。 .It Ar count ログファイルそのものに加えて保存しておく保存ファイルの数を指定します。 .It Ar size ログファイルのサイズが .Ar size に達すると、ログファイルは上記のように入れ換えられます。 このフィールドが .Ar * で置き換えられると、ログファイル入れ換えに際して そのサイズは考慮されなくなります。 .It Ar interval .Ar interval 時間(60 分×interval の意)が経過すると、ログファイルが入れ換えられます。 このフィールドが .Ar * で置き換えられると、前回の入れ換えからの経過時間は考慮されません。 .It Ar flags このフィールドはオプションであり、 保存に際してログファイルに特別な処理を行うかどうかを指定します。 .Ar Z フラグを指定すると、スペース節約のために 保存ファイルは .Xr gzip 1 で圧縮されます。 .Ar B フラグはファイルがバイナリファイルであることを指示し、 ログファイルが入れ換わったという意味で .Nm が挿入する .Tn ASCII メッセージを含めないようにします。 .Ar - は何も意味しませんが、 .Ar path_to_pid_file フィールドが指定された場合には埋め草として使用可能です。 .It Ar path_to_pid_file このオプションのフィールドは、 デーモンのプロセス ID を調べるために読むファイルを指定します。 このフィールドが存在する場合、 このファイルに書かれたプロセス ID に SIGHUP が送られます。 正しく認識するために、このフィールドは "/" から開始する必要があります。 .El .Sh オプション newsyslog では以下のオプションが利用できます: .Bl -tag -width indent .It Fl f Ar config_file コンフィギュレーションファイルとして .Pa /etc/newsyslog.conf に代えて .Ar config_file を使用します。 .It Fl v .Nm を詳細情報出力モードにします。 このモードでは、ログを入れ換えるあるいはそれをスキップするたびに、 そのログファイル名と理由を表示します。 .It Fl n 実際にログの入れ換えは行わず、このオプションが指定されない場合に 本来行うはずの処理内容を表示します。 .It Fl r .Nm は root として動作しなければならない、という制約を取り除きます。 もちろん、 .Nm は .Xr syslogd 8 に HUP シグナルを送れなくなりますから、 このオプションはデバッグにのみ用いるべきです。 .It Fl F ログを入れ替える条件に合致しないとしても、強制的に .Nm にログを入れ替えさせます。 システムの問題を診断しているときには、 このオプションの使用により、 問題のみを含む新しいログを提供できるので有用です。 .El .Sh 関連ファイル .Bl -tag -width /etc/newsyslog.confxxxx -compact .It Pa /etc/newsyslog.conf .Nm のコンフィギュレーションファイル .El .Sh バグ セキュリティ侵害を見つけるためにログを自動的に読むことは、 まだ行っていません。 .Sh 作者 .An Theodore Ts'o , MIT Project Athena .Pp Copyright 1987, Massachusetts Institute of Technology .Sh 関連項目 .Xr gzip 1 , .Xr syslog 3 , .Xr syslogd 8 diff --git a/ja/man/man8/ppp.8 b/ja/man/man8/ppp.8 index 365ad634d1..02778828b1 100644 --- a/ja/man/man8/ppp.8 +++ b/ja/man/man8/ppp.8 @@ -1,2701 +1,2701 @@ .\" %Id: ppp.8,v 1.19.2.37 1998/03/16 07:11:27 steve Exp % .\" jpman %Id: ppp.8,v 1.4 1997/06/08 18:41:58 saeki Stab % .Dd 20 September 1995 .Os FreeBSD .Dt PPP 8 .Sh 名称 .Nm ppp .Nd PPP (Point to Point Protocol) (別名 iijppp) .Sh 書式 .Nm .\" SOMEONE FIX ME ! The .Op macro can't handle enough args ! [ .Fl auto | .Fl background | .Fl ddial | .Fl direct | .Fl dedicated ] .Op Fl alias .Op Ar system .Sh 解説 本プログラムは、ユーザプロセスとして動作する .Em PPP パッケージです。 .Em PPP は通常、( .Xr pppd 8 でそうなっているように) カーネルの一部として実装されますが、 そのため、デバッグや動作の変更が少々難しい場合があります。 しかしながら、この実装ではトンネルデバイス (tun) を利用して、ユーザプロセスで .Em PPP を実現しています。 .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 パケットエイリアシングをサポート パケットエイリアシング (別名: IP マスカレード) により、 未登録でプライベートなネットワーク上のコンピュータからも インターネットにアクセスすることが可能です。 .Em PPP ホストはマスカレードゲートウェイとして動作します。 送信パケットの IP アドレスと TCP や UDP のポート番号は どちらもエイリアスされ、返信パケットではエイリアスが元に戻されます。 .It バックグラウンド PPP 接続をサポート バックグラウンドモードでは、接続を確立するのに成功した場合に .Nm はデーモンになります。 それ以外の場合はエラーで終了します。 これにより、 接続が成功裏に確立した場合のみコマンドを実行するようなスクリプト をセットアップすることが出来ます。 .It サーバとしての PPP 接続をサポート ダイレクトモードでは、 .Nm は標準入力/標準出力からの .Em PPP 接続を受け入れるサーバとして動作させることができます。 .It PAP と CHAP による認証をサポート PAP もしくは CHAP を用いることにより、Unix スタイルの .Xr login 1 手続きをスキップし、 .Em PPP プロトコルを代りに認証に使用することが可能です。 .It 代理 arp (Proxy Arp) をサポート .Em PPP がサーバとして動作している時、その接続について代理 arp を行うよう 設定できます。 .It パケットのフィルタリングをサポート ユーザは 4 種類のフィルタを定義できます。 .Em ifilter は受信パケットに対するフィルタです。 .Em ofilter は送信パケットに対するフィルタです。 .Em dfilter はダイアルを行うきっかけとなるパケットを定義するフィルタで、 .Em afilter は接続を保持するためのパケットを定義するフィルタです。 .It トンネルドライバは bpf (Berkeley Packet Filter) をサポート .Em PPP リンクを流れるパケットを調べるために、 .Xr tcpdump 1 を使うことができます。 .It PPP オーバ TCP をサポート .It IETF ドラフトの Predictor-1 圧縮をサポート .Nm は VJ 圧縮の他に Predictor-1 圧縮もサポートしています。 モデムは通常 (例えば v42.bis のような) 組み込みの圧縮機能を持っており、 その結果システムは .\"(訳注)「転送データレートよりも」をここにいれたいと考えています。 .\" 2.2.1R 対象(1997/04/02) Takeshi MUTOH より高いデータレートで通信できます。 これは一般には良いことですが、より高速のデータによってシリアル回線からの 割り込みが増加します。 システムはこの割り込みをモデムと通信して処理しなくてはならないため、 システムの負荷と遅延時間が増加することになります。 VJ 圧縮とは異なり、Predictor-1 圧縮はリンクを通る .Em すべての データをあらかじめ圧縮しておくことで、オーバヘッドを最小にします。 .It Microsoft の IPCP 拡張をサポート Microsoft の .Em PPP スタックを使用するクライアント (つまり Win95, WinNT) との間で ネームサーバのアドレスと NetBIOS ネームサーバのアドレスを 交渉することができます。 .El .Sh パーミッション .Nm ppp はユーザ .Dv root 、グループ .Dv network 、パーミッション .Dv 4550 でインストールされます。 デフォルトでは .Nm ppp は、起動したユーザ ID が 0 でない場合には実行しません。 これは .Dq allow users コマンドを .Pa /etc/ppp/ppp.conf に記載することにより変更することが可能です。 通常ユーザとして実行する場合には、 .Nm はユーザ ID 0 に変わり、システムのルーティングテーブルを変更するために、 システムロックファイルを作成し、 ppp の設定ファイルを読みます。 全ての外部コマンド ("shell" や "!bg" で実行されます) は、 .Nm ppp を起動したユーザ ID で実行されます。 ユーザ ID 0 にて正確になにが行われているのかに興味がある場合には、 ログ機能の .Sq ID0 を参照してください。 .Sh 始める前に 最初に .Nm を実行する時には、いくつかの初期設定を整える必要があります。 まず、カーネルにトンネルデバイスが含まれていなければ なりません (GENERIC カーネルではデフォルトで 1 つ含まれます)。 もし含まれていない場合や複数の tun インタフェースが必要な場合、 以下の行をカーネル設定ファイルに追加して、 カーネルを再構築する必要があります: .Pp .Dl pseudo-device tun N .Pp ここで .Ar N は .Em PPP 接続を行いたい最大の数です。 つぎに、 .Pa /dev ディレクトリにトンネルデバイスのエントリ .Pa /dev/tunN があるかどうかを調べてください。 ここで .Sq N は、0 から始まる tun デバイスの番号です。 もし無いようならば、"sh ./MAKEDEV tunN" を実行すれば作ることができます。 これにより 0 から .Ar N までの tun デバイスが作成されます。 最後に、ログファイルを作成します。 .Nm ppp は .Xr syslog 3 を使用して情報をログします。通常のログファイル名は .Pa /var/log/ppp.log です。 このファイルに出力を行うためには、以下の行を .Pa /etc/syslog.conf ファイルに記述してください: .Bd -literal -offset indent !ppp *.*/var/log/ppp.log .Ed .Pp TAB と書かれている場所には、実際にはタブを入力します。 スペースを使うと、なにも知らされぬままこの行は無視されます。 .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 シグナルを送ることをお忘れなく。 .Sh 手動ダイアル 以下の例では、あなたのマシン名が .Dv awfulhak であるとして説明します。 .Nm を引数無しで起動すると (前述の .Em パーミッション 参照) 次のプロンプトが表示されます: .Bd -literal -offset indent ppp ON awfulhak> .Ed .Pp プロンプトの .Sq ON の部分は常に大文字であるべきです。ここが小文字の場合、 .Dq passwd コマンドを使用してパスワードを入力しなければならないことを意味します。 実行中の .Nm に接続し、 まだ正しいパスワードを入力していない場合にのみこのような状態になります。 .Pp ここで、モデムのデバイス名、スピードやパリティの設定、 CTS/RTS 信号を使うかどうか (デフォルトでは CTS/RTS が使用されます) を 指定して、開始可能です。もしハードウェアが CTS/RTS 信号を持っていない場合 (これは PPP 可能な端末サーバに直接つなぐ場合に起こり得ます)、 .Nm は そのポートを通してどんな出力も送らず、来るはずのない信号を待ち続けます。 したがって、直接接続で通信ができないような場合には、 CTS/RTS を off にしてみてください: .Bd -literal -offset indent ppp ON awfulhak> set line /dev/cuaa0 ppp ON awfulhak> set speed 38400 ppp ON awfulhak> set parity even ppp ON awfulhak> set ctsrts on ppp ON awfulhak> show modem * モデム関連のパラメータが、ここに示されます * ppp ON awfulhak> .Ed .Pp ここでは、直接モデムと通信するために term コマンドを使用可能です: .Bd -literal -offset indent ppp ON awfulhak> term at OK atdt123456 CONNECT login: ppp Password: Protocol: ppp .Ed .Pp 相手が .Em PPP で話しはじめると、 .Nm はそれを自動的に検出してコマンドモードに戻ります。 .Bd -literal -offset indent ppp ON awfulhak> PPP ON awfulhak> .Ed .Pp これで接続されました! プロンプトの .Sq PPP が大文字に変化して、接続されたことを知らせます。 show コマンドを使用すれば、どのように事態が進行しているのかが分ります: .Bd -literal -offset indent PPP ON awfulhak> show lcp * LCP 関連の情報がここに表示されます * PPP ON awfulhak> show ipcp * IPCP 関連の情報がここに表示されます * .Ed .Pp この時点で、マシンは接続先に対するホスト単位のルート (host route) を持っています。 これはリンクの相手のホストとのみ接続可能であるという意味です。 デフォルトルートのエントリ (他のルーティングエントリを持たずに、全パケットを .Em PPP リンクの相手に送る ように、あなたのマシンに指示します)を追加したければ、 以下のコマンドを入力してください。 .Bd -literal -offset indent PPP ON awfulhak> add default HISADDR .Ed .Pp .Sq HISADDR という文字列は、相手側の IP アドレスを表します。 .Sq HISADDR の位置に .Sq INTERFACE キーワードを使用可能です。 これにより tun インタフェース上に直接経路を作成します。 ここで、(ping, telnet, ftp のような) ネットワークアプリケーションを 別のウインドウで使用可能です。 使用可能コマンドの詳細は .Em PPP コマンドリスト の節を参照してください。 .Sh 自動ダイアル 自動ダイアルを行うためには、 Dial と Login のチャットスクリプトを 用意しなければなりません。定義の例は .Pa /etc/ppp/ppp.conf.sample を見てください ( .Pa /etc/ppp/ppp.conf の書式は非常に簡単です)。 各行は単一のコメント、インクルード、ラベル、コマンドのいずれかを含みます。 .Bl -bullet -compact .It .Pq Dq # で始まる行は、コメントとして扱われます。 コメント行と認識した場合、先行する空白は無視されます。 .It インクルードは語 .Sq !include から始まる行です。 一つの引数 - インクルードするファイル - を持つ必要があります。 古いバージョンの .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 ppp を立ち上げる際に、接続先のラベル名を指定可能です。 .Dq default ラベルに関係づけられたコマンドが実行されてから、 接続先ラベルに関連づけられたコマンドが実行されます。 .Nm を引数無しで起動した場合、 .Dq default だけは実行されます。load コマンドを使用して、 .Pa /etc/ppp/ppp.conf のセクションを手動でロード可能です: .Bd -literal -offset indent PPP ON awfulhak> load MyISP .Ed .Pp ひとたび接続が確立したなら、プロンプトの .Sq ppp は .Sq PPP に変わります: .Bd -literal -offset indent # ppp MyISP ... ppp ON awfulhak> dial dial OK! login OK! PPP ON awfulhak> .Ed .Pp もし .Pa /etc/ppp/ppp.linkup が存在していれば、 .Em PPP 接続が確立された時に、その内容が実行されます。 デフォルトルート追加については。 提供されている .Pa /etc/ppp/ppp.conf.sample の .Dq pmdeman の例を参照してください。 .Dv HISADDR , .Dv MYADDR , .Dv INTERFACE という文字列はおのおのの IP アドレスとインタフェース名を表しています。 同様に、接続が閉じられると、 .Pa /etc/ppp/ppp.linkdown ファイルの内容が実行されます。 これらのファイルのフォーマットは .Pa /etc/ppp/ppp.conf と同じです。 .Sh バックグラウンドダイアル .Nm ppp を使って非対話的に接続を確立したい場合 (例えば .Xr crontab 5 エントリや .Xr at 1 ジョブから使うような場合) には、 .Fl background オプションを使います。この場合にも .Pa /etc/ppp/ppp.conf で定義された接続先のラベルを指定しなければなりません。 このラベルには .Dq set ifaddr コマンドが含まれ、 リモートの接続先の IP アドレスを定義する必要があります。( .Pa /etc/ppp/ppp.conf.sample 参照。) .Fl background が指定された場合、 .Nm はすぐに接続を確立しようとします。 複数の電話番号が指定された場合には、各電話番号が一回づつ試されます。 これらに失敗すると、 .Nm は即座に終了し、0 でない終了コードを返します。 接続に成功すると .Nm はデーモンになり、呼び出し側に終了コード 0 を返します。 デーモンは、リモートシステムが接続を終了した場合、 もしくは .Dv TERM シグナルを受け取った場合に、自動的に終了します。 .Sh ダイアルオンデマンド デマンドダイアル機能は .Fl auto または .Fl ddial オプションにて有効にされます。この場合にも .Pa /etc/ppp/ppp.conf で定義された接続先のラベルを指定しなければなりません。 これには、リモート接続先の IP アドレスを指定するための .Dq set ifaddr コマンドも書かれていなければなりません ( .Pa /etc/ppp/ppp.conf.sample を参照してください)。 .Bd -literal -offset indent # ppp -auto pmdemand ... # .Ed .Pp .Fl auto または .Fl ddial が指定された時に .Nm はデーモンとして動作しますが、以下のように診断ポートを 通じて設定を確認したり変更したりすることができます (これは .Fl background や .Fl direct のモードでも可能です): .Bd -literal -offset indent # pppctl -v 3000 show ipcp Password: IPCP [Opened] his side: xxxx .... .Ed .Pp 現在 .Xr telnet 1 を使用して対話的に会話することもできます。 .Pp これを実現するために、後述のように .Dq set server コマンドを使用する必要があります。 .Pa /etc/ppp/ppp.secret を設定し .Dv USR1 シグナルを送ることにより、 過去を振り返って診断ポートにて listen するように .Nm プログラムを実行することが可能です。 .Fl auto モードにて 送信パケットが検出された時、 .Nm は (チャットスクリプトに基づいて) ダイアルを行い、 通信相手に接続しようとします。 .Fl ddial モードでは回線がダウンしていることが確認された場合にはいつでも ダイアルが行われます。 接続に失敗したら、デフォルトの動作では 30 秒間待ち、 別の送信パケットが検出された時に接続しようとします。 この動作は .Bd -literal -offset indent set redial seconds|random[.nseconds|random] [dial_attempts] .Ed .Pp によって変更することができます。 .Sq seconds は、再び接続しようとするまでの秒数です。 引数が .Sq random の場合には、待ち時間を 0 秒から 30 秒の間でランダムに選びます。 .Sq nseconds は電話番号リストの中の次の番号をダイアルする前に待つ秒数です。( .Dq set phone コマンドを参照してください)。これのデフォルトは 3 秒です。 繰り返しますが、引数が .Sq random の場合には、待ち時間を 0 秒から 30 秒の間でランダムに選びます。 .Sq dial_attempts は、受け取った個々の送信パケットに対して、何回接続を試みるのかを示す 数字です。 このパラメータが省略された場合には、以前の値がそのまま使われます。 .Sq dial_attempts に 0 が指定された場合には、 .Nm は接続できるまでダイアルを続けます。 .Bd -literal -offset indent set redial 10.3 4 .Ed .Pp は個々の送信パケットに対して 4 回接続を試み、 番号間の待ち時間が 3 秒で、すべての番号を試した後に 10 秒待つことを表します。 複数の電話番号が指定されている場合でも、トータルのダイアル回数は 4 回のままです。 (それぞれの番号を 4 回ダイアルするのではありません)。 リンクの両端が .Nm のデマンドダイアルモードを利用している場合は、 ダイアル間隔を変更しておくのが良いでしょう。 もし、リンクの両端が同じタイムアウト時間に設定されていて、 リンクが切れて両方に送信待ちのパケットがあった場合、 両方が同時に相手を呼び出しあうことになってしまいます。 場所によっては、シリアルリンクに信頼性がなく、 切れるべきでない時にキャリアが失われるかもしれません。 セッションの途中で予期せずキャリアが失われた場合、 .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 のデフォルト値はゼロ (再接続しない) です。 このオプションを使用する際には注意が必要です。 もしローカル側のタイムアウトがリモート側よりもわずかに長いと、 リモート側がタイムアウトにより回線を切断した場合に、 再接続機能が (指定した回数まで) 起動されてしまいます。 注: この文脈においては、多くの LQR を喪失するとキャリア喪失を引き起こし、 ひいては再接続を引き起こします。 .Fl background フラグが指定された場合、接続が行えるまで すべての電話番号が最大一回ダイアルされます。 .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 を編集します。 例えば、以下のように設定すれば良いでしょう: .Dl ttyd1 "/usr/libexec/getty std.38400" dialup on secure .Xr getty 8 を起動するために .Xr init 8 プロセスに .Dv HUP シグナルを送るのを 忘れないでください。 .Dl # kill -HUP 1 .It 接続するユーザのためのアカウントを用意します。 .Bd -literal ppp:xxxx:66:66:PPP Login User:/home/ppp:/usr/local/bin/ppplogin .Ed .Pp .It .Pa /usr/local/bin/ppplogin ファイルを以下のような内容で作成します: .Bd -literal -offset indent #!/bin/sh -p exec /usr/sbin/ppp -direct .Ed .Pp (さらに制御を行うためにラベル名を指定することもできます。) .Pp ダイレクトモード .Pq Fl direct では、 .Nm は標準入力と標準出力を使って動作します。クライアント動作の .Nm と同様に、 .Xr pppctl 8 を使用するか設定済みの診断ポートに .Xr telnet 8 することで、コマンドモードでの制御が可能です。 .It オプションでサポートされている Microsoft の IPCP ネームサーバと NetBIOS ネームサーバの 交渉を有効にすることが可能です。 .Dq enable msext と .Dq set ns pri-addr [sec-addr] および .Dq set nbns pri-addr [sec-addr] を .Pa /etc/ppp/ppp.conf ファイルに追加します。 .El .Pp .Sh PPP 接続の受け入れ (方法その 2) この方法は、モデムの接続を扱うのに .Em mgetty+sendfax を使用するようにすすめている点が異なります。 最近のバージョン (0.99 以降) では、 .Dq AUTO_PPP オプションをつけてコンパイルすることで、クライアントが ログインプロンプトに向かって .Em PPP を話すのを検出することができます。 手順は以下の通りです: .Bl -enum .It AUTO_PPP オプションが使えるように、バージョン 0.99 か それ以降の mgetty+sendfax を入手、設定、インストールします。 .It モデムが接続されているポートで mgetty が起動されるように .Pa /etc/ttys を編集します。 例えば、以下のように設定すれば良いでしょう: .Dl cuaa1 "/usr/local/sbin/mgetty -s 57600" dialup on .It 接続するユーザのためのアカウントを用意します。 .Bd -literal Pfred:xxxx:66:66:Fred's PPP:/home/ppp:/etc/ppp/ppp-dialup .Ed .Pp .It ファイル .Pa /etc/ppp/sample.ppp-dialup , .Pa /etc/ppp/sample.ppp-pap-dialup , .Pa /etc/ppp/ppp.conf.sample をよく読んで、要点を理解してください。以下のようにすると .Pa /etc/ppp/ppp-pap-dialup が .Pa /usr/local/etc/mgetty+sendfax/login.conf から呼び出されます。 .Dl /AutoPPP/ - - /etc/ppp/ppp-pap-dialup .El .Pp .Sh 内向き接続の認証 通常、接続の受信側は相手が相手自身を認証することを要求します。 これは通常 .Xr login 1 にて行われますが、代りに PAP か CHAP を使用可能です。 2 つのうちで CHAP の方がより安全ですが、 クライアントによってはサポートしていないものがあります。 どちらを使いたいか決めたら、 .Sq enable chap または .Sq enable pap を .Pa ppp.conf の適切なセクションに追加してください。 .Pp その後、 .Pa /etc/ppp/ppp.secret ファイルの設定を行う必要があります。 このファイルは、クライアントになりうるマシンごとに 1 行を含みます。 各行は 4 つまでのフィールドからなります: .Bd -literal -offset indent name key [hisaddr [label]] .Ed .Pp .Ar name と .Ar key は期待されるクライアントを指定します。 .Pa ppp.secret の如何なる .Ar name No / Ar key の組み合わせにおいても適切でない返答をクライアントが与える場合、 認証は失敗します。 .Pp 認証に成功したならば、 .Pq 指定時には .Ar hisaddr を IP 番号交渉時に使用します。詳細は .Dq set ifaddr コマンドを参照してください。 .Pp 認証に成功し .Ar label が指定された場合、現在のシステムラベルは .Ar label にマッチするように修正されます。 このことはファイル .Pa ppp.linkup と .Pa ppp.linkdown の後続のパーズに影響があります。 .Sh PPP オーバ TCP (別名: トンネリング) シリアルリンク上以外の .Nm の使用方法として、 ホストとポートを指定することにより、 TCP 接続を使用することが可能です: .Dl set device ui-gate:6669 シリアルデバイスをオープンする代りに、 .Nm は指定されたマシンの指定されたソケットへの TCP 接続をオープンします。 .Nm は telnet プロトコルを使用しないこと、 telnet サーバと交渉できないことに注意を払うべきです。 受信マシン (ui-gate) 上に、 この ppp 接続を受信するポートを設定する必要があります。まず .Pa /etc/services を更新して、サービスを定義します: .Dl ppp-in 6669/tcp # Incoming PPP connections over tcp そして .Pa /etc/inetd.conf を更新して、このポートへの受信接続をどのように扱うかを .Xr inetd 8 に指示します: .Dl ppp-in stream tcp nowait root /usr/sbin/ppp ppp -direct ppp-in .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 add 10.0.1.0 255.255.255.0 10.0.4.2 .Ed .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 awfulhak (起動側) の .Pa /etc/ppp/ppp.conf エントリは以下を含む必要があります: .Bd -literal -offset indent ui-gate: set escape 0xff set device ui-gate:ppp-in set dial set timeout 30 15 5 set log Phase Chat Connect Carrier hdlc LCP IPCP CCP tun set ifaddr 10.0.4.2 10.0.4.1 add 10.0.2.0 255.255.255.0 10.0.4.1 .Ed .Pp PAP を有効にしようとしている場合、以下の設定も必要です: .Bd -literal -offset indent set authname MyAuthName set authkey MyAuthKey .Ed .Pp 我々は、 ui-gate に 10.0.4.1 のアドレスを割り当て、 awfulhak に 10.0.4.2 のアドレスを割り当てようとしています。 接続をオープンするためには、以下をタイプするだけで良いです。 .Dl awfulhak # ppp -background ui-gate 結果として、 awfulhak にはネットワーク 10.0.2.0/24 への新たな「ルート」が、 ui-gate にはネットワーク 10.0.1.0/24 への新たな「ルート」が、 TCP 接続経由でそれぞれ作成されます。 ネットワークは実質的にブリッジされます - 下にある TCP 接続はパブリックなネットワーク (例えばインターネット) を またがっても良いです。 また 2 つのゲートウェイ間では ppp トラフィックは 概念的に TCP ストリーム中でカプセル化されます (パケットがパケットに対応するわけではありません)。 この機構の大きな欠点は、同時に 2 つの「配送保証」機構が存在することです - この 2 つとは、下の TCP ストリームと .Em PPP リンク上で使用されるプロトコルであり、おそらくまた TCP でしょう。 パケット喪失が起ると、両者はそれぞれの方法で喪失した パケットを再送しようと するでしょう。 .Sh パケットエイリアシング .Fl alias コマンドラインオプションにより、 パケットエイリアシングが有効になります。 これにより、 .Nm ホストがローカルエリアネットワークの他のコンピュータに対して マスカレードゲートウェイとして動作するようになります。 送信される IP パケットは、まるで .Nm ホストから来たかのようにエイリアスされ、 受信パケットは、それがローカルエリアネットワークの正しいマシンに 送られるようにエイリアスが戻されます。 パケットエイリアシングにより、 未登録でプライベートなサブネット上のコンピュータを 外部から見えないようにしつつ、 インターネットへアクセス可能とします。 一般に、 .Nm が正しく動作していることの確認は、 まず最初にパケットエイリアシングを禁止して行います。 次に .Fl alias オプションを有効にして、 .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 パケットのフィルタリング この実装では、パケットのフィルタリングがサポートされています。 ifilter, ofilter, dfilter, afilter の 4 種類のフィルタがあります。 ここでは基本的なことについて書くことにします。 .Bl -bullet -compact .It フィルタ定義は以下のような構文になっています。 set filter-name rule-no action [src_addr/src_width] [dst_addr/dst_width] [proto [src [lt|eq|gt] port ]] [dst [lt|eq|gt] port] [estab] .Bl -enum .It .Sq filter-name には、ifilter, ofilter, dfilter, afilter のうちのどれか一つを指定します。 .It .Sq permit と .Sq deny の二つの action があります。 もし、あるパケットが規則に一致した場合、 結びつけられた action が直ちに実行されます。 .It .Sq src_width と .Sq dst_width は、アドレスの範囲を表現するネットマスクのように働きます。 .It .Sq proto は icmp, udp, tcp のうちのいずれか一つです。 .It .Sq port number は数字で指定するか、 .Pa /etc/services のサービス名で指定することができます。 .El .Pp .It 各フィルタは規則 0 から始まり、20 個までの規則をもつことができます。 規則の集合は、規則 0 が定義されていなければ、有効にはなりません。 すなわち、デフォルトでは全てが通されます。 .It パケットにマッチする規則が無い場合は、パケットは破棄 (ブロック) されます。 .It すべての規則を消去するには、 .Dq set filter-name -1 を使ってください。 .El .Pp .Pa /etc/ppp/ppp.conf.filter.example を参照してください。 .Sh アイドルタイマ、回線品質要求タイマ、リトライタイマの設定 アイドルタイマを調べたり/設定するためには、それぞれ .Dq show timeout と .Dq set timeout idle [LQR [FSM-resend]] コマンドを使ってください: .Bd -literal -offset indent ppp ON awfulhak> set timeout 600 .Ed .Pp タイムアウト時間は秒数で指定します。デフォルト値は timeout が 180 秒 (3 分)、lprtimer が 30 秒、 retrytimer が 3 秒です。 アイドルタイマ機能を使わないようにするためには、 次のコマンドを利用してください。 .Bd -literal -offset indent ppp ON awfulhak> set timeout 0 .Ed .Pp .Fl auto モードでは、アイドルタイムアウトが発生すると .Nm プログラムは実行したままで .Em PPP セッションを終了します。別の引金となるパケットがきた時に リンクを再び確立しようとします。 .Sh Predictor-1 および DEFLATE 圧縮 このバージョンでは、 現在の IETF ドラフトに基づき、CCP および Predictor type 1 圧縮 もしくは deflate 圧縮をサポートしています。 デフォルトの動作として、 .Nm は、接続相手が同意 .Pq あるいは要求 した場合に、 この機能を使おうと (もしくは受け入れようと) します。 .Nm は deflate プロトコルを優先します。 これらの機能を使用したくない時には .Dq disable と .Dq deny のコマンドを参照してください。 .Pp .Dq disable deflate か .Dq deny deflate の一方を使用することにより、 方向ごとに異ったアルゴリズムを使用することができます。 .Sh IP アドレスの制御 .Nm は IP アドレスの交渉のために IPCP を使います。接続の両側は、自分が 使おうとするアドレスを提示し、要求された IP アドレスが受け入れ可能な ものであれば、相手に ACK (肯定応答) を返します。 受け入れることができなければ、別の IP アドレスの使用を促すために .Nm は相手に NAK (否定応答) を返します。 接続の両側が受け取った要求に同意し (ACK を送っ) た時、 IPCP はオープン状態にセットされ、ネットワーク層での接続が確立されます。 IPCP の動作を制御するために、この実装はローカルとリモートの IP アドレスを定義するための .Dq set ifaddr コマンドを持っています。 .Bd -literal -offset indent set ifaddr [src_addr [dst_addr [netmask [trigger_addr]]]] .Ed .Pp ここで、 .Sq src_addr はローカル側で使おうと思っている IP アドレスで、 .Sq dst_addr はリモート側が使用すべき IP アドレスです。 .Sq netmask は使用すべきネットマスクです。 .Sq src_addr と .Sq dst_addr のデフォルトは 0.0.0.0 であり、 .Sq netmask のデフォルトは .Sq src_addr に適したマスク値です。 .Sq netmask は小さくすることのみ可能です。便利な値は 255.255.255.255 でしょう。 誤った .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 上の例の意味は次の通りです: .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 アドレスを制御する サーバとして動作しており、もう一方はその方針に従わなくてはなりません。 より柔軟な動作をさせるために、`ifaddr' 変数の IP アドレス指定を もっと緩やかにすることが可能です: .Pp .Dl set ifaddr 192.244.177.38/24 192.244.177.2/20 .Pp スラッシュ (/) に続く数字は、この IP アドレスで意味のあるビットの数を 表現しています。上の例は以下のことを示しています。 .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 コマンドを使って、ダイアルスクリプトにプロバイダの電話番号を記述します。 ダイアルやリダイアルに使用する電話番号は、 パイプ (|) またはコロン (:) で区切って 複数指定することができます。例えば、以下のようになります。 .Bd -literal -offset indent set phone "111[|222]...[:333[|444]...]... .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 秒以内に受信できなければ、 もう一度 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 ログ使用時には) コマンドのログは特別な方法でとられ、( .Sq ******** とログされますので) 実際のパスワードが危険にさらされることはありません。 .Ar chat ログ使用時には、実際のパスワードの代りに '\\P' とログされます。 .Pp ログインスクリプトはプロバイダによって大きく違うものになるでしょう。 .It シリアル回線と通信速度を指定するためには .Dq set line と .Dq set speed を使います。例えば以下のようになります。 .Bd -literal -offset indent set line /dev/cuaa0 set speed 115200 .Ed .Pp FreeBSD では cuaa0 が一つめのシリアルポートになります。 OpenBSD で .Nm を実行している場合には cua00 が一つめです。 あなたのモデムが 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 ISP があなたが提示した最初の IP 番号を受け付ける場合、 第 3, 4 の引数に .Dq 0.0.0.0 を指定してください。 これにより ISP が番号を割当てます。 (3 つめの引数は、 .Sq src_addr に対してデフォルトのマスクよりも制約が緩いため、無視されます。) .El .Pp 自分の IP アドレスもプロバイダの IP アドレスも 知らない場合には、以下の例のようにするとよいでしょう。 .Bd -literal -offset indent set ifaddr 10.10.10.10/0 10.10.11.11/0 0.0.0.0 0.0.0.0 .Ed .Pp .It ほとんどの場合、プロバイダはデフォルトルータでもあるでしょう。 この場合で .Fl auto モード使用時には、以下の行を .Pa /etc/ppp/ppp.conf に追加します。 .Bd -literal -offset indent delete ALL add default HISADDR .Ed .Pp これは、 .Nm が使用している tun インタフェースに関連する直接ではない ルーティングエントリを削除して、 それから 10.10.11.11 をデフォルトルートとして追加するよう .Nm に指示します。 .Fl auto モードを使用していない時にはこれは必要ありません。 なぜなら、 .Nm がすぐにダイアルして新しい IP 番号を相手と交渉できるからです。 .Pp .Fl auto モードを使用していないとき、もしくは動的 IP 番号を使用するときには、 次の 2 行を .Pa /etc/ppp/ppp.linkup ファイルに追加しておかなければなりません: .Bd -literal -offset indent delete ALL add default HISADDR .Ed .Pp HISADDR は「相手」の IP 番号を意味するマクロです。 使用する IP 番号に関して (IPCP を使用して) 合意 もしくは ( .Dq set ifaddr を使用して) 設定してはじめて、使用可能です。 一旦接続が確立されると、 .Nm は直接ではないインタフェースのルートを全て削除し、 デフォルトルートが相手の IP 番号を指すように設定します。 .Pa /etc/ppp/ppp.conf で使ったのと同じラベルを使用してください。 .Pp もしコマンドを対話的に入力しているのであれば、接続に成功した後で .Bd -literal -offset indent add default HISADDR .Ed .Pp とタイプするだけで充分です。 .It プロバイダが PAP/CHAP による認証を要求している場合は、 .Pa /etc/ppp/ppp.conf ファイルに以下の行を追加してください: .Bd -literal -offset indent set authname MyName set authkey MyPassword .Ed .Pp デフォルトではどちらも受け付けられますので、ISP が何を要求しても大丈夫です。 .El .Pp 現実の例を見たい場合には、 .Pa /etc/ppp/ppp.conf.sample と .Pa /etc/ppp/ppp.linkup.sample を参照してください。 ラベル pmdemand は、ほとんどのプロバイダで使用できるでしょう。 .Sh ログ機能 .Nm は以下のログ情報を、 .Xr syslog 3 経由で、もしくはスクリーンに出力することができます: .Bl -column SMMMMMM -offset indent .It Li Async 非同期レベルパケットの 16 進ダンプ .It Li Carrier 'CARRIER' まで含めたチャットログの生成 .It Li CCP CCP パケットトレースの生成 .It Li Chat チャットスクリプトのトレースログの生成 .It Li Command コマンド実行のログ .It Li Connect 完全なチャットログの生成 .It Li Debug (非常に長い)デバッグ情報のログ .It Li HDLC HDLC パケットの 16 進ダンプ .It Li ID0 ユーザ ID 0 で実行された全関数呼び出しを詳細に記録 .It Li IPCP IPCP パケットトレースの生成 .It Li LCP LCP パケットトレースの生成 .It Li Link アドレスの割当およびリンクの確立、解放イベントのログ .It Li LQM LQR レポートの生成 .It Li Phase フェイズ遷移ログの出力 .It Li TCP/IP 全 TCP/IP パケットのダンプ .It Li TUN ログの各行に tun デバイスを含めます -.It Li Warning ターミナルデバイスへの出力。ターミナルが存在しない場合は、LOG_WARNING を使用してファイルに送ります。 -.It Li Error ターミナルデバイスとログファイルへの出力で、LOG_ERROR を使用します。 +.It Li Warning 端末デバイスへの出力。端末が存在しない場合は、LOG_WARNING を使用してファイルに送ります。 +.It Li Error 端末デバイスとログファイルへの出力で、LOG_ERROR を使用します。 .It Li Alert ログファイルへの出力で、LOG_ALERT を使用します。 .El .Pp .Dq set log コマンドで、ログの出力レベルを設定することができます。 また、複数のレベルを単一コマンドラインにて指定することも可能です。 デフォルトは、 .Dq set log Carrier Link Phase です。 .Pp スクリーンに直接ログを表示することも可能です。 文法は同じで、語 .Dq local が .Dq set log の直後に付くことだけが違います。 デフォルトは .Dq set log local (つまり、直接スクリーンにログ表示) です。 .Pp .Dq set log Op local への最初の引数が '+' か '-' の文字で始まる場合、 現在のログレベルを消去せずに修正します。例えば: .Bd -literal -offset indent PPP ON awfulhak> set log carrier link phase PPP ON awfulhak> show log Log: Carrier Link Phase Warning Error Alert Local: Warning Error Alert PPP ON awfulhak> set log -link +tcp/ip -warning PPP ON awfulhak> set log local +command PPP ON awfulhak> show log Log: Carrier 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 20 .It INT このシグナルを受信すると、現在の接続がもしあればそれを終了します。 .Fl auto もしくは .Fl ddial のモードではない場合、 .Nm は終了します。 .It HUP, TERM, QUIT .Nm を終了させます。 .It USR1 対話モードではない場合、 .Nm にサーバソケットが存在する場合にはそれらをクローズさせ、 3000 + トンネルデバイス番号のインターネットソケットを オープンさせます。 これは、適切なローカルパスワードが .Pa /etc/ppp/ppp.secret に指定されている場合にのみ行われます。 .It USR2 .Nm に全サーバソケットをクローズさせます。 .El .Pp .Sh PPP コマンドリスト この節では利用可能コマンドとその効果をリストします。 .Nm ppp セッションで対話的に使用することも、 設定ファイルで指定することも、 .Xr pppctl 8 もしくは .Xr telnet 1 セッションで指定することも可能です。 .Bl -tag -width 20 .It accept|deny|enable|disable option.... これらのディレクティブは 最初の接続においてどのように相手と交渉するかを .Nm に指示します。各 .Dq option は、accept/deny および enable/disable のデフォルトを持ちます。 .Dq accept は相手がこのオプションを要求したら、ACK を送ることを意味します。 .Dq deny は相手がこのオプションを要求したら、NACK を送ることを意味します。 .Dq enable はこのオプションを当方が要求することを意味します。 .Dq disable はこのオプションを当方が要求しないことを意味します。 .Pp .Dq option は以下のいずれかです: .Bl -tag -width 20 .It acfcomp デフォルト: enable かつ accept。 ACFComp はアドレスおよびコントロールフィールド圧縮 (Address and Control Field Compression) を意味します。 LCP パケット以外は非常に良く似たフィールトを持ちますので、 簡単に圧縮可能です。 .It chap デフォルト: 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" を使用するものがあります。 詳細については .Dq set encrypt コマンドの記述を参照してください。 .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 Magnalink Variable Resource Compression と指定されています! .Nm は .Nm pppd と交渉する能力がありますが、 .Dq pppd-deflate が .Ar enable かつ .Ar accept されている場合のみです。 .It lqr デフォルト: disable かつ accept。 このオプションはリンク品質要求 (Link Quality Request) を送信するかどうかを 決定します。 LQR は、モデムのキャリア検出を使用せずに、リンクダウンを .Nm に決定させるプロトコルです。 .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 オプションを参照)。 .Pp クライアントとして PAP を使用する場合、 .Dq AuthName と .Dq AuthKey を .Pa /etc/ppp/ppp.conf に指定するだけで良いです。 PAP はデフォルトで accept されます。 .It pppd-deflate デフォルト: disable かつ deny。 .Ar deflate オプションのバリエーションで、 .Xr pppd 8 プログラムとの交渉を許可します。 詳細は、上述の .Ar deflate 部分を参照してください。デフォルトでは抑止されますので、 .Pa rfc1975 に従っていないことになります。 .It pred1 デフォルト: enable かつ accept。 このオプションは圧縮制御プロトコル (Compression Control Protocol; CCP) に Predictor 1 圧縮を使用するかどうかを決定します。 .It protocomp デフォルト: enable かつ accept。 このオプションは PFC (プロトコルフィールド圧縮) の交渉を行うために使用されます。 この機構により、 プロトコルフィールドが 2 オクテッドから 1 オクテッドに減ります。 .It vjcomp デフォルト: enable かつ accept。 このオプションは Van Jacobson ヘッダ圧縮を使用するかどうかを決定します。 .El .Pp 以下のオプションは、実際には相手と交渉しません。 それゆえ accept および deny は意味を持ちません。 .Bl -tag -width 20 .It msext デフォルト: disable。 このオプションは Microsoft の .Em PPP 拡張の使用を許可します。 これにより、DNS と NetBIOS NS の交渉をサポートします。 このオプションを有効にすることにより、"set ns" と "set nbns" で 与えられる値を渡せるようになります。 .It passwdauth デフォルト: disable。 このオプションを指定することにより、 PAP 認証コードが呼び出し側を認証する時に、 .Pa /etc/ppp/ppp.secret ファイルではなくパスワードファイル ( .Xr passwd 5 参照) を使用させます。 .It proxy デフォルト: disable。 このオプションを指定することにより、 .Nm に相手のためにプロクシ ARP をさせます。 .It throughput デフォルト: disable。 このオプションを有効にすると、 .Nm はスループット統計を収集します。 ずれ動く 5 秒間のウィンドウにおいて入出力が検査され、 現在、最良、総計の数値が保持されます。 このデータは関連する .Em PPP 層が終了するときに出力され、また .Dq show コマンドで表示することで得られます。スループット統計は .Dq IPCP と .Dq modem のレベルで利用可能です。 .It utmp デフォルト: enable。 通常ユーザが PAP もしくは CHAP で認証された時で、 .Nm が .Fl direct モードで実行されている時は、このユーザのエントリが utmp ファイルおよび wtmp ファイルに作成されます。 このオプションを disable すると、 .Nm は utmp および wtmp のエントリを作成しません。 通常、 ユーザがログインしかつ認証することを要求する場合のみ必要です。 .El .It add[!] dest mask gateway .Ar dest は宛先 IP アドレスであり、 .Ar mask はそのマスクです。 .Ar 0 0 はデフォルトルートを意味します。 .Ar dest および .Ar mask の引数の場所で、シンボル名 .Sq default を使用可能です。 .Ar gateway は、 .Ar dest マシン/ネットワークに至る、次のホップのゲートウェイです。 宛先にシンボル名 .Sq MYADDR と .Sq HISADDR を使用可能であり、 .Ar gateway には .Sq HISADDR もしくは .Sq INTERFACE を使用可能です。 .Sq MYADDR はインタフェースアドレスに置き換えられ、 .Sq HISADDR はインタフェースの宛先アドレスに置き換えられ、 .Sq INTERFACE は現在のインタフェース名に置き換えられます。 インタフェースの宛先アドレスが ( .Dq set ifaddr によって) 割当てられていない場合、現在の .Sq INTERFACE が .Sq HISADDR の代りに使用されます。 .Pp このコマンドを .Pa ppp.conf ファイルで使用するときの制限についての詳細は、後述の .Dq set ifaddr コマンドを参照してください。 .Pp .Ar add! コマンド ( .Dq \&! に注意) 使用時には、 ルートが存在する場合には .Sq route change コマンド (詳細は .Xr route 8 参照) にてルートを更新します。 .It allow ..... このコマンドは .Nm と設定ファイルへのアクセスを制御します。 ユーザレベルでのアクセスは可能であり、 設定ファイルのラベルと .Nm の実行モードに依存します。 例えば、ユーザ .Sq fred のみがラベル .Sq fredlabel に .Fl background モードでアクセスできるように、 .Nm を構成したいかもしれません。 .Pp ユーザ ID 0 はこれらのコマンドの対象外です。 .Bl -tag -width 20 .It allow user|users logname... デフォルトでは、ユーザ ID 0 のみがアクセスを許されています。 このコマンドが指定されると、 .Dq allow users が記載されている個所に列挙されているユーザのアクセスが可能となります。 .Sq default セクションは 常に最初にチェックされます (スタートアップ時に常にロードされる唯一の セクションです)。後続する .Dq allow users コマンドは、先行するコマンドに優先します。 あるラベル以外のすべてにアクセスを許すことが可能であり、 そのためにはデフォルトユーザを .Sq default セクションで指定し、新しいユーザリストをこのあるラベルに指定します。 .Pp ユーザ .Sq * が指定されると、全ユーザにアクセスが許されます。 .It allow mode|modes modelist... デフォルトでは全 .Nm モードが使用可能です。 このコマンドが使用されると、 このコマンドが指定されたラベルのロードに許されるアクセスモードが制限されます。 .Dq allow users コマンドと同様、 各 .Dq allow modes コマンドは先行するコマンドに優先し、 .Sq default セクションは常に最初にチェックされます。 .Pp 使用可能なモードは以下の通りです: .Sq interactive , .Sq auto , .Sq direct , .Sq dedicated , .Sq ddial , .Sq background , .Sq * . .El .Pp .It alias ..... このコマンドは .Nm 組込みのエイリアシング (マスカレーディング) 機能を 制御するために使用します。 このコードが必要となるまで、 .Nm はこのコードをロードしません。 エイリアスライブラリがあなたのシステムにインストールされないことも 大いにありえます (エイリアスライブラリがセキュリティ的に危険だと認識する管理者もいます)。 あなたのシステムでエイリアシングが有効になると、 以下のコマンドが使用可能となります: .Bl -tag -width 20 .It alias enable [yes|no] エイリアシングを有効もしくは無効にします。 .Fl alias コマンドラインフラグは .Dq alias enable yes と同じ意味です。 .It alias port [proto targetIP:targetPORT [aliasIP:]aliasPORT] このコマンドにより、 マシン [aliasIP] の .Dq aliasPORT へ到着する接続を、 .Dq targetIP の .Dq targetPORT へリダイレクトします。 proto を指定した場合、指定したプロトコルの接続のみマッチします。 あなたのゲートウェイの後のマシンでインターネット電話等を実行したい場合に、 このオプションは有用です。 .It alias addr [addr_local addr_alias] このコマンドにより、 .Dq addr_alias へのデータを .Dq addr_local へリダイレクトします。 あなたのゲートウェイの後で 少数の実 IP アドレスを持ち、 これらをあなたのゲートウェイの後の特定のマシンにマップしたい場合に有用です。 .It alias deny_incoming [yes|no] yes に設定した場合、ファイアウォールがパケットを落すのと同様に、 全ての入力の接続を拒否します。 .It alias log [yes|no] このオプションを指定することにより、 種々のエイリアシングの統計と情報を、ファイル .Pa /var/log/alias.log にログします。 .It alias same_ports [yes|no] 有効になると、 エイリアスライブラリが出力パケットのポート番号を変更しようとすることを 止めさせます。 RPC や LPD といった、 ウェルノウンポート (well known port) からの接続を要求する プロトコルをサポートするのに有用です。 .It alias use_sockets [yes|no] 有効になると、 エイリアスライブラリにソケットを作成させ、 正しい ftp データ入力や IRC 接続を保証できるようになります。 .It alias unregistered_only [yes|no] 出力パケットを、登録されていない送信元アドレスに変更することだけを行います。 RFC1918 に依ると、登録されていない送信元アドレスは 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16 です。 .It alias help|? このコマンドにより、 使用可能なエイリアスコマンドのまとめを表示します。 .El .Pp .It [!]bg command 指定したコマンドをバックグラウンドで実行します。 擬似引数 .Dv HISADDR , .Dv INTERFACE , .Dv MYADDR は適切な値に置き換えられます。 コマンド実行中に .Nm を停止させたい場合は、 .Dv shell コマンドを使用してください。 .It close 現在の接続をクローズします (が終了しません)。 .It delete[!] dest このコマンドは指定した .Ar dest IP アドレスのルートを削除します。 .Ar dest に .Sq ALL が指定された場合、 .Nm が使用中のインタフェースの非直接エントリが全て削除されます。 tunX のエントリで実際のリンク以外を削除することを意味します。 .Ar dest に .Sq default が指定された場合、デフォルトルートが削除されます。 .Pp .Ar delete! コマンドが使用された場合 (最後の .Dq \&! に注意)、存在しないルートについて .Nm は文句を言わなくなります. .It dial|call [remote] .Dq remote が指定されている場合、 .Dq remote システムへの接続が .Dq dial および .Dq login スクリプトを使用して確立されます。 そうでない場合、現在の設定が使用されて接続が確立されます。 .It display 上述 .Dq accept|deny|enable|disable option.... で指定された、交渉可能な値の現在の状態を表示します。 .It down リンクを切断しますが、 綺麗な方法ではなく、物理層が使用不能になったように見えます。 このコマンドを使用することは丁寧ではないとされています。 .It help|? [command] 利用可能なコマンドをリストします。 .Dq command を指定した場合、このコマンドの使用方法を表示します。 .It load [remote] 指定された .Dq remote ラベルをロードします。 .Dq remote が指定されない場合、 .Dq default ラベルが仮定されます。 .It passwd pass 全ての .Nm コマンドセットにアクセスするために要求されるパスワードを指定します。 このパスワードは診断ポート ( .Dq set server コマンド参照) に接続するときに必要です。 .Ar pass の指定は、 .Dq set server コマンドラインもしくは ローカルホストの .Pa /var/log/ppp.secret エントリにて可能です。 .Ar command ログが有効でも、値 .Ar pass はログされず、文字列 .Dq ******** がログされます。 .It quit|bye [all] .Nm を終了します。 .Nm が対話モードであるか .Dq all 引数が指定された場合、 .Nm は終了し、接続をクローズします。 単に .Dq quit を .Xr pppctl 8 もしくは .Xr telnet 1 のセッションから発行しても、現在の接続をクローズしません。 .It save このオプションは (まだ) 実装されていません。 .It set[up] var value このオプションは以下の変数の設定のために使用します: .Bl -tag -width 20 .It set accmap hex-value ACCMap は非同期制御文字マップ (Asyncronous Control Character Map) を 意味します。 これはいつも相手と交渉され、デフォルト値は 0x00000000 です。 このプロトコルが必要なのは、 (XON/XOFF などの) 特定の文字を終点間で受渡すことに依存するハードウェアを 使用する場合です。 .It set filter-name rule-no action [src_addr/src_width] [dst_addr/dst_width] [proto [src [lt|eq|gt] port ]] [dst [lt|eq|gt] port] [estab] .Pp .Nm ppp は 4 つのフィルタセットをサポートします。 afilter は接続を維持 - アイドルタイマをリセット - するためのパケットを指定します。 dfilter は .Fl auto モードにおいて .Nm にリダイアルさせるパケットを指定します。 ifilter はマシンに入力可能なパケットを指定します。 ofilter はマシンから出力可能なパケットを指定します。 デフォルトでは全てのフィルタが全パケットを通過させる値に設定されます。 ルールは .Dq n に従って順番に処理されます。 各セットに対し 20 までのルールを指定可能です。 指定されるセットにおけるどのルールにもマッチしないパケットは破棄されます。 ifilter と ofilter では、パケットをドロップすることを意味します。 afilter では、アイドルタイマをリセットしないことを意味します。 dfilter ではダイアルさせることにはならないことを意味します。 上述のパケットのフィルタリングの節を参照してください。 .It set authkey|key value クライアントモードでの PAP または CHAP の交渉で使用される 認証キー (もしくはパスワード) を、指定した値に設定します。 ダイアルもしくはログインスクリプトの '\\P' シーケンス で使用されるパスワードを指定しますが、 実際のパスワードがログされることを防ぎます。 .Ar command ログが有効な場合、セキュリティの観点から、 .Ar value は .Ar ******** としてログされます。 .It set authname id クライアントモードでの PAP または CHAP の交渉で使用される 認証 ID を設定します。 .It set ctsrts ハードウェアフロー制御をセットします。 これがデフォルトです。 .It set device|line value[,value...] .Nm が使用するデバイスを指定する .Dq value に設定します。 全シリアルデバイス名は .Pa /dev/ から始まることが仮定されています。 .Dq value が .Pa /dev/ から始まらない場合、 .Dq host:port の形式である必要があります。 この場合、 .Nm 指定された .Dq host の指定された .Dq port と接続しようとします。 詳細は上述の .Em PPP オーバ TCP の節を参照してください。 複数の .Dq value を指定した場合、 .Nm は全デバイスについて実行し終るまで、順番にオープンを試みます。 .It set dial chat-script 相手へダイアルする際に使用されるチャットスクリプトを指定します。 後述の .Dq set login コマンドも参照してください。 チャットスクリプトのフォーマットの詳細については、 .Xr chat 8 と設定ファイルの例を参照してください。 以下の特殊な .Sq value をチャットスクリプトに指定可能です: .Bd -literal -offset indent .It \\\\\\\\\\\\\\\\c .Sq 送信 文字列の最後の文字として使用した場合、 改行を追加してはならないことを意味します。 .It \\\\\\\\\\\\\\\\d チャットスクリプトがこのシーケンスに出会うと、2 秒待ちます。 .It \\\\\\\\\\\\\\\\p チャットスクリプトがこのシーケンスに出会うと、1/4 秒待ちます。 .It \\\\\\\\\\\\\\\\n 改行文字と置き換えられます。 .It \\\\\\\\\\\\\\\\r 復改文字と置き換えられます。 .It \\\\\\\\\\\\\\\\s 空白文字と置き換えられます。 .It \\\\\\\\\\\\\\\\t タブ文字と置き換えられます。 .It \\\\\\\\\\\\\\\\T 現在の電話番号と置き換えられます (後述の .Dq set phone 参照)。 .It \\\\\\\\\\\\\\\\P 現在の .Ar authkey 値と置き換えられます (前述の .Dq set authkey 参照)。 .It \\\\\\\\\\\\\\\\U 現在の .Ar authname 値と置き換えられます (前述の .Dq set authname 参照)。 .Ed .Pp 2 つのパーザがこれらのエスケープシーケンスを検査することに注意してください。 .Sq チャットのパーザ にエスケープ文字を見せるには、 .Sq コマンドパーザ からエスケープする必要があります。 つまり、2 つのエスケープを使用する必要があります。例えば次のようにします: .Bd -literal -offset indent set dial "... ATDT\\\\T CONNECT" .Ed .Pp チャットスクリプトから外部コマンドを実行することもできます。 そうするためには、最初の文字をエクスクラメーションマーク .Pq Dq \&! にします。 コマンドが実行されると、標準入力と標準出力がモデムデバイス ( .Dq set device 参照) に向けられ、標準エラー出力が .Nm に読まれて受信待ち文字列もしくは送信文字列に置き換えられます。 .Nm が対話モードで実行している場合、ファイルデスクリプタは .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 .It set hangup chat-script モデムをクローズする前にこれをリセットする時に使用する、 チャットスクリプトを指定します。 .It set encrypt MSChap|MD5 CHAP チャレンジを発行するときに要求および使用する 暗号化アルゴリズムを指定します。 MSChap に設定すると、 .Nm は CHAP チャレンジ送信時 (CHAP が enable されていると仮定しています) に Microsoft RAS のように振舞います。 チャレンジへの応答時には、 .Nm チャレンジに基いてどのように暗号化するかを決定しますので、 この設定は無視されます。 .Bl -tag -width 注: .It 注: Microsoft の暗号化アルゴリズムは MD4 と DES の組み合わせを使用しますので、 .Nm 構築前にマシンに DES 暗号化ソフトウェアをインストールしていないと、 このオプションは使用できません - この場合 MD5 のみ使用されます。 .El .Pp .It set escape value... このオプションは上述の .Dq set accmap オプションに似ています。 リンクを経由する時に「エスケープ」される文字を指定するために使用します。 .It set ifaddr [myaddr [hisaddr [netmask [triggeraddr]]]] このコマンドは、IPCP 交渉の間使用される IP アドレスを指定します。 アドレスのフォーマットは以下の通りです。 .Dl a.b.c.d/n a.b.c.d は IP アドレスであり、 n はこのうち何ビットが有効であるかを示します。 もし /n ビットが省略された場合、デフォルトの /32 になります。 ただし IP アドレスが 0.0.0.0 である場合には、マスクのデフォルトは /0 です。 .Pp .Ar hisaddr に IP 番号の範囲として .Dl a.b.c.d[-d.e.f.g][,h.i.j.k[-l,m,n,o]]... のフォーマットを指定できます。例えば: .Dl set ifaddr 10.0.0.1 10.0.1.2-10.0.1.10,10.0.1.20 は .Ar 10.0.0.1 のみをローカル IP 番号として交渉しますが、指定された 10 個の IP 番号から 相手に割り当てを行います。 相手がこれらの番号のうちの一つを要求し、この番号が未使用な場合には、 .Nm は相手の要求を認めます。 相手がリンクを再確立して前回割当てていた IP 番号を使用したい場合に有用です。 相手が要求した IP 番号が範囲外もしくは使用中の場合、 .Nm はまず範囲内の未使用 IP 番号をランダムに指示します。 相手がこれに賛成しないと、 番号が選択されるか過多の IPCP 構成要求が送出されるまで、 .Nm は次の番号を指示します。 .Pp .Ar triggeraddr が指定された場合、この値が .Ar myaddr の代りに IPCP 交渉で使用されます。 ただし、 .Ar myaddr の範囲のアドレスのみ受け入れられます。 .Pp .Fl auto モードでは設定ファイルの .Dq set ifaddr 行を読んだ直後に .Nm がインタフェースを構成することに注意してください。 他のモードではこれらの値は IPCP 交渉で使用され、 IPCP 層がアップするまでこれらのインタフェースは構成されません。 結果として、 .Fl auto モードでない限り、 .Dq add コマンドを .Pa ppp.conf で使用することは不可能 .Pq か、少くとも賢くない です (代りに .Pa ppp.linkup ファイルが使用されます)。 .Dq allow mode auto を使用して、現在のプロファイルを .Fl auto モードのみに限定してください。 .Pp また、一旦クライアントが自己を認証した後では、 .Ar hisaddr 引数は .Pa ppp.secret ファイルによって優先されることに注意してください。詳細は .Em 内向き接続の認証 の節を参照してください。 .It set loopback on|off .Ar on に設定された場合 (デフォルトです)、 宛先アドレスが .Em PPP インタフェースのアドレスと同一の送出パケットを、 .Nm は自動的にループバックさせます。 .Ar off に設定された場合、 .Nm はパケットを送信します。 この場合おそらく相手方で ICMP リダイレクトが発生します。 .It set log [local] [+|-]value... このコマンドにより現在のログレベルを修正できます。 詳細はログ機能の節を参照してください。 .It set login chat-script この .Ar chat-script はダイアルスクリプトを補います。 もし両方が指定された場合、ダイアルスクリプトの後で、 ログインスクリプトが実行されます。 ダイアルスクリプト中で使用可能なエスケープシーケンスはここでも使用可能です。 .It set mru value デフォルトの MRU は 1500 です。 この値を増加させた場合、相手は MTU を増加させても *かまいません*。 デフォルトの MRU より減らすことは意味がありません。 なぜなら、 .Em PPP プロトコルでは少なくとも 1500 オクテッドのパケットを 受信できなければ *ならない* からです。 .It set mtu value デフォルトの MTU は 1500 です。 相手が指定した MRU によって増加させることができます。 MTU はこのオプションによってのみ減らすことが可能です。 この値を増加させることは無効です。 なぜなら、相手は大きくなったパケットを受信できる保証が無いからです。 .It set ns x.x.x.x y.y.y.y このオプションは交渉される Microsoft DNS サーバを設定します。 .It set nbns x.x.x.x y.y.y.y このオプションは交渉される Microsoft NetBIOS DNS サーバを設定します。 .It set openmode active|passive Op 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 telno[|telno]...[:telno[|telno]...]... ダイアルおよびログインのチャットスクリプトで使用される \\\\T 文字列が 置き換えられる電話番号を指定できます。 複数の電話番号をパイプ (|) もしくはコロン (:) で区切って指定可能です。 パイプの後の番号がダイアルされるのは、 直前の番号へのダイアルもしくはログインのスクリプトが失敗した場合のみです。 ラインの切断の理由にかかわらず、 コロンで区切られた番号は順番に試行されます。 複数の番号を指定した場合、接続が確立するまで .Nm はこのルールに基いてダイアルします。 再試行の最大値は、後述の .Dq set redial で指定します。 .Fl background モードでは各番号は最大 1 回試行されます。 .It set reconnect timeout ntries (CD の喪失もしくは LQR の失敗により) 予想外のライン切断となった場合、 指定した .Ar timeout の後に接続が再確立されます。 ラインは最大 .Ar ntries 回、再接続されます。 .Ar ntries のデフォルトは 0 です。 .Ar timeout に .Ar random を指定すると、0 から 30 秒の間の任意時間の停止となります。 .It set redial seconds[.nseconds] [attempts] .Nm ppp に .Ar attempts 回のリダイアルを指示できます。 1 より大きな数を指定した場合 (上述の .Ar set phone 参照)、 各番号にダイアルする前に、 .Ar nseconds だけ停止します。 最初の番号にダイアル開始する前に .Ar seconds だけ停止します。 .Dq random もここで使用できます。 .It set stopped [LCPseconds [IPCPseconds [CCPseconds]]] このオプションが指定されると、 指定した有限状態機械が停止状態になってから .Dq seconds で指定した秒数だけ停止したのち、 .Nm はタイムアウトします。 このオプションは、 .Nm が停止状態になったことにより返事をしないといった状態を見る場合と、 .Dq set openmode passive を使用した場合に相手が指定時間内に Configure Request を送らないことを タイムアウト検出する場合には、便利かもしれません。 .Dq set log +lcp +ipcp +ccp を使用すると、 .Nm は全状態遷移をログします。 .Pp デフォルト値は 0 であり、 停止状態による .Nm のタイムアウトは発生しません。 .Pp この値は openmode の遅延 (上述の .Dq set openmode 参照) より小さくなってはなりません。 .It set server|socket TcpPort|LocalName|none [password] [mask] このコマンドは .Nm に指定したポートもしくは .Sq 診断ポート にてコマンド接続の入力を listen するように指示します。 これは .Nm が対話モードの時には出来ません。 語 .Ar none は .Nm に既に存在するソケットをクローズさせます。 UNIX ドメインソケットを指定したい場合、 .Ar LocalName に絶対ファイル名を指定します。そうしないと、TCP ポートの名前もしくは番号 であると解釈されます。 UNIX ドメインソケットに使用される 8 進 umask を指定可能です。 .Sq 0 から始まる 4 桁 8 進数で指定します。 umask の詳細については .Xr umask 2 を参照してください。TCP ポート名がどのように変換されるかについては .Xr services 5 を参照してください。 .Pp このソケットにクライアントが接続するときに使用されねばならないパスワードも 指定可能です。 ここにパスワードを指定しないと、 .Pa /etc/ppp/ppp.secret からドメインサフィックスを除いたローカルホスト名にてマシン名で検索を行います。 詳細は .Xr hostname 1 を参照してください。 パスワードに空文字列を指定すると、パスワードは要求されなくなります。 .Pp .Nm をサーバソケットと共に使用する場合、通信機構として .Xr pppctl 8 コマンドを使用することが好ましいです。 現在 .Xr telnet 1 も使用可能ですが、将来リンク暗号化が実装されるかもしれませんので、 .Xr telnet 1 に依存しないようにしてください。 .It set speed value シリアルデバイスの速度を指定します。 .It set timeout idle [LQR [FSM-resend]] アイドルタイマ、 (有効にされているなら) LQR タイマ、 有限状態機械 .Pq FSM; finite state machine リトライタイマの値を指定します。 .It set vj slots nslots このコマンドは最初の .Ar slots 番号を指定します。 .Nm は VJ 圧縮が enable されている時には、 これを使用して相手と交渉をします (前述の .Sq enable コマンドを参照してください)。 デフォルト値は 16 です。 .Ar nslots は .Ar 4 から .Ar 16 の間で、それぞれの値を含みます。 .It set vj slotcomp on|off このコマンドは .Nm に VJ スロット圧縮を交渉するか否かを指示します。 デフォルトではスロット圧縮は .Ar on です。 .It set help|? 使用可能なセットコマンドのまとめを表示します。 .El .Pp .It shell|! [command] .Dq command が指定されない場合、 .Dv SHELL 環境変数で指定されるシェルが起動されます。 そうでなければ指定されたコマンドが実行されます。 擬似引数 .Dv HISADDR , .Dv INTERFACE , .Dv MYADDR は適切な値に置き換えられます。! 文字を使用した場合、 この後のコマンドとの間にスペースが必要です。 このコマンドはフォアグラウンドで実行されることに注意してください - .Nm はプロセスが終了するまでは実行を続けません。 バックグラウンドでコマンド処理を行いたい場合には、 .Dv bg コマンドを使用してください。 .It show var このコマンドを使用して、以下を確認できます: .Bl -tag -width 20 .It show [adio]filter 指定したフィルタの現在のルールをリストします。 .It show auth 現在の authname と暗号値を表示します。 .Nm を DES サポート無しで構築した場合、 .Ar MD5 が使用されるため、暗号値は表示されません。 .It show ccp 現在の CCP 統計を表示します。 .It show compress 現在の圧縮統計を表示します。 .It show escape 現在のエスケープ文字を表示します。 .It show hdlc 現在の HDLC 統計を表示します。 .It show ipcp 現在の IPCP 統計を表示します。 .It show lcp 現在の LCP 統計を表示します。 .It show loopback 現在のループバック状態を表示します。 .It show log 現在のログ値を表示します。 .It show mem 現在のメモリ統計を表示します。 .It show modem 現在のモデム統計を表示します。 .It show mru 現在の MRU を表示します。 .It show mtu 現在の MTU を表示します。 .It show proto 現在のプロトコルの総計を表示します。 .It show reconnect 現在の再接続値を表示します。 .It show redial 現在のリダイアル値を表示します。 .It show stopped 現在の stopped タイムアウト値を表示します。 .It show route 現在のルーティングテーブルを表示します。 .It show timeout 現在のタイムアウト値を表示します。 .It show msext 現在の Microsoft 拡張値を表示します。 .It show version .Nm の現在のバージョン番号を表示します。 .It show help|? 利用可能な show コマンドのまとめを表示します。 .El .Pp .It term -ターミナルモードに移行します。 +端末モードに移行します。 キーボードからタイプした文字はモデムに送られます。 モデムから読んだ文字はスクリーンに表示されます。 モデムの相手側に .Nm の相手が認識された時には、 .Nm は自動的にパケットモードを有効にし、コマンドモードに戻ります。 .El .Pp .Sh 更に詳細について .Bl -bullet -compact .It 設定ファイルの例を読んでください。良い情報源です。 また、 .It .Dq help , .Dq show ? , .Dq alias ? , .Dq set ? , .Dq set ? コマンドを使ってください。 .El .Pp .Sh 関連ファイル .Nm は、4 つのファイル .Pa ppp.conf , .Pa ppp.linkup , .Pa ppp.linkdown , .Pa ppp.secret を参照します。 これらのファイルは .Pa /etc/ppp に置かれます。 .Bl -tag -width flag .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/tunX.pid tunX デバイスに接続されている .Nm プログラムのプロセス ID (pid) 。 ここで 'X' はデバイスの番号です。このファイルは .Fl background , .Fl auto , .Fl ddial のいずれかのモードの時のみ作成されます。 .It Pa /var/run/ttyXX.if このポートで使われている tun インタフェース。 このファイルも .Fl background , .Fl auto , .Fl ddial のいずれかのモードの時のみ作成されます。 .Pa It /etc/services サービス名でポート番号が指定されている場合に、ポート番号を取得します。 .El .Pp .Sh 関連項目 .Xr at 1 , .Xr chat 8 , .Xr crontab 5 , .Xr ftp 1 , .Xr getty 8 , .Xr gzip 1 , .Xr hostname 1 , .Xr inetd 8 , .Xr init 8 , .Xr login 1 , .Xr passwd 5 , .Xr ping 8 , .Xr pppctl 8 , .Xr pppd 8 , .Xr route 8 , .Xr syslog 3 , .Xr syslog.conf 5 , .Xr syslogd 8 , .Xr tcpdump 1 , .Xr telnet 1 , .Xr traceroute 8 , .Xr uucplock 3 .Sh 歴史 元のプログラムは Toshiharu OHNO (tony-o@iij.ad.jp) が作成し、 FreeBSD-2.0.5 に Atsushi Murai (amurai@spec.co.jp) が提出しました。 .Pp それから、本質的に Brian Somers (brian@Awfulhak.org) が修正をし、'97 年 11 月に OpenBSD に移植されました (2.2-RELEASE の直後です)。 diff --git a/ja/man/man8/pw.8 b/ja/man/man8/pw.8 index f414d55299..bdeb2aacc8 100644 --- a/ja/man/man8/pw.8 +++ b/ja/man/man8/pw.8 @@ -1,804 +1,804 @@ .\" Copyright (C) 1996 .\" David L. Nugent. 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 DAVID L. NUGENT 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 DAVID L. NUGENT 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. .\" .\" %Id: pw.8,v 1.1.1.1.2.5 1997/11/04 07:16:14 charnier Exp % .\" jpman %Id: pw.8,v 1.3 1997/10/28 15:30:48 kuriyama Stab % .\" .Dd December 9, 1996 .Dt PW 8 .Os .Sh 名称 .Nm pw .Nd システムユーザ、グループの作成、削除、変更、表示 .Sh 書式 .Nm pw .Ar useradd .Op name|uid .Op Fl C Ar config .Op Fl q .Op Fl n Ar name .Op Fl u Ar uid .Op Fl c Ar comment .Op Fl d Ar dir .Op Fl e Ar date .Op Fl p Ar date .Op Fl g Ar group .Op Fl G Ar grouplist .Op Fl m .Op Fl k Ar dir .Op Fl s Ar shell .Op Fl o .Op Fl L Ar class .Op Fl h Ar fd .Op Fl N .Op Fl P .Nm pw .Ar useradd .Op name|uid .Op Fl D .Op Fl C Ar config .Op Fl q .Op Fl b Ar dir .Op Fl e Ar days .Op Fl p Ar days .Op Fl g Ar group .Op Fl G Ar grouplist .Op Fl k Ar dir .Op Fl u Ar min,max .Op Fl i Ar min,max .Op Fl w Ar method .Op Fl s Ar shell .Nm pw .Ar userdel .Op name|uid .Op Fl n Ar name .Op Fl u Ar uid .Op Fl r .Nm pw .Ar usermod .Op name|uid .Op Fl C Ar config .Op Fl q .Op Fl n Ar name .Op Fl u Ar uid .Op Fl c Ar comment .Op Fl d Ar dir .Op Fl e Ar date .Op Fl p Ar date .Op Fl g Ar group .Op Fl G Ar grouplist .Op Fl l Ar name .Op Fl m .Op Fl k Ar dir .Op Fl w Ar method .Op Fl s Ar shell .Op Fl L Ar class .Op Fl h Ar fd .Op Fl N .Op Fl P .Nm pw .Ar usershow .Op name|uid .Op Fl n Ar name .Op Fl u Ar uid .Op Fl F .Op Fl P .Op Fl a .Nm pw .Ar usernext .Op Fl C Ar config .Op Fl q .Nm pw .Ar groupadd .Op group|gid .Op Fl C Ar config .Op Fl q .Op Fl n Ar group .Op Fl g Ar gid .Op Fl M Ar members .Op Fl o .Op Fl h Ar fd .Op Fl N .Op Fl P .Nm pw .Ar groupdel .Op Fl n Ar name .Op Fl g Ar gid .Nm pw .Ar groupmod .Op Fl C Ar config .Op Fl q .Op Fl F .Op Fl n Ar name .Op Fl g Ar gid .Op Fl l Ar name .Op Fl M Ar members .Op Fl m Ar newmembers .Op Fl h Ar fd .Op Fl N .Op Fl P .Nm pw .Ar groupshow .Op Fl n Ar name .Op Fl g Ar gid .Op Fl F .Op Fl P .Op Fl a .Nm pw .Ar groupnext .Op Fl C Ar config .Op Fl q .Sh 解説 .Nm pw は、システムの .Ar user 、 .Ar group ファイルのユーザ、グループを簡単に、標準的な方法で追加、変更、削除 することができるようにするコマンドライン版のエディタです。 .Nm は、ローカルな user ファイルと group ファイルを操作することができるだ けだということに注意して下さい。 NIS のユーザ、グループは NIS サーバ上 で管理しなければなりません。 .Nm は root で実行されなければならず、 .Pa passwd , .Pa master.passwd , .Pa group ファイルや、安全なまたは安全でないパスワードデータベースファイル の更新作業を行います。 .Pp .Xr pw 8 のコマンドラインにかかれている最初の一つか二つのキーワードは、引数の残り に対する文脈を規定します。 .Ar user と .Ar group のキーワードはどちらも、 .Ar add , .Ar del , .Ar mod , .Ar show , .Ar next と組み合わせるか、分離して用いることができ、どちらの順序 (例えば showuser, usershow, show user, user show はすべて同じことと みなされます) で指定してもかまいません。 この柔軟性は、実際のユーザ、グループデータベース操作のために .Nm を呼ぶ対話的なスクリプトには便利です。 .Fl n Ar name , .Fl u Ar uid , .Fl g Ar gid オプションを使う代わりに、 これらのキーワードに続けてユーザ名、グループ名、数字の ID のうち一つ を指定することができます。 .Pp 以下のフラグは操作のすべてのモードで共通です: .Pp .Bl -tag -width "-G grouplist" .It Fl C Ar config .Nm は新しいユーザアカウントとグループはどのように作られるべきかという 方針の情報を得るために、デフォルトではファイル .Pa /etc/pw.conf を読み込みますが、 .Fl C -オプションで異なるコンフィグレーションファイルを指定できます。 -コンフィグレーションファイルのほとんどの内容は、コマンドライン +オプションで異なる設定ファイルを指定できます。 +設定ファイルのほとんどの内容は、コマンドライン オプションにより上書きされますが、新しいアカウントを追加するための標準 -的な情報をコンフィグレーションファイルに設定しておくと +的な情報を設定ファイルに設定しておくと より便利かもしれません。 .It Fl q このオプションを使うと .Nm はエラーメッセージを抑制します。これは、注意深くフォーマットされたディスプレイへのメッセージ表示よりも、 .Nm から返された戻り値を解釈する方が好まれるような対話的な環境では 便利かもしれません。 .It Fl N このオプションは add と modify 操作で使います。 .Nm は、ユーザ/グループデータベースの更新をスキップして、操作を実際には 実行せずに、代わりに結果だけを出力します。 .Fl P オプションを使うと、標準 passwd と可読なフォーマットの切り替えが できます。 .El .Pp .Sh ユーザオプション 以下のオプションは .Ar useradd と .Ar usermod コマンドに付けます: .Pp .Bl -tag -width "-G grouplist" .It Fl n Ar name ユーザ名/アカウント名を指定します。 .It Fl u Ar uid ユーザ ID / アカウント ID を数字で指定します。 .Pp アカウント名は uid を含み、逆も同様であるため、通常これらのオプション のどちらか片方しか必要ではありません。 また .Ql Fl n や .Ql Fl u を使わなくても、コマンドライン上で .Ar useradd , .Ar userdel , .Ar usermod , .Ar usershow キーワードの直後にアカウントとユーザIDのどちらでも続けることができます。 しかし、両方を指定しなければならないこともしばしばあります。 例えば、存在するユーザの uid を .Ar usermod で変えたり、新しいアカウントを作るときにデフォルトの uid を上書きした りするときです。 .Nm で .Ar useradd を使って新しいユーザに uid を自動的に割り当てたい場合は、 .Ql Fl u オプションを使っては .Em いけません 。 .El .Pp .Ar useradd と .Ar usermod の両方で使えるオプション: .Bl -tag -width "-G grouplist" .It Fl c Ar comment このオプションは passwd の GECOS フィールドの内容をセットします。 このフィールドは、カンマで区切られた四つのサブフィールドで、一般的には ユーザの姓名、勤務先または地区、職場と自宅の電話番号を含みます。 これらのサブフィールドは慣習的に使われるだけであり、省略可能です。 このフィールドが空白を含む場合、コメント自身をダブルクォート .Ql \&" でくくらなければなりません。 サブフィールドの区切りで使われたような、フィールド内のカンマの使用は 避けて下さい。そして、コロン .Ql \&: キャラクタも passwd ファイルのフィールド区切りであるため使えません。 .It Fl d Ar dir このオプションは、アカウントのホームディレクトリを設定します。 通常、これはホームディレクトリがデフォルト (基本のホームディレクトリ - 普通 .Pa /home と サブディレクトリとしてのアカウント名 - を指定する pw.conf で決定されます) と異なる場合にだけ使うことになるでしょう。 .It Fl e Ar date アカウントが破棄される日付をセットします。 この日付のフォーマットは、 10 進の UNIX 時間か .Ql \& dd-mmm-yy[yy] フォーマットの日付のどちらかになり、後者は dd が日、mmmが月で、数字と アルファベット('Jan', 'Feb' 等)のどちらでもよく、年は 2 または 4 桁の 数字からなります。 このオプションは、 .Ql \&+n[mhdwoy] の形の相対的な日付も受け付けます。 .Ql \&n は 10 進数、 8 進数 (0 から始まる) 、 16 進数 (0x で始まる) の数字で、 その後に現在の日付時刻から破棄される日までの分(m)、時(h)、日(d)、 曜日(w)、月(o)、年(y)の数がセットされます。 .It Fl p Ar date アカウントのパスワードが破棄される日付をセットします。 このフィールドは、強制的なパスワードの変更を適用することを除けば、 アカウントを破棄するオプションと同等です。 アカウントを破棄するオプションと同じフォーマットを受け付けます。 .It Fl g Ar group 与えられた group をアカウントの初期グループにセットします。 .Ar group は、グループ名または対応するグループ ID 番号が使えます。 .It Fl G Ar grouplist アカウントが属する別のグループをセットします。 .Ar grouplist は、カンマ区切りのリスト、またはグループ名、またはグループ IDです。 ユーザを加える場合、 .Pa /etc/group の各グループにユーザ名が追加されます。 ユーザを編集する場合、 .Ar grouplist に指定されたグループにユーザ名が加えられ、 指定されなかったグループからは除かれます。 注意: ユーザは .Pa /etc/group の初期グループには加えられるべきではありません。 また、グループのメンバの変更は現在のログインにはすぐには影響されず、変 更後のログインにだけ影響します。 .It Fl L Ar class このオプションは生成されたユーザのログインクラスをセットします。 ユーザクラスに関する情報は .Xr login.conf 5 を参照して下さい。 .It Fl m このオプションは、ユーザのホームディレクトリの作成を試みるように .Nm に指示します。 もちろんこれは .Ar useradd で新しいアカウントを加えるときにも役に立ちますが、 存在するユーザのホームディレクトリをファイルシステムの別の場所に 移動する、という使い方もできます。 新しいホームディレクトリは、一般にユーザが個人的に使う -シェルコンフィグレーションファイル一式を含む、 +シェルの設定ファイル一式を含む、 .Ar 雛型 ディレクトリの内容と共に移されます。 .Ar usermod にアカウントを指定して .Ql Fl m が用いられると、そのユーザのホームディレクトリにある -コンフィグレーションファイルはプロトタイプのファイルで +設定ファイルはプロトタイプのファイルで .Em 上書きされません 。 .Pp ユーザのホームディレクトリが作成されるとき、デフォルトで .Ql Fl b Ar dir オプション (下記参照) で指定された .Ar basehome ディレクトリのサブディレクトリとして作られ、アカウント名と同じ名前が付 けられます。 コマンドラインに .Ql Fl d Ar dir オプションを付けると、上書きするようにもできます。 .It Fl k Ar dir このオプションは、 .Ar 雛型 のサブディレクトリをセットします。ユーザのホームディレクトリが作成 -されるとき、そこから基本の起動時ファイル、コンフィグレーションファイル +されるとき、そこから基本の起動時ファイル、設定ファイル がコピーされます。 このオプションは、 .Ql Fl D (下記参照) や .Ql Fl m と共に使ったときにのみ意味があります。 .It Fl s Ar shell ユーザのログインシェルを .Ar shell にセットまたは変更します。 シェルプログラムへのパスが省略されると、 .Nm は .Pa /etc/pw.conf で指定された .Ar shellpath を探し、それを適切に補います。 パスを指定するのは、特別な理由があるのでなければ、避けるべきだ ということを覚えておきましょう。 指定しないことで、プログラムが存在し、かつ実行可能であることを .Nm に確認させることができるからです。 フルパスを指定する (または空のままの "" シェルにしておく) と このチェックをせず、対話的なログインをさせないアカウントを 設定しなければならないときに設定される .Pa /nonexistent のようなエントリを作ることができます。 .It Fl L Ar class ユーザの passwd レコード内の .Em class フィールドをセットします。 このフィールドは現在使われていませんが、将来は .Em termcap エントリのようなタグ (詳細は .Xr passwd 5 を参照のこと) を指定するために使われるでしょう。 .It Fl h Ar fd このオプションは、 .Nm を使ってアカウントパスワードを設定することができる対話的なスクリプトを 設定できるような特別のインタフェースを用意します。 コマンドラインと環境は、プログラムが情報を受け取るしくみとしては 基本的に安全ではないため、 .Nm はファイル記述子 (通常対話的スクリプトとプログラム間のパイプ) を通してのみ、アカウントとグループのパスワードの設定を許可します。 .Ar sh , .Ar bash , .Ar ksh , .Ar perl は皆、これができるしくみを持っています。 .Ql Fl h Ar 0 が指定されると、代わりに .Nm はユーザのパスワードを求めるプロンプトを出し、 .Em stdin をパスワードを読み込むファイル記述子とします。 このパスワードは一度しか読み込まれず、対話的な使用よりも スクリプト向きにできていることに注意して下さい。 .Xr passwd 1 の行に合わせて新しいパスワードの確認をしたい場合、これは .Nm を呼び出す対話的なスクリプトの一部として実装されるべきです。 .Pp 引数 .Ar fd として .Ql \&- が与えられると、パスワードとして .Ql \&* がセットされ、そのアカウントにはパスワードでログインすることが できないようになります。 .El .Pp .Ar useradd を使うことで、存在するユーザ ID と重複する新しいアカウントを作成するこ とができるようになります。 これは普通エラーになって拒否されるはずですが、 .Ql Fl o オプションが重複チェックを上書きし、ユーザ ID の重複を 許すことになります。 これは、同一のユーザが異なるコンテキスト(異なるグループ割り当てや 異なるホームディレクトリ、異なるシェル)でログインするのを許可する 場合に、各アカウントに基本的に同一のアクセス権を与える場合に便利です。 .Pp .Ar useradd コマンドは .Ql Fl D オプションを使うことで新しいユーザとグループのデフォルトも設定できます。 新しいユーザを付け加える代わりに、 .Nm -はコンフィグレーションファイル +は設定ファイル .Pa /etc/pw.conf に新しいデフォルトのセットを書き込みます。 .Ql Fl D オプションを使う場合、 .Ql Fl n Ar name や .Ql Fl u Ar uid を使ってはいけません。そうでないとエラーになります。 .Ql Fl D を使うと、 .Ar useradd コマンドのいくつかのコマンドラインスイッチの意味が変わります。 それは: .Bl -tag -width "-G grouplist" .It Fl D -コンフィグレーションファイル +設定ファイル .Pa /etc/pw.conf ( もしくは .Ql Fl C Ar config -オプションが使われたときは異なる名前のコンフィグレーションファイル ) +オプションが使われたときは異なる名前の設定ファイル ) の中でのデフォルトの値をセットします。 .It Fl b Ar dir ユーザホームディレクトリが作成されるルートディレクトリをセットします。 このオプションのデフォルトの値は .Pa /home ですが、他の好きなディレクトリにセットできます。 .It Fl e Ar days デフォルトのアカウントの有効期間を日数でセットします。 .Ql Fl D を付けずに使われる場合と異なり、引数はアカウントが作成されてから無効に なるまでの日数を指定する数字でなければなりません。 0 という値は、破棄する日付の自動算出を抑制します。 .It Fl p Ar days デフォルトのパスワードの有効期間を日数でセットします。 .It Fl g Ar group 新しいユーザのデフォルトのグループをセットします。 .Ql Fl g Ar \&"" を使って空のグループを指定すると、新しいユーザは自分自身の私的な初期 グループ (ログイン名と同じ名前の新しいグループが作成されます) に 割り当てられます。 グループの指定には、名前または uid を引数として与えることができます。 .It Fl G Ar grouplist 新しいユーザが所属するデフォルトのグループ群を指定します。 これは初期グループとは区別されたグループのセットで、一つの同じグルー プを初期グループとこの別グループ群の両方に指定することは 避けなければなりません。 言い替えると、これらの別グループ群では初期グループ .Em 以外の グループの構成メンバが決められます。 .Ar grouplist はカンマ区切りのグループ名もしくは ID 、もしくはそれらの混在で、 .Pa /etc/pw.conf の中にシンボリック名で保存されます。 .It Fl L Ar class このオプションは、新しいユーザのデフォルトのログインクラスを セットします。 .It Fl k Ar dir デフォルトの .Em 雛型 ディレクトリをセットし、 .Nm がユーザのホームディレクトリを作成するときに、 そこからシェルなどの初期化ファイルのプロトタイプがコピーされます。 .It Fl u Ar min,max , Fl i Ar min,max これらのオプションは、 .Nm により作成された新しいアカウントとグループのために割り当てるユーザと グループの最小の ID と最大の ID をセットします。 デフォルト値はどちらも最小 1000 で最大 32000 です。 .Ar min と .Ar max はどちらも数字で、 max は min より大きく、両方とも 0 から 32767 の範囲 内でなければなりません。 一般に 100 未満のユーザ ID とグループ ID はシステムに予約されており、 32000 より大きな数も (システム daemon が使う) 特殊な目的に 予約されています。 .It Fl w Ar method .Ql Fl w オプションは新しく作成されたユーザアカウントのパスワードをセットするの に使われるデフォルトの方法を指定します。 .Ar method は以下のうちの一つです: .Pp .Bl -tag -width random -offset indent -compact .It no 新しく作成されたアカウントでのログインを不可とします。 .It yes アカウント名をパスワードにします。 .It none パスワードを空欄にします。 .It random ランダムパスワードを生成します。 .El .Pp The .Ql \&random や .Ql \&no method は、最も安全です。前者の場合、 .Nm はパスワードを生成し、標準出力に出力します。 このパスワードは、ユーザがそのアカウントにアクセスするパスワードとして あなたが発行しますが、ユーザ自身が自分のパスワードを指定 (多分ひどい選択です) するものより適切です。 .Ql \&no method にした場合、パスワードでアクセスできるアカウントを与えるために スーパユーザが .Xr passwd 1 を使わなければなりません。 .El .Pp .Ar userdel コマンドには三つしか正しいオプションがありません。 .Ql Fl n Ar name と .Ql Fl u Ar uid オプションには、既に前述の説明があります。 追加オプション: .Bl -tag -width "-G grouplist" .It Fl r このオプションで、 .Nm はユーザのホームディレクトリとその内容のすべてを削除します。 .Nm はシステムからファイルを削除するとき、慎重すぎるやり方をとります。 まず、削除されるアカウントの uid がシステムの別のアカウントでも使われ ていて、パスワードファイルの 'ホーム' ディレクトリが文字 .Ql \&/ で始まる正しいパスであった場合にはファイルは削除されません。 次に、ファイルやディレクトリが実際にそのユーザのものであるか、 誰かの所有であるシンボリックリンクがユーザのホームディレクトリ下にある 場合にだけ削除されます。 最後に、そのユーザの所有であるすべての中身を削除した後、 空のディレクトリだけが削除されます。 更に別の一掃が必要なときは、管理者に任されます。 .El .Pp メールスプールファイルと crontab はユーザ名に無条件に付属しているもの なので、アカウントが削除されたとき常に削除されます。 .Ar at コマンドによって処理待ちのキューに入っているジョブも、ユーザの uid がユニークである (そのシステムの別のアカウントに使われていない) 場合は 削除されます。 .Pp .Ar usershow コマンドは、二種類のフォーマットでアカウントを閲覧できます。 フォーマットは、デフォルトで .Pa /etc/master.passwd で使われているものと同じで、パスワードフィールドは .Ql \&* に置き換えられています。 .Ql Fl P オプションが使われると、 .Nm はより人間に読みやすい形でアカウントの詳細を出力します。 .Ql Fl a オプションは、現在ファイルにあるすべてのユーザをリストします。 .Pp .Ar usernext コマンドは、利用可能な次のユーザ ID とグループ ID を コロン区切りで返します。 これは、通常 .Nm を使う対話的なスクリプトやフロントエンド用です。 .Pp .Sh グループオプション グループを操作するコマンドには、 .Ql Fl C Ar config と .Ql Fl q オプション (前セクションの始めに説明があります) が使えます。 他のグループ関係のコマンド: .Bl -tag -width "-m newmembers" .It Fl n Ar name グループ名を指定します。 .It Fl g Ar gid グループの ID を数字で指定します。 .Pp グループ名は uid を意味し、逆も同様なので、アカウント名 と ID フィールドとして、普通どちらか一つを付ければよいのです。 両方を指定する必要があるのは、新しいグループに指定したグループ ID を 設定するとき、または存在するグループの uid を変えたいときだけです。 .It Fl M Ar memberlist このオプションは、存在するユーザを新しいグループに (groupaddで) 加えたり、存在するメンバリストを (groupmodで) 新しいものに取り換える もうひとつの方法です。 .Ar memberlist は正当で、存在するユーザ名または uid のカンマ区切りのリストです。 .It Fl m Ar newmembers .Op M オプションと同様、このオプションは最初に存在するメンバのリストを 入れ換えることなく、グループに存在するユーザを .Em 追加 します。 ログイン名またはユーザ ID を使うことができ、重複するユーザは警告無く 自動的に削除されます。 .El .Pp .Ar groupadd にも、存在するグループ ID を新しいグループに割り当てる .Ql Fl o オプションがあります。 デフォルトの動作は、グループ追加の試みを拒否することになっており、この オプションはグループ ID の重複チェックを上書きします。 グループ ID を重複させる必要は滅多にありません。 .Pp .Ar groupmod コマンドには、一つの追加オプションがあります: .Pp .Bl -tag -width "-m newmembers" .It Fl l Ar name このオプションで、存在するグループ名を .Ql \&name に変更することができます。 新しい名前は存在しないものでなければならず、存在するグループ名と 重複させようとすると拒否されます。 .El .Pp .Ar groupshow へのオプションは .Ql Fl u Ar uid の代わりにグループ ID を指定する .Ql Fl g Ar gid を付けた .Ar usershow と同じです。 .Pp .Ar groupnext コマンドは、次に使用できるグループ ID を標準出力に返します。 .Sh 診断 .Nm は、操作に成功すると EXIT_SUCCESS を返し、そうでなければ .Xr sysexits 3 により定義された以下の戻り値のうちどれかひとつを返します: .Bl -tag -width xxxx .It EX_USAGE .Bl -bullet -compact .It コマンドラインのシンタックスエラー (不適切なキーワード、未定義オプション)。 .El .It EX_NOPERM .Bl -bullet -compact .It root でないユーザとして、何らかの更新を実行しようとした。 .El .It EX_OSERR .Bl -bullet -compact .It メモリアロケーションエラー。 .It パスワードファイル記述子の読み出しエラー .El .It EX_DATAERR .Bl -bullet -compact .It コマンドライン上やパスワードファイル記述子の、間違った、または正しくな いデータや欠落データ。 .It root アカウントの名前や uid の変更、削除をしようとした。 .El .It EX_OSFILE .Bl -bullet -compact .It 雛型ディレクトリが適切でない、または存在しない。 .It 基本ホームディレクトリが適切でない、または存在しない。 .It 指定したシェルが適切でない、または存在しない。 .El .It EX_NOUSER .Bl -bullet -compact .It 指定されたユーザ、ユーザ ID 、グループ、グループ ID が存在しない。 .It 記録、追加、または更新されたユーザ、グループが予期せず無くなった。 .El .It EX_SOFTWARE .Bl -bullet -compact .It 指定した範囲には未使用グループ ID 、ユーザ ID が残っていない。 .El .It EX_IOERR .Bl -bullet -compact .It -コンフィグレーションファイルの書き換えができない。 +設定ファイルの書き換えができない。 .It グループやユーザデータベースファイルの更新時エラー。 .It パスワードまたはグループデータベースファイルの更新時エラー。 .El .It EX_CONFIG .Bl -bullet -compact .It 基本ホームディレクトリが設定されていない。 .El .El .Pp .Sh 注釈 各コマンドに使用可能なオプションの要約として、 .Dl pw [command] help が使えます。例えば、 .Dl pw useradd help は useradd 操作に使用できるすべてのオプションをリストします。 .Sh 関連ファイル .Bl -tag -width /etc/master.passwd.new -compact .It Pa /etc/master.passwd ユーザデータベース .It Pa /etc/passwd Version 7 フォーマットのパスワードファイル .It Pa /etc/login.conf ユーザケーパビリティデータベース (user capability database) .It Pa /etc/group グループデータベース .It Pa /etc/master.passwd.new マスタパスワードファイルの一時コピー .It Pa /etc/passwd.new Version 7 パスワードファイルの一時コピー .It Pa /etc/group.new グループファイルの一時コピー .It Pa /etc/pw.conf pw コマンドのデフォルトオプションファイル .El .Sh 関連ファイル .Xr chpass 1 , .Xr passwd 1 , .Xr group 5 , .Xr login.conf 5 , .Xr passwd 5 , .Xr pw.conf 5 , .Xr pwd_mkdb 8 , .Xr vipw 8 .Sh 歴史 .Nm は、 SYSV の .Em shadow サポートで使われていた多くのオプションを模倣して書かれましたが、 .Bx 4.4 オペレーティングシステムに特有のパスワードフィールド、 グループフィールドに合わせて変更されています。また、ほとんどの要素が 一つのコマンドにまとめられています。 diff --git a/ja/man/man8/rbootd.8 b/ja/man/man8/rbootd.8 index 7b51bc5b55..0cd1d37c9c 100644 --- a/ja/man/man8/rbootd.8 +++ b/ja/man/man8/rbootd.8 @@ -1,159 +1,159 @@ .\" Copyright (c) 1988, 1992 The University of Utah and the Center .\" for Software Science (CSS). .\" Copyright (c) 1992, 1993 .\" The Regents of the University of California. All rights reserved. .\" .\" This code is derived from software contributed to Berkeley by .\" the Center for Software Science of the University of Utah Computer .\" Science Department. CSS requests users of this software to return .\" to css-dist@cs.utah.edu any improvements that they make and grant .\" CSS redistribution rights. .\" .\" 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. .\" .\" @(#)rbootd.8 8.2 (Berkeley) 12/11/93 .\" %Id: rbootd.8,v 1.3.2.1 1997/12/16 07:17:43 charnier Exp % .\" .\" Utah $Hdr: rbootd.man 3.1 92/07/06$ .\" Author: Jeff Forys, University of Utah CSS .\" jpman %Id: rbootd.8,v 1.2 1997/03/31 14:57:40 horikawa Stab % .\" .Dd "December 11, 1993" .Dt RBOOTD 8 .Os .Sh 名称 .Nm rbootd .Nd HP 社製ワークステーションのブート要求に対応するブートサーバ .Sh 書式 .Nm rbootd .Op Fl ad .Op Fl i Ar interface .Op config_file .Sh 解説 .Nm ユーティリティは、LAN 上の Hewlett-Packard 社製ワークステーションからの ブート要求に対するサービスを行います。 全てのブートファイルはブートファイル用のディレクトリになければならず、 さらに、もしクライアントがブートリクエスト中にパス情報をつけていた場合は、 処理する前にそのパスは取り除かれます。デフォルトでは、 .Nm -は, そのコンフィグレーションファイル中にリストされているマシンからの +は, その設定ファイル中にリストされているマシンからの リクエストにのみ応答します。 .Pp オプションとしては以下のものがあります: .Bl -tag -width indent .It Fl a どのようなマシンからのブート要求にも応えます。このオプションが設定された -場合は、コンフィギュレーションファイルは無視されます。 +場合は、設定ファイルは無視されます。 .It Fl d .Nm をデバッグモードで起動します。受信および送信 されたパケットが端末に表示されるようになります。 .It Fl i Ar interface 指定したインタフェースに対してサービスを行います。 もし指定されていない場合には、 .Nm はループバック以外のもっとも小さい番号の使用可能なインタフェースを システムインタフェースリストから探します。 早いもの順で選ぶので、組合せはバラバラになります。 .El .Pp .Ar config_file を指定すれば、 .Nm -はデフォルトのコンフィギュレーションファイルではなく、こちらのファイルを +はデフォルトの設定ファイルではなく、こちらのファイルを 使用するようになります。 .Pp -コンフィギュレーションファイルは、各行に個々のマシンの設定を記述した +設定ファイルは、各行に個々のマシンの設定を記述した テキストファイルです。行の先頭は各マシンの Ethernet アドレスで始め、 そのあとにブートファイルの名前をオプションとして記述します。 Ethernet アドレスは 6 オクテッドの値を 16 進数で記述し、 各間を ``:'' で区切ります。 ブートファイルの名前は、ブートファイルディレクトリにあるファイルの名前です。 Ethernet アドレスとブートファイルの名前の間は、空白もしくはコンマで区切ら なければなりません。 行中の ``#'' より後は無視します。 .Pp -コンフィギュレーションファイルの例を以下に示します: +設定ファイルの例を以下に示します: .Bl -column 08:00:09:0:66:ad SYSHPBSD,SYSHPUX "# vandy (anything)" .It # .It # ethernet addr boot file(s) comments .It # .It 08:00:09:0:66:ad SYSHPBSD # snake (4.3BSD) .It 08:00:09:0:59:5b # vandy (anything) .It 8::9:1:C6:75 SYSHPBSD,SYSHPUX # jaguar (either) .El .Pp .Nm のログやエラーメッセージは .Xr syslog 3 を使っています。スタートアップメッセージはつねにログに記録され、 致命的なエラー(もしくは .Nm を殺すようなシグナル) が起こった場合にはサーバの終了メッセージもログに残します。 一般的には、致命的ではないエラーはそれによってひき起こされる動作を 無視するといった形で扱われます。 -(例えばコンフィギュレーションファイル中の無効なEthernet アドレスは +(例えば設定ファイル中の無効な Ethernet アドレスは その行が無効になる原因となります)。 .Pp 以下のシグナルを .Xr kill 1 コマンドを使ってサーバプロセスに送ることで、 サーバプロセスに影響を与えることができます: .Bl -tag -width SIGUSR1 -offset -compact .It SIGHUP アクティブな接続を切り、リコンフィグします。 .It SIGUSR1 デバッグモードをオンにします。すでにオンであれば何もしません。 .It SIGUSR2 デバッグモードをオフにします。すでにオフであれば何もしません。 .El .Sh 関連ファイル .Bl -tag -width /usr/libexec/rbootd -compact .It /dev/bpf# パケットフィルタのデバイス .It /etc/rbootd.conf -コンフィギュレーションファイル +設定ファイル .It /tmp/rbootd.dbg デバッグ出力 .It /usr/mdec/rbootd ブートファイルを置くディレクトリ .It /var/run/rbootd.pid .Nm のプロセス ID .El .Sh 関連項目 .Xr kill 1 , .Xr socket 2 , .Xr signal 3 , .Xr syslog 3 .Sh バグ 同一インタフェース上に複数のサーバが走った場合、 同一のパケットに対して各サーバが応答してしまいます。 diff --git a/ja/man/man8/rlogind.8 b/ja/man/man8/rlogind.8 index 228f16d921..9fc865253a 100644 --- a/ja/man/man8/rlogind.8 +++ b/ja/man/man8/rlogind.8 @@ -1,195 +1,195 @@ .\" Copyright (c) 1983, 1989, 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 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: @(#)rlogind.8 8.1 (Berkeley) 6/4/93 .\" %Id: rlogind.8,v 1.4.2.3 1998/02/18 11:48:06 markm Exp % .\" jpman %Id: rlogind.8,v 1.2 1997/05/23 00:50:03 mutoh Stab % .\" .Dd June 4, 1993 .Dt RLOGIND 8 .Os BSD 4.2 .Sh 名称 .Nm rlogind .Nd リモートログインのサーバ .Sh 書式 .Nm .Op Fl Daln .Sh 解説 .Nm は、 .Xr rlogin 1 のためのサーバです。サーバは信頼できるホストからの 特権ポート番号に基づいた認証を用いて、リモートログイン機能を提供します。 .Nm では、以下のオプションが使用可能です。 .Bl -tag -width indent .It Fl D TCP_NODELAY ソケットオプションを設定します。これは、いくつかの ネットワークトラフィックの増大に対して、応答性を向上します。 .It Fl a 検証のために、ホスト名を問い合わせます。 .It Fl l ユーザがスーパユーザとしてログインしない限り、 一般ユーザの .Dq Pa .rhosts による、あらゆる認証を禁止します。 .It Fl n キープアライブメッセージを禁止します。 .El .Pp Kerberos を使っている時には、以下のようなオプションが利用可能です。 .Bl -tag -width indent .It Fl k Kerberos 認証を利用可能にします。 .It Fl v vacuous モードを利用可能にします。 .It Fl x .Xr rlogin 1 セッションで流される全てのデータに .Tn DES 暗号化を施します。このオプションを利用すると、応答性や CPU に負荷が かかりますが、機密性は向上します。 .El .Pp .Nm は、``login'' サービスの仕様に基づく番号のポートで、要求を受け付けます。 詳しくは .Xr services 5 を参照してください。 サービスの要求を受け取ると、以下のプロトコルを開始します。 .Bl -enum .It サーバはクライアントの要求元ポート番号を調べます。 もしポート番号が512〜1023の範囲外であれば、サーバは接続を切断します。 .It サーバはクライアントの要求元アドレスを調べ、それに対応するホスト名を 求めます ( .Xr gethostbyaddr 3 , .Xr hosts 5 , .Xr named 8 を参照してください)。 ホスト名を決定できなければ、ドット表記法によるホストアドレスを 用います。 ホスト名がサーバと同じドメインに属しているか (ドメイン名の最後の二つの 構成要素に基づいて判断します)、あるいは .Fl a オプションが指定されていたら、 ホスト名に対するアドレスを調べて、ホスト名とアドレスが一致しているか どうかを検証します。 アドレスの検証に失敗した場合は、通常の認証作業は行いません。 .El .Pp 要求元ポートの番号を調べ終えたら、 .Nm は、 .Xr rshd 8 で説明している認証作業を開始します。 -そして、疑似ターミナル ( +そして、疑似端末 ( .Xr pty 4 を参照のこと) を割り当てると共に、 ファイルディスクリプタを操作して、 -この疑似ターミナルのスレーブ側がログインプロセスの +この疑似端末のスレーブ側がログインプロセスの .Em stdin , .Em stdout , .Em stderr になるようにします。 認証作業が成功した場合には、 .Xr login 1 プログラムに .Fl f オプションを指定してログインプロセスを生成します。 自動認証作業に失敗した場合には、 -通常のターミナルラインからのログインの場合と同様に、 +通常の端末回線からのログインの場合と同様に、 ユーザに問い合わせをします。 .Pp -ログインプロセスの親プロセスは、疑似ターミナルのマスター側を操作します。 +ログインプロセスの親プロセスは、疑似端末のマスタ側を操作します。 すなわちログインプロセスと、クライアント側の .Xr rlogin 1 プログラムを実体化したものとの間で処理を行います。 通常の処理においては、 .Ql ^S/^Q のような機能を提供したり、割り込み信号をリモートプログラムへと伝えるために .Xr pty 4 で説明しているパケットプロトコルを起動します。 -ログインプロセスは、クライアントのターミナルの通信速度や +ログインプロセスは、クライアントの端末の通信速度や 環境変数 .Ql Ev TERM -で指定されているターミナルタイプを伝えます。 +で指定されている端末タイプを伝えます。 .Xr environ 7 を参照してください。 クライアント側に端末の画面、あるいはウィンドウの大きさを問い合わます。 -また、クライアント側からウィンドウサイズの変更が疑似ターミナルへ +また、クライアント側からウィンドウサイズの変更が疑似端末へ 伝えられます。 .Pp トランスポートレベルのキープアライブメッセージは、オプション .Fl n が指定されていない限り出力されます。 キープアライブメッセージを利用すると、クライアントがクラッシュしたり、 通信不能になってしまった時に、セッションをタイムアウトで 終了することが可能になります。 .Sh 診断 すべての診断メッセージは、ネットワーク接続が切断された後に、最初に 1 の値 のバイトが付加されて通知されます。 .Xr login 1 が起動された後にエラーが発生しない場合、 処理成功の通知のために、NULL バイトを返します。 .Bl -tag -width Ds .It Sy Try again. サーバが .Xr fork 2 に失敗したことを表します。 .El .Sh 関連項目 .Xr login 1 , .Xr ruserok 3 , .Xr hosts 5 , .Xr nologin 5 , .Xr rshd 8 .Sh 関連ファイル .Bl -tag -width /etc/hostsxxxxxxxx -compact .It Pa /etc/hosts .It Pa /etc/hosts.equiv .It Pa $HOME/.rhosts .It Pa /etc/nologin .El .Sh バグ このコマンドが用いている認証手続きは、それぞれのクライアントマシンと 接続媒体が完全であるということを仮定したものです。これはセキュリティホールに なりやすいのですが、``オープン'' な環境においては有用な方針です。 .Pp 全てのデータについて暗号化を行なう機能が実装されるべきです。 .Pp もっと発展性のあるプロトコルが用いられるべきです。 .Sh 歴史 .Nm コマンドは .Bx 4.2 から登場しました。 diff --git a/ja/man/man8/sendmail.8 b/ja/man/man8/sendmail.8 index b7bdaaa971..ccb7bed0fa 100644 --- a/ja/man/man8/sendmail.8 +++ b/ja/man/man8/sendmail.8 @@ -1,588 +1,588 @@ .\" Copyright (c) 1983, 1997 Eric P. Allman .\" Copyright (c) 1988, 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 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. .\" .\" @(#)sendmail.8 8.12 (Berkeley) 2/1/97 .\" jpman %Id: sendmail.8,v 1.2 1997/06/05 01:31:44 yugawa Stab % .\" .Dd February 1, 1997 .Dt SENDMAIL 8 .Os BSD 4 .Sh 名称 .Nm sendmail .Nd 電子メール配送デーモン .Sh 書式 .Nm sendmail .Op Ar flags .Op Ar address ... .Nm newaliases .Nm mailq .Op Fl v .Sh 解説 .Nm sendmail はメッセージを他の人に送ります。必要ならばネットワークを 通してメッセージを正しい場所に転送します。 .Pp ただし、 .Nm sendmail はユーザインタフェースとして使われることは考慮さ れていません。ユーザにとって使いやすいフロントエンドは別のプログラムで 提供されます。 .Nm sendmail は、あらかじめメールとして整形されたメッセージ を配送するためだけに使われます。 .Pp .Nm sendmail を引数を指定せずに起動すると、 .Nm sendmail は標準入力を EOF (エンド・オブ・ ファイル)か `.'だけを含む行まで読み込み、メッセージのなかに記述されている アドレスにメッセージのコピーを送ります。アドレスの文法や内容にもとづいて 経路に使用するネットワークを決定します。 .Pp ローカルアドレスは、ファイルの中を検索して適当なエイリアスを行います。 先頭にバックスラッシュ `\\' のついたアドレスについては、エイリアスは 行なわれません。 通常、送り手はエイリアスの対象に含まれません。つまり、もし `john' が `group' にメールを送って、 `john' が `group' に 含まれている場合、送ったメッセージは `john' には送られません。 .Ss パラメータ .Bl -tag -width Fl .It Fl B Ns Ar type ボディのタイプを .Ar type に設定します。現在有効なのは、 .Li `7BIT' か .Li `8BITMIME' です。 .It Fl ba .Tn ARPANET モードに移行します。すべての入力行は CR-LF で終わらなければならず、 すべてのメッセージの末尾には CR-LF がつきます。また、``From:'' と ``Sender:'' フィールドは送り手の名前としてチェックされます。 .It Fl bd デーモンモードで実行します。バークレー .Tn IPC が必要です。 .Nm sendmail は .Xr fork 2 を行い、バックグラウンドで動作し、ソケット番号 25 で .Tn SMTP コネクションを 待ちます。通常このモードは、 .Pa /etc/rc から実行されています。 .It Fl bD フォアグラウンドで動作する以外は .Fl bd と同じです。 .It Fl bh 現在のホストの状況のデータベースを表示します。 .It Fl bH 現在のホストの状況のデータベースをパージします。 .It Fl bi エイリアスデータベースを初期化します。 .It Fl bm 普通にメールを配送します(デフォルト)。 .It Fl bp メールキューのリストを表示します。 .It Fl bs 標準入出力で .Tn RFC821 にもとづいた .Tn SMTP プロトコルを使います。この フラグは、 .Fl ba フラグのうち .Tn SMTP 互換の全ての操作を含みます。 .It Fl bt アドレスのテストモードで起動します。このモードは対話 モードでアドレスを入力し、処理の過程を表示します。設定ファイル をデバッグするのに使います。 .It Fl bv 名前のチェックだけを行います。メッセージの収集や配送は行い ません。ベリファイモードは、ユーザやメーリングリストが有効かどうかを確認する ために使います。 .It Fl C Ns Ar file 別の設定ファイルを使います。 .Nm sendmail は、別の設定ファイル を使用する場合は root として実行することはできません。 .It Fl d Ns Ar X デバッグ値を .Ar X に設定します。 .ne 1i .It Fl F Ns Ar fullname 送り手のフルネームを設定します。 .It Fl f Ns Ar name ``from'' に入る名前(つまり、送り手の名前です)を設定します。 .Fl f は、``trusted''なユーザ(普通は .Em root , .Em daemon , .Em network です)が使うか、 送り手が自分自身の名前を指定して使う場合のみ指定することができます。 .It Fl h Ns Ar N ホップカウントを .Ar N に設定します。ホップカウントは、 メールが処理されるたびに増えていきます。ホップカウントがリミットになった とき、メールは「エイリアスがループしている」という旨のエラーメッセージと いっしょに送り返されます。 もしこのフラグが指定されなければ、メッセージのなかの ``Received:'' 行がカウント されます。 .It Fl i 入力されるメッセージ中の `.' だけを含む行を無視します。 このフラグは、データをファイルから読み込むような場合に使用する必要があります。 .It Fl N Ar dsn 配送状況の通知条件を .Ar dsn に設定します。 .Ar dsn には、 .Ql never (何も通知しない)または、コンマで区切った、 .Ql failure (配送が失敗した場合に通知する) .Ql delay (配送が遅れた場合に通知する) .Ql success (配送が正常に行われた場合に通知する) の組合せを指定する事ができます。 .It Fl n エイリアスを行いません。 .It Fl O Ar option Ns = Ns Em value オプション .Ar option を、指定した .Em value に設定します。この形式では長いオプション名が使用されます。 詳しくは後に記述します。 .It Fl o Ns Ar x Em value オプション .Ar x を、指定した .Em value に設定します。 この形式では、一文字のオプション名しか使用できません。 短いオプション名についてはこのマニュアルには記述されていません。 詳しくは、 .%T "Sendmail Installation and Operation Guide" を参照して下さい。 .It Fl p Ns Ar protocol メッセージを受け取るのに利用するプロトコル名を設定します。 設定できるのは、 ``UUCP'' のようなプロトコル名だけかプロトコル+ホスト名、たとえば ``UUCP:ucbvax'' などです。 .It Fl q Ns Bq Ar time キューのなかにあるメッセージを処理する間隔を設定します。 .Ar time を省略した場合は、キューの内容を一度だけしか処理しません。 .Ar time は、 .Ql s (秒)、 .Ql m (分)、 .Ql h (時間)、 .Ql d (日)、 .Ql w (週)の単位を付けた数字で指定します。 たとえば、 .Ql -q1h30m や .Ql -q90m は、タイムアウトを 1 時間 30 分に設定します。 .Ar time が指定されると、 .Nm sendmail はデーモンとしてバックグラウンドで 実行されます。 デーモンとして実行させる際には、同時にオプション .Fl bd を つけておくほうが安全です。 .It Fl qI Ns Ar substr キュー ID の文字列に .Ar substr が含まれるジョブのみを処理します。 .It Fl qR Ns Ar substr 受信者のリストの文字列に .Ar substr が含まれるジョブのみを処理します。 .It Fl qS Ns Ar substr 送信者の文字列に .Ar substr が含まれるジョブのみを処理します。 .It Fl R Ar return メッセージがバウンスした時に返送されるメッセージの量を設定します。 .Ar return パラメータには、メッセージ全体を返送する場合は .Ql full を、ヘッダのみを返送する場合は .Ql hdrs を指定します。 .It Fl r Ns Ar name .Fl f フラグと同じですが、古い形式です。 .It Fl t 受信者をメッセージから読み取ります。To:, Cc:, Bcc: フィールドが受信者 のアドレスとして読み込まれます。Bcc: フィールドはメッセージの転送前に 削除されます。引数で指定されたアドレスは全て無視されますので、メッセー ジのヘッダに名前が並べてあっても、引数に指定してあるとメッセージは転送 されません。 .It Fl U 最初の(ユーザからの)発送である事を示します。 このフラグは、 .Nm Mail や .Nm exmh の様なユーザエージェントから呼び出す場合は .Em 必ず 指定する必要があり、 .Nm rmail 等のネットワーク配送エージェントから呼び出す場合は、 .Em 絶対に 指定してはいけません。 .It Fl V Ar envid オリジナルのエンベロープ ID を設定します。 これは、DSN をサポートするサーバ間では SMTP 上を伝達し、 DSN に従ったエラーメッセージの中で返送されます。 .It Fl v 詳細モードに移行します。展開されるエイリアスなどが報告されます。 .It Fl X Ar logfile 指定された .Ar logfile に、メーラに出たり入ったり するすべてメッセージに関する情報を記録します。メーラをデバッグする際の 最後の手段としてのみ使ってください。非常に大量の情報があっという間に記録 されます。 .El .Ss オプション .Nm sendmail には、設定することができる多くの処理オプションがあります。 通常、これらのオプションはシステム管理者のみが使います。 オプションは、コマンドラインから .Fl o フラグを使って(短いオプション名で)指定したり、 .Fl O フラグを使って(長いオプション名で)指定したり、 設定ファイルから指定することができます。ここに記述して いるのは部分的なもので、コマンド行から指定する場合に便利な物だけを、 長いオプション名で示しています。完全なリスト(と詳細)は、 .%T "Sendmail Installation and Operation Guide" を参照してください。 オプションには以下の物があります。 .Bl -tag -width Fl .It Li AliasFile= Ns Ar file 別のエイリアスファイルを使います。 .It Li HoldExpensive 接続するのに時間がかかるホストと接続するときは、 すぐに接続せず、リクエストはキューに入れられます。 .It Li CheckpointInterval= Ns Ar N .Nm sendmail が、 .Ar N 個の配送に成功するたびにキューファイルに チェックポイントを設定します(デフォルトは 10 個です)。これによって、 システムのクラッシュによって長いメーリングリストの配送が中断 されたときでも、再開時に同じ人に重複して配送されることを防ぎます。 .ne 1i .It Li DeliveryMode= Ns Ar x 配送モードを .Ar x に設定します。配送モードには .Ql i 対話的(同期的)配送モード、 .Ql b バックグラウンド(非同期的)配送モード、 .Ql q キューモード(実際の配送は、キューが実行されるときに行われる)、 .Ql d 延期モード(データベースの検索(特に DNS や NIS )が行われない以外は .Ql q と同じ)があります。 .It Li ErrorMode= Ns Ar x エラー処理をモード .Ar x に設定します。 .Ql m はエラーメッセージを送り返します。 .Ql w -はエラーメッセージを送り手のターミナルに書き出します +はエラーメッセージを送り手の端末に書き出します (送り手がログインしていなければ、メールを返します)。 .Ql p は、エラーメッセージを端末に表示します(デフォルト)。 .Ql q は、エラーメッセージを捨てます(exit コードだけを返します)。 .Ql e は、BerkNet 用に特別処理をします。 もし、モード .Ql m や .Ql w を使っている場合に、エラーとなったメッセージが エラーメールとして送り返されず、送り手が .Nm sendmail を実行している マシン上のユーザならば、 メッセージのコピーは送り手のホームディレクトリにある .Pa dead.letter に追加されます。 .It Li SaveFromLine メッセージのはじめに .Tn UNIX Ns \-style From 行を残します。 .It Li MaxHopCount= Ar N メールがループしていると判断されない、最大のホップ数を 指定します。 .It Li IgnoreDots `.' だけを含む行をメッセージの終わりとして解釈しません。 .It Li SendMimeErrors エラーメッセージをMIMEフォーマットで送り返します。 設定されていない場合は、DSN (Delivery Status Notification: 配送状況通知) SMTP 拡張は無効になります。 .It Li ConnectionCacheTimeout= Ns Ar timeout コネクションキャッシュの .Ar timeout を設定します。 .It Li ConnectionCacheSize= Ns Ar N コネクションキャッシュのサイズを .Ar N に設定します。 .It Li LogLevel= Ns Ar n ログレベルを .Ar n にします。 .It Li MeToo エイリアスに自分自身が含まれている場合、``me''(送り手自身)にも送ります。 .It Li CheckAliases .Xr newaliases 1 コマンドの実行の際、 エイリアスの右側の項目(エイリアスの値)を有効性をチェックします。 .It Li OldStyleHeaders もしオプションが設定されていれば、メッセージが古いスタイルのヘッダ を持つことがあることを意味します。 このオプションが設定されていなければ、このメッセージが新しい スタイルを持っていることが保証されます(2 つのアドレスの間はスペースのかわり にカンマで区切られます)。このオプションが設定されていると、大抵の場合、 ヘッダのフォーマットを正しく決定するためのアルゴリズムが用いられます。 .It Li QueueDirectory= Ns Ar queuedir キューメッセージを保存するディレクトリを選択します。 .It Li StatusFile= Ns Ar file 指定した名前のファイルに統計情報をセーブします。 .It Li Timeout.queuereturn= Ns Ar time キューのなかの配送されなかったメッセージのタイムアウト時間を設定します。 この時間内に(ホストのダウンなどにより)配送が行われなかったときには、 失敗した旨のメッセージが送り返されます。デフォルトは 5 日です。 .It Li UserDatabaseSpec= Ns Ar userdatabase このオプションが設定されると、情報を送る際にユーザデータ ベースに対する問い合わせが行われます。 この方法をエイリアス機構の補助として使用する事ができます。ただし、 エイリアスはそのホストローカルでのみ有効なので、データベースが意図的に 分散されている場合は使用できません。 .Nm sendmail が .Dv USERDB 付きでコンパイルされていなければ使うことはできません。 .It Li ForkEachJob キューを処理する間、 .Xr fork 2 を行います。メモリが少ないマシン では便利です。 .It Li SevenBitInput 到着するメッセージを 7 ビットにします (8 ビット目は落します)。 .It Li EightBitMode= Ns Ar mode 8 ビットの入力を 7 ビットの宛先へ送る場合の処理方法を .Ar mode に設定します。 処理方法には、 .Li m (mime 化) 7 ビット MIME 形式へ変換、 .Li p (パス) 8 ビットのまま配送(プロトコルには違反します)、 .Li s (厳密) メッセージをバウンス、 があります。 .It Li MinQueueAge= Ns Ar timeout 配送の試行の間、ジョブがキューに蓄積される時間を設定します。 .It Li DefaultCharSet= Ns Ar charset 特に指定されていない場合に、8 ビットのデータである事を示す ラベルとして使用されるデフォルトのキャラクタを設定します。 .It Li DialDelay= Ns Ar sleeptime コネクションの確立が失敗した場合に、再試行までに .Ar sleeptime だけスリープします。オンデマンドでダイアル接続するサイトでの使用に便利です。 .It Li NoRecipientAction= Ns Ar action 受信者ヘッダ (To: Cc: あるいは Bcc:) がない場合の動作を .Ar action に設定します。 .Li none メッセージを変更しない、 .Li add-to To: ヘッダにエンベロープで指定された受信者を加える、 .Li add-apparrently-to Apparrently-To: ヘッダにエンベロープで指定された受信者を加える、 .Li add-bcc 空の Bcc: ヘッダを加える、 .Li add-to-undisclosed .Ql "To: undisclosed-recipients:;" というヘッダを加える、という動作が指定できます。 .It Li MaxDaemonChildren= Ns Ar N 待ち受け SMTP デーモンが同時に動作できる子プロセスの最大数を .Ar N に設定します。 .It Li ConnectionRateThrottle= Ns Ar N SMTP ポートへの 1 秒当りの最大コネクション数を .Ar N に設定します。 .El .Pp エイリアスのなかで最初の文字が `|' で始まるものは、メールの内容をパイプで コマンドに送るものと解釈されます。引数などをつけるために空白文字が 必要な場合はクォートする (" でくくる)必要があります。以下に、例を示します: .Pp .Bd -literal -offset indent -compact msgs: "|/usr/bin/msgs -s" .Ed .Pp エイリアスには、 .Dq :include: Ns Ar filename という文法もあります。 .Nm sendmail は、 メールの受け手のエイリアスとして、指定されたファイルを読みます。 以下に、例を示します: .Pp .Bd -literal -offset indent -compact poets: ":include:/usr/local/lib/poets.list" .Ed .Pp 上記の例の場合は、 .Pa /usr/local/lib/poets.list を読み、`poets' のグループの ためのアドレスリストを作ります。 .Pp .Nm sendmail は、以下に示すような終了コードを返します。これらの コードは、 .Aq Pa sysexits.h に定義されています。 .Bl -tag -width EX_UNAVAILABLE -compact -offset indent .It Dv EX_OK すべてのアドレスについて完全に成功しました。 .It Dv EX_NOUSER ユーザ名が認識できません。 .It Dv EX_UNAVAILABLE 処理に必要なリソースを得ることができません。 .It Dv EX_SYNTAX アドレスに文法的な間違いがあります。 .It Dv EX_SOFTWARE 引数が間違っている等の、内部的なエラーです。 .It Dv EX_OSERR .Dq cannot fork のような、一時的な OS エラーです。 .It Dv EX_NOHOST ホスト名が認識できません。 .It Dv EX_TEMPFAIL メッセージはすぐには送られませんでしたが、 キューには入れられました。 .El .Pp .Nm newaliases というコマンドで実行されると、 .Nm sendmail はエイリアス データベースを再構築します。 .Nm mailq というコマンドで実行されると、 .Nm sendmail はメールキューの内容を表示します。 .Sh 関連ファイル .Pa /etc/sendmail.cf を除き、以下のファイルのパスはすべて .Pa /etc/sendmail.cf 内部で決められています。以下は一例に過ぎません。 .Pp .Bl -tag -width /usr/lib/sendmail.fc -compact .It Pa /etc/aliases エイリアス名の生データ .It Pa /etc/aliases.db エイリアス名のデータベース .It Pa /etc/sendmail.cf 設定ファイル .It Pa /usr/share/misc/sendmail.hf ヘルプファイル .It Pa /var/log/sendmail.st 統計情報ファイル .It Pa /var/spool/mqueue/* テンポラリファイル .It Pa /var/run/sendmail.pid デーモンのプロセス ID を格納しているファイル .El .Sh 関連項目 .Xr mail 1 , .Xr syslog 3 , .Xr aliases 5 , .Xr mailaddr 7 , .Xr mail.local 8 , .Xr rc 8 , .Xr rmail 8 ; .Pp DARPA Internet Request For Comments .%T RFC819 , .%T RFC821 , .%T RFC822 . .Rs .%T "Sendmail \- An Internetwork Mail Router" .%V SMM .%N \&No. 9 .Re .Rs .%T "Sendmail Installation and Operation Guide" .%V SMM .%N \&No. 8 .Re .Sh 歴史 .Nm コマンドは .Bx 4.2 から登場しました。 diff --git a/ja/man/man8/shutdown.8 b/ja/man/man8/shutdown.8 index 72eb1ce1ec..d5afea9f91 100644 --- a/ja/man/man8/shutdown.8 +++ b/ja/man/man8/shutdown.8 @@ -1,135 +1,135 @@ .\" Copyright (c) 1988, 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 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. .\" .\" @(#)shutdown.8 8.1 (Berkeley) 6/5/93 .\" jpman %Id: shutdown.8,v 1.2 1997/05/13 00:55:09 mutoh Stab % .\" .Dd June 5, 1993 .Dt SHUTDOWN 8 .Os BSD 4 .Sh 名称 .Nm shutdown .Nd 指定時刻にシステムを停止する .Sh 書式 .Nm shutdown .Op Fl .Op Fl hkrn .Ar time .Op Ar warning-message ... .Sh 解説 .Nm shutdown は、自動的にシャットダウンするための手順をスーパユーザに提供します。 システムがシャットダウンされるときユーザに知らせるので、 こういったお知せを面倒がって行なわない システム管理者やハッカーやグルといった人々から、ユーザを救います。 .Pp 以下の親切なオプションがあります: .Bl -tag -width time .It Fl h .Ar time で指定された時間に .Xr halt 8 を実行し、システムを停止します。 .It Fl k 全ユーザを追い出します。 実際にはシステムを停止しませんが、 マルチユーザシステムのままでスーパユーザ以外のユーザをログインできなくします。 .It Fl n 停止する前に、通常実行される .Xr sync 2 を実行しません。 .It Fl r .Ar time で指定した時刻に .Xr reboot 8 を実行し、システムを再起動します。 .It Ar time .Nm shutdown がシステムを停止させる時間を指定します。 .Ar now を指定すると即時にシステムを停止します。 また、時間を指定する次の二つの書式があります: .Ar +number もしくは .Ar yymmddhhmm の形式です。現在のシステムの年・月・日の値がデフォルトになっています。 一つめの書式は .Ar number 分経過後をあらわし、二つめの書式は停止する時刻を直接指定します。 .It Ar warning-message その他の引数は現在ログイン中のユーザに送る警告メッセージとして扱われます。 .It Fl もし .Ql Fl がオプションとして与えられると、警告メッセージを標準入力から読み取ります。 .El .Pp システム停止の 10 時間前から、ログイン中の全てのユーザの端末に 警告メッセージが表示されはじめ、終末が近付くにつれ頻繁になってきます。 システム停止の 5 分前、もしくは 5 分以内にシステム停止する場合には、 ただちに警告メッセージをコピーした .Pa /etc/nologin が作られログインが禁止されます。 ユーザがログインしようとした際にこのファイルが存在する場合には、 .Xr login 1 はその内容を表示し終了します。このファイルは .Nm shutdown が終了する際に削除されます。 .Pp システム停止時には、システムを停止した時間、実行者、理由が システムログに記録されます。その後、terminate シグナルが .Xr init に送られ、システムをシングルユーザ状態にします(この動作は上記の オプションに依存します)。 システムを停止する時間と警告メッセージは .Pa /etc/nologin に置かれます。これをユーザにシステムを再開する時間や、なぜシステムを 停止するかなどを知らせるために使うべきです。 .Sh 関連ファイル .Bl -tag -width /etc/nologin -compact .It Pa /etc/nologin login に誰にもログインさせないことを知らせます。 .El .Sh 関連項目 .Xr login 1 , .Xr wall 1 , .Xr nologin 5 , .Xr halt 8 , .Xr reboot 8 .Bd -literal -offset indent -.Sh 下位互換性 -下位互換性のため、二つめの書式で時と分をコロン(``:'')で区切ることができます。 +.Sh 以前との互換性 +以前との互換性のため、二つめの書式で時と分をコロン(``:'')で区切ることができます。 .Ed .Sh 歴史 .Nm コマンドは .Bx 4.0 から登場しました。 diff --git a/ja/man/man8/sicontrol.8 b/ja/man/man8/sicontrol.8 index e016ba73d5..e582d7e7bb 100644 --- a/ja/man/man8/sicontrol.8 +++ b/ja/man/man8/sicontrol.8 @@ -1,115 +1,115 @@ .\" %Id: sicontrol.8,v 1.3.2.2 1997/10/16 06:28:03 charnier Exp % .\" jpman %Id: sicontrol.8,v 1.2 1997/06/17 17:49:35 saeki Stab % .\" The following requests are required for all man pages. .Dd September 26,1995 .Dt SICONTROL 8 .Os FreeBSD .Sh 名称 .Nm sicontrol .Nd Specialix 社 SI/XIO ドライバの設定とデバッグ .Sh 書式 .Nm sicontrol device .Ar command Op Cm Ar param ... .Sh 解説 .Nm sicontrol は SI/XIO デバイスドライバの設定やモニタリングをおこなうために使用します。 .Pp .Nm sicontrol は .Ar device で指定されたポートを操作します。 .Pp ドライバ全体の設定をおこなう際には、特別なデバイス名 `-' を .Ar device に指定します。 .Pp 必要であれば、デバイス名には '/dev/' が補完されます。 .Pp 以下のコマンドはドライバ全体の設定をおこなうので、 デバイス名に '-' を指定する必要があります。 .Bl -tag -width 4n .It Cm int_throttle Op Cm value 「総合割り込みスロットル値」を設定します。 ホストアダプタ割り込みの 1 秒あたりの最大値は次のようにして求められます: .Pp .Ar "controller CPU clock / (8 * int_throttle)" .Pp ブート時のデフォルト値は 25000 で、ホストアダプタの CPU クロックは 25MHz ですから、この場合の最大割り込みレートは約 125 回/秒になります。 .Pp この値を下げると、ホストアダプタがオペレーティングシステムに 処理を要求するための割り込みのレートを増加させることができます。 .\" .It Cm rxint_throttle Op Cm value 受信割り込みスロットル値を設定します。 ブート時のデフォルト値は 4 で、割り込みレートは約 25 回/秒になります。 .Pp この値を下げると、ホストアダプタがオペレーティングシステムに受信 FIFO を 空にするよう要求する割り込みのレートを増加させることができます。 .\" .It Cm nport そのデバイスドライバの制御下にあるシリアルポートの数を返します。 .El .Pp 以下のコマンドは個々のシリアルポートに対して実行されるため、 .Pa /dev 以下のデバイス名を指定する必要があります。 .Bl -tag -width 4n .It Cm mstate モデムが駆動する制御信号の、現在の状態を表示します。 .It Cm ccbstat 指定されたシリアルポートの "ccb" 構造体の、現在の内容を表示します。 これはドライバのデバッグや、シリアルポートが反応しない原因の調査以外には、 あまり使い道がありません。 .It Cm ttystat 指定されたシリアルポートに関するカーネル内部の "tty" 構造体の現在の内容を 表示します。これはドライバのデバッグ以外には、あまり使い道がありません。 .El .\" The following requests should be uncommented and used where appropriate. .\" This next request is for sections 2 and 3 function return values only. .\" .Sh RETURN VALUES .\" This next request is for sections 1, 6, 7 & 8 only .\" .Sh ENVIRONMENT .Sh 関連ファイル .Bl -tag -width /dev/si_control -compact .It Pa /dev/si_control .Xr sicontrol 8 で使用される、ドライバ全体の制御ファイル .It Pa /dev/ttyA* -ターミナル制御ポート +端末制御ポート .It Pa /dev/ttyiA* .Xr stty 1 で使用される、初期 termios ステートデバイス .It Pa /dev/ttylA* .Xr stty 1 で使用される、ロックされた termios ステートデバイス .El .\" .Sh EXAMPLES .\" This next request is for sections 1, 6, 7 & 8 only .\" (command return values (to shell) and fprintf/stderr type diagnostics) .Sh 診断 一般に自明です..... .\" The next request is for sections 2 and 3 error and signal handling only. .\" .Sh ERRORS .Sh 関連項目 .Xr stty 1 , .Xr si 4 , .Xr termios 4 , .Xr tty 4 , .Xr comcontrol 8 . .\" .Sh STANDARDS .Sh 歴史 .Nm sicontrol は .An Andy Rutter Aq andy@acronym.co.uk によって書かれた .Nm siconfig ユーティリティを基にしている部分が多少あります。 .Pp Specialix International 社は、このデバイスドライバに関して、 いかなる形のサポートもおこないません。 .Sh 作者 Peter Wemm .Sh バグ たくさんあるでしょう... :-) diff --git a/ja/man/man8/sliplogin.8 b/ja/man/man8/sliplogin.8 index 458fd7299b..3d3be3fbd7 100644 --- a/ja/man/man8/sliplogin.8 +++ b/ja/man/man8/sliplogin.8 @@ -1,287 +1,287 @@ .\" Copyright (c) 1990, 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 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. .\" .\" @(#)sliplogin.8 8.2 (Berkeley) 1/5/94 .\" jpman %Id: sliplogin.8,v 1.3 1997/07/26 22:10:08 horikawa Stab % .\" .Dd January 5, 1994 .Dt SLIPLOGIN 8 .Os .Sh 名称 .Nm sliplogin .Nd シリアル回線とネットワークインタフェースの対応づけ(アタッチ)を行う .Sh 書式 .Nm .Op Ar loginname Op Ar device .Sh 解説 .Nm は、標準入力 (もしくは、 .Ar device ) の tty 回線を用いて他のホストと Serial Line IP .Pq Tn SLIP による接続を確立するためのコマンドです。 そのために、まず .Pa /etc/sliphome/slip.hosts ファイルを検索し、引数 .Ar loginname と一致するエントリを引き出します。 (ログイン名が省略された場合、コマンドを起動したユーザのログイン名が用い られます) ログイン名と一致するエントリが見つかった場合、回線は SLIP に適した設定 (8ビット透過な入出力) にされ、オプションの回線パラメータを使って .Tn SLIP 回線に変換されます。 .Pp 回線パラメータのオプションは次のとおりです: .Sq normal , .Sq compress , .Sq noicmp , .Sq autocomp これらはそれぞれ、 .Sq 通常の設定 (ヘッダ圧縮をしない) 、 .Sq VJヘッダ圧縮を行う 、 .Sq ICMP パケットを無視する 、 .Sq VJヘッダ圧縮を自動設定する (相手がサポートしているときのみヘッダ圧縮する) です。 .Pp その後、 .Tn IP アドレスやネットマスクなどの設定を行なう、 SLIP インタフェース初期化のためのシェルスクリプトが実行され ます。 .Pp 通常、初期化のためのシェルスクリプトファイルは .Pa /etc/sliphome/slip.login ですが、特定のホスト向けの設定のために、 .Pa /etc/sliphome/slip.login. Ns Ar loginname というシェルスクリプトファイルがあった場合は、そちらが実行されます。 スクリプトは、以下のパラメータとともに起動されます。 .Bl -tag -width slipunit .It Em slipunit 回線に割り当てられる SLIP インタフェースです。例えば、 .Sy 0 の場合、割り当てられる SLIP インタフェースは .Sy sl0 です。 .It Em speed 回線速度です。 .It Em args .Ar loginname を指定して起動する場合、 .Pa /etc/sliphome/slip.hosts の対応エントリに記述されている引数です。 .El .Pp スーパユーザのみが、ネットワークインタフェースのアタッチを行うことが -出来ます。ネットワークインタフェースは、リモートホスト側でハングアップす +出来ます。ネットワークインタフェースは、リモートホスト側で回線切断す るか、ローカルホスト側の .Nm プロセスが終了した場合には自動的に対応づけが解消 (デタッチ) されます。 カーネル SLIP モジュールが設定されていた場合、このインタフェースを経由 して設定されている全ての経路は、同時に消滅します。 他の処理も行いたいサイトでは、回線の切断時に .Pa /etc/sliphome/slip.logout ファイルもしくは .Pa /etc/sliphome/slip.logout. Ns Ar loginname ファイルが有ればその内容が実行されますので、これを使って下さい。 起動時には、ログインスクリプトと同じ引数が与えられます。 .Ss /etc/sliphome/slip.hosts の書式 コメント (`#' で開始する行) および空白行 (もしくは空白で開始する行) は 無視されます。 他の行は、 .Ar loginname で始まる必要があります。 しかし、他の引数については、そのログイン名に対応して実行される .Pa slip.login ファイルに応じたものであれば、何でもかまいません。 引数は、スペースやタブで区切り、 .Xr sh 1 が解釈出来るクォートなどを用いてまとめます(ただし .Ar loginname はクォートできません)。 通常、各行は以下の形式で記述されます: .Bd -literal -offset indent loginname local-address remote-address netmask opt-args .Ed .Pp .Em local-address と .Em remote-address については、互いに接続される SLIP インタフェースに割り当てられる IP アドレスを (ホスト名か数字で) 設定します。そして、 .Em netmask については、適切な IP ネットマスクを設定します。これらの引数は、直接 .Xr ifconfig 8 に渡されます。 .Em opt-args は、オプション引数であり、回線の設定に用いられます。 .Pp .Sh FreeBSD での追加 追加の SLIP 設定用ファイル .Pa /etc/sliphome/slip.slparms があるかもしれません。 特定のホストに異なる設定が必要である場合、 ファイル .Pa /etc/sliphome/slip.slparms. Ns Ar loginname が存在すれば、代わりに使われます。 .Ss /etc/sliphome/slip.slparms* の書式 コメント (`#' で開始する行) および空白行 (もしくは空白で開始する行) は 無視されます。 このファイルには空白で区切られた 1 から 3 個の数字を書きます。 数字は順に、 .Ar keepalive , .Ar outfill , .Ar slunit を意味します。 .Bl -tag -width keepalive .It Ar keepalive SLIP "keep alive" タイムアウト時間を秒単位で設定します。 FRAME_END がこの時間内に受信できない時、 .Nm は回線を閉じて終了します。 省略時はタイムアウトは設定されません ( 0 です)。 .It Ar outfill SLIP "out fill" タイムアウト時間を秒単位で設定します。 これにより、相手側の "keep alive" タイムアウトに必要な FRAME_END をこの時間内に送信します。 省略時はタイムアウトは設定されません ( 0 です)。 .It Ar slunit SLIP ユニット番号を直接指定します。 2 つのインタフェースが同じユニット番号にならないかチェックをしないので、 注意が必要です。 省略時は動的にユニット番号を割り当てます。 .El .Pp あとの 2 つのパラメータが省略されたときは、これに対応する SLIP の設定には影響が ありません。最初の 2 つのパラメータが 0 であるときにも、これに対応する設定に 影響しません。 .Sh 使用例 通常、 .Nm を使う場合、 リモートの SLIP サイトごとに .Nm をシェルフィールドに持つ .Pa /etc/passwd のエントリを作ります。例えば .Bd -literal Sfoo:ikhuy6:2010:1:slip line to foo:/tmp:/usr/sbin/sliplogin .Ed .Pp (ここでは、リモートホスト .Ar hostname のアカウント名を .Em Shostname としています) 次に、 .Pa slip.hosts に、以下のようなエントリを追加します: .Pp .Bd -literal -offset indent -compact Sfoo `hostname` foo netmask .Ed .Pp ここで、 .Em `hostname` は、 .Xr sh によって評価されローカルホスト名となり、 .Em netmask はローカルホストの IP ネットマスクです。 .Pp 注意事項があります。 .Nm は、root に setuid しなければなりません。 セキュリティホールではありませんが、心がけの悪い奴が .Nm をつかって端末の回線を使えなくしたり、リモートの SLIP サイトのユーザの アクセスを不可能にしたりすることができます。これを防ぐために、 .Nm をユーザ .Em root グループ .Em network モード 4550 でインストールし、グループ .Em network のメンバのみが .Nm を実行可能とします。システム管理者は、 正当なユーザが正しいグループのメンバであることを確認すべきです。 .Sh 診断 .Nm は、様々な情報を .Em daemon の facility コードでシステムログデーモン .Xr syslogd 8 を通じて、 syslog に書き出します。 以下に問題の大きさ別にメッセージを列挙します。 .Pp .Sy エラー .Bl -tag -width Ds -compact .It Sy ioctl (TCGETS): Em 理由 .Dv TCGETS .Fn ioctl を用いた回線のパラメータ取得が失敗しました。 .Pp .It Sy ioctl (TCSETS): Em 理由 .Dv TCSETS .Fn ioctl を用いた回線のパラメータ設定が失敗しました。 .Pp .It Sy /etc/sliphome/slip.hosts: Em 理由 .Pa /etc/sliphome/slip.hosts ファイルがオープン出来ません。 .Pp .It Sy access denied for Em user .Em user エントリが .Pa /etc/sliphome/slip.hosts にありません。 .El .Pp .Sy 報告 .Bl -tag -width Ds -compact .It Sy "attaching slip unit" Em unit Sy for Ar loginname .Tn SLIP ユニット .Em unit は、アタッチに成功しました。 .El .Sh 関連項目 .Xr slattach 8 , .Xr syslogd 8 , .Pa /usr/share/examples/sliplogin .Sh 歴史 .Nm コマンドは、現在βテスト版です。 diff --git a/ja/man/man8/smrsh.8 b/ja/man/man8/smrsh.8 index 64833ebe0b..1096da301c 100644 --- a/ja/man/man8/smrsh.8 +++ b/ja/man/man8/smrsh.8 @@ -1,103 +1,103 @@ .\" Copyright (c) 1993 Eric P. Allman .\" Copyright (c) 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. .\" .\" @(#)smrsh.8 8.2 (Berkeley) 1/9/96 .\" jpman %Id: smrsh.8,v 1.3 1997/09/04 18:05:48 horikawa Stab % .\" .TH SMRSH 8 11/02/93 .SH 名称 smrsh \- sendmail用に制限されたシェル .SH 書式 .B smrsh .B \-c command .SH 解説 .I smrsh は、 .IR sendmail (8) -のコンフィグレーションファイルで、 +の設定ファイルで、 .I sh の代わりに ``prog'' メーラとして使用する事を目的としています。 .I smrsh は、システムの全体的なセキュリティを改善するために、 .I sendmail の ``|program'' 書式により起動する事ができるコマンドを制限します。 つまり、もし ``悪者'' が alias ファイルや forward ファイルを経由せずに sendmail からプログラムを実行する事ができたとしても、 .I smrsh を使えば、彼(あるいは彼女)が実行できるプログラムを制限する事ができるのです。 .PP 簡単に言うと、 .I smrsh は、実行可能なプログラムを /usr/libexec/sm.bin ディレクトリに存在するもの だけに限定します。これにより、システム管理者は利用可能なコマンドを選択する 事ができます。 更に、 .I smrsh は、``end run'' 攻撃を防ぐために、コマンド行に `\`', `<', `>', `|', `;', `&', `$', `(', `)', `\er'(キャリッジリターン), `\en'(ニューライン) の文字を含むコマンドは実行しません。 .PP プログラム名の前にあるパス名は全て取り除かれるため、 ``/usr/bin/vacation'', ``/home/server/mydir/bin/vacation'', ``vacation'' などは全て ``/usr/libexec/sm.bin/vacation'' と解釈されます。 .PP システム管理者は、 /usr/libexec/sm.bin に置くプログラムを選ぶ際には慎重な 判断をすべきです。適切な物としては、 .IR vacation (1) や .IR procmail (1) などがあげられるでしょう。いかなる要望があっても、シェルや、 .IR perl (1) などのシェルに似たプログラムを sm.bin に入れてはいけません。 これは、単に任意のプログラムを実行する事を制限するだけで、 ``#!''書式を用いた、シェルスクリプトや perl スクリプトを sm.bin ディレクトリに入れる事を制限する訳ではありません。 .SH コンパイル コンパイルはほとんどのシステムでつまらないものです。 デフォルトのサーチパス (デフォルトでは``/bin:/usr/bin'') を変更するためには、\-DPATH=\e"\fIpath\fP\e" を 使用する必要があり、また、 デフォルトのプログラムディレクトリ (デフォルトでは ``/usr/libexec/sm.bin'') を変更するためには、\-DCMDBIN=\e"\fIdir\fP\e" を 使用する必要があります。 .SH 関連ファイル /usr/libexec/sm.bin \- 制限されたプログラム用のディレクトリ .SH 関連項目 sendmail(8) diff --git a/ja/man/man8/syslogd.8 b/ja/man/man8/syslogd.8 index 4fb52ff791..b968f0b2e2 100644 --- a/ja/man/man8/syslogd.8 +++ b/ja/man/man8/syslogd.8 @@ -1,217 +1,217 @@ .\" Copyright (c) 1983, 1986, 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 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. .\" .\" @(#)syslogd.8 8.1 (Berkeley) 6/6/93 .\" %Id: syslogd.8,v 1.6.2.6 1998/03/09 13:56:05 jkh Exp % .\" jpman %Id: syslogd.8,v 1.3 1997/05/19 17:08:30 horikawa Stab % .\" .Dd October 12, 1995 .Dt SYSLOGD 8 .Os BSD 4.2 .Sh 名称 .Nm syslogd .Nd システムメッセージの記録をとる .Sh 書式 .Nm syslogd .Op Fl ds .Op Fl a Ar allowed_peer .Op Fl f Ar config_file .Op Fl m Ar mark_interval .Op Fl p Ar log_socket .Sh 解説 .Nm -デーモンはコンフィグレーションファイルに指定された通りに、システムコンソール、 +デーモンは設定ファイルに指定された通りに、システムコンソール、 ログファイル、他のマシンやユーザへのメッセージを読み込み、記録します。 オプションには以下のものがあります。 .Bl -tag -width indent .It Fl a Ar allowed_peer .Ar allowed_peer がこの .Nm に UDP データグラムを使用してログすることを許します。複数の .Fl a オプションを指定可能です。 .Pp .Ar allowed_peer は以下のいずれかです: .Bl -tag -width "ipaddr/masklen[:service]XX" .It Ar ipaddr/masklen Ns Op Ar :service .Ar ipaddr (通常のドット表記の 4 つ組) からのデータグラムを受け付けます。 アドレス比較の際、 .Ar masklen ビットを考慮します。 .Ar service が指定された場合、パケット送出元が属すべき UDP service の名前もしくは番号となります( .Xr services 5 参照)。 .Ar service に .Ql \&* を指定すると、全ての UDP ポートから送信されたパケットを受け付けます。 デフォルトの .Ar service は .Ql syslog です。 .Ar masklen を指定しないと、 .Ar ipaddr がクラス A もしくは B のアドレス範囲に属す場合にはそれぞれ 歴史的なクラス A もしくは B のネットマスクが使用され、 そうでない場合には 24 が使用されます。 .It Ar domainname Ns Op Ar :service 送信アドレスのアドレス逆引きにおいて .Ar domainname が得られたデータグラムを受け付けます。 .Ar service の意味は前述の通りです。 .It Ar *domainname Ns Op Ar :service 上述の通りですが、送信ホスト名が .Ar domainname で .Em 終る 全てのホストから受け付けます。 .El .It Fl d .Nm をデバッグモードで実行します。これは恐らく、 .Nm の開発者にのみ役立ちます。 .It Fl f -代りのコンフィグレーションファイルのパス名を指定します。 +代りの設定ファイルのパス名を指定します。 デフォルトは .Pa /etc/syslog.conf です。 .It Fl m .Dq mark されたメッセージの間隔を分単位で指定します。 デフォルトは20分です。 .It Fl p 代りのログ用ソケットのパス名を指定します。 デフォルトは .Pa /var/run/log です。 .It Fl s セキュアモードで操作します。リモートマシンからのログメッセージを受ける ために listen しません。 .El .Pp .Nm デーモンは -起動時と hangup シグナルを受けとった時はいつでもコンフィグレーションファイルを +起動時と hangup シグナルを受けとった時はいつでも設定ファイルを 読み込みます。 -コンフィグレーションファイルのフォーマットに関する情報は、 +設定ファイルのフォーマットに関する情報は、 .Xr syslog.conf 5 参照して下さい。 .Pp .Nm デーモンは .Tn UNIX ドメインソケット .Pa /var/run/log、 .Pa /etc/services で指定されるインターネットドメインソケット およびスペシャルデバイス .Pa /dev/klog -(カーネルメッセージを読むため)からメッセージを読み込みます。 +(カーネルメッセージを読むため) からメッセージを読み込みます。 .Pp .Nm デーモンはファイル .Pa /var/run/syslog.pid -を作成し、プロセスIDを記録します。 +を作成し、プロセス ID を記録します。 これは .Nm -のkillやコンフィグレーションファイルを読み込ませるために使えます。 +を kill や、設定ファイルを読み込ませるために使えます。 .Pp .Nm に送られるメッセージは単一の行で構成されます。このメッセージは先頭に優 先順位コードを含んでいます。このコードは .Sq Aq 5 -のように括弧でくくられた十進数から構成されており、インクルードファイル +のように括弧でくくられた 10 進数から構成されており、インクルードファイル .Aq Pa sys/syslog.h で定義されている優先順位に対応します。 .Sh 関連ファイル .Bl -tag -width /var/run/syslog.pid -compact .It Pa /etc/syslog.conf コンフィグレーションファイル .It Pa /var/run/syslog.pid 動作中の .Nm のプロセスID .It Pa /var/run/log .Tn UNIX ドメインデータグラムのログ用ソケットの名前 .It Pa /dev/klog カーネルログ用のデバイス .El .Sh 関連項目 .Xr logger 1 , .Xr syslog 3 , .Xr services 5 , .Xr syslog.conf 5 .Sh 歴史 .Nm コマンドは .Bx 4.3 から登場しました。 .Pp .Fl s および .Fl a オプションは .Fx 2.2 における拡張です。 .Sh バグ UDPパケットで受けとったメッセージを記録する能力は認証されていないディ スクを溢れさせるリモートサービスと等価であり、恐らくデフォルトで無効に されるべきです。ある種の .Nm 間の認証メカニズムが用意されるべきでしょう。 最悪の無駄遣いを避けるために、 .Fl a オプションの使用を強く勧めます。 .Pp .Fl a のマッチングアルゴリズムは非常に効率的には見えません; ドメイン名比較より、数値による IP アドレスを使用する方が高速です。 許可されたピアのリストの検索は線型に行なわれるため、 多くのメッセージを受け付けると予測されるピアグループは .Fl a リストの最初の方に置くべきです。 .Pp ログ用ソケットは読み込み専用のルートファイルシステムの扱いを容易にする ために .Pa /dev から移されました。このことは古いバイナリを混乱させるかもしれないので、 過渡期の間はシンボリックリンクが役に立つでしょう。 diff --git a/ja/man/man8/telnetd.8 b/ja/man/man8/telnetd.8 index 5cf6c69595..5b1307f0b3 100644 --- a/ja/man/man8/telnetd.8 +++ b/ja/man/man8/telnetd.8 @@ -1,605 +1,605 @@ .\" Copyright (c) 1983, 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. .\" .\" @(#)telnetd.8 8.3 (Berkeley) 3/1/94 .\" %Id: telnetd.8,v 1.5.2.4 1998/05/04 02:41:38 steve Exp % .\" jpman %Id: telnetd.8,v 1.2 1997/05/12 08:14:57 yugawa Stab % .\" .Dd March 1, 1994 .Dt TELNETD 8 .Os BSD 4.2 .Sh 名称 .Nm telnetd .Nd DARPA .Tn TELNET プロトコルサーバ .Sh 書式 .Nm /usr/libexec/telnetd .Op Fl BUhlkns .Op Fl D Ar debugmode .Op Fl I Ns Ar initid .Op Fl S Ar tos .Op Fl X Ar authtype .Op Fl a Ar authmode .Op Fl edebug .Op Fl p Ar loginprog .Op Fl r Ns Ar lowpty-highpty .Op Fl u Ar len .Op Fl debug Op Ar port .Sh 解説 .Nm コマンドは、 .Tn DARPA 標準 .Tn TELNET 仮想端末プロトコルをサポートするサーバです。 .Nm は、通常は .Pa /etc/services ファイル ( .Xr services 5 参照) に記述されている .Tn TELNET ポートへの接続要求を受けて、インターネットサーバ ( .Xr inetd 8 参照) から起動されます。 .Fl debug オプションは、 .Xr inetd 8 の代わりに .Nm を手動で起動するために用いられます。 このように手動で起動された場合には、代わりの .Tn TCP ポート番号で .Nm を動かすために .Ar port を指定する事ができます。 .Pp .Nm コマンドには以下のオプションがあります: .Bl -tag -width indent .It Fl a Ar authmode このオプションは、どのモードが認証に使われるかを指定するために用いられます。 このオプションは、 .Nm が .Dv AUTHENTICATION オプションをサポートする設定で構築された場合においてのみ役に立つことに 注意して下さい。 以下に示すようないくつかの .Ar authmode があります: .Bl -tag -width debug .It Cm debug 認証のデバッグコードを有効にします。 .It Cm user リモートユーザは、自分自身であること示すための有効な認証情報を 提供した時にのみ接続が許可されます。 この場合、指定されたアカウントに対しては、パスワードの提供なしに接続が 許可されます。 .It Cm valid リモートユーザが自分自身であることを示すための有効な認証情報を 提供した時にのみ接続が許可されます。 リモートユーザが指定されたアカウントに対する自動的な接続が許可されて いなければ .Xr login 1 コマンドは、必要となるユーザ認証を実施します。 .It Cm other ある種の認証情報を提供した場合のみ接続を許可します。 現在このオプションはすべての認証方法でサポートされていないため .Fl a .Cm valid オプションを指定した時と同じ動作をします。 .It Cm none デフォルトではこの状態です。 認証情報は要求されません。 もし認証情報がなかったり不十分であれば、 .Xr login 1 プログラムによって必要となるユーザ認証を実施します。 .It Cm off 認証コードを無効にします。 すべてのユーザ証明が .Xr login 1 プログラムによって行われます。 .El .It Fl B bftp サーバモードを指定します。このモードでは、 ユーザの通常のシェルではなく .Xr bftp 1 セッションを開始するように、 .Nm は login に指示します。 bftp デーモンモードにおいて通常のログインはサポートされていません。 また通常の .Tn TELNET ポートではなく別のポートを使わなくてはいけません。 .It Fl D Ar debugmode このモードはデバックのために用いられます。 これによって .Nm がデバッグ情報を表示し、ユーザは .Nm が何をしているのかを見ることが許されます。 以下に示すようないくつかの .Ar debugmode があります: .Bl -tag -width exercise .It Cm options .Tn TELNET オプションのネゴシエーションについての情報が表示されます。 .It Cm report .Cm options で表示される情報に加えて、 どのような操作が行われているのかという、いくつかの付加的な情報が 表示されます。 .It Cm netdata .Nm が受け取ったデータストリームを表示します。 .It Cm ptydata pty に書かれたデータを表示します。 .It Cm exercise まだ実装されていません。 .El .It Fl debug .Nm によって作られたソケットについてのデバッグを可能にします ( .Xr socket 2 の .Dv SO_DEBUG 参照)。 .It Fl edebug .Nm がデータの暗号化をサポートする設定で構築されている場合に、 .Fl edebug オプションは、暗号化デバッグコードを有効にするために使われます。 .It Fl p Ar loginprog ログインを完了する際に実行されるコマンドとして .Xr login 1 以外のコマンドを指定します。指定されたコマンドは通常の login と同じ引数を 解釈できる必要があります。 .It Fl h ログインが完了するまでホストに特有の情報を表示しないようにします。 .It Fl I Ar initid このオプションは、バージョン 7.0 以前の .Tn UNICOS システムでのみ有効です。 init がログインセッションを開始したときに、 .Pa /etc/inittab から .Dv ID を特定します。デフォルトの .Dv ID は .Dv fe です。 .It Fl k このオプションは、 .Nm が linemode と kludge linemode をサポートする設定で構築されている ときにのみ有効です。 .Fl k オプションが指定されている場合で、もしリモートのクライアントが .Dv LINEMODE オプションをサポートしていなければ、 .Nm は、 character at a time mode で動きます。 この様な状態でも kludge linemode をサポートしますが、リモートのクライアントが 要求した場合のみ kludge linemode になります (これは、クライアントが .Dv DONT SUPPRESS-GO-AHEAD と .Dv DONT ECHO を送信することによって行われます)。 .Fl k オプションは kludge linemode をサポートしていないリモートクライアントが あるが、(もしクライアントが .Dv DO TIMING-MARK に対して .Dv WILL TIMING-MARK を応答する事で) 自己発見的に kludge linemode をサポートすると認められる 様な場合にとても便利です。 .It Fl l line mode を指定します。クライアントを強制的に line-at-a-time mode に なるよう試みます。 もし .Dv LINEMODE オプションがサポートされてなければ、kludge linemode になります。 .It Fl n .Dv TCP keep-alives を行いません。通常、 .Nm は .Tn TCP keep-alive を有効にしています。なぜなら、クラッシュしたり、すでに接続 出来ないようなマシンからのアイドルコネクションを解消するために、 ある期間アイドルだった場合にクライアントとの接続がまだ存在するかどうかを 調べる必要があるからです。 .It Fl r Ar lowpty-highpty このオプションは、 .Nm が .Dv UNICOS 用に構築されている場合にのみ有効です。 使用する仮想端末デバイスの包括的な範囲を指定します。 システムが sysconf 変数 .Dv _SC_CRAY_NPTY を使用するように設定されている場合、デフォルトでの pty の検索範囲は 0から .Dv _SC_CRAY_NPTY までになります。そうでなければ、デフォルトでの検索範囲は 0 から 128 に なります。検索範囲のどちらか一方だけを変更したい場合は、 .Ar lowpty あるいは .Ar highpty は省略する事が出来ます。 .Ar lowpty を省略した場合でも文字 - を省略する事は出来ません。 文字 - を省略してしまうと .Nm はそれが .Ar highpty であることを判断できずに .Ar lowpty であると判断してしまうからです。 .It Fl s このオプションは、 .Nm が .Tn SecurID カードをサポートする設定で構築されている時にのみ有効です。 このオプションを指定すると、 .Fl s オプションはそのまま .Xr login 1 に渡され、 .Xr login 1 が .Fl s オプションをサポートしていて .Tn SecurID によって認証されたログインのみを許可するような場合に有効です。 これは、ファイアウォールの外側からのリモートログインを制御するような 場合に有意義でしょう。 .It Fl S Ar tos .It Fl u Ar len このオプションは、リモートホスト名を保持している .Dv utmp 構造体のフィールドの大きさを指定するために使われます。 もし解決されたホスト名が .Ar len よりも長ければ、ホスト名の代わりにドットで区切られたアドレスが使われます。 これによりフィールドを超えるようなとても長いホスト名を 一意に特定できるようにします。 .Fl u0 を指定することによって、ドットで区切られたアドレスだけが .Pa utmp ファイルに書き込まれるようにします。 .It Fl U このオプションは .Nm が、 .Xr gethostbyaddr 3 ルーチンを通してシンボルでの名前にマップされないようなアドレスからの コネクションを拒絶するようにします。 .It Fl X Ar authtype このオプションは .Nm が認証オプションをサポートする設定で構築されたときにのみ有効です。 .Ar authtype 認証を使用不能にし、 .Nm を再コンパイルすることなしに 特定の認証タイプを一時的に使用不能にする事が出来ます。 .El .Pp .Nm は仮想端末デバイス ( .Xr pty 4 参照) をクライアントに割り当てます。 そして、 .Dv stdin , .Dv stdout , .Dv stderr として仮想端末のスレーブ側を使用する login プロセスを生成します。 .Nm は、 .Tn TELNET プロトコルを実装し、 リモートクライアントと login プロセスとの間の キャラクタを通過させることにより、仮想端末のマスター側を操作します。 .Pp .Tn TELNET セッションが開始されると .Nm は以下の .Tn TELNET オプションをクライアント側に送信して、これらの .Tn TELNET オプションの使用を希望している事を伝えます。 これらのオプションの詳細はついては以下に説明されています。 .Bd -literal -offset indent DO AUTHENTICATION WILL ENCRYPT DO TERMINAL TYPE DO TSPEED DO XDISPLOC DO NEW-ENVIRON DO ENVIRON WILL SUPPRESS GO AHEAD DO ECHO DO LINEMODE DO NAWS WILL STATUS DO LFLOW DO TIMING-MARK .Ed .Pp クライアントに割り当てられた仮想端末は、 \*(lqcooked\*(rq モードで動作し、 .Dv XTABS と .Dv CRMOD ( .Xr tty 4 参照) が有効な状態で操作するように設定されます。 .Pp .Nm は、ローカル側で有効な以下に示す .Tn TELNET オプションをサポートしています: .Bl -tag -width "DO AUTHENTICATION" .It "WILL ECHO" .Dv LINEMODE オプションが設定されている時に 端末エコーの現在の状態を示すためにクライアントに .Dv WILL ECHO あるいは .Dv WONT ECHO が送信されます。 端末エコーが不要な場合は、 .Tn telnetd がエコーが必要なデータに対する エコーを処理する事を示すために .Dv WILL ECHO が送信され、何もエコーされません。 端末エコーが必要な場合は、 .Tn telnetd -がいかなるターミナルエコーも +がいかなる端末エコーも 行わない事を示すために .Dv WONT ECHO -が送信されるので、必要な時はターミナルエコーをクライアント側が +が送信されるので、必要な時は端末エコーをクライアント側が 行わなければなりません。 .It "WILL BINARY" クライアントが、通常のネットワーク仮想端末が用いる 7 ビットのデータ ではなく、8 ビットのデータを送信するように指定します。 .It "WILL SGA" .Dv IAC GA すなわち go ahead コマンドを送信しないように指定します。 .It "WILL STATUS" クライアントから要求があった時に、全ての .Tn TELNET オプションの現在の状況を送信するように指定します。 .It "WILL TIMING-MARK" .Dv DO TIMING-MARK コマンドが受信された場合に、常にそれに対して .Dv WILL TIMING-MARK を返答します。 .It "WILL LOGOUT" .Dv DO LOGOUT が受信されると .Dv WILL LOGOUT を返答し、 .Tn TELNET セッションはシャットダウンされます。 .It "WILL ENCRYPT" .Nm がデータの暗号化をサポートする設定で構築された場合のみ送信され、 データ列に対して暗号を復号するように指定します。 .El .Pp .Nm はリモート側で有効な以下に示す .Tn TELNET オプションをサポートしています: .Bl -tag -width "DO AUTHENTICATION" .It "DO BINARY" .Nm telnetd が 8 ビットのデータ列を受信するように指定します。 .It "DO LFLOW" クライアントがフロー制御文字をリモート側で処理するように指定します。 .It "DO ECHO" このコマンドは実際にはサポートされませんが、クライアントが 4.2BSD .Xr telnet 1 クライアント ( .Dv WILL ECHO に正しく応答しない) であるかを判断するために送信されます。 もし、 .Dv WILL ECHO が受信された場合は、それに対して .Dv DONT ECHO が送信されます。 .It "DO TERMINAL-TYPE" -接続のクライアント側に割り当てられたターミナルタイプの名前を +接続のクライアント側に割り当てられた端末タイプの名前を 要求できるように指定します。 .It "DO SGA" .Dv IAC GA すなわち go ahead コマンドを受信する必要がないように指定します。 .It "DO NAWS" ウィンドウ (ディスプレイ) のサイズが変わった場合に、クライアントが それをサーバに知らせる事を要求します。 .It "DO TERMINAL-SPEED" クライアントに割り当てられたシリアルラインの速度に関する情報を 要求できるように指定します。 .It "DO XDISPLOC" telnet クライアントが使用している X ウィンドウのディスプレイの名前を 要求できるように指定します。 .It "DO NEW-ENVIRON" RFC 1572 に示されている環境変数に関する情報を 要求できるように指定します。 .It "DO ENVIRON" RFC 1408 に示されている環境変数に関する情報を 要求できるように指定します。 .It "DO LINEMODE" .Nm が linemode をサポートする設定で構築された場合のみ送信され、 クライアントに行単位の処理を行う事を要求します。 .It "DO TIMING-MARK" .Nm が linemode および kludge linemode の両方をサポートする設定で 構築され、クライアントが .Dv WONT LINEMODE を返信した場合のみ送信されます。 クライアントが .Dv WILL TM を返信した場合は、クライアントが kludge linemode を サポートしていると判断されます。 .Op Fl k オプションによりこの機能を無効にする事ができます。 .It "DO AUTHENTICATION" .Nm が認証機能をサポートする設定で構築された場合のみ送信され、 自動ログインに使用する認証情報を受信するようにします。 .It "DO ENCRYPT" .Nm がデータの暗号化をサポートする設定で構築された場合のみ送信され、 データ列に対して暗号を復号するように指定します。 .Sh 注釈 デフォルトでは、 .Nm は .Pa /etc/gettytab から .Em \&he , .Em \&hn , .Em \&im のケーパビリティを読み、(存在するならば) この情報を使用して login: プロンプトの前に何を表示すべきかを決定します。 .Em \&im ケーパビリティに優先する .Em \&if ケーパビリティを使用して、System V スタイルの .Pa /etc/issue ファイルを使うこともできます。 .Em \&im または .Em \&if に指定される情報は、コンソールとリモートログインの両方で表示されます。 .Sh 環境変数 .Sh ファイル .Bl -tag -width /usr/ucb/bftp -compact .It Pa /etc/services .It Pa /etc/gettytab .It Pa /etc/inittab (UNICOS システムのみ) .It Pa /etc/iptos (サポートされている場合) .It Pa /usr/ucb/bftp (サポートされている場合) .El .Sh "関連項目" .Xr bftp 1 , .Xr gettytab 5 , .Xr login 1 , .Xr telnet 1 (サポートされている場合) .Sh 標準 .Bl -tag -compact -width RFC-1572 .It Cm RFC-854 .Tn TELNET PROTOCOL SPECIFICATION .It Cm RFC-855 TELNET OPTION SPECIFICATIONS .It Cm RFC-856 TELNET BINARY TRANSMISSION .It Cm RFC-857 TELNET ECHO OPTION .It Cm RFC-858 TELNET SUPPRESS GO AHEAD OPTION .It Cm RFC-859 TELNET STATUS OPTION .It Cm RFC-860 TELNET TIMING MARK OPTION .It Cm RFC-861 TELNET EXTENDED OPTIONS - LIST OPTION .It Cm RFC-885 TELNET END OF RECORD OPTION .It Cm RFC-1073 Telnet Window Size Option .It Cm RFC-1079 Telnet Terminal Speed Option .It Cm RFC-1091 Telnet Terminal-Type Option .It Cm RFC-1096 Telnet X Display Location Option .It Cm RFC-1123 Requirements for Internet Hosts -- Application and Support .It Cm RFC-1184 Telnet Linemode Option .It Cm RFC-1372 Telnet Remote Flow Control Option .It Cm RFC-1416 Telnet Authentication Option .It Cm RFC-1411 Telnet Authentication: Kerberos Version 4 .It Cm RFC-1412 Telnet Authentication: SPX .It Cm RFC-1571 Telnet Environment Option Interoperability Issues .It Cm RFC-1572 Telnet Environment Option .Sh バグ いくつかの .Tn TELNET コマンドは部分的にしか実装されていまいません。 .Pp オリジナルの 4.2 BSD の .Xr telnet 1 のバグに対処するため、 .Nm は、ある種のあいまいなプロトコル変換を行うことにより、 リモートクライアントが実際に 4.2 BSD の .Xr telnet 1 であるかどうかを判断しようとします。 .Pp バイナリモードは よく似たオペレーティングシステム (この場合 Unix) 間以外では 互換性がありません。 .Pp リモートクライアントから受け取った端末タイプの名前は小文字に変換されます。 .Pp .Nm は、 .Tn TELNET .Dv IAC GA (go ahead) コマンドを絶対に送りません。 diff --git a/ja/man/man8/uuchk.8 b/ja/man/man8/uuchk.8 index e902f1901b..86f24d1934 100644 --- a/ja/man/man8/uuchk.8 +++ b/ja/man/man8/uuchk.8 @@ -1,42 +1,42 @@ ''' %Id: uuchk.8,v 1.1.2.1 1998/03/09 11:13:33 jkh Exp % .TH uuchk 1 "Taylor UUCP 1.06" .SH 名称 -uuchk \- UUCP 構成から得た情報を表示する +uuchk \- UUCP の設定から得た情報を表示する .SH 書式 .B uuchk [-s system] [standard UUCP options] .SH 解説 .B uuchk -プログラムは UUCP 構成ファイルを読み込み、 +プログラムは UUCP 設定ファイルを読み込み、 どんなことが書かれていたかをどちらかというと長めの表現で表示します。 UUCP の設定を行っているときに、 UUCP パッケージがあなたの期待通りに動作することを確認するために使用すると 便利です。 .SH オプション 以下のオプションを .B uuchk に与えることが可能です: .TP 5 .B \-s, \-\-system 全システムではなく、指定したシステムに関する情報のみを表示します。 .B uuchk プログラムは、標準の UUCP プログラムのオプションもサポートします。 .TP 5 .B \-x type .TP 5 .B \-\-debug type .TP 5 .B \-I file .TP 5 .B \-\-config file .TP 5 .B \-v, \-\-version .TP 5 .B \-\-help 標準の UUCP オプション。 .SH 関連項目 uucp(1) .SH 作者 Ian Lance Taylor (ian@airs.com). このマニュアルページは Taylor UUCP 1.06 の Texinfo 文書に基いています。 diff --git a/ja/man/man8/uuxqt.8 b/ja/man/man8/uuxqt.8 index 6eeabbf569..4711998b7a 100644 --- a/ja/man/man8/uuxqt.8 +++ b/ja/man/man8/uuxqt.8 @@ -1,113 +1,113 @@ ''' %Id: uuxqt.8,v 1.4 1995/08/19 21:30:28 ache Exp % .\" jpman %Id: uuxqt.8,v 1.2 1997/03/31 15:01:29 horikawa Stab % .TH uuxqt 8 "Taylor UUCP 1.05" .SH 名称 uuxqt \- UUCP 実行デーモン .SH 書式 .B uuxqt [ options ] .SH 解説 .B uuxqt デーモンは、ローカルもしくはリモートシステムの .I uux (1) によって要求されたコマンドを実行します。このデーモンは .I uucico (8) によって自動的に実行開始されます。ただし、 .I uucico (8) デーモンが .B \-q オプションか .B \-\-nouuxqt オプションを付加して実行された場合にはこの限りではありません。 通常は、 .I uucico (8) から本コマンドを起動するため、本コマンドをユーザが直接実行する 必要はありません。しかし、処理キューの処理について、なんらかの融通を きかせたい場合に本コマンドは有効です。 .I uuxqt の複数同時起動については、初期化コマンドの .I max-uuxqt を用いることによって 同時起動最大数を制御することが出来ます。 .SH オプション 以下のオプションが .B uuxqt で使用可能です。 .TP 5 .B \-c command, \-\-command command 引数 .I command で指定したコマンドの要求のみを実行します。例: .br .in +0.5i .nf uuxqt --command rmail .fi .in -0.5i .TP 5 .B \-s system, \-\-system system 指定したシステムからの要求のみを実行します。 .TP 5 .B \-x type, \-\-debug type 特定のデバッグタイプを有効にします。デバッグタイプとしては、 abnormal, chat, handshake, uucp-proto, proto, port, config, spooldir, execute, incoming, outgoing が有効です。 なお、 .I uuxqt 自体に意味のあるデバッグタイプは abnormal, config, spooldir, execute の 4 つだけです。 デバッグタイプに関しては、コンマで区切ることで複数指定が可能になります。 .B \-\-debug によるデバッグタイプ指定は、 1 つのコマンドライン中に複数存在してもかまいません。 数字による指定を行なうと、先述のリスト中、先頭から指定した番号までの デバッグタイプが有効になります。例えば、 .B \-\-debug 2 と指定した場合は、 .B \-\-debug abnormal,chat と指定したのと同じです。 デバッグ出力は、デバッグファイルに記録されます。デバッグファイルは、通常は、 /var/spool/uucp/Debug, /var/spool/uucp/DEBUG, /var/spool/uucp/.Admin/audit.local のいずれかです。 .TP 5 .B \-I file, \-\-config -使用するコンフィギュレーションファイルを指定します。しかし +使用する設定ファイルを指定します。しかし このオプションが利用できるかできないかは .I uuxqt をどのようにコンパイルしたかに依存します。 .TP 5 .B \-v, \-\-version バージョン情報を表示して終了します。 .TP 5 .B \-\-help ヘルプメッセージを表示して終了します。 .SH 関連ファイル ファイル名は、コンパイル時もしくは -コンフィギュレーションファイルによって変更可能です。 +設定ファイルによって変更可能です。 したがって、これは目安だと思って下さい。 .br -/etc/uucp/config - コンフィギュレーションファイル。 +/etc/uucp/config - 設定ファイル。 .br /var/spool/uucp - UUCP スプールディレクトリ。 .br /var/spool/uucp/Log - UUCP ログ記録ファイル。 .br /var/spool/uucppublic - デフォルト時の UUCP パブリックディレクトリ。 .br /var/spool/uucp/Debug - デバッグ情報ファイル。 .SH 関連項目 uucp(1), uux(1), uucico(8) .SH 作者 Ian Lance Taylor (ian@airs.com) diff --git a/ja/man/man8/vnconfig.8 b/ja/man/man8/vnconfig.8 index e3e1a682df..94e26853ac 100644 --- a/ja/man/man8/vnconfig.8 +++ b/ja/man/man8/vnconfig.8 @@ -1,187 +1,187 @@ .\" Copyright (c) 1993 University of Utah. .\" Copyright (c) 1980, 1989, 1991, 1993 .\" The Regents of the University of California. All rights reserved. .\" .\" This code is derived from software contributed to Berkeley by .\" the Systems Programming Group of the University of Utah Computer .\" Science Department. .\" .\" 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. .\" .\" @(#)vnconfig.8 8.1 (Berkeley) 6/5/93 .\" jpman %Id: vnconfig.8,v 1.2 1997/05/03 13:45:51 horikawa Stab % .\" .Dd July 8, 1993 .Dt VNCONFIG 8 .Os BSD 4 .Sh 名称 .Nm vnconfig .Nd vnode ディスクを構築して利用できるようする .Sh 書式 .Nm vnconfig .Op Fl cdeguv .Op Fl s Ar option .Op Fl r Ar option .Ar special_file Ar regular_file .Oo Ar feature Oc .Nm vnconfig .Fl a .Op Fl cdeguv .Op Fl s Ar option .Op Fl r Ar option .Op Fl f Ar config_file .Sh 解説 .Nm コマンドは、vnode 疑似ディスクデバイスを構築して使用可能にします。 コマンドの最初の書式では、スペシャルファイル .Ar special_file を通常ファイル .Ar regular_file に結びつけ、 後で通常ファイルをディスクであるかのようにアクセスできるようにします。 これによりファイルシステム中の通常ファイルを、 スワップや、名前空間にマウントされるファイルシステムと出来ます。 .Pp オプションは動作を指定します: .Bl -tag -width indent .It Fl a コマンドファイルを読み込み、 各デバイス/ファイルの組に対して指定された動作を実行します。 .It Fl c デバイスを構築します。 成功すると、 .Ar special_file への参照は、 .Ar regular_file の内容へのアクセスとなります。 .It Fl d 指定した .Ar feature を(可能であれば)無効にします。 .It Fl e デバイスを構築し、指定された .Ar feature を有効にします。 .Ar feature が指定されないと、 .Fl e は .Fl c と同じ意味になります。 .It Fl f Ar config_file .Ar config_file -を構成ファイルの代りに使用します。 +を設定ファイルの代りに使用します。 .It Fl g global オプションを制御します。 .It Fl r Ar option .Ar option をリセットします。 .Ar option は labels, follow, debug, io, all, none のいずれかです。 .It Fl s Ar option .Ar option をセットします。 .It Fl u デバイスを無効にし、``無構築状態'' にします。 .It Fl v 実行される動作の内容を標準出力に表示します。 .El .Pp 動作を指定するオプションがない場合には、 .Fl c が指定されたものと見なします。 .Pp .Ar feature 引数は、 .Fl e によって有効になる機能を指定します。 .Bl -tag -width indent .It Dv swap スペシャルファイル上でのスワップを有効にします。 .Xr swapon 2 を参照してください。 .It Dv Pf mountro= Pa mount_point スペシャルファイルは、 .Ar mount_point へ読み込み専用マウントされます。 .Xr mount 2 を参照してください。 .It Dv Pf mountrw= Pa mount_point スペシャルファイルは、 .Ar mount_point へ読み書き可能マウントされます。 .Xr mount 2 を参照してください。 .It Dv Pf mount= Pa mount_point ``mountrw='' と同じです。 .El .Pp -構成ファイルは、1 行にデバイスとファイル名の組を次の形式で持ちます: +設定ファイルは、1 行にデバイスとファイル名の組を次の形式で持ちます: .Bd -literal special_file regular_file [ feature ] .Ed .Pp ここでは各フィールドはスペースで分割されます。 -構成ファイル中のすべてのデバイスの動作に関して、 +設定ファイル中のすべてのデバイスの動作に関して、 前述の動作オプションが有効です。 .Sh 関連ファイル .Bl -tag -width /etc/vntab -compact .It Pa /etc/vntab .Fl a -オプションで使われるデフォルトの構成ファイル +オプションで使われるデフォルトの設定ファイル .El .Sh 使用例 .Pp .Dl vnconfig /dev/vn0c /tmp/diskimage .Pp vnode ディスクデバイス .Pa vn0c を構築します。 .Pp .Dl vnconfig -e /dev/vn0c /var/swapfile swap .Pp vnode ディスクデバイス .Pa vn0c を構築し、それをスワップ領域として使うようにします。 .Pp .Dl vnconfig -d /dev/vn0c myfilesystem mount=/mnt .Pp vnode ディスクデバイス .Pa vn0c のマウントを解除します(また無構築状態にします)。 .Pp .Dl vnconfig -ae .Pp .Pa /etc/vntab に記述されているすべてのデバイスを構築して使用可能にします。 .Sh 関連項目 .Xr mount 2 , .Xr swapon 2 , .Xr unmount 2 , .Xr vn 4 . diff --git a/ja/man/man8/watch.8 b/ja/man/man8/watch.8 index 98a315eac9..5c1b82207f 100644 --- a/ja/man/man8/watch.8 +++ b/ja/man/man8/watch.8 @@ -1,96 +1,96 @@ .\" .\" @(#)watch.8 1.1 (FreeBSD) 2/17/95 .\" jpman %Id: watch.8,v 1.3 1997/07/22 17:07:53 horikawa Stab % .\" .Dd February 17, 1995 .Dt WATCH 8 .Os .Sh 名称 .Nm watch .Nd 別の tty 線を覗き見る .Sh 書式 .Nm watch .Op Fl ciotnW .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 がオーバフローした時の +あふれが発生した場合、再接続します。 +観察している tty があふれた時の .Nm の振舞いは、観察している tty が閉じられた時の振舞いに似ています。 詳しい情報は、 .Xr snp 4 を見てください。 .It Fl t tty の観察を始めた時の日付と時間を表示します。 .It Fl n 観察する tty を対話的に変更できなくします。 これは、 による変更要求と、 -現在の tty が閉じられたりオーバフローを起こした場合の自動プロンプトともに +現在の tty が閉じられたりあふれを起こした場合の自動プロンプトともに 無効にします。 プロンプトが表示される全ての場合、 .Nm .\"(訳注)実際は文中の語でしたが、ここでは.Nmを使いました。 .\" 2.2.1R 対象(1997/04/28) Takeshi MUTOH は終了します。再接続フラグは、このオプションに影響されません。 .It Fl W 観察している tty への書き込みを許可します。 .It Ar tty tty は、仮想 tty デバイスや仮想コンソールやシリアル線などのように、 tty 形式のデバイスとして指定しなければなりません。 名前には、前に "/dev/" をつけても構いません。 .Sh 操作 対話的モードで実行中は、全てのユーザの入力は以下のものを除いて、 捨てられます。 .Pp .Bl -tag -width "XXXX" -compact .It Sy "" .Nm の終了。 .It Sy "" 画面の消去。 .It Sy "" 除き見る tty の変更。 .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/man/man8/xntpd.8 b/ja/man/man8/xntpd.8 index 6c06271233..b7922d7698 100644 --- a/ja/man/man8/xntpd.8 +++ b/ja/man/man8/xntpd.8 @@ -1,1088 +1,1087 @@ .\" jpman %Id: xntpd.8,v 1.2 1997/09/16 18:16:37 ken Stab % ''' $Header ''' .de Sh .br .ne 5 .PP \fB\\$1\fR .PP .. .de Sp .if t .sp .5v .if n .sp .. .de Ip .br .ie \\n.$>=3 .ne \\$3 .el .ne 3 .IP "\\$1" \\$2 .. ''' ''' Set up \*(-- to give an unbreakable dash; ''' string Tr holds user defined translation string. ''' Greek uppercase omega is used as a dummy character. ''' .tr \(*W-|\(bv\*(Tr .ie n \{\ .ds -- \(*W- .if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch .if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch .ds L" "" .ds R" "" .ds L' ' .ds R' ' 'br\} .el\{\ .ds -- \(em\| .tr \*(Tr .ds L" `` .ds R" '' .ds L' ` .ds R' ' 'br\} .TH XNTPD 8 LOCAL .SH 名称 xntpd - Network Time Protocol デーモン .SH 書式 .B xntpd [ .B -abdm ] [ .B -c .I conffile ] [ .B -e .I authdelay ] [ .B -f .I driftfile ] [ .B -k .I keyfile ] [ .B -p .I pidfile ] [ .B -r .I broadcastdelay ] [ .B -s .I statsdir ] [ .B -t .I trustedkey ] [ .B -v .I variable ] [ .B -V .I variable ] .SH 解説 .I xntpd は、インターネットの標準時間サーバに合わせて、 Unix のシステム時刻 (time\-of\-day) を設定し維持するデーモンです。 .I xntpd は、RFC 1305 で定義されている Network Time Protocol (NTP) バージョン 3 標準の完全な実装となっていますが、各々 RFC 1059 と RFC 1119 で定義 されているバージョン 1 とバージョン 2 に対する互換性も保っています。 .I xntpd は全ての計算を固定少数点演算により行うので、浮動少数点を扱うコードは 必要としません。プロトコルおよび時間調整のコードで行われる計算は、高 精度で実行されます。また、最も正確な外部時計の供給源に対しても同期で きるだけの精度の維持を計るべく、計算に規則だった補正値を導入するといっ たように、細部まで注意が払われています。 .PP 通常、 .I xntpd -は、起動時にコンフィギュレーションファイルから設定を読込みます。 -デフォルトのコンフィギュレーションファイル名は、 +は、起動時に設定ファイルから設定を読込みます。 +デフォルトの設定ファイル名は、 .IR /etc/ntp.conf ですが、コマンドラインの指定の方が優先します。また、もっぱらコマンド ラインだけで、その局面に役立つ .I xntpd -の設定を与え、コンフィギュレーションファイルを不要にすることもで +の設定を与え、設定ファイルを不要にすることもで きます。これは、 .I xntpd が、実行時にブロードキャストを待受ける (listen) ことで決定される全て の通信相手 (peer) に対して、ブロードキャストもしくはマルチキャスト・ クライアントとして設定されるべき時には、特に適しています。 .I xntpd デーモンの実行中は、 .IR ntpq (8) および .IR xntpdc (8) を使用することで、デーモンのさまざまな内部変数を表示したり 設定オプションを変更できます。 .PP デーモンはアクティブ/パッシブ, クライアント/サーバ, ブロードキャスト /マルチキャスト等の対称的なモードを含むいずれかのモードで働くことが できます。ブロードキャストもしくはマルチキャスト・クライアントは、 自動的にリモートサーバを探し出し、片道の遅延補正因子を計算して、自動的 に自身に対する設定を行います。これにより、その環境に固有の詳細な設定 -やコンフィギュレーションファイルなしに、一群のワークステーションを +や設定ファイルなしに、一群のワークステーションを 配置することが可能になります。 .PP 以下にあげるコマンドライン引数が .I xntpd により理解されます。(より完全な機能の説明については、 -コンフィギュレーションファイルの説明を参照のこと): +設定ファイルの説明を参照のこと): .Ip -a 8 「認証」 (\*(L"authenticate\*(R") モードで実行します。 .Ip -b 8 NTP のブロードキャストを待受けて、可能ならそれに同期します。 .Ip -c 8 -デフォルトの代わりのコンフィギュレーションファイルを指定します。 +デフォルトの代わりの設定ファイルを指定します。 .Ip -d 8 デバッグモードを指定します。このフラグは何回指定してもかまいませんが、 回数が多いほど表示がより詳細になります。 .Ip -e 8 このコンピュータ上で、NTP の暗号化 (encryption) フィールドを計算する のに必要な時間を (秒で) 指定します。 .Ip "-f driftfile" 8 driftfile のある場所を指定します。 .Ip -k 8 NTP の認証キーを含むファイルのある場所を指定します。 .Ip -m 8 マルチキャストメッセージを待受けて、可能ならそれらに同期します ( マルチキャストカーネルが必要になります)。 .Ip -p 8 デーモンのプロセス ID を記録するためのファイル名を指定します。 .Ip -r 8 通常、デーモンは、ブロードキャストもしくはマルチキャストのサーバと クライアントとの間のネットワーク遅延を自動的に補正します。 遅延の測定作業が失敗した場合には、ここで指定した (秒の) デフォルトの 遅延を使用するようになります。 .Ip -s 8 統計ファイルを作成するためのディレクトリを指定します。 .Ip "-t trustedkey" 8 キー番号を信頼できるキー (trusted key) のリストに付け加えます。 .Ip -v 8 システム変数を追加します。 .Ip -V 8 デフォルトでリストされるシステム変数を追加します。 .SH "コンフィギュレーションオプション" .I xntpd -のコンフィギュレーションファイルのフォーマットは、 -他の Unix コンフィギュレーションファイルのものに似ています。 +の設定ファイルのフォーマットは、 +他の Unix 設定ファイルのものに似ています。 コメントは文字 \*(L"#\*(R" で始まり、行末まで続きます。空行は無視されます。 設定コマンドは、行頭のキーワードとそれに続く空白で区切られた 引数のリストからなります。引数の内いくつかは、省略可能な場合があります。 これらのコマンドは複数行にわたってはなりません。 引数は、ホスト名, ドットで区切られた 4 つ組の数からなる (dotted-quad) 形式の ホストアドレス, 整数, 浮動少数点数 (秒で時間を指定する際用います), テキスト文字列などです。 以下の説明では、省略可能な引数は、\*(L"[]\*(R" で囲み、 複数択一の引数は、互いに \*(L"|\*(R" で区切って表します。 .PP .B peer .I host_address [ .B key .I # ] [ .B version .I # ] [ .B prefer ] .br .B server .I host_address [ .B key .I # ] [ .B version .I # ] [ .B prefer ] .br .B broadcast .I host_address [ .B key .I # ] [ .B version .I # ] [ .B ttl .I # ] .PP これらの 3つのコマンドは、利用されるべき時間サーバや与えられるべき 時間サービスを指定します。 .B peer コマンドは、ローカルサーバが、コマンド中の .I host_address で示されるリモートサーバに対し、「対称的アクティブ」 (\*(L"symmetric active\*(R") モードで動作するよう指示します。これは、さまざまな失敗 の仕方によって、ローカルもしくはリモートのサーバホストのいずれかが より良い時刻供給源となり得るようなサーバのネットワークにおいて、役立つ ものです。 .B server コマンドは、ローカルサーバが、指定したリモートサーバに 対して \*(L"クライアント\*(R" モードで動作するよう指示します。 このモードでは、ローカルサーバはリモートサーバに同期しますが、 リモートサーバがローカルサーバに同期することは決してありません。 .B broadcast コマンドは、ローカルサーバが、\*(L"ブロードキャスト\*(R" モードで 動作するよう指示します。ローカルサーバは、コマンド中で指定される ブロードキャスト/マルチキャスト/アドレスを持つクライアント集団に、 定期的にブロードキャストメッセージを送ります。通常、この指示は、 送信側 (transmitter) として動作しているローカルサーバにのみ適用されます。 ブロードキャストクライアントに対する動作については、以下に説明する .B broadcastclient もしくは .B multicastclient コマンドの項を参照して下さい。このモードでは、 .I host_address は、通常、そのローカルネットワーク (もしくは複数の ローカルネットワークの内のひとつ)の上でのブロードキャストアドレスであるか、 NTP に割当てられたマルチキャストアドレスです。NTPには、アドレス 224.0.1.1 が 割当てられてきました。現在のところは、このアドレスのみを使用すべきです。 マルチキャスト機能はマルチキャストカーネルを必要としますが、これは、 まだ、どのベンダの製品にでも存在するものではないということに注意し て下さい。 .PP .B key オプションが含まれていると、そのアドレスに送られる全てのパケットが、 指定したキー (32 ビット符号無し整数の範囲の数) を用いて暗号化された 認証フィールドを含むようになります。 .B version オプションにより、送出される NTP パケットに使用されるべきバージョン 番号を指定することができます。バージョン 1, 2, 3 のいずれかが選択で きますが、バージョン 3 がデフォルトになっています。 .B prefer オプションは、そのホストを優先的ホストとします。このホストは、その他 全ての点では同等ですが、正常に動作している一群のホストの中から同期を 取る対象として選ばれます。 .B ttl オプションは、ブロードキャストモードでのみ使用され、マルチキャスト パケットで用いられる生存時間 (TTL) を指定します。デフォルトは 127 ですが、 適切な値を選択することは、黒魔術の一種であり、ネットワーク管理者 との調整を必要とします。 .PP .B broadcastclient .PP ローカルサーバに対し、同じサブネット上の他のサーバを見付けるために、 ローカルネットワーク上のブロードキャストメッセージを待受けるよう指示 します。ローカルサーバは、最初のブロードキャストメッセージを受取る際、 リモートサーバとクライアント/サーバ間の短いやりとりを用いて、名目上 の (nominal) ネットワーク遅延を測定してから、後続のブロードキャスト メッセージを待ち受けて、それに同期する\*(L"ブロードキャストクライアント\*(R" モードに入ります。このモードでの偶然もしくは故意の分裂状態 を避けるため、ローカルとリモートのサーバの両方は認証に同一の信頼でき るキーとキー識別子を使用して動作しなくてはならないことに注意して下さい。 .PP .B multicastclient [ .I IP address ... ] .PP このコマンドは、 .IR broadcastclient コマンドと同じように用いられますが、IP マルチキャストを使用して動作 します。この機能をサポートするには、マルチキャストカーネルと認証の使用が 必要です。1 つ以上の IP アドレスが与えられると、サーバはそれぞれ のマルチキャストグループに加わります。1 つも与えられなければ、NTP に は IP アドレス (224.0.1.1) が割当てられていると想定されます。 .PP .B driftfile .I filename .PP このコマンドは、ローカルの時計発振子の周波数オフセットを記録するため のファイル名を指定します。このファイルが存在すると、起動時に初期周波数 オフセットを指定するのに使用され、その後デーモンにより計算される カレント周波数オフセットで、 1 時間に 1 度更新されます。ファイルが存在 しないか、このコマンドが与えられていない場合、初期周波数オフセットは ゼロと仮定されます。この場合、周波数が安定し、残った時間誤差が収まる のに数時間かかります。このファイルが、最初にカレント変動値を一時 ファイルに書込み、 .IR rename (3) により古いファイルと置換えることで更新されることに注意して下さい。これは、 .I xntpd が、 ドリフトファイルのあるディレクトリに対し書込み権を持っていなけ ればならず、ファイルは、シンボリックであろうとなかろうと、 ファイルシステムリンクであるべきではないだろうことを意味しています。 .PP .B enable auth|bclient|pll|monitor|stats [ .I ... ] .PP さまざまなサーバオプションを有効にします。指定されていないフラグは 影響を受けません。\*(L"auth\*(R" フラグは、その通信相手 (peer) が信頼 できるキーとキー識別子を使用して正しく認証されている場合に限って、サーバが 指定されていない相手に同期するようにします。このフラグのデフォルトは 無効 (オフ) です。 \*(L"bclient\*(R" フラグは、サーバがブロード キャストもしくはマルチキャストサーバからのメッセージを待受けるように します。これにより、そのサーバに対する連携 (association) が自動的に 成立します。このフラグのデフォルトは無効 (オフ) です。 \*(L"pll\*(R" フラグは、サーバのローカル時計を調整するようにします。デフォルトでは 有効 (オン) です。無効にした場合、ローカル時計は固有の時間と周波数の まま動きます。このフラグは、ローカル時計が他の何らかのデバイスや プロトコルにより制御されており、NTPは他のクライアントと同期をとるためだ けに使用されている場合に、役立ちます。\*(L"monitor\*(R" フラグは、 モニタファシリティ (facility) を有効にします(下記参照のこと)。デフォルトでは 有効 (オン) です。\*(L"stats\*(R" フラグは、統計のファシリティ の filegen (下記説明を参照のこと) を有効にします。デフォルトでは有効 (オン) です。 .PP .B disable auth|bclient|pll|monitor|stats [ .I ... ] .PP さまざまなサーバオプションを無効にします。指定されていないフラグは影響を 受けません。現在使用可能なオプションは、enable コマンドの項で説明 しています。 .SH "認証オプション" .PP .B keys .I filename .PP このコマンドは、認証モードでの操作の際、 .I xntpd により使用される暗号化キーとキー識別子を含むファイルの名前を指定します。 このファイルのフォーマットは以降で説明します。 .PP .B trustedkey .I # [ .I "# ..." ] .PP このコマンドは、同期するのにふさわしい通信相手を認証する目的にとって 信用できる暗号化キー識別子を指定するのに使用されます。異なるサーバは 異なるキーを使用できますが、認証手続きにはローカルとリモート両方の サーバがこの目的のため同一のキーとキー識別子を共有することが必要です。 引数は、32 ビット符合なし整数ですが、 NTP キー 0 は固定されており周知の ものであることに注意してください。意味のある認証が行われるべきならば、 キー 0 は信用すべきではありません。 .PP .B requestkey .I # .PP このコマンドは、 .IR xntpd (8) の動作に影響を与える問題の診断と修復に役立つ .IR xntpdc (8) プログラムにより使用されるキー識別子を指定します。 .I xntpdc プログラムの動作は、 xntpd のこの固有の実装に特定されており、これ および以前のバージョンのデーモンとのみ動作すると見込まれます。ローカル サーバの状態に影響を与えるリモートの .I xntpdc プログラムからの要求は、 認証されねばなりません。そのためには、リモートプログラムとローカル サーバが共通のキーとキー識別子を共有することが必要です。このコマンドの引数は、 -32 ビット符合なし整数です。コンフィギュレーションファイルに +32 ビット符合なし整数です。設定ファイルに .B controlkey コマンドが含まれていないか、キーがマッチしないと、この要求は無視され ます。 .PP .B controlkey .I # .PP このコマンドは、 .IR xntpd (8) の動作に影響を与える問題の診断と修復に役立つ .IR ntpq (8) プログラムにより使用されるキー識別子を指定します。 .IR ntpq プログラムと .I xntpd の動作は RFC 1305 の定義を満たしています。ローカルサーバの状態に影響 を与えるリモートの .I ntpq プログラムからの要求は、認証されねばなりません。そのためには、リモート プログラムとローカルサーバが共通のキーとキー識別子を共有することが 必要です。このコマンドの引数は、32 ビット符合なし整数です。 -コンフィギュレーションファイルに +設定ファイルに .B requestkey コマンドが含まれていないか、キーがマッチしないと、この要求は無視され ます。 .PP .B authdelay .I seconds .PP ローカル計算機上で NTP 認証フィールドを暗号化するのに要する時間の 総計を示します。この値は、送出パケットに認証が用いられる際、送信タイム スタンプを修正するのに使用されます。通常、この値は 0.0001 秒から 0.003 秒あたりになりますが、これはホスト計算機の CPU 速度に依存して います。通常、この値は、ディストリビューションに含まれている .I authspeed プログラムを用いて計算されます。 .SH "アクセス制御オプション" .B restrict .I address [ .B mask .I numeric_mask ] [ .I flag ] [ .I ... ] .PP .I xntpd は、汎用のアドレスとマスクに基づく制限リストを実装しています。リスト はアドレスにより、そしてマスクによりソートされ、その順番でマッチして いるかどうか調べられます。ここで、最後にマッチしたものが受信パケット に関する制限フラグを定義します。受信パケットのソースアドレスは、制限 リストのエントリに関するマスクでアンドをとられた 32 ビットアドレスと マッチするか調べられ、それからエントリアドレス (これもまたマスクと アンドをとられます) と比較され、マッチするものを探します。引数 \*(L"mask\*(R" のデフォルトは 255.255.255.255 で、\*(L"address\*(R" が個別のホストのアドレスとして扱われることを意味します。デフォルト エントリ (address 0.0.0.0, mask 0.0.0.0) は常にリストに含まれ、既定の ソートアルゴリズムでは、リストの先頭のエントリとなります。 \*(L"address\*(R" は、通常、 dotted\-quad 形式で与えられ、 mask オプションを伴わないテキスト文字列 \*(L"default\*(R" は、デフォルト エントリを示すために使用できることに、注意して下さい。 .PP 現在の実装では、フラグは常にアクセスを制限します。すなわち、フラグを 持たないエントリは、サーバへの自由なアクセスが与えられることを示す ことになります。フラグは直交的ではなく、より制限の強いフラグは、より 制限の弱いフラグを冗長にします。フラグは、一般に 2 つのカテゴリに分類 されます。時間サービスを制限するものと、情報問い合わせやサーバの 実行時再設定の試みを制限するものです。次のフラグの内1つ以上を指定する ことができます: .Ip ignore 10 このエントリにマッチするホストからのすべてのパケットを無視します。 このフラグが指定されると、問い合わせも時間サーバへのポーリングも応答さ れなくなります。 .Ip noquery 10 NTP の モード 6 と 7のすべてのパケット (つまり情報問い合わせと設定要求) を無視します。時間サービスは影響を受けません。 .Ip nomodify 10 サーバの状態を変えようとするモード 6 と 7のすべてのパケット (つまり 実行時再設定) を無視します。情報を返す問い合わせは許されます。 .Ip notrap 10 マッチしたホストにモード 6 の制御メッセージのトラップサービスを提供 することを拒否します。トラップサービスは、モード 6 の制御メッセージ プロトコルのサブシステムで、リモートのイベントロギングプログラムによ る使用が意図されています。 .Ip lowpriotrap 10 マッチしたホストによるトラップセットを低い優先度として宣言します。1 つのサーバが保持し得るトラップの数は制限されています(現在の制限値は 3 です)。トラップは通常、先入れ先処理ベースで割当てられ、後から来た トラップ要求はサービスを拒否されます。このフラグは、通常優先度の トラップに対する後からの要求が、低い優先度のトラップより優先されることを 許すことで、通常の割当てアルゴリズムを変更します。 .Ip noserve 10 モード 6 と 7 以外のすべての NTP パケットを無視します。基本的には、 時間サービスは拒否されますが、それでも問い合わせは許されています。 .Ip nopeer 10 ポーリングしているホストに、状態を持たない (stateless) 時間サービス を与えますが、そうしなければ将来的に同期の相手として有用であるかもし れない場合にさえ、それらに peer メモリ資源を割当てません。 .Ip notrust 10 これらのホストは同期源としては決して使用されませんが、その他の点では 普通に扱われます。 .Ip limited 10 これらのホストは、同一のネットからのクライアント数の制限の対象となり ます。ここで言うネットとは、 (class A, class B, class C 等の) ネット の IP 表記のことです。サーバで見えており、過去 \*(L"client_limit_period\*(R" 秒の間アクティブであった、最初の \*(L"client_limit\*(R" 個のホストのみが、受付けられます。同一の ネットの他のクライアントからの要求は拒否されます。時間要求パケットのみが、 考慮されます。\*(L"プライベート\*(R"", \*(L"制御\*(R"", \*(L"ブロー ドキャスト\*(R" 等のパケットは、クライアント制限の対象にはならず、 クライアントの数の内には入れられません。クライアントの履歴は、 .I xntpd のモニタリング機能を使用して維持されます。それゆえ、モニタリングは、 \*(L"limited\*(R" フラグに制限エントリがある限り、アクティブです。 \*(L"client_limit\*(R" のデフォルト値は 3 です。 \*(L"client_limit_period\*(R" デフォルト値は 3600 秒です。 .Ip ntpport 10 実質的には、制限フラグと言うより、マッチのアルゴリズムを変更するもの です。このフラグが存在すると、パケットのソースポートが標準の NTP の UDP ポート (123) である場合にのみ、制限エントリにマッチします。 \*(L"ntpport\*(R" と non\-\*(L"ntpport\*(R" の両方が指定できます。 \*(L"ntpport\*(R" はより限定的であると考えられ、リストの後方にソート されます。 .PP デフォルトの制限リストエントリは、フラグ \*(L"ignore, ntpport\*(R" を持ち、ローカルホストのインタフェースアドレスの各々に対し、 スタートアップ時にテーブルに挿入され、サーバがそれ自身の時間に同期しようと しないようにします。また、デフォルトエントリは常に存在しますが、他で は設定されない場合は、どのフラグもデフォルトエントリに関連づけられま せん (すなわち、あなた自身の NTP サーバ以外のすべてが無制限になります) 。 .PP 制限ファシリティは、NSFnet の幹線上で動いている時間サーバの現在の アクセスポリシが、 .I xntpd と同様に実装され得るように、付け加えられたものです。このファシリティ は、あなたのサーバが、望まないか故障したリモート時間サーバの影響を受 けないようにするのに、ことのほか有用ですが、これが 標準の NTP 認証 ファシリティの代わりになると考えるべきではありません。ソースアドレスに 基づく制限は、確信犯的クラッカーにたやすく裏をかかれます。 .PP .B clientlimit .I limit .PP \*(L"client_limit\*(R" を \*(L"limit\*(R" にセットし、クライアント 制限ポリシの設定を可能にします。この変数は、そのサーバの使用を許される 同一ネットワークからのクライアント数を定義します。 .PP .B clientperiod .I period .PP \*(L"client_limit_period\*(R" をセットし、クライアント制限ポリシの設 定を可能にします。この変数は、その時間後にクライアントがインアクティブに なると考えられ、従って制限されるクライアント数にもはや数えられな くなるような秒数を指定します。 .SH "モニタリングオプション" .PP .B statsdir .I /directory path/ .PP 統計ファイルが作られるべきディレクトリのフルパスを指定します(下記参照)。 このキーワードにより (そうでなければ定数である) filegen ファイル名の プレフィックスを統計ログ処理に対して用いられるファイル生成セットに対して 修正することが可能となります (下記 .B filegen 文を参照)。 .PP .B statistics .IR name \.\.\. .PP 統計レコードの書込みを有効にします。現在のところ、3 種類の統計がサポート されています。 .Ip loopstats 10 ループフィルタの統計情報の記録を有効にします。ローカル時計の更新を 行う度に、\*(L"loopstats\*(R" と名付けられたファイル生成セットに次の 形式の行を出力します: .PP .RS 5 48773 10847.650 0.0001307 17.3478 2 .RE .RS 10 最初の 2 つのフィールドは、日付 (ユリウス歴に修正済) と時刻 (UTC 午前 0 時からの秒数)です。次の 3 つのフィールドは、時計の更新時の、 秒での時間オフセット, 100 万分の 1 単位の周波数オフセット, clock-discipline アルゴリズムの時定数です。 .RE .Ip peerstats 10 通信相手に関する統計情報の記録を有効にします。これには、存在し初期化 された NTP サーバと 1-pps シグナルのすべての通信相手に関する統計レコードが 含まれます。有効な更新が行われる度に、 \*(L"peerstats\*(R" と 名付けられたファイル生成セットの現在の要素に次の形式の行を出力します: .PP .RS 5 48773 10847.650 127.127.4.1 9714 -0.001605 0.00000 0.00142 .RE .RS 10 最初の 2 つのフィールドは、日付 (ユリウス歴に修正済) と時刻 (UTC 午前 0 時からの秒数)です。次の 2 つのフィールドは、それぞれ dotted-quad 記法で表された通信相手のアドレスとステータスです。 ステータスフィールドは、 NTP の仕様である RFC 1305 の Appendix A で記述さ れたフォーマットに従い 16 進数にエンコードされています。最後の 3 つ のフィールドは、オフセット, 遅延, ばらつきで、すべて秒単位です。 .RE .Ip clockstats 10 時計ドライバの統計情報の記録を有効にします。時計ドライバからの更新を 受ける度に、 \*(L"clockstats\*(R" と名付けられたファイル生成セット次 の形式の行を出力します: .PP .RS 5 49213 525.624 127.127.4.1 93 226 00:08:29.606 D .RE .RS 10 最初の 2 つのフィールドは、日付 (ユリウス歴に修正済) と時刻 (UTC 午前 0 時からの秒数)です。次のフィールドは、dotted-quad 記法で表された 時計のアドレスです。最後のフィールドは、時計から受け取った最後のタイム コードで、ここでは意味のある ASCII 形式になっています。いくつかの 時計ドライバでは、たくさんの付加的情報が集められ、同様に表示されます。 より詳しくは、それぞれの時計の仕様情報を参照してください。 .RE .PP 統計ファイルは、ファイル生成セット(下記 .B filegen を参照)を用いて管理されます。統計を記録することで得られる情報は、 .I xntpd サーバの一時的なプロパティ (properties) の解析を可能にします。通常は 主要な (primary) サーバで役立つだけで、あるいはキャンパスのメイン サーバでも役立つかもしれません。 .PP .B filegen .I name [ .B file .I filename ] [ .B type .I typename ] [ .B flag .I flagval ] [ .BR link | nolink ] [ .BR enable | disable ] .PP ファイル生成セット (file generation set) .IR name の設定を行います。ファイル生成セットは、サーバの活動期間を通じて 継続的に大きくなっていくファイルを扱う手段を提供します。サーバ統計は このようなファイルの典型例です。ファイル生成セットにより、現状のデータ を格納するのに用いられるファイル集合にアクセスできます。任意の時点で、 集合の高々 1 つの要素への書き込みが行われます。 .I type は、その集合の新たな要素に、データが、いつ、どのように出力されるのか の仕様を与えます。この方法で、 .I xntpd の動作を妨げる危険なしに、管理的な操作 (administrational operations) から、現在使用されていないファイル集合の要素に格納されている情報が、 利用できるようになります。(最重要: それらは、新たな出力データのため 空きを作るのに削除される可能性があります。)要素のファイル名は 3 つの 部分から作られます。 .Ip prefix 10 不変なファイル名のパスです。 .B filegen 文による修正の対象にはなりません。サーバによって定義され、通常コンパイル時の 定数として指定されます。しかし、他のコマンドにより、個別のファイル生成 セットに対して設定は可能です。たとえば、"loopstats" と "peerstats" という filegen で用いられるプレフィックスは、すでに説明した .B statsdir 文を使用して設定できます。 .Ip filename 10 この文字列は、上で述べた .I prefix に、( \*(L'/\*(R' (スラッシュ) を入れずに ) 直接連結されます。 \*(L"filegen\*(R" 文の \*(L"file\*(R" 引数を使って修正できます。 \*(L"prefix\*(R" により示されるファイル名が、ファイルシステム階層の 外側を参照しないように、この部分は \*(L"..\*(R" を含んではいけないよ うになっています。 .Ip suffix 10 この部分はファイル集合の各要素を反映します。後述のように、ファイル集合の .I type に従って生成されます。 .PP ファイル生成セットは、その型 (type) により特徴づけられます。次の型が サポートされています: .Ip none 10 ファイル集合は実際には、単一のプレーンファイルです。 .Ip pid 10 .I xntpd サーバの起動ごとに、ファイル集合の 1 つの要素が使われます。この型は、 実行中にファイル集合の要素への変更を一切行いませんが、異なる .I xntpd サーバの起動ごとに別々のファイルをつくる簡単な方法になります。要素の ファイル名は、 \*(L"prefix\*(R" と \*(L"filename\*(R" をドット (\*(L'.\*(R') でつなげた上、 .I xntpd サーバプロセスのプロセス ID の10進表現をつなげで作られます。 .Ip day 10 1 日に 1 つのファイル生成セットの要素が作成されます。ここで、 .I 日 という用語は、 .IR UTC に基づきます。1 日は、 UTC の 00:00 と 24:00 の間の期間として定義さ れます。要素のサフィックスは、ドット \*(L".\*(R" と .RI < YYYYMMDD > の形式の日付指定からなります。 .I YYYY は 4 桁の西暦年 (たとえば 1992)で、 .I MM は、2 桁の月です。 .I DD は、2 桁の日となります。したがって、1992 年 12 月 10 日に情報はすべ て、 \*(L".19921210\*(R" という名前のファイルに書 かれます。 .Ip week 10 どの要素も 1 年の内のある週に関連するデータを含みます。ここで、 .I 週 という用語は、年の始まりからの日数の 7 の商により定義されます。この ようなファイル生成セットの要素は、ファイル集合のファイル名のベースに 次のようなサフィックスをつけることで区別されます。サフィックスは、 ドット, 4 桁の西暦年, 文字 \*(L"W\*(R", 2 桁の週番号です。例えば、 1992 年 1 月 10 日からの情報は、サフィックス \*(L".1992W1\*(R" を持つ ファイルに出力されます。 .Ip month 10 1 月に 1 つのファイル生成セットの要素が作成されます。ファイル名の サフィックスは、ドット, 4 桁の西暦年, 2 桁の月からなります。 .Ip year 10 1 年に 1 つのファイル生成セットの要素が作成されます。ファイル名の サフィックスは、ドットと 4 桁の西暦年からなります。 .Ip age 10 この型のファイル生成セットは、サーバが 24 時間活動するごとに新たな要素に 変わります。ファイル名のサフィックスは、ドット, 文字 \*(L"a\*(R", 8 桁の数からなります。この数は、対応する 24 時間の始め からサーバが実行されている秒数であるようになります。 .PP 情報は、ファイル生成セットが \*(L"enabled\*(R"のときのみ、そのセット に書込まれます。出力は \*(L"disabled\*(R"を指定することで抑止されます。 .PP ファイル生成セットの .I 現在の 要素に決まった名前でアクセスできると便利です。この機能は、 \*(L"link\*(R" を指定することで有効になり、 \*(L"nolink\*(R" を使っ て無効になります。 \*(L"link\*(R" が指定されると、 現在の要素から サフイックスを持たないファイルへのハードリンクが作成されます。その名前 を持つファイルが既に存在し、そのファイルのリンク数が 1 の場合、その ファイル名に、ドット, 文字 \*(L"C\*(R", .I xntpd サーバプロセスの pid をつなげて、名前変更を行います。リンク数が 1 以上の場合、ファイルはアンリンクされます。これにより現在のファイルを 定数名でアクセスすることができます。 .SH "その他のオプション" .PP .B precision .I # .PP このコマンドは、ローカル時計の名目上の (nominal) 精度を指定します。 この値は、秒単位のローカルの時間管理精度の底を 2 とする対数に近似的 に等しい整数です。ふつう、デーモンは起動時に自動的に精度を決定するの で、このコマンドは、精度を自動的に決定できない特殊な場合にのみ必要に なります。 .PP .B broadcastdelay .I seconds .PP ブロードキャストおよびマルチキャストモードは、ローカルとリモートサーバ間の ネットワーク遅延を決定するため、特別の修正を必要とします。通常、 この修正は、ローカルとリモートサーバ間の最初のプロトコル交換により、 自動的に行われます。修正手続きは、例えば、ネットワークもしくはサーバ のアクセス制御のために失敗する可能性があります。このコマンドは、これ らの状況下で使用されるデフォルトの遅延を指定します。(イーサネットに 対する)典型としては、0.003 から 0.007 秒が適切です。このコマンドが使 用されない場合のデフォルトは、 0.004 秒です。 .PP .B trap .I host_address [ .B port .I port_number ] [ .B interface .I interface_addess ] .PP このコマンドは、指定されたローカルインタフェースに送られる メッセージに対する、所与のホストアドレスとポート番号でのトラップレシーバを 設定します。ポート番号が指定されない場合、 18447 が使用されます。 インタフェースアドレスが指定されない場合、メッセージが送信時に通過する ローカルインタフェースのアドレスをソースアドレスとしてメッセージが 送られます。マルチホームのホストでは、使用されるインタフェースが、 ルーティングの変更にともない変化し得ることに注意してください。 .PP トラップレシーバは、一般には、イベントメッセージやサーバからのその他 の情報をログファイル中に記録するものです。このようなモニタプログラム はまた、それら自身のトラップをダイナミックに要求するかもしれませんが、 トラップレシーバの設定は、サーバのスタート時にメッセージが失われない ことを保証することになっています。 .PP .B setvar .I variable .I [default] .PP このコマンドは、付加的なシステム変数を追加します。これらの変数は、 アクセスポリシなどの付加的な情報を配布するために使用できます。 = の形式の変数に、キーワード .I default が続いた場合、変数はデフォルトのシステム変数の一部としてリストされる ようになります ( .I ntpq rv コマンド) 。これら付加的な変数は、情報を与える目的だけを果たします。 リストされ得ると言うこと以外に、プロトコルに関係しません。 既知のプロトコル変数は常に、 .I setvar の機構により定義されたいかなる変数よりも優先されます。 .PP 同一グループのすべての変数の名前を含む 3 つの特別な変数があります。 .I sys_var_list は、すべてのシステム変数の名前を保持しています。 .I peer_var_list は、すべての peer (交信相手) 変数の名前を保持しています。 .I clock_var_list は、参照時計変数の名前を保持しています。 .PP .B monitor yes|no .B authenticate yes|no .PP これらのコマンドは、 .B enable と .B disable コマンドに置き換えられました。ここにあげたのは歴史を述べるためです。 .SH "認証キーファイルのフォーマット" .PP NTP 標準は、受信した NTP パケットの認証の確認を可能とし、送信パケット内の 認証の指示を与えるための拡張を定めています。これは、 .I xntpd においては、デジタル署名, あるいは message-digest を計算するため、 DES もしくは MD5 アルゴリズムを使用して実装されています。この仕様は、 32 ビットのキー識別子により、ほぼ 40 億分の 1 が、連携 (association) の認証に使用できるようにしています。連携に含まれるサーバは、各々独立 にキーとキー識別子を学習せねばならないにも関わらず、データを認証する のに使用されるキーとキー識別子に合意せねばなりません。 DES の場合、 キーは 56 ビット長で、型によっては各バイトにパリティがつきます。MD5 の場合、キーは 64 ビット (8 バイト) です。 .I xntpd は、 コマンドラインオプション .B -k -もしくはコンフィギュレーションファイル中の +もしくは設定ファイル中の .B keys 文を使用して指定されるファイルからキーを読み込みます。キー番号 0 は、 NTP 標準によって (56 ビットの 0 として) 決定されており、変更できませ んが、一方、1 から 15 のキー番号の内の 1 つ以上がキーファイル中で任意に セットできます。 .PP -キーファイルは、コンフィギュレーションファイルと同様のコメント記述法 +キーファイルは、設定ファイルと同様のコメント記述法 を使用しています。キーエントリはの形式の固定されたフォーマットを 使用します。 .Ip "" 5 .I "keyno type key" .PP の形式の固定されたフォーマットを使用します。ここで、 \*(L"keyno\*(R" は正の数、 \*(L"type\*(R" はキーが与えられる形式を定義する単一文字、 \*(L"key\*(R" はキーそれ自身です。 .PP キーは、 \*(L"type\*(R" 文字による制御で、3 つの異なるフォーマットの 内の 1つで与えられます。3 つのキーの型とそれに対応するフォーマットは、 次にあげるとおりです。 .Ip "S" 5 \*(L"key\*(R" は、 DES のドキュメントに定められたフォーマットの 64 ビットの 16進数で、各オクテットの上位 7 ビットが使用された 56 ビット キーです。各オクテットの下位 1 ビットは、オクテットを奇数パリティに 保つように与えられます。先頭の 0 は省略できません (すなわち、キーは 正確に 16 桁の 16 進数である必要があります) 。また、奇数パリティが保 たれねばなりません。それゆえ、ゼロキーは、標準フォーマットで、 .I 0101010101010101 として与えられます。 .Ip "N" 5 \*(L"key\*(R" は、 NTP 標準で定められたフォーマットの 64 ビットの 16 進数です。これは、各オクテットを 1 ビット右 rotate して、パリティビッ トがオクテットの上位ビットになったことを除いては、 DES フォーマット と同じです。先頭の 0 は省略できず、奇数パリティが保たれねばなりませ ん。ゼロキーは、 NTP フォーマットで、 .I 8080808080808080 のように指定されます。 .Ip "A" 5 \*(L"key\*(R" は 1 文字から 8 文字の ASCII 文字列です。キーは、文字 列中の各文字の ASCII 表現の下位 7 ビットを使用して構成されます。56 ビット幅のキーを作るために、 Unix パスワードから暗号化キーを作るのと 同じ方法で、必要なら 0 が右端に付加されます。 .Ip "M" 5 \*(L"key\*(R" は 1 文字から 8 文字の ASCII 文字列で、 MD5 の認証方式 を使用しています。キーと認証方式 (DES または MD5) の両方が、同じキー 番号を共有する一組の交信相手の間で一意であることが、必要であることに 注意してください。 .PP -コンフィギュレーションファイルの +設定ファイルの .B requestkey 文の方法で、 .IR xntpdc (8) プログラムを用いてなされる実行時の設定要求を認証するために、キーの内 1 つが選択できます。後者のプログラムは、パスワードとして端末からキー を得ます。ですから、一般に、この目的のために使用されるキーを ASCII 表現で指定するのは、適切なことです。 .SH 主要な時計サポート (PRIMARY CLOCK SUPPORT) .I xntpd は、オプションで、いくつかの型の参照時計に対するサポートを含むように コンパイルできます。参照時計は、一般に (常にではなく)、カナダの NRC やアメリカの NIST により提供されるサービスと同様の標準時刻の供給源に 同期している無線時刻コード受信機です。コンピュータと時刻コード受信機 の間のインタフェースはデバイス依存で多種にわたりますが、多くは シリアルポートです。 .PP 多種類の参照時計ドライバに対するサポートは、他の場所で記述された コンパイラ定義のコードを使用して、条件コンパイルされます。参照時計を設定 しようとする試みは、特定のサポートが得られないか、ハードウェアポート が適切に設定されていないとき、システムログファイルに警告を残しますが、 そのほかでは障害となりません。 .PP 設定のために、 .I xntpd は、参照時計を、できるかぎり普通の NTP の交信相手にするのと同じよう な方法で扱います。参照時計は、普通の交信相手と同様にアドレスで参照さ れますが、普通の交信相手と区別するため、無効なアドレスが使用されます。 参照時計のアドレスは、 .I 127.127.t.u の形式となります。ここで、 .I t は、時計の型を示す整数で、 .I u -は、型で特定されるユニット番号を示します。参照時計は、コンフィギュレーション -ファイル中の +は、型で特定されるユニット番号を示します。参照時計は、設定ファイル中の .B server 文を使用して設定されます。このときの .I host_address は、時計のアドレスです。 .I key と .I version と .I ttl オプションは、参照時計サポートのためには使用されませんが、 .I prefer オプションは、ある参照時計を、それが望ましい場合には、他の参照時計や 交信相手より少し熱心に大事に扱わせるよう、サーバに促すのにうまく使え -ます。時計のアドレスは、一般にコンフィギュレーションファイル中で普通 +ます。時計のアドレスは、一般に設定ファイル中で普通 の IP アドレスが使用できるところならどこでも使用できます。例えば、 .B restrict 文中などですが、このような使用法は普通は奇妙に思えるでしょう。 .PP 参照時計サポートは、特別の方法で参照時計を設定するのに使用できる .B fudge コマンドを与えます。 以下は、このコマンドに適用される一般的なフォーマットです。 .PP .B fudge .I 127.127.t.u [ .B time1 .I secs ] [ .B time2 .I secs ] [ .B stratum .I int ] [ .B refid .I int ] [ .B flag1 .I 0|1 ] [ .B flag2 .I 0|1 ] [ .B flag3 .I 0|1 ] [ .B flag4 .I 0|1 ] .PP .I time1 と .B time2 オプションは、秒単位の固定小数点で指定され、いくつかの時計ドライバで は、補正定数として使用されます。慣習により、別のやり方で示されない限り、 .B time1 は、特定の時計の名目上の時間オフセットを、高精度の PPS 信号のような、 外部の標準に一致させるように調整するための補正定数として使用されます。 指定されたオフセットは、内部の DIP スイッチのような他の手段により与えられた 伝搬遅延に付加されます。 .B stratum オプションは 0 から 15 までの数で、時計に対し非標準の operating stratum を割当てるのに使用します。 .B refid オプションは、 1 から 4 文字までの ASCII 文字列で、時計に対し非標準 の参照識別子を割当てるのに使用します。最後に、4つの 2 値フラグ .B flag1, .B flag2, .B flag3, .B flag4 は、時計ドライバをカスタマイズするのに使用されます。これらの値の解釈 や、ともかくそれらが用いられるのかどうかは、特定の時計ドライバが必要 とするかに関わっています。しかし、慣習により、別のやり方で示されない 限り、 .B flag3 は、 ppsclock ストリームモジュールを設定されるドライバにアタッチする のに使用され、一方、 .B flag4 は、 .I filegen コマンドで設定される時計統計 (clockstats) ファイルへの詳細なモニタリング データの記録を有効にするために使用されます。 ppsclock ストリーム モジュールについてのさらなる情報は、現在の xntp3 プログラムの ディストリビューション中の ./kernel ディレクトリの README ファイル内にあり ます。この機能についてのさらなる情報は、 同じディストリビューション中の ./scripts/stats ディレクトリにあります。 .PP 通常、参照時計の stratum は、デフォルトで 0 です。 .I xntpd デーモンは、各交信相手の stratum に 1 を加算するので、主要 (primary) サーバは、通常 stratum 1 を示します。巧みに運用されたバックアップを 与えるために、参照時計の stratum を 0 以上に指定することは、役に立つ ことが多いです。 .B stratum オプションは、この目的のために使用されます。また、参照時計と 1-pps discipline 信号の両方を含む場合、ドライバによっては、参照時計識別子 をデフォルト以外に指定することは有用です。 .I refid オプションは、この目的のために使用されます。そう記されていない限り、 これらのオプションは、すべての時計ドライバに適用されます。 .PP 現在、Unix マシン上の .I xntpd は、バックアップとして用いられる、あるいは他の時計供給源が与えられな いとき使用される特殊な仮想時計に加えて、いくつかの異なる型の時計 ハードウェアをサポートしています。たいていの時計ドライバの場合、xntp3 プログラムのディストリビューション中の ./doc ディレクトリの README ファイル内で述べられているように 1-pps 精度のタイミング信号に対する サポートが利用可能です。時計ドライバ、およびそれらを設定するのに使用される アドレスは、現在の xntp3 プログラムのディストリビューション中の doc ディレクトリの README.refclocks で記述されています。 .PP .SH 変数 NTP protocol により用いられるたいていの変数は、 .I xntpdc (モード 7 メッセージ) と .I ntpq (モード 6 メッセージ) で、調べることができます。 現在は、ごくわずかの変数が、モード 6 メッセージを通して変更可能です。 これらの変数は、 .I setvar の指示で作られたか、リープ警告 (leap warning) 変数かのどちらかです。 リープ警告ビットは、 .B leapwarning 変数で (1 ヶ月前までに) セットされます。 .B leapwarning と .B leapindication 変数内の両方が通常の .B leap ビット解釈と少し違ったエンコーディングを持っています: .P .Ip 00 8 デーモンは、同期源のリープビットを渡します (通常モードの動作) 。 .Ip 01/10 8 リープ秒が、付加/削除されます (オペレータによるリープ秒の強制)。 .Ip 11 8 同期源からのリープ情報は、無視されます (それゆえ LEAP_NOWARNING が 与えられます) 。 .PP .SH 関連ファイル .Ip /etc/ntp.conf 20 -デフォルトのコンフィギュレーションファイル名 +デフォルトの設定ファイル名 .Ip /etc/ntp.drift 20 ドリフトファイルの慣習上の名前 .Ip /etc/ntp.keys 20 キーファイルの慣習上の名前 .SH 関連項目 .PP .IR xntpdc (8), .IR ntpq (8), .IR ntpdate (8) .SH 歴史 .PP .Nm コマンドはトロント大学の Dennis Ferguson によって書かれました。 テキストはデラウェア大学の David Mills により修正されました。 .SH バグ .PP .I xntpd はかなり大きくなってしまいました。巨大とは言いませんが、ワークステーションで 実行される可変プライオリティのデーモンとして望ましい大きさを 超えてしまいました。それは特に、かさばる凝った特徴の多くが、高い stratum のワークステーションよりは、高負荷の主要 (primary) サーバに あわせて設計されているからです。 diff --git a/ja/man/man8/yp_mkdb.8 b/ja/man/man8/yp_mkdb.8 index 53bb573aac..a486822a72 100644 --- a/ja/man/man8/yp_mkdb.8 +++ b/ja/man/man8/yp_mkdb.8 @@ -1,186 +1,186 @@ .\" Copyright (c) 1995, 1996 .\" Bill Paul . 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 Bill Paul .\" 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 Bill Paul 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 Bill Paul 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. .\" .\" %Id: yp_mkdb.8,v 1.2.2.3 1997/11/18 07:32:58 charnier Exp % .\" jpman %Id: yp_mkdb.8,v 1.3 1997/05/19 17:09:21 horikawa Stab % .\" .Dd March 12, 1996 .Dt YP_MKDB 8 .Os .Sh 名称 .Nm yp_mkdb .Nd "NIS データベースを作成する" .Sh 書式 .Nm yp_mkdb .Fl c .Nm yp_mkdb .Fl u Ar dbname .Nm yp_mkdb .Op Fl c .Op Fl b .Op Fl s .Op Fl i Ar inputfile .Op Fl o Ar outputfile .Op Fl d Ar domainname .Op Fl m Ar mastername .Ar inputfile .Ar dbname .Sh 解説 .Nm yp_mkdb は FreeBSD の NIS サーバが使用する .Xr db 3 スタイルのデータベースを作成します。 .Nm yp_mkdb はデータを .Ar inputfile から読み取り、 そのデータを .Ar dbname に .Xr db 3 フォーマットで書き込みます (ハッシュテーブル法を使用します)。 入力は 'key data' の形式、 すなわち空白で区切られた 2 つの .Tn ASCII データフィールドである必要があります。 1 番目のフィールドはキーであるとされ、他は全てデータであるとされます。 通常、データベースが格納されるのは .Pa /var/yp/[domainname] です。ここで、 .Ar domainname はサーバが対象とする NIS ドメイン名です。 .Nm yp_mkdb が起動されるのは、通常 .Pa /var/yp/Makefile からです。 .Nm で NIS データベースファイルをダンプし、内容検査を行えます。 セキュリティのため、 .Nm -が作成した全てのデータベースは、オーナのみ読み書き可能です -(通常オーナは root です)。 +が作成した全てのデータベースは、所有者のみ読み書き可能です +(通常所有者は root です)。 .Sh オプション .Nm yp_mkdb コマンドは以下のフラグとオプションをサポートしています: .Bl -tag -width indent .It Fl c YPPROC_CLEAR リクエストをローカルホスト上の .Xr ypserv 8 宛に送ることを .Nm に指示します。 このシグナルにより、 サーバはオープンしているデータベースデスクリプタをクローズし、 データベースキャッシュをフラッシュします。 このフラグを単体で使用した場合、 サーバにシグナルを送るだけで他には何もしません。 データベース作成コマンドとともに使用した場合には、 .Nm は新たなデータベースが成功裏に作成された後にのみシグナルを送ります。 .It Fl b このフラグを指定すると、キーが .Em YP_INTERDOMAIN でありデータフィールドが空である特別のエントリの データベースへの追加を .Nm に指示します。 このキーがマップ中に存在すると、 .Xr ypserv 8 における 'マッチ' 手続きの動作が何も言わずに変わります。 (キーにマッチするレコードをサーバが見付けられなかったことにより) マッチ問い合わせが失敗した場合、 その要求されたマップに .Em YP_INTERDOMAIN キーが存在する場合には、 .Xr ypserv 8 は今度はそのエントリが DNS でマッチするか検索します。 この特別な振舞は .Em hosts マップだけに適用されることに注意して下さい。 他のマップに .Fl b フラグを使用しても効果はありません。 .It Fl s このフラグは、キーが .Em YP_SECURE でありデータフィールドが空である特別なエントリを データベースに追加するために使用します。 このキーがマップ中にあると、 .Xr ypserv 8 は問い合わせのために用意されたポート以外からの クライアントからのアクセスを拒否します。 これは主に、特権アクセスのみに制限しなければならない .Em master.passwd マップのために使用します。 .It Fl u Ar dbname NIS データベースをダンプします('ほどき'ます)。 既に存在する NIS データベースの内容を検査するために使用可能です。 .It Fl i Ar inputfile NIS マップ作成時に、キーが .Em YP_INPUT_FILE であり .Ar inputfile がエンコードされた特別なエントリをデータベース中に作成します。 .It Fl o Ar outputfile NIS マップ作成時に、キーが .Em YP_OUTPUT_FILE で .Ar outputfile がエンコードされた特別なエントリをデータベース中に作成します。 .It Fl d Ar domainname NIS マップ作成時に、キーが .Em YP_DOMAIN_NAME であり .Ar domainname がエンコードされた特別なエントリをデータベース中に作成します。 .It Fl m Ar mastername NIS マップ作成時に、キーが .Em YP_MASTER_NAME であり .Ar mastername がエンコードされた特別なエントリをデータベース中に作成します。 データベース中のこのエントリは、 ドメイン中の NIS マスタサーバの名前を判定するために、 様々な NIS ユーティリティからしばしば使用されます。 デフォルトでは、 .Nm はローカルホストが NIS マスタであるとします; .Fl m オプションをすればこのデフォルトを上書きできます。 .Sh 関連ファイル .Bl -tag -width /var/yp/Makefile -compact .It Pa /var/yp/Makefile .Nm を呼び出し NIS データベースを作成する Makefile .Sh 関連項目 .Xr db 3 , .Xr ypserv 8 .Sh 作者 .An Bill Paul Aq wpaul@ctr.columbia.edu diff --git a/ja/man/man8/ypbind.8 b/ja/man/man8/ypbind.8 index 59ad6076c5..52fdda8fd2 100644 --- a/ja/man/man8/ypbind.8 +++ b/ja/man/man8/ypbind.8 @@ -1,164 +1,164 @@ .\" Copyright (c) 1991, 1993, 1995 .\" 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. .\" .\" %Id: ypbind.8,v 1.5.2.3 1997/11/18 07:37:39 charnier Exp % .\" jpman %Id: ypbind.8,v 1.4 1997/06/18 16:55:44 horikawa Stab % .\" .Dd April 9, 1995 .Dt YPBIND 8 .Os .Sh 名称 .Nm ypbind .Nd "NIS ドメインをバインドするデーモン" .Sh 書式 .Nm ypbind .Op Fl ypset .Op Fl ypsetme .Op Fl s .Op Fl S Ar domainname,server1,server2,... .Sh 解説 .Nm は NIS バインド情報を管理するプロセスです。 開始時にネットワークブロードキャストを行い、( .Xr domainname 1 コマンドにより設定された) システムデフォルトドメインに対して サービスする NIS サーバを探します。 返答を受け取ると、サーバのアドレス等の情報をファイル .Pa /var/yp/binding に格納します。 標準 C ライブラリ中の NIS ルーチンは、 NIS リクエストを処理する時にはこのファイルを使用します。 NIS クライアントは複数のドメインにバインドされる事がありうるため、 このようなファイルが複数ある場合があります。 .Pp バインドされると、 .Nm は DOMAIN_NONACK リクエストを NIS サーバ宛に 1 分置きに送ります。 リクエストに対する返答が得られない場合、 .Nm はサーバがもう実行していないものとし、 別サーバにバインドされるまでネットワークブロードキャストを再開します。 .Nm は、サーバが返答しなかったことを検知するたび および新たなサーバにバインドされるたび、 警告メッセージを .Xr syslog 3 の機能を使用して記録します。 .Sh オプション 以下のオプションが .Nm にてサポートされています: .Bl -tag -width indent .It Fl ypset .Xr ypset 8 コマンドを使用し、 指定されたドメインの特定の NIS サーバに .Nm を強制的にバインドする事は可能です。 しかし .Nm は、正確には誰が要求しているのかを知る事が出来ないため、 YPBINDPROC_SETDOM リクエストをデフォルトでは拒否します。 .Fl ypset フラグを使用する事により、 .Nm にあらゆるホストからの YPBINDPROC_SETDOM リクエストを受理させられます。 任意のユーザにより NIS クライアントのバインドがリセットされてしまうという セキュリティ上の危険がありますので、 このオプションは診断目的および短い期間のみ使用すべきです。 .It Fl ypsetme これは .Fl ypset フラグに似ていますが、YPBINDPROC_SETDOM リクエストがローカルホスト発の場合のみ 処理を許すという点のみ異なります。 .It Fl s .Nm を安全モードで実行します: root 以外により実行されている NIS サーバ (つまり、特権 TCP ポートを使用していないもの)へのバインドを拒否します。 .It Fl S Ar domainname,server1,server2,server3,... システム管理者は .Nm を特定のドメインおよび NIS サーバグループへロック出来ます。 10 サーバまで指定できます。 domain/server 指定においては、コンマの間には空白を入れてはなりません。 このオプションを指定する事により、 ある 1 つのドメインおよび指定されたサーバのうちの 1 つにのみに システムがバインドされる事を保証できます。 これは NIS サーバであり NIS クライアントでもあるシステムにて有用です: システムがバインド可能なマシンの限定を、 しばしばセキュリティホールであるとされる .Fl ypset や .Fl ypsetme といったオプションを指定する必要無く行えます。 指定されるサーバの有効なエントリが、ローカルの .Pa /etc/hosts ファイルに存在する必要があります。 ホスト名の代わりに IP アドレスを指定しても構いません。 .Nm が引数を解釈できない場合、 .Fl S フラグを無視し、通常の動作を行います。 .Pp .Nm は .Fl S フラグにより指定されるドメイン名を、システムデフォルトドメインと解釈 することに注意して下さい。 .Sh 注釈 .Nm は 2 番目のドメインのバインドを連続して保持しようとはしません。 2 番目のドメインのサーバが ping に応答しない場合、 .Nm はあきらめる前に一度だけ新たなサーバを探してブロードキャストします。 クライアントプログラムがバインドされていないドメインを参照しようとした場合、 .Nm は再度ブロードキャストしようとします。 これとは対称的に、クライアントプログラムが参照していようといまいと、 .Nm はデフォルトドメインへのバインドを自動的に保持します。 .Sh 関連ファイル .Bl -tag -width /etc/rc.conf -compact .It Pa /var/yp/binding/[domainname].[version] NIS ドメインに関連したバインド情報を保持するファイル。 .It Pa /etc/rc.conf システムデフォルトのドメインと ypbind 開始オプションを指定する -コンフィギュレーションファイル。 +設定ファイル。 .El .Sh 関連項目 .Xr domainname 1 , .Xr syslog 3 , .Xr yp 4 , .Xr ypserv 8 , .Xr ypset 8 .Sh 作者 .An Theo de Raadt Aq deraadt@fsa.ca diff --git a/ja/man/man8/ypserv.8 b/ja/man/man8/ypserv.8 index ad8b3494ad..468bb7e702 100644 --- a/ja/man/man8/ypserv.8 +++ b/ja/man/man8/ypserv.8 @@ -1,422 +1,422 @@ .\" Copyright (c) 1995 .\" Bill Paul . 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 Bill Paul. .\" 4. Neither the name of the author nor the names of any co-contributors .\" may be used to endorse or promote products derived from this software .\" without specific prior written permission. .\" .\" THIS SOFTWARE IS PROVIDED BY Bill Paul 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 Bill Paul 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. .\" .\" %Id: ypserv.8,v 1.8.2.3 1997/11/18 07:52:07 charnier Exp % .\" jpman %Id: ypserv.8,v 1.3 1997/05/19 17:11:16 horikawa Stab % .\" .Dd February 4, 1995 .Dt YPSERV 8 .Os .Sh 名称 .Nm ypserv .Nd NIS データベースサーバ .Sh 書式 .Nm .Op Fl n .Op Fl d .Op Fl p Ar path .Sh 解説 .Tn NIS は複数の UNIX ベースのマシン間で -共通のコンフィギュレーションファイルの集合を共有するための +共通の設定ファイルの集合を共有するための RPC ベースのサービスです。 .Tn NIS では、 .Pa /etc/hosts , .Pa /etc/passwd , .Pa /etc/group といった、ほとんどの環境で頻繁に更新されるファイルの複数のコピーを システム管理者が更新する必要は無く、 計算機のグループで一箇所で更新可能な 1 組のデータを共有することができます。 .Pp .Nm は .Tn NIS .Em ドメイン 内のクライアントシステムに .Tn NIS データベースを配布するサーバです。 .Tn NIS ドメイン内のクライアントは .Xr domainname 1 コマンドを使用し、 .Nm がサービスしているドメイン名を設定しなければなりません。 また、単一 .Tn NIS ドメイン中に複数のサーバが存在しうるため、 クライアントは、 .Xr ypbind 8 を実行させ、特定のサーバに接続する必要もあります。 .Pp .Nm によって配布されるデータベースは .Pa /var/yp/[domainname] に格納されます。 ここで .Pa domainname はサービスを受けるドメイン名です。 この様なディレクトリは様々なドメイン名にて複数存在可能ですが、 単一の .Nm デーモンにて全て処理可能です。 .Pp データベース (もしくはしばしば .Pa マップ と呼ばれます)は、様々なシステムファイルをソースとして .Pa /var/yp/Makefile によって作成されます。 データベースファイルは .Xr db 3 フォーマットであり、レコード数が多くとも高速に検索可能です。 .Bx Free では、セキュリティのため、マップの読み書きは root のみ可能です。 技術的には、このような制限はパスワードマップにのみ必要ですが、 他のマップの内容は誰もが読める他のファイルに書いてありますので、 この様な制約は害ではなく、現実的であると考えられています。 .Pp .Nm は .Pa /etc/rc.conf にて有効にされている場合に .Pa /etc/rc.network から起動されます。 .Sh 特別な仕様 .Bx Free のパスワードデータベースを .Tn NIS によって配布する場合にいくつかの問題があります。 .Bx Free は通常、暗号化したパスワードを、root のみ読み書き可能な .Pa /etc/master.passwd にのみ格納します。 このファイルを .Tn NIS マップにすると、セキュリティが完全に破れてしまいます。 .Pp これに対処するために、 .Bx Free の .Nm は .Pa master.passwd.byname と .Pa master.basswd.byuid のマップを特別な方法で扱います。 サーバがこれら 2 つのマップへのアクセス要求を受け付けると、 要求元の TCP ポートをチェックし、ポート番号が 1023 より大きい場合には エラーを返します。 スーパユーザのみ 1024 より小さい TCP ポートにバインドする事を許されているため、 サーバはこれを利用して特権ユーザからの要求か否かを判定できます。 非特権ユーザからの全ての要求は拒否されます。 .Pp また、 .Bx Free の標準 C ライブラリ中の .Xr getpwent 3 ルーチンは、スーパユーザが使用した場合には .Pa master.passwd.byname と .Pa master.passwd.byuid のマップからデータを取得します。 通常のユーザがこれらのルーチンをコールした場合には、標準の .Pa passwd.byname と .Pa passwd.byuid のマップにアクセスします。後者の 2 つのマップは .Pa /var/yp/Makefile により、 .Pa master.passwd ファイルをパースし、パスワードフィールドを削除する事により作成されますので、 非特権ユーザに渡しても安全です。 このように .Pa master.passwd データベースのシャドウパスワード機構は .Tn NIS においても守られます。 .Pp .Sh 注釈 .Ss 制限 .Tn NIS 環境にてシャドウパスワードを使用することに起因する問題が 2 つあります。 ユーザは次のことに気をつけねばなりません。 .Pp .Bl -enum -offset indent .It .Sq TCP ポートが 1024 より小さい というテストは非常に簡単であるため、 同一ネットワーク上の、無制限のアクセスが可能なマシンを持つユーザは これを破る事が可能です (UNIX ベースではないオペレーティングシステムを実行するマシンでも可能です)。 .It .Bx Free システムを、シャドウパスワードをサポートしない非 .Bx Free クライアント (ほとんどがそうです) に対するサーバにしようとしている場合には、 .Pa /var/yp/Makefile の .Em UNSECURE=True エントリのコメントを外し、 シャドウパスワードを無効にする必要があります。 これにより、 .Pa passwd.byname と .Pa passwd.byuid のマップに、非 .Bx Free クライアントが .Tn NIS を通じてユーザ認証を 行うために必要とする、 有効な暗号化されたパスワードフィールドが含まれるようになります。 .El .Pp .Ss セキュリティ 一般的に、リモートユーザは、ドメイン名を知ってさえいれば、RPC を .Nm に発行し、 .Tn NIS マップの内容を取得可能です。 このような権限の無いトランザクションを防ぐために、 .Nm には .Pa securenets と呼ばれる、あるホストの集合にのみアクセスを制限する機能があります。 起動時に、 .Nm は securenets 情報をファイル .Pa /var/yp/securenets から読み込みます。 (後述するように、このパスは、 .Fl p オプションによって指定するパスによって変化することに注意して下さい。) このファイルは、空白によって区切られるネットワークとネットワークマスクからなる エントリを複数含みます。 .Dq \&# から始まる行はコメントと見なされます。 securenets ファイルの例を以下に示します: .Bd -unfilled -offset indent # allow connections from local host -- mandatory 127.0.0.1 255.255.255.255 # allow connections from any host # on the 129.168.128.0 network 192.168.128.0 255.255.255.0 # allow connections from any host # between 10.0.0.0 to 10.0.15.255 10.0.0.0 255.255.240.0 .Ed .Pp .Nm がこれらのルールに適合するアドレスからの要求を受け取った場合には、 通常通り要求を処理します。 アドレスがルールに適合しない場合には、要求は無視され、警告がログされます。 .Pa /var/yp/securenets ファイルが存在しない場合には、 .Nm は全てのホストからの接続を許します。 .Pp .Nm は、Wietse Venema の .Em tcpwrapper パッケージをサポートしますが、 .Em tcpwrapper パッケージは .Bx Free とともに配布されていないため、 デフォルトでは組み込まれていません。 しかし .Pa libwrap.a と .Pa tcpd.h があれば、容易に .Nm を再コンパイルすることができます。 これにより、アクセス管理のために、 -システム管理者は tcpwrapper のコンフィグレーションファイル +システム管理者は tcpwrapper の設定ファイル ( .Pa /etc/hosts.allow と .Pa /etc/hosts.deny ) を .Pa /var/yp/securenets の代わりに使用できます。 .Pp 注: どちらのアクセス制御もそれなりのセキュリティを提供しますが、 特権ポートテストと同様に .Dq IP 詐称 (spoofing) 攻撃には無力であることに 注意して下さい。 .Pp .Ss NIS v1 互換性 このバージョンの .Nm は .Tn NIS v1 クライアントに対してある程度サービス可能です。 .Bx Free の .Tn NIS 実装は .Tn NIS v2 プロトコルのみを使用しますが、 他の実装では古いシステムとのバックワードコンパチビリティのために v1 プロトコルもサポートしています。 そのようなシステムで提供されている .Xr ypbind 8 デーモンは、実際にはおそらく不要なのですが、 .Tn NIS v1 サーバにバインドしようとします。 (そして、v2 サーバから返答を受け取ったとしてもサーバを探すために ブロードキャストし続けます。) このバージョンの .Nm では通常のクライアントの呼び出しはサポートされていますが、 v1 マップ転送要求は扱いません。 すなわち、古い .Tn NIS サーバとともに、マスタもしくはスレーブとして使用することはできません。 好運なことに、今日ではこの様なサーバは存在しないでしょう。 .Ss NIS クライアントでもある NIS サーバ 複数のサーバが存在するドメインにおいて、 サーバが .Tn NIS クライアントでもある場合には、 .Nm の実行に注意を払う必要があります。 バインド要求をブロードキャストさせてサーバ間でバインドさせるのではなく、 サーバを自分自身にバインドすることは一般的には良い考えです。 あるサーバがダウンし、他のサーバがそのサーバに依存していた場合には、 奇妙な障害が生じ得ます。(結果として全てのクライアントがタイムアウトし、 他のサーバにバインドしようとしますが、遅延は無視できず、 サーバはまだ互いにバインドしようとしますので、障害は残ります。) .Pp 特定のサーバに強制的にバインドさせるための詳細は .Xr ypbind 8 マニュアルページを参照して下さい。 .Sh オプション 以下のオプションが .Nm にてサポートされています。 .Bl -tag -width flag .It Fl n このオプションは .Nm が .Pa hosts.byname と .Pa hosts.byaddress のマップに対する yp_match 要求を扱う方法を操作します。 デフォルトでは、 .Nm が与えられたホストのエントリをホストマップ中に見付けられなかった場合には、 エラーを返しそれ以上の処理を行いません。 .Fl n フラグを指定すると、 .Nm はさらなる処理を行います。 すぐにあきらめずに、ホスト名もしくはアドレスを DNS ネームサーバに問い合わせて 解決しようとします。 問い合わせが成功すると、 .Nm は偽のデータベースレコードを作成し、それをクライアントに返しますので、 クライアントの yp_match 要求は成功したように見えます。 .Pp この仕様は SunOS 4.1.x との互換性のために用意されています。 そのシステムの標準 C ライブラリではリゾルバが腐っており、 ホスト名とアドレスの解決のために .Tn NIS に依存していました。 .Bx Free のリゾルバは DNS への問い合わせを直接行えますので、 .Bx Free である .Tn NIS クライアントに対してのみサービスする場合は、 このオプションを有効にする必要はありません。 .It Fl d サーバをデバッグモードで実行します。 通常 .Nm は異常時のエラー (アクセス違反、ファイルアクセス失敗) のみを .Xr syslog 3 機能を使用して報告します。 デバッグモードでは、サーバは自身をバックグラウンドでは実行せず、 リクエストを受けるたびに、 状態を表す追加のメッセージを標準エラー出力に表示します。 また、デバッグモードで実行している間は、通常とは異なり、 yp_all 要求処理時や DNS 検索処理時に .Nm ypserv サブプロセスを生成しません。 (これらの処理は多くの場合完了までに時間がかかるために サブプロセスにより処理され、 親であるサーバは別の要求を処理できるようになっています。) これによりデバッグツールによるサーバのトレースが容易になります。 .It Fl p Ar path 通常 .Nm は .Tn NIS マップは .Pa /var/yp 以下にあるものと想定します。 .Fl p フラグを使用し、別の .Tn NIS ルートパスを指定できますので、 システム管理者はファイルシステム中の別の場所にマップファイルを移動できます。 .El .Sh 関連ファイル .Bl -tag -width Pa -compact .It Pa /var/yp/[domainname]/[maps] .Tn NIS マップ .It Pa /etc/host.conf -リゾルバ構成ファイル +リゾルバ設定ファイル .It Pa /var/yp/securenets ホストアクセス制御ファイル .El .Sh 関連項目 .Xr ypcat 1 , .Xr db 3 , .Xr yp 4 , .Xr ypbind 8 , .Xr yppasswdd 8 , .Xr yppush 8 , .Xr ypxfr 8 .Sh 作者 .An Bill Paul Aq wpaul@ctr.columbia.edu .Sh 歴史 このバージョンの .Nm が最初に登場したのは .Fx 2.2 です。 diff --git a/ja/man/man8/ypxfr.8 b/ja/man/man8/ypxfr.8 index 0ff35e8943..6ab8ed8f0a 100644 --- a/ja/man/man8/ypxfr.8 +++ b/ja/man/man8/ypxfr.8 @@ -1,295 +1,295 @@ .\" Copyright (c) 1995 .\" Bill Paul . 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 Bill Paul. .\" 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 Bill Paul 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 Bill Paul 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. .\" .\" %Id: ypxfr.8,v 1.3.2.1 1997/12/19 07:35:33 charnier Exp % .\" jpman %Id: ypxfr.8,v 1.3 1997/09/09 04:09:30 yugawa Stab % .\" .Dd February 5, 1995 .Dt YPXFR 8 .Os .Sh 名称 .Nm ypxfr .Nd "リモートのサーバからローカルホストへ NIS データベースを転送する" .Sh 書式 .Nm /usr/libexec/ypxfr .Op Fl f .Op Fl c .Op Fl d Ar target domain .Op Fl h Ar source host .Op Fl s Ar source domain .Op Fl p Ar path .Op Fl C Ar taskid program-number ipaddr port .Ar mapname .Sh 解説 .Nm ypxfr は .Tn NIS データベース(または .Pa マップ ) を .Tn NIS サービスを使用し、ある .Tn NIS サーバから別のサーバにコピーします。 .Bx Free では一般に、 .Nm は .Xr yppush 8 からマップ転送要求を受け取った .Xr ypserv 8 から 起動されます。 基本的に、 .Nm を使用するのは、単一ドメイン内で複数の .Tn NIS サーバが使用される環境です。 一台のサーバ( .Tn NIS マスタ)は全ての .Tn NIS マップの基準となるコピーを管理します。 その他のサーバ( .Tn NIS スレーブ)は、マップに更新があったとき (例えば、ユーザが .Xr yppasswd 1 を用いてパスワードを更新したとき)に、 新しいバージョンのマップをマスタからコピーします。 .Pp 実行時、 .Nm は一時データベースファイルを .Pa /var/yp/[domainmame] に作成し、 指定された .Ar source host により提供される .Ar mapname の内容で埋めます。 マップ全体の転送が完了すると、 .Nm は .Ar mapname の古いコピーを消去し、代わりに一時ファイルを置きます。 転送完了時に、 .Nm は `現在のマップのクリア' 要求を、 ローカルの .Xr ypserv 8 プロセス宛に送信し、 古いマップを参照している場合にはクリアさせようとします。 .Pp .Nm -が作成した全てのファイルがオーナのみ読み書き可能なのは、 +が作成した全てのファイルが所有者のみ読み書き可能なのは、 セキュリティのためである事に注意して下さい。 .Tn NIS マップとそれを格納するディレクトリは通常 root が所有しますので、 非特権ユーザによる権限の無い変更を防ぎます。 .Pp 全ての .Tn NIS サーバ間で一貫性を保持するために .Nm を .Xr cron 8 ジョブとして定期的に実行する事が出来ます。 ほとんど変更されないマップは 1 日 1 度 (システム使用率が一番低い深夜が望ましいでしょう)更新すれば良いですが、 頻繁に変更されるマップ(例えば .Pa passwd.byname や .Pa passwd.byuid ) はおそらく 1 時間に 1 度更新すべきでしょう。 .Xr cron 8 を使用し NIS マップを自動的に更新する事は厳密には必須ではありません。 なぜなら、全ての更新は .Tn NIS マスタサーバ上で .Pa /var/yp/Makefile が実行された時に .Xr yppush 8 にて伝搬されているはずだからです。 ただし、通信不能となって .Tn NIS サーバ間で同期が取れなくなる事があるような 大きなネットワークでは、良い実現方式です。 .Pp .Nm が制御端末無しで起動された場合、例えば .Xr ypserv 8 内部から起動された場合には、 .Xr syslog 3 機構を使用して、全ての出力のログを取ります。 .Sh 注釈 .Bx Free バージョンの .Nm は .Bx Free の .Xr rpc.ypxfrd 8 サーバと連動する特別なマップ転送プロトコルをサポートします。 このプロトコルは、 生のマップデータベースファイルを .Tn NIS マスタサーバから転送する事を許しますので、 特に大きな .Tn NIS マップの場合は、標準の転送方法よりも数倍高速です。 .Nm コマンドは .Tn NIS マスタサーバ上に .Xr rpc.ypxfrd 8 が登録されているかをチェックし、存在する場合にはこれを使用しようとします。 存在しない場合には、標準プロトコルを使用し、 .Xr ypserv 8 からマップの内容をコピーし、新たなマップを作成します。 .Pp 概念的には .Bx Free の ypxfrd プロトコルは SunOS の ypxfrd プロトコルと同じですが、 .Bx Free のプロトコルは SunOS のプロトコルとは互換ではないため、 Sun の ypxfrd サーバとともに使用する事は出来ない事に注意して下さい。 FreeBSD のスレーブは .Bx 非 Free の .Tn NIS サーバから マップを転送する事が出来ますが、 高速プロトコルを使用できるのは、マスタサーバも .Bx Free の場合だけです。 .Sh オプション .Nm がサポートするオプションは以下の通りです: .Bl -tag -width indent .It Fl f マップ転送を強制します。通常、 .Tn NIS マスタ上のコピーがローカルホスト上にあるコピーよりも新しくない場合には、 .Nm はマップを転送しません: .Fl f フラグにより、サーバ上のバージョンが新しいか否かにかにかかわらず、 転送します。 .It Fl c ローカルホスト上で実行されている .Xr ypserv 8 プロセス宛に `現在のマップのクリア' 要求を送信しません。 このフラグは通常 .Xr ypserv 8 を実行していないマシン上で .Nm を手動で起動する時に使用します。 このフラグを指定しないと、ローカルの .Tn NIS サーバと通信できないために、 .Nm は転送を中止します。 .It Fl d Ar target domain 現在の .Tn NIS ドメインではない別のドメイン名を指定します。 .It Fl h Ar source host .Tn NIS マップのコピー元のホスト名を指定します。 このオプションにより .Nm が .Tn NIS マスタサーバからのみマップをコピーする事を保証できます。 .It Fl s Ar source domain マップの転送元のドメインを指定します。 これは 2 つの .Tn NIS ドメイン間で転送を行う時に有用です。 .It Fl p Ar path .Tn NIS マップを保持する最上位ディレクトリを指定します。 デフォルトではこのパスは .Pa /var/yp です。 .Fl p フラグにより別のパスを指定し、 .Tn NIS マップを別の場所に格納する場合に対処できます。 .Tn NIS サーバ .Xr ypserv 8 が別のパスを使用するように指示された場合にも、このフラグを .Nm に渡します。 .It Fl C Ar taskid program-number ipaddr port .Xr yppush 8 によるマップ転送要求への応答として、 .Nm が .Xr ypserv 8 から起動された場合にのみ、このオプションは使用されます。 この場合、 .Nm は .Xr yppush 8 を `コールバック' して通信する必要がありますので、 .Xr yppush 8 は IP アドレス .Ar ipaddr 、ポート番号 .Ar port 、登録プログラム番号(registered program number) .Ar program-number 、トランザクション ID .Ar taskid を渡し、 マスタサーバ上で待っている .Xr yppush 8 プロセスと通信出来るようにします。 .It Ar mapname 転送するマップを指定します。 .El .Sh 関連ファイル .Bl -tag -width Pa -compact .It Pa /var/yp/[domainname]/[maps] ある .Tn NIS ドメインの .Tn NIS マップ。 .El .Sh 関連項目 .Xr yp 4 , .Xr ypserv 8 , .Xr yppush 8 .Sh 作者 .An Bill Paul Aq wpaul@ctr.columbia.edu diff --git a/ja_JP.eucJP/man/man1/a2p.1 b/ja_JP.eucJP/man/man1/a2p.1 index 47c2e7b869..6b3481ac8a 100644 --- a/ja_JP.eucJP/man/man1/a2p.1 +++ b/ja_JP.eucJP/man/man1/a2p.1 @@ -1,218 +1,218 @@ .rn '' }` .\" jpman %Id: a2p.1,v 1.3 1997/07/22 14:10:51 konuma Stab % ''' %Header: /home/ncvs/src/gnu/usr.bin/perl/x2p/a2p.1,v 1.1.1.1 1994/09/10 06:27:55 gclarkii Exp % ''' ''' %Log: a2p.1,v % ''' Revision 1.1.1.1 1994/09/10 06:27:55 gclarkii ''' Initial import of Perl 4.046 bmaked ''' ''' .\" Revision 1.1.1.1 1993/08/23 21:30:10 nate .\" PERL! .\" ''' Revision 4.0 91/03/20 01:57:11 lwall ''' 4.0 baseline. ''' ''' Revision 3.0 89/10/18 15:34:22 lwall ''' 3.0 baseline ''' ''' Revision 2.0.1.1 88/07/11 23:16:25 root ''' patch2: changes related to 1985 awk ''' ''' Revision 2.0 88/06/05 00:15:36 root ''' Baseline version 2.0. ''' ''' .de Sh .br .ne 5 .PP \fB\\$1\fR .PP .. .de Sp .if t .sp .5v .if n .sp .. .de Ip .br .ie \\n.$>=3 .ne \\$3 .el .ne 3 .IP "\\$1" \\$2 .. ''' ''' Set up \*(-- to give an unbreakable dash; ''' string Tr holds user defined translation string. ''' Bell System Logo is used as a dummy character. ''' .tr \(*W-|\(bv\*(Tr .ie n \{\ .ds -- \(*W- .if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch .if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch .ds L" "" .ds R" "" .ds L' ' .ds R' ' 'br\} .el\{\ .ds -- \(em\| .tr \*(Tr .ds L" `` .ds R" '' .ds L' ` .ds R' ' 'br\} .TH A2P 1 LOCAL .SH 名称 a2p - Awk から Perl へのトランスレータ .SH 書式 .B a2p [options] filename .SH 解説 .I a2p はコマンドラインで指定された (あるいは標準入力からの) awk スクリプトを とり、同等の働きをする .I perl スクリプトを標準出力に出力します。 .Sh オプション オプションには以下のものがあります: .TP 5 .B \-D デバッグフラグをセットします。 .TP 5 .B \-F awk スクリプトが常にこの -F スイッチ付きで実行されることを指定します。 .TP 5 .B \-n 入力を分割して配列に格納する必要がない場合、 入力フィールドの名前を指定します。 例えば、パスワードファイルを処理する awk スクリプトを変換する場合、 このように指定します: .sp a2p -7 -nlogin.password.uid.gid.gcos.shell.home .sp フィールド名の区切りには任意のデリミタが使用できます。 .TP 5 .B \- a2p は、入力が常に指定した数のフィールドから成っていることを仮定します。 .Sh 考察 a2p は人間と同じぐらいうまい変換はできませんが、 大抵の場合はそこそこうまく処理します。 場合によっては、 生成された perl スクリプトを吟味し、少し手を加えたいと思うことも あるでしょう。 以下にいくつかの場合を、順不同で説明します。 .PP 文字列を表す式のまわりに int() を付け、 数値として解釈されるようにする awk イディオムが あります (その引数は常に整数型なのですが)。 これは一般に perl では不要ですが、 a2p は引数が常に整数となるかどうか判断できないので、 このイディオムはそのまま残します。 ユーザはこれを取り除くことができます。 .PP perl では数値比較と文字列比較は区別されています。 awk ではどちらにも同じ演算子が用いられ、 実行時にどちらの比較を行うかが決定されます。 この点で a2p は awk エミュレーションを完全には行おうとしません。 その代わり、a2p はどちらの種類の比較を行おうとしているのか推測します。 これはほとんどの場合正しいものですが、だまされることもあります。 推測を行った部分には \*(L"#???\*(R" というコメントが付与されますので、 それらの部分を調べ、中身をチェックすべきです。 ユーザは、少なくとも一度は \-w スイッチ付きで perl を走らせるとよいでしょう。 こうすると、eq を使うべきところで == を使っている場合に警告を受けます。 .PP 存在しない配列要素でも、単にそれを参照しただけで存在するようになるか、 という点で、perl は awk の動作をエミュレートしようとしません。 何らかの理由で、このメカニズムに依存して後続の for...in のために ヌルエントリを作成しようとする場合、 perl ではヌルエントリは作成されません。 .PP a2p が、(Fld1, Fld2, Fld3...) のような、変数のリストへの代入を行う行を 分割する場合、 上に述べた \-n オプションを用いて再度 a2p を走らせた方がいいかもしれません。 これにより、スクリプト内のフィールドに名前を付けます。 そうではなく、分割して配列に格納する場合、 その分割はおそらくどこかでフィールド数を参照しているでしょう。 .PP awk の exit ステートメントは必ずしも exit せず、 END ブロックがあればそこへ処理が移ります。 ある条件下で END ブロックをバイパスするような細工を END ブロックに 仕掛けてある awk スクリプトは、 END ブロック内の条件文を取り除き、perl スクリプトから直接 exit するように 修正することで簡単化できます。 .PP -perl には 2 種類の配列、すなわち数値でインデクスされる配列と連想配列とが +perl には 2 種類の配列、すなわち数値でインデックスされる配列と連想配列とが あります。 通常、awk の配列は連想配列に変換されますが、 -もしそのインデクスが常に数値であるとわかったら、 +もしそのインデックスが常に数値であるとわかったら、 配列添字の {...} を [...] に変更できます。 連想配列に対する繰り返し処理は関数 keys() を用いて行われますが、 数値配列に対してはそうではありません。 問題となっている配列の繰り返し操作を行うあらゆるループ構造を 修正する必要があるかもしれません。 .PP awk は起動時、OFMT の値が %.6g であると仮定しています。 perl でこれに相当する変数 $# は、初期値として %.20g を持っています。 OFMT のデフォルト値を用いる場合は $# を明示的に設定して下さい。 .PP awk スクリプトでは、行の先頭付近で行分割 (split) 操作が暗黙的に 繰り返されます。 場合によっては、全体レコードをテストする何らかの条件文より下に これを移動させることができます。 そうすることで無用な行分割処理を避けることができます。 .PP 美的理由から配列の基底 $[ を元々の 1 から perl でのデフォルトである 0 に 変更したいこともあるでしょう。 しかし、全ての配列添字式だけでなく、全ての substr() および index() 関数も 適合するように修正しなければならないことを忘れないで下さい。 .PP "# awk は馬鹿だからこうやって工夫してます" といった気の利いたコメントは、 そのまま修正されずに渡されます。 .PP awk スクリプトはしばしばシェルスクリプトに埋め込まれ、 awk の入出力がパイプで接続されます。 こういったシェルスクリプトのラッパーも perl スクリプトに取り込める場合が かなりあります。 perl なら入出力パイプを開始でき、 awk が自分ではできなかった他の処理も行うことができるからです。 .PP 特殊変数 RSTART および RLENGTH を参照するスクリプトは、 これらの変数を定義するパターン照合のスコープの中で参照されている限り、 変数 $`, $&, $' を参照することで簡単化できる場合がかなりあります。 .PP 生成された perl スクリプトには、 getline および print に関する awk の意味規則に対処するための サブルーチンが定義されている場合があります。 a2p は通常、効率よりも正確さを選ぶからです。 ほとんどの場合、ご丁寧に意味規則に対処してくれるサブルーチンを捨てて、 もっと効率的なコードに書き換えることができます。 .PP 効率を上げるために、 サブルーチンで最後に実行される return ステートメントから キーワード return を取り除くことができる場合があります。 a2p は最も一般的な場合は見つけますが、 稀にある埋め込まれたブロックを解析したりしません。 .PP ARGV[0] は $ARGV0 に変換されますが、ARGV[n] は $ARGV[$n] に変換されます。 ARGV[0] を含めて繰り返し処理を行おうとするループは、 うまくいきません。 .SH 環境変数 a2p は環境変数を参照しません。 .SH 作者 Larry Wall .SH 関連ファイル .SH 関連項目 perl perl コンパイラ/インタプリタ .br s2p sed から perl へのトランスレータ .SH 診断 .SH バグ 実行時にオペランドを調べることで、文字列演算か数値演算かの選択で awk の エミュレーションを行うことは可能でしょうが、 プログラムは肥大し、非効率的になるでしょう。 なお、a2p の推測はほとんど常に正しく行われます。 .PP awk 文法ツリー用の領域は現在のところ静的に確保しており、 不足する可能性があります。 .rn }` '' diff --git a/ja_JP.eucJP/man/man1/at.1 b/ja_JP.eucJP/man/man1/at.1 index c88338bf3f..5f89bbe4ce 100644 --- a/ja_JP.eucJP/man/man1/at.1 +++ b/ja_JP.eucJP/man/man1/at.1 @@ -1,262 +1,262 @@ .\" %Id: at.man,v 1.4 1995/10/05 06:18:48 joerg Exp % .\" jpman %Id: at.1,v 1.3 1997/08/05 18:36:01 george Stab % .Dd April 12, 1995 .Dt "AT" 1 .Os "FreeBSD 2.1" .Sh 名称 .Nm at, batch, atq, atrm .Nd あとでジョブを実行させるためのキューの設定、確認、ジョブの削除をおこなう .Sh 書式 .Nm at .Op Fl V .Op Fl q Ar queue .Op Fl f Ar file .Op Fl mldbv .Ar time .Pp .Nm at .Op Fl V .Fl c Ar job Op Ar job ... .Pp .Nm atq .Op Fl V .Op Fl q Ar queue .Op Fl v .Pp .Nm atrm .Op Fl V .Ar job .Op Ar job ... .Pp .Nm batch .Op Fl V .Op Fl q Ar queue .Op Fl f Ar file .Op Fl mv .Op Ar time .Sh 解説 .Nm at と .Nm batch ユーティリティは、標準入力もしくは指定したファイルからコマンドを読み 込み、あとで .Xr sh 1 を使って実行します。 .Pp コマンドの各機能を以下に示します: .Bl -tag -width indent .It Nm at コマンドを、引数で指定した時間に実行します。 .It Nm atq ユーザの、実行待ち状態のジョブのリストを表示します。 スーパーユーザが実行した場合は全員のジョブが表示されます。 .It Nm atrm 指定したジョブを削除します。 .It Nm batch ロードアベレージが特定の値以下になったときにジョブを実行 します。この値は、デフォルトでは 1.5 です。 この値は .Nm atrun によって指定可能です。 .El .Pp .Nm at では、様々な形式の時間を .Ar time として受け付けます。 時刻は .Ar HHMM もしくは .Ar HH:MM の形で指定します (もしこの時刻が過ぎていた場合は、次の日のその時刻に設定されます)。また、 .Nm midnight , .Nm noon , .Nm teatime (4pm) も受け付けますし、時刻の後ろに .Nm am もしくは .Nm pm をつけた時間も受け付けます。日付は、 .Ar \%month-name day およびオプションの .Ar year の形で受け付けます。 .Ar MMDDYY 、 .Ar MM/DD/YY 、 .Ar DD.MM.YY も受け付けます。 日付の指定は時刻の指定の後に記述します。 .Op Nm now .Nm + Ar count \%time-units のような形式で時間を指定することも可能です。time-units は時間の単位で、 .Nm minutes , .Nm hours , .Nm days , .Nm weeks のいずれかです。時間のサフィックスの .Nm today はジョブを今日に設定すること、 .Nm tommorow はジョブを明日に設定することを意味します。 たとえば、今から 3 日後の午後 4 時にジョブを走らせるためには .Nm 4PM + 3 days と指定します。7 月 31 日の午前 10 時の場合は .Nm 10am Jul 31 と指定します。明日の午前 1 時は .Nm 1am tomorrow です。 .Pp .Nm at と .Nm batch では、標準入力または .Fl f オプションで指定したファイルからコマンドを読み込み、実行します。 ワーキングディレクトリと環境変数 ( .Ev TERM , .Ev TERMCAP , .Ev DISPLAY および .Nm _ は除く)、umask は実行時のものが保持されます。 .Nm at もしくは .Nm batch が .Xr su 1 で起動されたシェルから実行された場合は、カレントの userid を保持します。 出力結果が得られた場合は、 その標準出力と標準エラー出力がメールで送られます。メールは .Xr sendmail 8 を使って送られます。もし .Nm at が .Xr su 1 -で起動されたシェルから実行された場合は、そのログインシェルのオーナが +で起動されたシェルから実行された場合は、そのログインシェルの所有者が メールを受けることになります。 .Pp -スーパーユーザはどんな場合でもこれらのコマンドを実行できます。 +スーパユーザはどんな場合でもこれらのコマンドを実行できます。 その他のユーザは .Pa /var/at/at.allow と .Pa /var/at/at.deny のファイルによって実行できるか決められます。 .Pp もし .Pa /var/at/at.allow が存在するならば、その中にユーザ名を記述されたユーザだけが .Nm at の実行を許可されます。 .Pp もし .Pa /var/at/at.allow が存在しなかったら、 .Pa /var/at/at.deny がチェックされ、その中にユーザ名が記述されていないすべてのユーザが .Nm at の実行を許可されます。 .Pp もし両方ともなければ、スーパーユーザだけが .Nm at を実行できます。 これがデフォルトの設定です。 .Pp 空の .Pa /var/at/at.deny は全てのユーザがこれらのコマンドを使用できることを意味します。 .Sh オプション オプションとしては以下のものがあります: .Bl -tag -width indent .It Fl V 標準エラー出力にバージョン番号を出力します。 .It Fl q Ar queue 指定したキューを用います。キューの名称は単一の文字からなります。 有効なキューの名前は .Nm a から .Nm z と .Nm A から .Nm Z です。 .Nm at のデフォルトのキューは .Nm c で、 .Nm batch のデフォルトのキューは .Nm E です。 キューの文字が後の方であればあるほど nice 値が上がります。 もし大文字のキューがジョブに対して指定されたならば、時間を指定して batch が実行されたものとして扱われます。 もし .Nm atq でキューが指定されたときは、そのキューだけの実行待ちのジョブを表示します。 .It Fl m 出力がなかった場合でも、ジョブの完了時にメールをユーザに送ります。 .It Fl f Ar file 標準入力のかわりにファイルからジョブを読み込みます。 .It Fl l .Nm atq のエイリアス。 .It Fl d .Nm atrm のエイリアス。 .It Fl b .Nm batch のエイリアス。 .It Fl v atq の場合は、キューの中の実行されたがまだ削除されていないジョブを 表示します。さもなければジョブが実行される時間を表示します。 .It Fl c コマンドラインにリストされたジョブを標準出力に出力します。 .Sh 関連ファイル .Bl -tag -width /var/at/jobs/.lockfile -compact .It Pa /var/at/jobs ジョブファイルを保管しておくディレクトリ .It Pa /var/at/spool 出力ファイルを保管しておくディレクトリ .It Pa /var/run/utmp ログインレコード .It Pa /var/at/at.allow 許可属性の設定 .It Pa /var/at/at.deny 不許可属性の設定 .It Pa /var/at/jobs/.lockfile ジョブ作成のロックファイル .El .Sh 関連項目 .Xr cron 8 , .Xr nice 1 , .Xr umask 2 , .Xr sh 1 , .Xr sendmail 8 , .Xr atrun 8 .Sh バグ .Pa /var/run/utmp が利用できないか不正であった場合、もしくは .Nm at が実行された時にユーザがログインしていない場合、 メールは環境変数 .Nm LOGNAME で表される userid に出されます。 もし定義されていないか空ならばカレントの userid になります。 .Pp ユーザ同士でリソースの競合がある場合は現実装の .Nm at と .Nm batch は適当ではありません。 もしあなたのサイトがこのような場合にあてはまるのなら、 .Nm nqs のようなバッチシステムを検討してください。 .Sh 作者 at のほとんどの部分は Thomas Koenig, ig25@rz.uni-karlsruhe.de によって作成されました。 時間の構文解析部分は David Parsons, orc@pell.chi.il.us によって作成されました。 diff --git a/ja_JP.eucJP/man/man1/bison.1 b/ja_JP.eucJP/man/man1/bison.1 index 7716ef6dfb..a91b57fa88 100644 --- a/ja_JP.eucJP/man/man1/bison.1 +++ b/ja_JP.eucJP/man/man1/bison.1 @@ -1,354 +1,354 @@ .TH BISON 1 local .\" jpman %Id: bison.1,v 1.3 1997/08/20 12:18:34 horikawa Stab % .SH 名称 bison \- GNU プロジェクト パーサ・ジェネレータ (yacc 置き換え) .SH 書式 .B bison [ .BI \-b " file-prefix" ] [ .BI \-\-file-prefix= file-prefix ] [ .B \-d ] [ .B \-\-defines ] [ .B \-k ] [ .B \-\-token-table ] [ .B \-l ] [ .B \-\-no-lines ] [ .B \-n ] [ .B \-\-no-parser ] [ .BI \-o " outfile" ] [ .BI \-\-output-file= outfile ] [ .BI \-p " prefix" ] [ .BI \-\-name-prefix= prefix ] [ .B \-r ] [ .B \-\-raw ] [ .B \-t ] [ .B \-\-debug ] [ .B \-v ] [ .B \-\-verbose ] [ .B \-V ] [ .B \-\-version ] [ .B \-y ] [ .B \-\-yacc ] [ .B \-h ] [ .B \-\-help ] [ .B \-\-fixed-output-files ] file .SH 解説 .I bison は .IR yacc (1) 風のパーサ・ジェネレータです。 .IR yacc 用に作成された入力ファイルについて上位互換になっているはずです。 .PP 入力ファイルは .I yacc の流儀に従い、末尾は .BR .y で終わるべきです。 .IR yacc と異なり、生成されるファイルの名前は固定ではなく、 -入力ファイルのプレフィクスが用いられます。 +入力ファイルのプレフィックスが用いられます。 例えば、 .B parse.y という名前の文法記述ファイルからは、 .IR yacc のような .BR y.tab.c ではなく、 .BR parse.tab.c というファイル名のパーサが生成されます。 .PP ここに示す .I bison のオプション説明は、正式なドキュメントである .B bison.texinfo マニュアルの .B Invocation ノードからの抜粋です。 .PP .I bison は、従来の単一文字オプションと覚えやすい長形式オプション名の 両方をサポートしています。 長形式のオプション名は .BR \- ではなく .B \-\- で指定します。 一意に決められる限り、オプション名は略して記述して構いません。 .BR \-\-file-prefix のように引数を取る長形式オプションの場合、 オプション名とその引数とを .BR = で連結します。 .SS オプション .TP .BI \-b " file-prefix" .br .ns .TP .BI \-\-file-prefix= file-prefix .I bison -の全ての出力ファイルで用いるプレフィクスを指定します。 +の全ての出力ファイルで用いるプレフィックスを指定します。 出力ファイルの名前は、あたかも入力ファイルが \fIfile-prefix\fB.c\fR という名前であったかのように決められます。 .TP .B \-d .br .ns .TP .B \-\-defines 追加の出力ファイルを書き出します。 このファイルには、 少数の .B extern 変数宣言に加え、 文法記述で定義されたトークンの型名や セマンティックバリューの型 .BR YYSTYPE を定義するマクロが含まれます。 .sp パーサの出力ファイルが \fIname\fB.c\fR ならば、この追加出力ファイルの名前は \fIname\fB.h\fR となります。 .sp .B yylex の定義を別のソースファイルに記述したい場合は、 この出力ファイルが必ず必要になります。 なぜなら、 .B yylex はトークンの型コードや変数 .BR yylval を参照可能である必要があるからです。 .TP .B \-r .br .ns .TP .B \-\-raw \fIname\fB.h\fR ファイルのトークン番号は通常、Yacc 互換の置き換えです。 このオプションを指定すると、 それに代わって Bison のトークン番号が出力されます。 (Yacc では、単一文字トークンを除き、トークン番号は 257 から始まります。 Bison は全てのトークンについて、3 から始まる連番を割り当てます。) .TP .B \-k .br .ns .TP .B \-\-token-table 出力ファイル \fIname\fB.tab.c\fR が トークン名のリストをその番号順に含むようにします。 このリストは配列 .IR yytname で定義されます。また、 .IR YYNTOKENS , .IR YYNNTS , .IR YYNRULES , .IR YYNSTATES がそれぞれ #define されます。 .TP .B \-l .br .ns .TP .B \-\-no-lines パーサファイルにプリプロセッサコマンド .B #line を入れません。 通常 .I bison はパーサファイルに .B #line を挿入し、C コンパイラおよびデバッガがエラーとソースファイル、 つまり文法ファイルとを結びつけられるようにします。 このオプションを指定すると、エラーはパーサファイルと結びつけられ、 自分の責任で独立したソースファイルとして取り扱うようになります。 .TP .B \-n .br .ns .TP .B \-\-no-parser パーサコードを出力に生成せず、宣言のみ生成します。 生成された \fIname\fB.tab.c\fR ファイルには 定数宣言のみ含まれます。 更に、変換した全てのアクションを含む switch 文本体 を含むファイル \fIname\fB.act\fR を生成します。 .TP .BI \-o " outfile" .br .ns .TP .BI \-\-output-file= outfile 出力するパーサファイルの名前を .I outfile とします。 .sp .B \-v オプションおよび .B \-d オプションのところで述べたように、 この他の出力ファイルの名前は .I outfile から作られます。 .TP .BI \-p " prefix" .br .ns .TP .BI \-\-name-prefix= prefix パーサで使われる外部シンボルの名前を変更し、 .BR yy ではなく .I prefix で始まるようにします。 名前を変更されるシンボルの正確なリストは以下の通り。 .BR yyparse , .BR yylex , .BR yyerror , .BR yylval , .BR yychar , .BR yydebug .sp 例えば .BR "\-p c" と指定すると、これらは .BR cparse , .BR clex 等という名前になります。 .TP .B \-t .br .ns .TP .B \-\-debug マクロ .B YYDEBUG の定義をパーサファイルに出力し、デバッグ機能がコンパイルされるようにします。 .TP .B \-v .br .ns .TP .B \-\-verbose 追加の出力ファイルを書き出します。 このファイルには、 パーサの状態と、その状態で各先読みトークンに対してどういう動作を行うか、 に関する詳細説明が含まれます。 .sp このファイルには、演算子の順位によって解決したものと 解決していないものを合わせた、 全ての競合についても記述されています。 .sp このファイルの名前は、パーサの出力ファイル名から .B .tab.c あるいは .B .c を取り除き、代わって .B .output を付けたものになります。 .sp 従って、入力ファイルが .BR foo.y ならパーサファイルはデフォルトでは .B foo.tab.c となり、その結果、詳細出力ファイル名は .BR foo.output となります。 .TP .B \-V .br .ns .TP .B \-\-version .I bison のバージョン番号を出力して終了します。 .TP .B \-h .br .ns .TP .B \-\-help .I bison のオプション要約を表示して終了します。 .TP .B \-y .br .ns .TP .B \-\-yacc .br .ns .TP .B \-\-fixed-output-files .BR "\-o y.tab.c" と等価です。つまり、パーサ出力ファイルは .BR y.tab.c となり、他の出力ファイルは .B y.output および .BR y.tab.h となります。 このオプションの目的は、 .IR yacc の出力ファイル名規則を真似ることです。 従って、次のシェルスクリプトは .IR yacc の代用となります: .sp .RS .ft B bison \-y $* .ft R .sp .RE .PP 以前のリリースとの互換性のため、 長形式オプションは `\-\-' のほか、`+' で始めることもできます。 ただしこれは POSIX.2 標準と非互換であるため、 将来 `+' サポートはなくなるでしょう。 .SH 関連ファイル /usr/share/misc/bison.simple 単純なパーサ .br /usr/share/misc/bison.hairy 複雑なパーサ .SH 関連項目 .IR yacc (1) .br .I bison のソースディストリビューションに .B bison.texinfo として含まれている .IR "Bison Reference Manual" .SH 診断 メッセージ自身で理解できるようになっています。 diff --git a/ja_JP.eucJP/man/man1/cksum.1 b/ja_JP.eucJP/man/man1/cksum.1 index 00e2c29558..8e0f6ac345 100644 --- a/ja_JP.eucJP/man/man1/cksum.1 +++ b/ja_JP.eucJP/man/man1/cksum.1 @@ -1,188 +1,188 @@ .\" Copyright (c) 1991, 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. .\" .\" @(#)cksum.1 8.2 (Berkeley) 4/28/95 .\" %Id: cksum.1,v 1.1.1.1.8.6 1997/11/09 16:11:13 obrien Exp % .\" jpman %Id: cksum.1,v 1.4 1997/08/10 18:27:42 horikawa Stab % .\" .Dd April 28, 1995 .Dt CKSUM 1 .Os BSD 4.4 .Sh 名称 .Nm cksum .Nd ファイルのチェックサムとブロックカウントを表示する .Sh 書式 .Oo .Fl o Ar \&1 Xo .No \&| .Ar \&2 .No \&| .Ar \&3 .Xc .Oc .Op Ar file ... .Nm sum .Op Ar file ... .Sh 解説 .Nm cksum ユーティリティは、各入力ファイルに対して、 空白で区切られた 3 つのフィールドを標準出力に出力します。 これら 3 フィールドはそれぞれ、 チェックサム .Tn CRC 、ファイル中のオクテット数、そしてファイル名です。 ファイルが一つも指定されない場合は標準入力が用いられ、 ファイル名は表示されません。 .Pp .Nm sum ユーティリティは .Nm cksum ユーティリティと同じですが、 以降で解説するデフォルトで歴史的アルゴリズム 1 を使用する点が異なります。 互換性のためだけに提供されています。 .Pp オプションは以下の通りです: .Bl -tag -width indent .It Fl o デフォルトの(より優れた)アルゴリズムに代えて、 歴史的なアルゴリズムを用います。 .Pp アルゴリズム 1 は .Xr sum 1 のアルゴリズムとして歴史的な .Bx システムにおいて、また、 .Fl r オプション付きで用いる場合の .Xr sum アルゴリズムとして歴史的な .At V システムにおいて用いられてきたものです。 これは加算のたびに右ローテーションを行う 16 ビットチェックサムであり、 -オーバーフローは無視されます。 +算出あふれは無視されます。 .Pp アルゴリズム 2 はデフォルトの .Xr sum アルゴリズムとして歴史的な .At V システムで用いられてきたものです。 これは 32 ビットのチェックサムであり、以下のように定義されます: .Bd -unfilled -offset indent s = sum of all bytes; r = s % 2^16 + (s % 2^32) / 2^16; cksum = (r % 2^16) + r / 2^16; .Ed .Pp アルゴリズム 3 は一般に .Ql 32bit CRC アルゴリズムと呼ばれているものです。これは 32-bit チェックサムです。 .Pp アルゴリズム 1, 2 のいずれも、デフォルトアルゴリズムと同じフィールドを 標準出力に書き出します。 ただし、ファイルサイズはバイト単位ではなくブロック単位となります。 歴史的理由から、アルゴリズム 1 ではブロックサイズは 1024、 アルゴリズム 2 では 512 となっています。 ブロックに満たない部分は切り上げられます。 .El .Pp デフォルトで用いられる .Tn CRC は、 ネットワークの規格 .St -iso8802-3 における .Tn CRC エラーチェックに用いられる多項式に基づいています。 .Tn CRC チェックサムエンコーディングは、次の生成多項式で定義されます: .Pp .Bd -unfilled -offset indent G(x) = x^32 + x^26 + x^23 + x^22 + x^16 + x^12 + x^11 + x^10 + x^8 + x^7 + x^5 + x^4 + x^2 + x + 1 .Ed .Pp 数学的には、与えられたファイルに対応する .Tn CRC 値は次の手順で定義されます。 .Bd -filled -offset indent 評価される .Ar n ビットは、2 を法とする .Ar n Ns \-1 次多項式 M(x) の係数とみなされます。 これらの .Ar n ビットはファイルから得られますが、 ファイルの最初のオクテットの最上位ビットを最上位、 最後のオクテットの最下位ビットを最下位とします。 (必要なら)ゼロビットを埋めてオクテット単位に取りまとめ、 ファイルの長さをバイナリ値で表現した 1 個あるいは それ以上のオクテット(最下位オクテットが先)がそれに続きます。 この整数を表現可能な最小個数のオクテットが用いられます。 .Pp M(x) は x^32 倍(すなわち 32 ビットの左シフト)し、 2 を法として G(x) で割ります。 その結果 31 次以下の剰余 R(x) が得られます。 .Pp R(x) の係数は 32 ビットのビット列と見なされます。 .Pp そのビット列を反転した結果が CRC です。 .Ed .Pp .Nm cksum および .Nm sum ユーティリティは成功時には 0 を、エラー発生時には正の値を返します。 .Sh 関連項目 .Xr md5 1 .Rs デフォルトの計算方法は、次の .Tn ACM 論文で疑似コードを用いて記述されているものと等価です。 .Rs .%T "Computation of Cyclic Redundancy Checks Via Table Lookup" .%A Dilip V. Sarwate .%J "Communications of the \\*(tNACM\\*(sP" .%D "August 1988" .Re .Sh 規格 .Nm cksum ユーティリティは .St -p1003.2-92 を満していると考えられています。 .Sh 歴史 .Nm cksum ユーティリティは .Bx 4.4 から登場しました。 diff --git a/ja_JP.eucJP/man/man1/csh.1 b/ja_JP.eucJP/man/man1/csh.1 index 7db0b373dc..5a2ead2d67 100644 --- a/ja_JP.eucJP/man/man1/csh.1 +++ b/ja_JP.eucJP/man/man1/csh.1 @@ -1,2190 +1,2190 @@ .\" Copyright (c) 1980, 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. .\" .\" @(#)csh.1 8.2 (Berkeley) 1/21/94 .\" jpman %Id: csh.1,v 1.2 1997/04/08 00:35:51 h-nokubi Stab % .\" %Id: csh.1,v 1.5.2.1 1997/02/28 07:54:29 mpp Exp % .\" .\" Japanese translation for jpman-0.2 checked by jpman project 96.12.23 .\" .Dd January 21, 1994 .Dt CSH 1 .Os BSD 4 .Sh 名称 .Nm csh .Nd C 言語ライクな文法を持つシェル(コマンドインタプリタ) .Sh 書式 .Nm csh .Op Fl bcefimnstvVxX .Op arg ... .Nm csh .Op Fl l .Sh 解説 .Nm csh は、履歴(参照: .Nm ヒストリ置換 の項)、ジョブ制御(参照: .Nm ジョブ の項)、対話的なファイル名とユーザ名の補完(参照: .Nm ファイル名補完 の項)、C 言語ライクな文法を特徴とするコマンドインタプリタです。 対話的なログイン・シェル、また シェル・スクリプトのコマンド・プロセッサの両方の用途で使われます。 .Ss 引数リスト処理 シェルへの最初の引数(第 0 引数)が .Ql Fl \& で始まる場合、シェルはログイン・シェルとなります。 シェルを .Ql Fl l フラグを指定して起動することでもログイン・シェルにできます。 .Pp 残りのフラグは以下のように解釈されます: .Bl -tag -width 5n .It Fl b このフラグは、オプションの処理を強制的に中断させる場合に使用します。この フラグ以降の引数はすべて、オプションではない引数として処理されます。 これにより、シェル・スクリプトに混乱やごまかしを行わずにオプションを 渡すことが可能になります。 set-user ID スクリプトは本オプションなしでは実行できません。 .It Fl c コマンドを本フラグの次にくる 1 つの引数から読み込みます。 この引数は省略できません。残りの引数は .Ar argv に代入されます。 .It Fl e 起動したコマンドが異常終了したり、0 でない終了ステータスを返したときに、 ただちにシェルを終了します。 .It Fl f 起動したユーザのホーム・ディレクトリにある .Pa \&.cshrc を捜さず、また読み込まないため高速に起動します。 .It Fl i たとえ端末上で実行されていなくても、対話的に動作しプロンプトを表示します。 入力と出力が端末である場合、本オプションなしでもシェルは対話的に動作します。 .It Fl l ログイン・シェルとなります。( .Fl l が、指定された唯一のフラグの場合にのみ有効です。) .It Fl m シェルは、実効ユーザに属していなくても .Pa .cshrc をロードします。 .Xr su 1 は .Fl m をシェルに渡すことができます。 .It Fl n コマンドの解析は行いますが、実行しません。シェル・スクリプトの 文法検査に役立ちます。 .It Fl s 標準入力からコマンドを読み込みます。 .It Fl t 入力から1行だけ読み込み、それを実行します。改行の直前に .Ql \e を置くことで、次の行への継続を行うことができます。 .It Fl v .Ar verbose 変数を設定します。これにより、ヒストリ置換された状態のコマンド行を 表示するようになります。 .It Fl x .Ar echo 変数を設定します。これにより、実行直前に、実行するコマンドを 表示するようになります。 .It Fl V .Pa .cshrc を実行するより前に .Ar verbose 変数を設定します。 .It Fl X .Pa .cshrc を実行するより前に .Ar echo 変数を設定します。 .El .Pp .Fl X に対する .Fl x の関係は、ちょうど .Fl V に対する .Fl v の関係に相当します。 .Pp フラグ引数の処理のあと、もし引数が残っていて、かつ、 .Fl c 、 .Fl i 、 .Fl s 、 .Fl t のいずれのフラグも指定されていなければ、残っている最初の引数は コマンドファイル名であるとみなされます。シェルはこのファイルをオープンし、 `$0' による置換に備えてファイル名を保存します。多くのシステムは version 6 または version 7 の標準のシェルを使っており、また、それらの シェル・スクリプトは本シェルとは互換性がないので、 スクリプトの先頭の文字が `#' でない場合、 つまりスクリプトがコメントから始まらない場合、 本シェルはそれらの `標準' シェルを起動して実行します。 残りの引数は変数 .Ar argv に初期値として設定されます。 .Pp .Nm csh は、実行開始に際し、まず、ファイル .Pa /etc/csh.cshrc を読み込み実行します。ログイン・シェルであれば、さらに、ファイル .Pa \&/etc/csh.login を読み込み実行します。 次にシェルを起動したユーザの .Ar ホーム ・ディレクトリにあるファイル .Pa \&.cshrc を読み込み実行します。ログイン・シェルであるなら、 さらに、同じディレクトリのファイル .Pa \&.login を読み込み、実行します。 .Pa \&.login の通常の使い方としては、ユーザが CRT 画面の設定のために ``stty crt'' を実行したり、 .Xr tset 1 を実行したりするために用いられます。 .Pp 通常、シェルはプロンプト `% ' を表示し、端末からコマンドを読み込みます。 引数の処理やコマンド・スクリプトを含むファイルの処理については後述します。 .Pp シェルは以下の動作を繰り返します: 読み込んだ行を .Ar 単語 に分解します。この単語の列をコマンド履歴に格納し、解析します。 最後にその行の各コマンドを実行します。 .Pp ログイン・シェルが終了するとき、ユーザの .Ar ホーム ・ディレクトリのファイル .Pa .logout と .Pa /etc/csh.logout を読み込み実行します。 .Ss 字句構造 シェルは、読み込んだ行を空白とタブを区切りとして単語に分割します。ただし、 以下の例外があります。文字 `&' `\&|' `;' `<' `>' `(' `)' は独立した単語となります。`&&'、`\&|\&|'、`<<'、`>>' のように 2つ繰り返されている場合はペアで1単語を形成します。 これらのメタキャラクタは、直前に `\e' を置くことによって、単語の一部としたり、 特別な意味を無視させることができます。改行の直前に `\e' を置くと、 単一の空白と等価になります。 .Pp 対応したクォート記号 `'\|'、`\*(ga'、`"'、に狭まれた文字列は、単語の一部分となります。 このような文字列中のメタキャラクタやブランク、 タブによって単語が分割されることはありません。 これらのクォートの意味はあとで説明します。 `\'' または `"' の内側で改行文字の直前に `\e' を置くと、 改行文字そのものになります。 .Pp シェルの入力が端末からではない場合、 `#' 文字から改行まではコメントとして扱われます。 直前に `\e' を置くか `\`'、`\''、`"" でクォートすることにより、 この意味を抑制することができます。 .Ss コマンド 単純コマンドは単語の列であり、最初の単語が実行すべきコマンドを示します。 `\&|' 記号で区切られた、単純コマンドあるいは単純コマンドの列は パイプラインを形成します。パイプラインの各コマンドの出力は、次のコマンドの 入力に接続されます。パイプラインの列を `;' によって区切ることで逐次実行が 行えます。パイプラインの列に続けて `&' を置くと、そのパイプラインの終了を 待つことなく、次のパイプラインが実行されます。 .Pp 上記のいずれかを `('と`)' で囲むことにより、単純コマンドを形成することが できます (これはパイプライン等の構成要素として使えます)。 また、パイプラインを `\&|\&|' または `&&' で区切ることにより、C 言語のように、第2のパイプラインが第1のパイプラインが失敗あるいは 成功したときにのみ実行させることができます( .Em 式 の項参照)。 .Ss ジョブ シェルはパイプラインの各々に対し .Ar ジョブ を一つづつ関連付けます。シェルは、現在実行中のジョブの一覧表を保持しており、 これは、 .Ar jobs コマンドによって表示することができます。 ジョブには整数の番号が割り当てられます。ジョブが `&' を用いて非同期に 起動された場合、シェルは以下のような出力を行います: .Bd -filled -offset indent .Op 1 1234 .Ed .Pp これは、非同期に起動したジョブがジョブ番号 1 であり、プロセスID が 1234 である (トップレベルの) プロセスを 1 つ持っていることを示します。 .Pp もし、あるジョブを実行中に他のことをしたくなった場合、 .Nm ^Z キー (control-Z) を押すことにより実行中のジョブに STOP シグナルを 送信することができます。通常、シェルはそのジョブが停止した(Stopped)ことを 出力し、プロンプトを表示します。ここで、停止したジョブの状態を操作することが できます。つまり、 .Ar bg コマンドにより停止したプロセスを .Em バックグラウンド で走行させたり、他のコマンドを実行してから、停止していたジョブを .Ar fg コマンドにより .Em フォアグラウンド で再実行させることなどができます。 .Nm ^Z は即座に効力を発揮し、インタラプトと同様に、それまで待たされていた 出力とまだ読み込まれていない入力は捨てられます。 ほかに特殊キーとして .Nm ^Y があり、これを押すと、プログラムが .Xr read 2 によって読み込もうとした時点で STOP シグナルが送信されます。 これは、実行中のジョブに対していくつかの入力を先に入力しておき、 先行入力を読み終えた時点でジョブを停止させたいときに便利です。 .Pp バックグラウンドで実行しているジョブが端末からの入力を試みた場合、その ジョブは停止します。通常、バックグラウンドジョブが端末に出力することは 可能ですが、これは、コマンド ``stty tostop'' により禁止することができます。 もし、この tty オプションを指定したなら、バックグラウンドで実行している ジョブは、端末から入力を試みたときと同様に、端末に出力を試みたときに 停止します。 .Pp シェルでジョブを参照するにはいくつかの方法があります。文字 `%' は ジョブ名を表すのに用いられます。番号 1 のジョブを参照する場合は `%1' とします。 単にジョブ名を入力した場合、そのジョブはフォアグラウンドに移動されます。 すなわち`%1' は `fg %1' と等価で、番号 1 のジョブをフォアグラウンドで 実行させます。同様に `%1 &' は番号 1 のジョブをバックグラウンドで 走行させます。ジョブはそのジョブを起動したときにタイプされた文字列の 先頭部分によって参照することもできます。ただし、この先頭部分は あいまいでない必要があります。すなわち、`%ex' は、`ex' という文字列で 始まる名前のサスペンドされたジョブが一つしかない場合に限り、サスペンドされた .Xr ex 1 のジョブを再開します。文字列 .Ar string を含むジョブが一つしかない場合、`%?string' と入力することで、 それを指定することもできます。 .Pp シェルは現在のジョブと直前のジョブを覚えています。jobs コマンドの 出力では、`+' 記号が付加されているのが現在のジョブ、`\-' 記号が 付加されているのが直前のジョブです。`%+' は現在のジョブ、`%\-' は 直前のジョブの省略形です。後述する .Ar ヒストリ の文法から類推される記法として、`%%' があります。 これもまた現在のジョブの省略形です。 .Pp ジョブ制御機構を用いるには、 .Xr stty 1 のオプション .Ic new を設定しておく必要があります。ジョブ制御機構は、 .Em 新型 の端末ドライバの実装の上に構築されているからです。 新型の端末ドライバにより、ジョブを停止させるためのシグナルを キーボードから入力できるわけです。 新型の端末ドライバのオプション設定については stty(1) を参照してください。 .Ss 状態通知 シェルは、プロセスが状態の変化を起こすと、すぐにそれを検知します。通常、 プロンプトが表示される直前にのみ、あるジョブが停止し、それ以上処理が 進まなくなったことを通知します。これは、ユーザの仕事を邪魔しないように するためです。 しかしながら、シェル変数 .Ar notify をセットすることにより、シェルにバックグラウンド・ジョブの状態が 変化したことをただちに通知させることができます。 また、シェルコマンド .Ar notify により、特定のジョブの状態の変化をただちに通知させる ようにマークすることもできます。引数なしの .Ar notify は現在のプロセスに対してマークをつけます。 バックグラウンド・ジョブの開始直後に単に `notify' と打つと そのジョブをマークします。 .Pp 停止したジョブがある状態でシェルを終了しようとすると、`You have stopped jobs.' という警告を受けます。このとき、 .Ar jobs コマンドによりどのジョブが停止中であるのかを確認することができます。 警告を受けた直後に .Ar jobs コマンドで確認した場合と、 警告を受けた直後にもう一度シェルを終了させようとした場合には、 シェルは2度目の警告を行わず、停止中のジョブは終了させてから シェルを終了します。 .Ss ファイル名補完 シェル変数 .Ar filec がセットされてファイル名補完機能が有効になっている場合、 ( .Ic set の項参照) .Nm csh はファイル名やユーザ名の補完を対話的に行います。文字列に続けて エスケープ文字 (エスケープキー、または control-[) キーを端末から 入力することにより補完が行われます。 たとえば、以下のファイルがカレント・ディレクトリにあったとします。 .Bd -literal -offset indent DSC.OLD bin cmd lib xmpl.c DSC.NEW chaosnet cmtest mail xmpl.o bench class dev mbox xmpl.out .Ed .Pp ここで、以下のように入力します。 .Pp .Dl % vi ch .Pp このとき、 .Nm csh は ``ch'' を補完し、それにマッチする唯一のファイル名 ``chaosnet'' にします。補完後の入力行は以下のようになります。 .Pp .Dl % vi chaosnet .Pp 以下のように入力した場合は、 .Pp .Dl % vi D .Pp .Nm csh は、次のように補完を行います。 .Pp .Dl % vi DSC. .Pp ここで、端末ベルを鳴らし、補完が完了しなかったことをユーザに伝えます。 なぜなら、``D'' で始まるファイル名が複数あったからです。 .Pp 不完全なファイル名に続いて end-of-file 文字(通常は control-D)を入力すると、 名前の補完を行うかわりに、その名前にマッチするファイル名の一覧を出力します。 たとえば、以下のように入力すると、 .Pp .Dl % vi D .Pp ``D'' で始まるファイル名の一覧が以下のように出力されます: .Pp .Dl DSC.NEW DSC.OLD .Pp このとき、入力行は変化しません。 .Pp エスケープ文字と、end-of-file 文字を用いる同様の機構は、 ユーザ名を補完する場合にも用いることができます。この場合、``~'' で 名前を開始します。たとえば、次のように入力すると、 .Pp .Dl cd ~ro .Pp 以下のように補完されます。 .Pp .Dl cd ~root .Pp シェル変数 .Ar nobeep をセットすることにより、複数の候補があったり、補完に 失敗した場合に端末ベルを鳴らすのを禁止することができます。 .Pp 通常、そのディレクトリにあるすべてのファイル名が補完の候補となります。 ある特定の拡張子を持つファイルを補完の候補から外すのに、変数 .Ar fignore を用いる ことができます。以下のコマンドで、変数 .Ar fignore を設定すると、 .Pp .Dl % set fignore = (.o .out) .Pp 以下のように入力した場合に、 .Pp .Dl % vi x .Pp 次のように補完が行われます。 .Pp .Dl % vi xmpl.c .Pp つまり、"xmpl.o" と "xmpl.out" が無視されて補完が行われました。もし、 .Ar fignore で無視するように指定されたファイル名しか補完の対象になり得なかった場合、 .Ar fignore の設定は無視されます。また、 .Ar fignore は end-of-file 文字によるファイル名の一覧には影響を与えません。 一覧ではすべてのファイル名が出力されます。 .Ss 置換 ここからは、シェルが入力に対して行うさまざまな置換を、 処理が行われる順に記述します。 .Ss ヒストリ置換 ヒストリ置換は、以前に入力されたコマンド中の単語を、 新たなコマンドの一部として置き換えることで、 コマンドの繰り返し実行を容易にしたり、直前のコマンドの引数を次のコマンドで 再び使用したり、直前に入力した行の綴り間違いを修正する際に、 タイプ入力の手間を減らし、自信をもって修正できるようにするための機能です。 ヒストリ置換は文字 `!' により始まり、入力ストリームの .Ar どの位置にでも 置くことができます(ただし、入れ子にすることは .Nm できません )。`\e' を `!' の前に置くことにより、`!' の特殊な意味を打ち消すことが できます。また、利便のために、`!' の直後に空白、タブ、改行文字、 `='、`(' が続いた場合、ヒストリ置換は行われず、入力された文字がそのまま 用いられます(ヒストリ置換は、入力行が `\*(ua' で始まっている場合にも 起こります。これについては後述します)。入力行にヒストリ置換が含まれている 場合は、実行直前にヒストリ置換を行った結果が端末に出力されます。 .Pp 端末から入力された、1つあるいはそれ以上の単語からなるコマンドは ヒストリ・リストに記録されます。ヒストリ置換は、この記録された 単語の列を入力ストリームに挿入することにより行われます。 ヒストリ・リストの大きさは、変数 .Ar history により制御されます。直前のコマンドは .Ar history の値に関わらず必ず 保存されます。記録されているコマンドは 1 から順にイベント番号が 割り当てられます。 .Pp .Ar history コマンドにより、以下の出力が得られたとします: .Bd -literal -offset indent \09 write michael 10 ex write.c 11 cat oldwrite.c 12 diff *write.c .Ed .Pp コマンドはイベント番号とともに出力されています。必ずしもイベント番号を 用いる必要はありませんが、プロンプト文字列に `!' を埋めることにより、 現在のイベント番号を .Ar プロンプト 中に表示させることができます。 .Pp 現在のイベント番号が 13 だとすると、以前のイベントを指定するには、 イベント番号を用いて `!11' としたり、 相対指定を用いて `!\-2' としたり(同じイベントを表します)する方法があります。 また、コマンドの単語の先頭部分を用いて指定することもできます。例えば、`!d' でイベント番号 12 を指定したり、 `!wri' でイベント番号 9 を指定できます。また、 ある文字列を含むコマンドを指定するのに `!?mic?' (これはイベント番号 9 の コマンドを示します)のような記法も使えます。これらの記法は、指定された イベントの各単語を単一の空白で区切った単語列に置換します。特殊な 場合として、`!!' は直前のコマンドを参照します。すなわち、`!!' だけを 入力することは直前のコマンドの .Ar 再実行 を意味します。 .Pp あるイベント中のいくつかの単語だけを指定するために、イベント指定に続けて `:' と単語指示子を書くことができます。イベントの単語は 0 から順に番号が 振られています。最初の単語(通常はコマンドです)が 0 で、2番目の単語 (第1引数)が 1 ということになります。基本的な単語指示子は以下のとおりです: .Pp .Bl -tag -width Ds -compact -offset indent .It \&0 最初の(コマンド)単語 .It Ar n .Ar n 番目の単語 .It \*(ua 最初の引数(すなわち 1 と同じ) .It $ 最後の引数 .It % 直前の .No \&? Ns Ar s Ns \&? 検索でマッチした単語 .It Ar \&x\-y .Ar x 番目から .Ar y 番目までの単語 .It Ar \&\-y .Ar `\&0\-y\' の省略形 .It * `\*(ua\-$' の省略形。イベントが1語のみからなる場合は空になる .It Ar x* .Ar `x\-$\' の省略形 .It Ar x\- .Ar `x*\' から最後の単語を除いたもの。 .El .Pp イベント指定と単語指示子とを区切る `:' は、引数選択子が `\*(ua'、`$'、`*'、 `\-'、`%' で始まっている場合には省略することができます。 単語指示子の直後に、 `:' に続けて 修飾子を複数個置くことができます。以下の修飾子が定義されています: .Pp .Bl -tag -width Ds -compact -offset indent .It h パス名の最後の要素を削除します(head) .It r 最後の `.xxx' 要素を削除します(root) .It e `.xxx' 以外の部分を削除します(extension) .It s Ns Ar /l/r/ Substitute .Ar l を .Ar r で置換します(substitution) .It t 最後の要素を残して、それより前のパス名の要素全てを削除します。 .It \&& 直前の修飾子の作用を繰り返します。 .It g 上記の修飾子の直前に置き、変更を、各単語に1回だけ及ぼすことを指定します。 例) `g&' .It a 上記の修飾子の直前に置き、一つの単語に対して可能な限り繰り返して 変更を行います。変更が全単語に及ぶようにするには `g' と組み合わせて使います。 .It p 置換結果を表示しますが、実行はしません(print only) .It q さらに置換が行われないように、置換結果をクォートします(quote) .It x q と同様ですが、空白、タブ、改行によって単語を分割します .El .Pp `g' が指定されなかった場合、適用可能な最初の単語のみが修飾子の影響を受けます。 置換については、適用可能な単語がなかった場合にはエラーとなります。 .Pp 置換(s/l/r/) における左辺 ( .Ar l ) は、エディタなどで使うような正規表現ではなく単なる文字列です。`/' のかわりに自由な文字を区切りに指定することができます。`\e' によって、 .Ar l または .Ar r 中の区切り文字をクォートすることができます。右辺 ( .Ar r ) 中の文字 `&' は 左辺の文字列に置換されます。`&' もまた `\e' によって クォートすることができます。 空の左辺値 .Ar l (`//') の場合、直前の左辺値 .Ar l または、 .No \&`!? Ns Ar s Ns ?' 中のコンテキストスキャン文字列 .Ar s から左辺値が取られます。置換指定の直後に改行がくる場合には、 最後の区切り文字を省略することができます。 コンテキストスキャンの後ろ側の文字 `?' も、直後に改行がくる場合、 同様に省略できます。 .Pp ヒストリは、 `!$' のようにイベント指定なしで参照することができます。 同じ行においてそれ以前にヒストリ参照が行われた場合はそのイベントを、 さもなければ直前のコマンドが参照されます。`!?foo?\*(ua !$' は `?foo?' に マッチするイベントの最初と最後の単語に置換されます。 .Pp 入力行の最初の非空白文字が `\*(ua' の場合、特殊なヒストリ参照の省略形であると みなします。これは `!:s\*(ua' と等価で、直前に入力したコマンド行の 文字列置換を行うことができます。たとえば、`\*(ualb\*(ualib' は 直前のコマンドの `lib' の綴り間違いを修正します。 最後に、後ろに続く文字とヒストリ置換とを隔離するために、 ヒストリ置換を `{' と `}' によって囲むことができます。`ls -ld ~paul' なる コマンドを実行した直後に`!{l}a' と 入力することで、`ls -ld ~paula' に展開されます。一方、`{}' を 使わずに `!la' とした場合は `la' で始まるイベントを検索します。 .Pp .Ss \' と \&" によるクォート 文字列を `\'' または `"' によって クォートすることにより、残りの置換のすべてあるいは一部を 抑制することができます。`'' によってクォートされた文字列には 本マニュアルのこれ以降に説明する置換が適用されません。`"' によって クォートされた文字列は、後述するように一部の置換が適用されます。 .Pp どちらのクォートの結果も単一の単語 (の全体または一部) となります。 ただし、`"' クォートされたコマンド置換は複数の単語になる特殊な場合が 一つだけあります(後述の .Em コマンド置換 の項を参照)。 `\'' クォートの場合は、このようなことはありません。 .Ss エイリアス置換 シェルはエイリアス(別名定義)を管理しており、 .Ar alias コマンドと .Ar unalias コマンドに より設定、表示、修正等を行うことができます。コマンド行がスキャンされたあと、 個々のコマンドに解析され、各コマンドの最初の単語に対応するエイリアスが あるかどうかチェックします。もし存在すれば、入力されたコマンド行の内容を 直前のコマンドとみなして、エイリアスの内容をヒストリ展開します。 コマンド行全体は展開結果と置き換えられます。エイリアスの内容が ヒストリ参照を含まなかった場合、入力したコマンド行の引数は変更せずに 残されます。 .Pp `ls' に対するエイリアスが `ls -l' だった場合、`ls /usr' は `ls -l /usr' に展開されます。この場合、エイリアスにはヒストリ参照がなかったため、 引数の `/usr' は変更せずに残されました。`lookup' に対するエイリアスが `grep !\*(ua /etc/passwd' だった場合、`lookup bill' は `grep bill /etc/passwd' に展開されます。 .Pp エイリアスが展開された場合、展開結果に対して単語分割とエイリアス検索が 再度行われます。展開結果の最初の単語が展開前の最初の単語と同一になった場合、 再度エイリアス検索が行われることはありません。それ以外の、エイリアスによる ループは検出され、エラー扱いとなります。 .Pp このメカニズムによってエイリアスでパーサのメタ記法を利用できます。 よって `alias print \'pr \e!* \&| lpr\'' とエイリアスすることで .Ar pr の 引数をプリンタに出力させるというようなことができます。 .Ss 変数置換 シェルは変数を管理しており、それらは 0 個またはそれ以上の単語のリストを 値として持ちます。変数のうちいくつかはシェルがセットしたり参照したりします。 たとえば、変数 .Ar argv はシェルへの引数を保持しており、この変数の値である単語は、特殊な方法で 参照されます。 .\" #### jpman kuma 96.12.05 here checked ... TO BE CONTINUED .Pp 変数の値は .Ar set および .Ar unset コマンドにより参照、変更することができます。シェルが 参照する変数のうちいくつかは、それがセットされているかどうかだけが重要 であり、値が何であっても意味を持たないものがあります。たとえば、変数 .Ar verbose は入力行がエコーされるかどうかを制御する変数であり、この変数を セットすることは、 .Nm csh に .Fl v オプションを指定したのと同じ意味になります。 .Pp 変数を数値として扱う操作もあります。`@' コマンドによって変数に対して数値演算 を適用し、演算結果を変数に代入することができます。しかしながら、変数の 値はつねに文字列として表現されます。数値演算の場合、空文字列は 0 と みなし、変数の値が複数の単語からなる場合 2 番目以降の単語は無視されます。 .Pp 入力行にエイリアス置換を行い、構文解析を行ったあと、コマンドが実行される 前に文字 `$' をキーとして変数置換を行います。`$' の直前に `\e' を置くことにより、変数置換を抑制することができます。 ただし、`"' クォート中では変数置換は .Em 必ず 行われますが、`\'' クォート中では .Em 決して行われません。 `\*(ga' クォートのなかはさらにあとで解釈されるため(後述の .Nm コマンド置換 の項を参照)、ここでは変数置換は行いません。`$' の直後に空白、タブ、 改行がくる場合、`$' はそのまま残されます。 .Pp 入出力リダイレクトは変数置換より前に解釈され、別々に変数置換が行われます。 それ以外のコマンド名と引数は同時に展開されます。このため、最初の 単語(コマンド)が展開の結果、複数の単語となったり、展開された結果の 最初の単語がコマンド名、それ以外が引数の一部になることもあります。 .Pp `"' でクォートされておらず、変数置換に `:q' 修飾子も指定されなかった 場合には、変数置換の結果にコマンドとファイル名置換が 行われます。`"' クォート内では複数の単語からなる値を持つ変数は、各単語を 1つの空白で区切った単一の単語 (の一部) に展開されます。`:q' 修飾子が 指定された場合は、各単語は 1 つの空白で区切られ、 この後のコマンドとファイル名置換を抑止するために、個々にクォートされた 単語の列に展開されます。 .Pp 変数置換には以下の形式があります。特に記述していない場合、 セットされていない変数の参照はエラーになります。 .Pp .Bl -tag -width Ds -compact -offset indent .It $name .It ${name} .\" #### modified by kuma 96.12.21 #### 変数 .Ar name の値の各単語を一つの空白文字で区切ったものに展開されます。中括弧は .Ar 変数名 と後続する文字を分離し、後続する文字が変数名の一部と解釈されないように するために用いられます。シェル変数は 20 文字までの名前を持ちます。 変数名の先頭はアルファベットで、それ以降はアルファベット、数字、 アンダースコアを使用することができます。 .Ar name という名前のシェル変数は存在しないが、同名のセットされた環境変数が 存在する場合には、その値に置換されます(ただし、環境変数に対しては .Nm : 修飾子と以降に説明する書式を 用いることはできません)。 .It $name Ns Op selector .It ${name Ns [ selector ] } 変数 .Ar name の値のうちいくつかの単語を選択して展開します。 .Ar selector は 1 つの数字、範囲を示す2つの数字を `\-' でつないだもの、あるいはそのような 結果になる変数置換のいずれかです。単語は 1 から順序づけられています。 範囲の最初の数字が省略された場合は 1 が用いられます。範囲の第2の数字が 省略された場合は `$#name' が用いられます。selector として `*' が用いられた 場合には、すべての単語に展開されます。範囲の第2の数字が省略されるか、 単語数より小さい場合には、範囲が空になってもエラーとはなりません。 .It $#name .It ${#name} 変数の値の単語数に展開されます。 この機能は後述する `$argv[selector]' で有用です。 .It $0 コマンドを読み込んでいるファイル名に展開されます。ファイル名が不明の場合は エラーとなります。 .It $number .It ${number} `$argv[number]' と等価です。 .It $* `$argv[*]' と等価です。 修飾子 `:e'、`:h'、`:t'、`:r'、`:q'、`:x' や `:gh'、`:gt'、`:gr' を適用することができます。中括弧`{' `}' で 囲まれている場合は、中括弧内に修飾子が存在しなければなりません。 現在の csh の実装では、各 `$' 展開につき1つの修飾子のみ指定することができます。 .El .Pp 以下の置換を行なう場合は `:' 修飾子を指定することはできません。 .Bl -tag -width Ds -compact -offset indent .It $?name .It ${?name} 変数 name がセットされていれば `1' に、さもなければ `0' に展開されます。 .It $?0 現在の入力ファイル名がわかっていれば `1' に、不明ならば `0' に展開されます。 .It \&$\&$\& 親のシェルの (10進の) プロセス番号に展開されます。 .It $! そのシェルから起動された最後のバックグラウンド・プロセスの (10進の) プロセス番号に展開されます。 .It $< 標準入力から1行を読み込み、その内容に展開されます。読み込んだ内容の解釈は 行いません。スクリプト中でキーボードからの入力を受けるのに用いられます。 .El .Ss コマンドとファイル名置換 残りの置換であるコマンド置換とファイル名置換は、 組み込みコマンドの引数に対しては 適用されたり、されなかったりします。 .\" #### changed by kuma 96.12.21 #### すなわち、式の中で評価が行われない部分に関しては 以下の置換が行なわれません。組み込みコマンドではないコマンドにおいては、 コマンド名は引数とは別に置換が行なわれます。 .\" #### changed by kuma 96.12.21 #### コマンド名に対する置換が生じるのは一連の置換処理の最後の方で、 入出力リダイレクトの設定後、メインシェルの子供の中で行われます。 .Ss コマンド置換 コマンド置換は、コマンドを `\*(ga' で囲むことによって指示します。 コマンドからの 出力は空白、タブ、改行によって単語に分割され、空の単語を削除したあとに 元の文字列と置換されます。 `"' の内部では、改行のみが単語分割の区切りとして扱われ、空白とタブは そのまま残されます。 .Pp どちらの場合も、コマンドの出力の最後の改行は単語の区切りとはならず、単に 削除されます。 よってコマンド置換によって、コマンドの出力が完全な一行であっても、 単語の一部分のみを生成することが可能です。 .Ss ファイル名置換 単語が文字 `*'、 `?'、 `['、 `{' を含んでいるか、単語の先頭文字が `~' の .\" #### modified by kuma 96.12.21 #### 場合、その単語はファイル名展開(あるいはグロブ(glob)と呼ばれます)の 候補となります。 .\" #### modified by kuma 96.12.21 #### 候補となった単語はパターンとみなされ、パターンにマッチするファイル名が アルファベット順にソートされた列に置換されます。 ファイル名置換を含む単語の列がどれもファイル名にマッチしなかった場合には エラーとなりますが、 すべての単語パターンがマッチする必要はありません。 メタキャラクタ`*'、 `?'、`[' のみがパターンマッチ文字であり、`~' と `{' は省略形といったほうが近いで しょう。 .Pp ファイル名マッチにおいて、ファイル名先頭、または `/' の直後の `.' は、 `/' と同様に明示的にマッチさせなければなりません(`*' や `?' は これらにマッチしません)。 `*' は、空文字列を含むどのような文字列にもマッチします。`?' は、 どのような1文字にもマッチします。 .Sq Op ... は、括弧のなかで指定した文字のいずれかにマッチします。 .Sq Op ... 内では、文字の対を `\-' でつなぐことで、 文字の範囲を指定することができます(両側の文字も含まれます)。 .Pp ファイル名の先頭の `~' はホーム・ディレクトリを示すのに用いられます。 単独で用いられた場合には、シェルを起動したユーザのホーム・ディレクトリ .\" #### modified by kuma 96.12.21 #### (変数 .Ar home の値に反映されているとおり)に展開されます。`~' に続けてアルファベット、 数字、`-' からなる単語が続いた場合は、その単語をユーザ名とみなして、 そのユーザのホーム・ディレクトリに展開されます。たとえば、ユーザ ken の ホーム・ディレクトリが `/usr/ken' ならば、`~ken' は `/usr/ken' に、 `~ken/chmach' は `/usr/ken/chmach' に展開されます。 直後にアルファベットと `/' 以外が続く`~'と、ファイル名の先頭にない `~' は 変更されずにそのまま残されます。 .Pp メタ記法 `a{b,c,d}e' は `abe ace ade' の短縮形です。 .\" #### modified by kuma 96.12.21 #### この記法の左から右への出現順序は保存されます。 展開結果は下位のレベルで個別にソートされ、出現順序は保存されます。 この記法は入れ子にすることができます。 source のホーム・ディレクトリが `/usr/source' ならば、 `~source/s1/{oldls,ls}.c' は `/usr/source/s1/oldls.c /usr/source/s1/ls.c' に展開されます。このとき oldls.c や ls.c が 存在しなくともエラーにはなりません。同様に、`../{memo,*box}' は `../memo ../box ../mbox' 等に展開されます(`memo' と `*box' の 展開結果がいっしょに ソートされたりしていないことに注意してください)。特殊な場合として、 単独の`{' と `}'、`{}' は変更されずにそのまま残されます。 .Ss 入出力 コマンドの標準入出力は、以下の方法によりリダイレクトすることができます: .Pp .Bl -tag -width Ds -compact -offset indent .It < name ファイル .Ar name (変数、コマンド、ファイル名展開を受けます)をオープンし、 コマンドの標準入力とします。 .It << word .Ar word と同一の行が出現するまで、シェルの入力を読み込みます。 .Ar word は変数、ファイル名、コマンド置換を受けません。シェル入力の行は 読み込まれるとすぐに .Ar word と比較されます(置換を行う前に)。その後、 .Ar word に `\e'、`"'、`\''、`\*(ga' クォートが出現しないなら、読み込まれた行には 変数置換と .\" #### ^^^^^^^ `\'' だと思う(1次チェック者のコメント?jpman kuma 961205) .\" #### kuma agree with you, changed as specified 96.12.22 コマンド置換が適用されます。この置換を抑制するために、`\e' によって `$'、`\e'、`\*(ga' をクォートすることができます。コマンド置換において、 すべての空白、タブ、改行は保存されますが、最後の改行は削除されます。 読み込んだ行はすべて中間的なファイルに保存され、コマンドの標準入力として 用いられます。 .It > name .It >! name .It >& name .It >&! name ファイル .Ar name を標準出力として用います。ファイルが存在しなければ作成され、 すでにファイルが存在すればその内容は切り捨てられ、以前の内容は失われます。 .Pp 変数 .Ar noclobber がセットされている場合、ファイルが存在しないか文字型特殊ファイル (端末や `/dev/null' のような) でなければエラーになります。これは、 すでに存在するファイルを思いがけず削除してしまうことを防止します。`!' を 用いた形式を使うと、この検査を抑制することができます。 .Pp `&' を用いた形式では、標準出力とともに標準エラー出力もファイルへ リダイレクトされます。 .Ar name .\" #### modified by kuma 96.12.21 #### は、 `<' の入力ファイル名の場合と同様の展開を受けます。 .It >> name .It >>& name .It >>! name .It >>&! name `>' と同様に、ファイル .Ar name を標準出力として用います。ただし、コマンドの出力はファイルへ追加されます。 変数 .Ar noclobber がセットされている場合、 ファイルが存在しなければエラーとなります(`!' を用いることで、 この検査を抑制することができます)。 他は `>' と同様です。 .El .Pp コマンドは、シェルが起動されたときの環境を、入出力リダイレクトと パイプラインによって変更したもののなかで実行されます。以前のいくつかの シェルとは異なり、 シェルコマンドファイルから起動されたコマンドは、デフォルトでは標準入力に よってシェルコマンドファイル自体にアクセスすることはできません。 かわりに、シェルが起動した環境の標準入力をそのまま受け継いでいます。 `<<' 機構はインラインデータのために用いるべきです。 このように制限することにより、 シェルコマンドスクリプトをパイプラインの一部として用いることができます。 バックグラウンドで実行されているコマンドの標準入力も .Pa /dev/null 等にリダイレクトされることは .Ar なく 、シェルの標準入力をそのまま受け継いでいます。もし標準入力が端末で、 コマンドが端末から読み込もうとした場合、そのプロセスはブロックされ、 シェルはユーザにそのことを通知します(参照: .Sx ジョブ の項)。 .Pp 標準エラー出力もパイプにリダイレクトすることができます。単純に `\&|' の かわりに `\&|&' を使います。 .Ss 式 .\" #### modified by kuma 96.12.21 #### いくつかの組み込みコマンド(後述します)は、引数として式を取ります。式は C 言語のものと類似しており、同じ優先順位を持ちます。式は .Nm @、 .Ar exit、 .Ar if、 .Ar while コマンド中で用います。以下の演算子が使用可能です: .Bd -ragged -offset indent \&|\&| && \&| \*(ua & == != =~ !~ <= >= < > << >> + \- * / % ! ~ ( ) .Ed .Pp 上記の演算子は右にいくほど優先順位が高くなっています。 `==' `!=' `=~' `!~'、`<=' `>=' `<' `>'、`<<' `>>'、`+' `\-'、 `*' `/' `%' の 5グループは各グループ内では同じ優先度です。 `=='、`!='、`=~'、`!~' は文字列の比較を行い、他の演算子は数値演算を 行います。`=~'、`!~' は `!='、`==' と同様ですが、右辺を .Ar パターン (`*'、`?'、`[...]' を含んだ) とみなして、左辺とのパターンマッチが行われます。 これにより、シェル スクリプトにおいてパターンマッチのみが必要な局面では .Ar switch ステートメントを使わずに済ませることができます。 .Pp 先頭が `0' の文字列は 8 進数の数値とみなされます。空または省略された引数 は `0' とみなされます。すべての演算結果は 10 進数数値の文字列となります。 式の 2 つの要素が同一の単語中に出現してはいけません。つまり、 .\" #### modified by kuma 96.12.21 #### 要素の前後が、構文解析において特殊な意味を持つ `&'、`\&|'、`<'、`>'、`('、`)' でない場合は、 その要素は空白で囲まれていることが必要です。 .Pp 数式中では、`{' と `}' で囲んだコマンドと、 以下のファイル検査演算子を用いることができます。 ファイル検査演算子は .Fl l .Ar name の形式で、 .Ic l は以下のうちのいずれかです: .Bd -literal -offset indent r 読み込みアクセス w 書き込みアクセス x 実行アクセス e 存在 o 所有 z サイズがゼロ f 通常ファイル d ディレクトリ .Ed .Pp 指定された name は、コマンド、ファイル名置換を適用したのちに 実ユーザの権限において検査されます。ファイルが存在しないか、 アクセス不可なら演算結果は false すなわち `0' になります。 コマンド実行においては、コマンドが成功したなら演算結果は true `1' に、 コマンドが 0 以外の終了ステータスを返してきたら、すなわち、 失敗なら演算結果は false `0' になります。 終了ステータスの値自体を知りたい場合は、コマンドを式以外の文脈で実行し、変数 .Ar status の値を調べます。 .Ss 制御構造 シェルにはコマンドファイル(シェル・スクリプト)中で、 あるいは(制限されてはいるが、便利な方法で)端末から、 制御の流れを変更するためのいくつかのコマンドがあります。 これらのコマンドはシェルに入力を読み直させたり、 スキップさせたりすることができます。実装の制限上、 これらのコマンドを書くことのできる位置に制限があります。 .Pp .Ic foreach、 .Ic switch、 .Ic while、 文、および、 .Ic if\-then\-else の .Ic if ステートメントは、 後述するように入力行の単一の単純コマンドとして現れる必要があります。 .Pp シェルの入力がシーク不可能な場合、 シェルは繰り返しが必要なときには入力をバッファに保存し、 .\" #### modified by kuma 96.12.23 #### この内部バッファに対してシークを行います(このため、シーク不可能な入力の場合も、 後方への goto が可能です)。 .Ss 組み込みコマンド 組み込みコマンドは通常シェルのプロセス内部で実行されます。 ただし、組み込みコマンドがパイプラインの最後以外に用いられた場合は、 サブシェル上で実行されます。 .Pp .Bl -tag -width Ds -compact -offset indent .It Ic alias .It Ic alias Ar name .It Ic alias Ar name wordlist 1行目の形式はすべてのエイリアスを出力します。2 行目の形式は .Ar name に対応したエイリアスの値を出力します。最後の形式は .Ar wordlist を .Ar name のエイリアスとして登録します。 .Ar wordlist にはコマンド置換、ファイル名置換が適用されます。 .Ar name として .Ar alias または .Ar unalias を指定することはできません。 .Pp .It Ic alloc .Nm csh が獲得したメモリのうちの使用量と空き容量を表示します。 なんらかの引数をつけると、ブロックサイズごとの使用中/空ブロック数を表示します。 ブロックサイズは 8、16、32、.. となります。 本コマンドの出力はシステムによって異なります。 VAX 以外のシステムは、異なるメモリ管理を行っているかもしれないからです。 .Pp .It Ic bg .It Ic bg \&% Ns Ar job ... 現在のジョブあるいは指定されたジョブをバックグラウンドに移動します。 もしそれらのジョブが停止されていたなら、実行が再開されます。 .Pp .It Ic break 最も内側の .Ic foreach または .Ic while ループに対応する .Ic end の後へ脱出します。同じ行にある残りのコマンドは実行されます。複数の .Ic break を同一行に記述することで複数レベルの脱出が行えます。 .Pp .It Ic breaksw .Ic switch から脱出し、 .Ic endsw のあとで実行を再開します。 .Pp .It Ic case Ar label : .Ic switch ステートメントのラベルを指定します。 .Pp .It Ic cd .It Ic cd Ar name .It Ic chdir .It Ic chdir Ar name .\" #### modified by kuma 96.12.23 #### シェルの作業ディレクトリをディレクトリ .Ar name に変更します。引数が指定されなかった場合には、 ユーザのホーム・ディレクトリに変更します。 カレント・ディレクトリにディレクトリ .Ar name がない場合(かつ .Ar name が `/'、`./'、`../' で始まっていない場合)、変数 .Ic cdpath の各要素のサブディレクトリとして .Ar name がないかどうかを調べます。最後に、シェル変数 .Ar name に `/' で始まる値が設定されているなら、 その値のディレクトリが存在しないかを調べます。 .Pp .It Ic continue 最も内側の .Ic while または .Ic foreach ループの先頭に戻ります。戻る前に、同じ行に記述されたコマンドが実行されます。 .Pp .It Ic default : .Ic switch ステートメントのデフォルトを指定します。 .Ic default は、すべての .Ic case ラベルのあとに出現しなければなりません。 .Pp .It Ic dirs ディレクトリ・スタックを表示します。 スタックの先頭(カレント・ディレクトリ)を左端にして表示します。 .Pp .It Ic echo Ar wordlist .It Ic echo Fl n Ar wordlist 指定された単語を空白で区切った文字列をシェルの標準出力に書き出します。 .Fl n オプションが指定されなければ、最後に改行が出力されます。 .Pp .It Ic else .It Ic end .It Ic endif .It Ic endsw .Ic foreach、 .Ic if、 .Ic switch、 .Ic while ステートメントの項を参照してください。 .Pp .It Ic eval Ar arg ... ( .Xr sh 1 と同様)引数をシェルへの入力であるとみなして読み込み、 現在のシェルのコンテキストで実行します。 コマンド置換や変数置換の結果として生成されたコマンド列を実行する場合に用いられます。 通常は、それらの置換に先立って文法解析が行われてしまうからです。 .Ic eval の使い方の例が .Xr tset 1 にあります。 .Pp .It Ic exec Ar command 指定された command を現在のシェルと置き換えて実行します。 .Pp .It Ic exit .It Ic exit Ar (expr ) 1行目の形式では変数 .Ic status の値、2 行目の形式では式 .Ic expr の値を返り値としてシェルを終了します。 .Pp .It Ic fg .It Ic fg % Ns Ar job ... 現在のジョブあるいは指定されたジョブをフォアグラウンドに移動します。 停止していたジョブは実行を再開します。 .Pp .It Ic foreach Ar name (wordlist) .It ... .It Ic end 変数 .Ic name に .Ic wordlist の各値を順次セットしながら対応する .Ic end までのコマンドを繰り返し実行します( .Ic foreach と .Ic end .\" #### modified by kuma 96.12.23 #### は単独で行に置かなければなりません)。組み込みコマンド .Ic continue を使って中途でループの次の繰り返しを実行させたり、 .Ic break コマンドによって中途でループを脱出させたりすることができます。 このコマンドが端末から読み込まれる場合、ループすべての内容が(プロンプト ? を表示しながら)読み込まれてから実行が開始されます。 端末からループ中でタイプ・ミスした場合は修正できます。 .Pp .It Ic glob Ar wordlist .Ic echo コマンドと似ていますが、`\e' によるエスケープは解釈されず、 .\" #### modified by kuma 96.12.23 #### 単語はヌル文字によって区切られます。プログラムから、 シェルをファイル名置換のために利用する場合に便利です。 .Pp .It Ic goto Ar word .Ic word にファイル名置換、およびコマンド置換が適用されたのち、それを `label' とみなします。シェルは可能なかぎり入力を遡って読み直し、`label:' のある行を検索し、そこから実行を開始します。 ラベルの前には空白またはタブを置くことが可能です。 .Pp .It Ic hashstat コマンドを検索するのに、 内部キャッシュがどの程度効率的に働いているか (そして .Ic exec をどの程度回避できているかを)を表示します。 .\" #### modified by kuma 96.12.23 #### .Em path の要素のうち、ハッシュ関数がヒットの可能性を示すものと、 `/' で始まらないものについて .Ic exec が試みられます。 .Pp .It Ic history .It Ic history Ar n .It Ic history Fl r Ar n .It Ic history Fl h Ar n ヒストリのリストを表示します。数字 .Ar n が指定された場合には、最近の .Ar n 個のイベントが表示されます。 .Fl r オプションは表示順序を逆にします。 .\" #### modified by kuma 96.12.23 #### すなわち、最も古いものを先に表示するのではなく、 最も新しいものを先に表示します。 .Fl h オプションを指定すればイベント番号が省略されます。これは .Ic source コマンドで \-h を使って読み込むためのファイルを生成する場合に用いることができます。 .Pp .It Ic if ( Ar expr ) No command .\" #### modified by kuma 96.12.23 #### 指定された式が true と評価されたなら、単一のコマンド .Ar command が実行されます。 .Ar command .\" #### modified by kuma 96.12.23 #### に対する変数置換は、実行に先だって .Ic if コマンドの残りの部分と同時に行なわれます。 .Ar command は単純コマンドのみが許され、パイプライン、コマンドリスト、括弧でくく られたコマンドであってはいけません。入出力リダイレクションは式 .Ar expr が false と評価され、それゆえ .Ar command が実行 .Sy されなかった 場合にも処理されます(これはバグです)。 .Pp .It Ic if ( Ar expr ) Ic then .It ... .It Ic else if ( Ar expr2 ) Ic then .It ... .It Ic else .It ... .It Ic endif 式 .Ar expr が true なら最初の .Ic else までのコマンドが実行されます。さもなければ、式 .Ar expr2 が true なら次の .Ic else までのコマンドが実行されます。 いくつでも .Ic else-if の対を繰り返すことができます。最後に 1 つの .Ic endif が必要です。 最後の .Ic else 部分はあってもなくてもかまいません。 (単語 .Ic else と .Ic endif は入力行の最初に置く必要があります。また、 .Ic if は行内に単独で、または .Ic else のあとに置く必要があります)。 .Pp .It Ic jobs .It Ic jobs Fl l アクティブなジョブの一覧を出力します。 .Fl l .\" #### modified by kuma 96.12.23 #### オプションを指定すると、通常の情報に加えてプロセス ID も出力します。 .Pp .It Ic kill % Ns Ar job .It Ic kill Ar pid .It Ic kill Fl sig Ar pid ... .It Ic kill Fl l TERM(terminate) シグナルあるいは指定したシグナルを、 指定されたジョブまたはプロセスに送ります。 シグナルは番号または名前で指定できます(名前は .Pa /usr/include/signal.h にある名前から `SIG' を取り除いたものです)。 シグナル名の一覧を ``kill \-l'' により表示できます。 kill にはデフォルト動作はなく、 単に `kill' を実行しても現在のジョブにシグナルが送られるようなことはありません。 送るシグナルが TERM(terminate) または HUP(hangup) の場合、 CONT(continue) シグナルも同時に送られます。 .Pp .It Ic limit .It Ic limit Ar resource .It Ic limit Ar resource maximum-use .It Ic limit Fl h .It Ic limit Fl h Ar resource .It Ic limit Fl h Ar resource maximum-use 現在のプロセスと、それが生成するプロセスのそれぞれについて、 .\" #### modified by kuma 96.12.23 #### -指定されたリソース +指定された資源 .Ar resource を、指定された .Ar maximum-use を超えて使用しないように設定します。 .Ar maximum-use が指定されなかった場合、現在の制限値が表示されます。 .Ar resource が指定されなかった場合、すべての制限値が表示されます。 .Fl h オプションが指定された場合、 現在の制限値のかわりにハードリミットの表示/設定を行います。 .\" #### modified by kuma 96.12.23 #### ハードリミットは現在の制限値の上限の値です。 スーパーユーザのみがハードリミットを増加させることができます。 一般ユーザは現在の制限値を可能な範囲で増減することができます。 .Pp .\" #### modified by kuma 96.12.23 #### -現在のところ、制御可能なリソースは、 +現在のところ、制御可能な資源は、 .Ar cputime (各プロセスが使うことのできる最大の CPU 秒数)、 .Ar filesize (1つのファイルの最大サイズ)、 .Ar datasize ( .Xr sbrk 2 .\" #### modified by kuma 96.12.23 #### を用いてプログラムのテキスト領域の末尾を超えて増加させることのできる data+stack 領域の最大サイズ)、 .Ar stacksize .\" #### modified by kuma 96.12.23 #### (自動的に拡張されるスタックの最大サイズ)、 .Ar coredumpsize (最大のコアファイルのサイズ)です。 .Pp 最大値 .Ar maximum-use は、(整数あるいは浮動小数の) 数値とそれに続くスケールファクタによって指定します。 .Ar cputime 以外の制限値のデフォルトのスケールファクタは `k' あるいは `kilobytes'(1024 バイト)です。 .\" #### modified by kuma 96.12.23 #### スケールファクタとして `m' あるいは `megabytes' を使用することもできます。 .Ar cputime のデフォルトのスケールファクタは `seconds'(秒)です。 `m'(分)、`h'(時間) をスケールファクタとして指定したり、 `mm:ss' 形式で分秒を指定したりすることができます。 .Pp .\" #### modified by kuma 96.12.23 #### -リソース名 +資源名 .Ar resource とスケールファクタを指定する際には、 .\" #### modified by kuma 96.12.23 #### 一意に決定できるなら、名前の先頭部分だけを指定することができます .\" #### jpman kuma: not found in freebsd-2.1.5-RELEASE manpage (st を stacksize のかわりに用いる等)。 .Pp .It Ic login ログイン・シェルを終了し、 .Pa /usr/bin/login と置き換えます。これは .Xr sh 1 との互換性のために用意されたログオフの手段です。 .Pp .It Ic logout ログイン・シェルを終了します。 .Ic ignoreeof がセットされている場合に便利です。 .Pp .It Ic nice .It Ic nice Ar +number .It Ic nice Ar command .It Ic nice Ar +number command 1 行目の形式は、シェルのスケジューリング・プライオリティを 4 に設定します。 2 行目の形式は、プライオリティを指定された値 .Ar number に設定します。残りの 2 つの形式は、コマンド command をプライオリティ 4 または指定した .Ar number で実行します。 .\" #### modified by kuma 96.12.23 #### 大きい数値を指定するとプロセスが利用できる CPU がその分少なくなります。 スーパーユーザのみがプライオリティとして負の値を `nice \-number ...' のように指定することができます。 .Ar command はつねにサブシェルで実行され、 単純な .Ic if .\" #### modified by kuma 96.12.23 #### 文のコマンドと同様の制限を受けます。 .Pp .It Ic nohup .It Ic nohup Ar command 1 行目の形式は、シェル・スクリプト内で使用し、 スクリプトのそれ以降で hangup シグナルを無視するように設定します。 2 行目の形式は、指定されたコマンドが、 hangup シグナルを無視するように設定して実行します。 `&' をつけて実行されたプログラムは、 .Ic nohup を指定して実行したのと同様に hangup シグナルを無視します。 .Pp .It Ic notify .It Ic notify % Ns Ar job ... 現在のジョブまたは指定されたジョブの状態が変化したときに、 .\" #### modified by kuma 96.12.23 #### コマンド待ちかどうかに関わりなく即座に通知するように指定します。 通常は、プロンプトが表示される直前に通知が行われます。 シェル変数 .Ic notify が指定されている場合は、すべてのジョブに対して同様の設定が行われます。 .Pp .It Ic onintr .It Ic onintr Fl .It Ic onintr Ar label 割り込みに対するシェルの動作を制御します。1行目の形式は、 シェルをデフォルトの動作、すなわち、スクリプトの実行が中断される、 またはコマンド入力状態に戻るように設定します。 2 行目の形式は、すべての割り込みを無視するように設定します。 3行目の形式は、シェルが割り込みを受けるか、 チャイルドプロセスが割り込みによって停止した場合に goto label が実行されるように設定します。 .Pp シェルがバックグラウンドで、かつ、 シグナルを無視するように設定して実行されている場合は、 .Ic onintr は効力を持たず、 割り込みはシェルとそこから起動されるすべてのコマンドで 引続き無視されます。 最後に .Ic onintr 文はシステムのスタートアップ・ファイル (/etc/csh.cshrc、/etc/csh.login) 中でも、 割り込みが禁止されているので無視されます。 .Pp .It Ic popd .It Ic popd Ar +n ディレクトリ・スタックをポップし、 新たにスタックの先頭になったディレクトリにカレント・ディレクトリを変更します。 引数 .Ns \`+ Ar n Ns \' が指定された場合、スタックの .Ar n 番目の要素が捨てられます。ディレクトリ・スタックの要素は、 スタックの先頭から 0 から順に番号がつけられます。 .Pp .It Ic pushd .It Ic pushd Ar name .It Ic pushd Ar n 引数を指定しなかった場合、 .Ic pushd はスタックの先頭の 2 つの要素を入れ替えます。引数 .Ar name が指定された場合、 .Ic cd と同様にカレント・ディレクトリを変更したあと、 古いカレント・ディレクトリ .\" cwd の typo だと思うが わからない .\" (as in .\" .Ic csw ) .\" #### kuma agree with you on 96.12.23 #### をディレクトリ・スタックにプッシュします。 数字引数が指定された場合、ディレクトリ・スタックの .Ar n 番目の要素が スタックの先頭にくるようにローテートし、 カレント・ディレクトリをその要素が指すディレクトリに変更します。 ディレクトリ・スタックの要素は、スタックの先頭から 0 から順に番号がつけられます。 .Pp .It Ic rehash 変数 .Ic path に指定されているディレクトリ内の、ファイルに関するハッシュ・テーブルを 再計算させます。ログイン中に、新しいコマンドが .Ic path に含まれるディレクトリに追加された場合、 .\" #### modified by kuma 96.12.23 #### rehash コマンドを実行する必要があります。 これは、あなたが個人的なディレクトリの一つにコマンドを追加したか、 システムの管理者がシステム・ディレクトリの内容を変更したような 場合にのみ必要です。 .Pp .It Ic repeat Ar count command 指定されたコマンド .Ar command を .Ar count 回繰り返し実行します。 .Ar command .\" #### modified by kuma 96.12.23 #### に指定するものは、先の一行 .Ic if 文で指定する .Ar command と同様の制限を受けます。 入出力リダイレクションは .Ar count が たとえ 0 であっても、必ず 1回だけ処理されます。 .Pp .It Ic set .It Ic set Ar name .It Ic set Ar name Ns =word .It Ic set Ar name[index] Ns =word .It Ic set Ar name Ns =(wordlist) 1 行目の形式はすべてのシェル変数の値を表示します。 複数の単語からなる値を持つ変数は括弧で囲まれた値のリストで表示します。 2 行目の形式は、 .Ar name に空文字列を設定します。3 行目の形式は .Ar name に単一の単語 .\" #### modified by kuma 96.12.23 .Ar word を設定します。4 行目の形式は .Ar name の .Ar index 番目の要素に .Ar word を設定します。 .Ar index 番目の要素はすでに存在していなければなりません。5 行目の形式は .Ar name に .Ar wordlist で指定した単語列を設定します。すべての形式で、 値にはコマンド置換とファイル名置換が適用されます。 .Pp 複数の変数を設定するために、set コマンドへの引数を繰り返すことができます。 ただし、引数に対する変数展開処理は、代入処理に先だって行われます。 .Pp .It Ic setenv .It Ic setenv Ar name .It Ic setenv Ar name value 1 行目の形式はすべての環境変数の一覧を出力します。 これは .Xr printenv 1 と等価です。 3 行目の形式は環境変数 .Ar name に値 .Ar value を設定します。2 行目の形式は環境変数 .Ar name .\" #### modified by kuma 96.12.23 #### に空文字列を設定します。最も一般的に用いられる環境変数である .Ev USER , .Ev TERM , .Ev PATH は .Nm csh の起動時にシェル変数 .Ar user , .Ar term , .Ar path にそれぞれ設定され、 .Nm csh から実行するプログラムの環境変数には、シェル変数 .Ic user , .Ic term , .Ic path の値が反映されます。そのため、これらの変数を明示的に .Ic setenv する必要はありません。 .Pp .It Ic shift .It Ic shift Ar variable (リスト)変数 .Ic argv .\" #### modified by kuma 96.12.23 #### の各要素を左にシフトし、 .Ic argv Ns Bq 1 の値を捨てます。 .Ic argv に値が設定されていないか、 1 つ以上の要素を持たない場合にはエラーになります。 2 行目の形式は、指定された変数 .Ar variable に対して同様の処理を行います。 .Pp .It Ic source Ar name .It Ic source Fl h Ar name シェルは、指定されたファイル .Ar name からコマンドを読み込みます。 .Ic source コマンドはネストすることができます。あまりに深くネストさせると、 .\" #### modified by kuma 96.12.23 #### ファイル識別子を使い切ってしまう場合があります。いずれかのレベルの .Ic source コマンド中でエラーが発生すると、ネストしているすべての .Ic source コマンドが中断されます。通常、 .Ic source の実行中に実行されたコマンドはヒストリに記録されませんが、 \-h オプションを指定することにより、 ファイルに記述してあるコマンドを実行せずに、 ヒストリにのみ記録することができます。 .Pp .It Ic stop .It Ic stop % Ns Ar job ... バックグラウンドで走行中の現在のジョブ、あるいは指定されたジョブを停止します。 .Pp .It Ic suspend シェル自身を停止させます。 .Ic ^Z でストップ・シグナルを送られたかのように振舞います。 .Xr su 1 によって起動したシェルを停止する場合によく用いられます。 .Pp .It Ic switch Ar (string) .It Ic case Ar str1 : .It \ \ \ \ \&... .It Ic \ \ \ \ breaksw .It \ \ \ \ \&... .It Ic default : .It \ \ \ \ \&... .It Ic \ \ \ \ breaksw .It Ic endsw .\" #### modified by kuma 96.12.23 #### 各 .Ic case ラベルを順に、指定された文字列 .Ar string でマッチングを行います。 .Ar string には、まず、コマンド置換とファイル名置換が行われます。 .Ic case ラベルには変数置換が行われ、ファイル名メタキャラクタの `*'、`?'、`[...]' を用いることができます。 .\" #### modified by kuma 96.12.23 #### .Ic default ラベルが出てくるまでにどの .Ic case ラベルともマッチしなかった場合は、 .Ic default ラベルの直後から実行が始まります。 .Ic case ラベルと .Ic default ラベルは行の最初に書かれなければなりません。 .Ic breaksw コマンドによって .Ic endsw 以降のコマンドから実行が再開されます。 .Ic breaksw を用いない場合は、 C 言語の場合と同様に、 .Ic case ラベル、 .Ic default ラベルを通過して実行が続けられます。 .Ic default がなく、どのラベルもマッチしなかった場合には、 .Ic endsw 以降から実行が再開されます。 .Pp .It Ic time .It Ic time Ar command 1 行目の形式では、 シェルとそのチャイルドプロセスが使用した時間が表示されます。 .\" #### modified by kuma 96.12.23 #### 2 行目の形式では、指定された単純コマンドの実行時間が計測され、 .\" #### modified by kuma 96.12.23 #### 変数 .Ic time の項で説明する形式で、使用時間情報の要約が表示されます。 必要ならば、コマンド終了時に時間を表示するための追加のシェルが生成されます。 .Pp .It Ic umask .It Ic umask Ar value ファイル作成マスクを表示(第 1 の形式)または設定(第 2 の形式)します。 マスクは 8 進数で与えます。一般的な値としては、 グループにすべての権限を与え、 そのほかには読み込みと実行のみを許可する 002 や、 所有者以外には読み込みと実行しか許可しない 022 があります。 .Pp .It Ic unalias Ar pattern .Ar pattern にマッチするすべてのエイリアスを削除します。 `unalias *' とすることですべてのエイリアスを削除することができます。 削除するものがなかった場合にもエラーにはなりません。 .Pp .It Ic unhash 実行プログラムの位置検索を高速化する内部ハッシュ・テーブルの使用を禁止します。 .Pp .It Ic unlimit .It Ic unlimit Ar resource .It Ic unlimit Fl h .It Ic unlimit Fl h Ar resource -リソースの制限を解除します。 +資源の制限を解除します。 .Ar resource -が指定されない場合、すべてのリソースに対する制限が解除されます。 +が指定されない場合、すべての資源に対する制限が解除されます。 .Fl h が指定された場合、対応するハードリミットが解除されます。 これはスーパーユーザのみが行うことができます。 .Pp .It Ic unset Ar pattern 指定された .Ar pattern にマッチするすべての変数を削除します。 `unset *' と指定するとすべての変数が削除され、 悲惨な結果を生じることがあります。 .Ic unset するものがない場合もエラーになりません。 .Pp .It Ic unsetenv Ar pattern 指定された .Ar pattern にマッチするすべての環境変数を削除します。前述の .Ic setenv の項と .Xr printenv 1 を参照してください。 .Pp .It Ic wait すべてのバックグラウンドジョブの終了を待ちます。 対話的にシェルが実行されている場合、 インタラプトにより wait を停止することができます。 このとき、シェルはいまだに終了していないジョブの名前とジョブ番号を表示します。 .It Ic which Ar command .\" #### modified by kuma 96.12.23 #### .Ar command を指定したとき、シェルが実行するコマンドの位置を表示します。 .Pp .It Ic while Ar (expr) .It \&... .It Ic end 指定された式の評価結果がゼロでないかぎり、 .Ic while と対応する .Ic end の間のコマンドを繰り返し実行します。 .Ic break や .Ic continue によりループを終了したり、途中から繰り返しを再開させたりすることができます。 ( .Ic while と .Ic end は、その行に単独で書かれなければなりません。)入力が端末の場合、 .Ic foreach ステートメントの場合と同様に、 ループのすべてを入力するまでプロンプトが表示され、 すべての入力を終えた時点でループが実行されます。 .Pp .It Ic % Ns Ar job 指定されたジョブをフォアグラウンドに移動します。 .Pp .It Ic % Ns Ar job Ic & 指定されたジョブをバックグラウンドで再開実行させます。 .Pp .It Ic @ .It Ic @ Ar name Ns = Ns expr .It Ic @ Ar name[index] Ns = Ns expr 1 行目の形式は、すべてのシェル変数の値を表示します。2 行目の形式は、 指定された名前 .Ar name の変数に式 .Ar expr の値を代入します。式のなかに `<'、`>'、`&'、`|'を含んでいる場合、 少なくともそのような部分は `(' と `)' で囲まれている必要があります。 3 行目の形式は、変数の .Ar index 番目の要素に式 .Ar expr の値を代入します。 .Ar name と、その .Ar index 番目の要素はすでに存在していなければいけません。 .El .Pp C 言語と同様に、演算子 `*='、`+=' 等が利用可能です。 変数名と演算子の間の空白はあってもなくてもかまいません。 しかしながら、式の各要素の間には空白が必須です。 さもなければ、単一の単語とみなされてしまいます。 .Pp 特別な後置演算子 `+\|+' と `\-\|\-' により変数の値を 1 だけ増加させたり、 減少させたりすることができます。たとえば、`@ i++' のように使います。 .Ss 定義済み変数と環境変数 以下の変数は、シェルにとって特別な意味があります。これらのうち、 .Ar argv、 .Ar cwd、 .Ar home、 .Ar path、 .Ar prompt、 .Ar shell、 .Ar status はシェルが設定します。そのうち、 .Ar cwd と .Ar status 以外の変数の設定はシェルの起動時にのみ行われます。 そのような変数は、ユーザが明示的に変更しないかぎり、 値が変化することはありません。 .Pp シェルは、環境変数 .Ev USER をシェル変数 .Ar user に、 .Ev TERM を .Ar term に、 .Ev HOME を .Ar home にそれぞれコピーします。また、 これらのシェル変数が再度セットされた場合は環境変数にコピーしなおします。 環境変数 .Ev PATH も同様に扱われます。サブシェルは環境変数によって .Ar path の値を得て、もしそれが変更されれば環境変数にコピーしなおすので .Ar \&.cshrc 以外での .Ar path 変数の設定について気をつける必要はありません。 .Bl -tag -width histchars .It Ic argv シェルへの引数が設定されます。位置パラメータは argv の値に展開されます。 すなわち、 `$1' は `$argv[1]' の値に置換されます。 .It Ic cdpath .Ar chdir .\" #### modified by kuma 96.12.23 #### コマンドにおいてサブディレクトリを検索するためのディレクトリのリストです。 .It Ic cwd .\" #### modified by kuma 96.12.23 #### カレント・ディレクトリのフルパス名です。 .It Ic echo .Fl x オプションが指定された場合にセットされます。セットすることにより、 コマンドが実行される前にコマンド名とその引数が表示されるようになります。 .\" #### modified by kuma 96.12.23 #### 組み込みコマンド以外では、表示の前にすべての展開が行われます。 組み込みコマンドではコマンド置換とファイル名置換が行われる前に表示されます。 なぜなら、これらの置換は選択的に行われるからです。 .It Ic filec ファイル名補完を有効にします。 .It Ic histchars ヒストリ置換に用いる文字を文字列で指定します。 指定した文字列の最初の文字はヒストリ置換文字(デフォルトは `!')、 2 文字目は簡易置換文字(デフォルトは `\*(ua') を指定します。 .It Ic histfile ヒストリをセーブ/リストアするパス名を指定できます。 .It Ic history ヒストリ・リストのサイズを指定します。 このサイズを超えたコマンド履歴は削除されます。 あまりに大きな値を設定すると、シェルがメモリを使いつくすかもしれません。 最後に実行したコマンドは .Ar history の値にかかわらず、つねにヒストリ・リストに保存されます。 .It Ic home .\" #### modified by kuma 96.12.23 #### シェルを起動したユーザのホーム・ディレクトリです。 起動時に環境変数から設定されます。 ファイル名置換において .Sq Pa ~ は本変数を参照して展開されます。 .It Ic ignoreeof セットされると、端末のファイル終端(EOF)を無視するようになります。 間違って control-D を押してシェルを終了させてしまうのを防ぐことができます。 .It Ic mail シェルがメールの到着をチェックするためのメールファイルを指定します。 コマンド実行が完了しプロンプトが表示されるときに、 .\" #### modified by kuma 96.12.23 #### 指定された時間が経過していればメイル到着のチェックが行われます。 最終修正時刻が最終アクセス時刻以降の場合、 シェルは `You have new mail' と出力します。 .Pp .Ar mail の値の最初の単語が数値の場合には、 その数値でメール検査の間隔を秒単位で指定します。 指定がなかった場合のデフォルト値は 10分です。 .Pp 複数のメールファイルが指定された場合、 メールが到着していた場合のメッセージは `New mail in .Ar name Ns ' となります。ここで、 .Ar name は到着したメールが あるファイル名です。 .It Ic noclobber .Sx 入出力 の項で説明したように、 出力リダイレクトによって意図せずにファイルを削除しないように制限したり、 `>>' リダイレクトがすでに存在するファイルにしか適用できないようにします。 .It Ic noglob セットされると、ファイル名展開が禁止されます。 ファイル名を扱わないシェルスクリプト内や、すでにファイル名展開を行ったあとで、 それ以上の展開を望まない場合に設定します。 .It Ic nonomatch .\" #### modified by kuma 96.12.23 #### セットされると、ファイル名展開の結果が空になってもエラーとせず、 展開前のパターンをそのまま残します。 .\" #### modified by kuma 96.12.23 #### ただし、`echo [' のような、 展開前のパターンが文法的に正しくない場合はエラーになります。 .It Ic notify セットされると、シェルがジョブの終了を随時報告するようになります。 通常はプロンプトの表示直前にのみ報告が行われます。 .It Ic path .\" #### modified by kuma 96.12.23 #### path 変数の各単語は、コマンドファイルを検索すべきディレクトリ名を表します。 空の単語はカレント・ディレクトリを示します。 .Ar path 変数が設定されて いない場合、フルパス指定によるコマンド実行のみが可能になります。 通常の検索パスは `.'、`/bin'、`/usr/bin' です。しかし、これらの値はシステムによって異なります。 スーパーユーザのデフォルトの検索パスは `/etc'、`/bin'、`/usr/bin' です。 .Fl c オプションも .Fl t オプションも指定されなかった場合、 シェルは .Ar path 変数で指定されたディレクトリの内容をハッシュ・テーブルに保存します。 ハッシュ・テーブルは、起動時に .Ar \&.cshrc を読み込んだ後と .Ar path 変数を再設定した時に再構築されます。 シェルの実行中に、 新しいコマンドがハッシュされているディレクトリに追加された場合は、 .Ic rehash コマンドによりハッシュを再構築しなければなりません。 .\" #### modified by kuma 96.12.23 #### さもなければ、コマンドが見付からない可能性があります。 .It Ic prompt 端末上で対話的に実行されているシェルにおいて、 .\" #### modified by kuma 96.12.23 #### コマンド読み込み時に表示される文字列を指定します。 `!' が含まれる場合、現在のイベント番号に置換されます。 `\e' を指定することにより、この解釈を抑制することができます。 デフォルトの値は `% 'です。スーパーユーザの場合は `# ' となります。 .It Ic savehist ログアウト時にファイル ~/.history に保存されるコマンド履歴の数を指定 します。 .\" #### modified by kuma 96.12.23 #### この値で指定される数のイベントが保存されます。 起動時に、シェルは ~/.history の内容を読み込みます。あまりに 大きな値を指定すると、シェルの起動が遅くなる場合があります。 .Ar savehist がセットされているだけの場合は .Ar history に指定された値を使用します。 .It Ic shell シェルのフルパス名を示します。実行属性が立っているが、 .\" #### modified by kuma 96.12.23 #### システムが起動できないファイルを 実行する際に起動するシェルとして用いられます(後述の .Sx 非組み込みコマンドの実行 の項を参照)。システム依存の値で初期化されます。 .It Ic status 最後に実行したコマンドの終了ステータス値を保持します。 異常終了した場合は、値に 0200 が加算されます。 組み込みコマンドが失敗した場合は `1' に、成功した場合は `0' になります。 .It Ic time .\" #### modified by kuma 96.12.23 #### コマンドの自動計時を制御します。値が設定されている場合、 コマンドがその値よりも長く CPU 秒数を消費した場合には、 コマンド終了時にユーザ時間、システム時間、実時間と、 利用率すなわちユーザ+システム時間と実時間のパーセンテージが出力されます。 .It Ic verbose .Fl v コマンドラインオプションが指定されていた場合にセットされます。 ヒストリ置換が行われたあと、コマンドの内容が出力されます。 .El .Ss 非組み込みコマンドの実行 実行すべきコマンドが組み込みコマンドでなかった場合、シェルはコマンドを .Xr execve 2 システムコールによって起動しようとします。シェル変数 .Ar path .\" #### modified by kuma 96.12.23 #### の各単語は、シェルがコマンドを実行しようとするディレクトリ名を表します。 .Fl c オプションも .Fl t オプションも指定されなかった場合、 .\" #### modified by kuma 96.12.23 #### シェルはそれらのディレクトリ内にあるファイル名のハッシュ値を計算し、 シェル内部のテーブルに格納します。これは、 コマンドが存在する可能性のあるディレクトリだけで .Ic exec を試みるようにするためです。 この近道によって、サーチ・パスにたくさんのディレクトリが指定されている時、 コマンドの位置決定が著しく高速化されます。 この機能が( .Ic unhash .\" #### modified by kuma 96.12.23 #### コマンドによって)停止されている場合、または .Fl c または .Fl t オプションが起動時に指定された場合、または .Ar path .\" #### modified by kuma 96.12.23 #### 中の単語で `/' から始まらないものについては、ハッシュが用いられることはありません。 この場合は、 .Ar path の要素にコマンドラインで指定されたコマンドを連結した名前を持つ ファイルを実行しようと試みます。 .Pp 括弧で囲まれたコマンドは、つねにサブシェルによって実行されます。ですから、 .Pp .Dl (cd ; pwd) ; pwd .Pp はホーム・ディレクトリの値を表示しますが、カレント・ディレクトリ(ホーム・ .\" #### modified by kuma 96.12.23 #### ディレクトリの後に表示されます)は移動しません。 一方、 .Pp .Dl cd ; pwd .Pp を実行すると、カレント・ディレクトリがホーム・ディレクトリに移動します。 括弧で囲まれたコマンドは、現在のシェルのカレント・ディレクトリに 影響を与えずにコマンドを実行する場合にしばしば用いられます。 .Pp 実行属性が立っているにもかかわらず、 システムによって実行可能ではないファイルは シェルコマンドファイルであるとみなし、 サブシェルを起動してそのファイルを読み込ませます。 .Pp .Ic shell という名前のエイリアスが存在する場合、 エイリアスの値はシェルコマンドファイルを実行する場合の 引数リストの前に挿入されます。エイリアスの値の最初の単語は シェルのフルパス名でなければいけません(たとえば `$shell')。 .\" #### modified by kuma 96.12.23 #### これはエイリアス展開としては特別のもので、かなり後の時点に行われ、 引数リストを修正せずに、その前に単語を挿入するための手段を提供します。 .Ss シグナル処理 シェルは、通常 .Ar quit シグナルを無視します。バックグラウンドのジョブ( .Ic \&& または .Ic bg または .Ic %... & .\" #### modified by kuma 96.12.23 #### によるコマンド)はキーボードから入力されたシグナルに影響されません (hangup も含みます)。他のシグナルに対する挙動は親の環境を引き継ぎます。 シェル・スクリプトでの interrupt と terminate シグナルに対する処理は .Ic onintr によって制御することができます。ログイン・シェルは .Ar terminate シグナルを捕捉します。それ以外のシェルでは、 .Ar terminate シグナルはシェルの親の状態に従ってチャイルドプロセスに渡されます。 ログイン・シェルが .Pa \&.logout ファイルを読み込んでいる間は interrupt は無視されます。 .Sh 作者 William Joy。 ジョブ制御とディレクトリ・スタックは J.E. Kulp of IIASA, Laxenburg, Austria によって、 .\" #### modified by kuma 96.12.23 #### 現在とは異なる文法のものが実装されました。 ファイル名補完は Ken Greer, HP Labs が、 .\" #### modified by kuma 96.12.23 #### 8 bit クリーンな実装は Christos S. Zoulas, Cornell University によって行われました。 .Sh 関連ファイル .Bl -tag -width /etc/passwd -compact .It Pa ~/.cshrc シェルが起動されるときに読み込まれる。 .It Pa ~/.login ログイン・シェルの場合、ログイン時に `.cshrc' の後に読み込まれる。 .It Pa ~/.logout ログイン・シェルにおいてログアウト時に読み込まれる。 .It Pa /bin/sh 標準シェル。`#' で始まらないシェル・スクリプトの実行に用いる。 .It Pa /tmp/sh* `<<' の処理に用いられる一時ファイル。 .It Pa /etc/passwd `~name' 展開時に用いられるホーム・ディレクトリに関する情報を得る。 .El .Sh 制限事項 .\" #### modified by kuma 96.12.23 #### 単語の長さは 1024 文字に制限されます。引数リストは、システムによって 10240 文字に制限されています。ファイル名展開を含む引数の数は、 引数リストの文字数の 6 分の 1 に制限されています。 コマンド置換の結果は、引数リストと同数の制限があります。 ループ検出のため、1 行に対するエイリアス展開は 20 回までに制限されています。 .Sh 関連項目 .Xr sh 1 , .Xr su 1 , .Xr access 2 , .Xr execve 2 , .Xr fork 2 , .Xr killpg 2 , .Xr pipe 2 , .Xr setrlimit 2 , .Xr sigvec 2 , .Xr umask 2 , .Xr wait 2 , .Xr tty 4 , .Xr a.out 5 , .Xr environ 7 .br .Em An introduction to the C shell .Sh 歴史 .Nm csh は .Bx 3 で追加されました。 .\" #### modified by kuma 96.12.23 #### コマンドインタプリタとしては、履歴(参照: .Sx ヒストリ置換 )、ジョブ制御 (参照: .Sx ジョブ .\" #### modified by kuma 96.12.23 #### 参照)、対話的なファイル名補完とユーザ名補完(参照: .Sx ファイル名補完 .\" #### modified by kuma 96.12.23 #### )、C言語ライクな文法を採用して実装した最初のものです。 これらの機構にいくつかの追加機能(といくらかのバグの可能性)を 持つシェルは、現在ではたくさんあります。 これらは usenet から入手することができます。 .Sh バグ コマンドが停止状態から復帰したとき、もしそのコマンドが起動したときの ディレクトリとカレント・ディレクトリが異なるなら、 シェルはコマンドを起動したときのカレント・ディレクトリの値を表示します。 .\" #### modified by kuma 96.12.23 #### これは、そのジョブが内部的にディレクトリを変更した場合は誤解(間違った情報) を与える可能性があります。 .Pp シェルの組み込みコマンドは中断(suspend)も再開もできません。 `a ; b ; c' のようなコマンド列も適切には中断することができません。 たとえば、 `b' の実行を中断した場合には、 すぐに `c' の実行が開始されてしまいます。これは .Ar alias としてコマンド列を指定している場合に特に目立ちます。 このようなコマンド列は `()' で囲んでサブシェルで実行されるようにすることによって、 適切に停止させることが可能になります(`( a ; b ; c )'のように)。 .Pp プロセスを起動したあとの端末出力の制御が貧弱です。おそらく、 このために、 .\" #### modified by kuma 96.12.23 #### もっと良い仮想端末インタフェースを開発したいと考える人がいても何ら不思議はないです。 仮想端末インタフェース上なら、 もっと おもしろい端末出力の制御が可能になるでしょう。 .Pp .\" #### modified by kuma 96.12.23 #### シェル関数をシミュレートするために、エイリアスを不格好に用いてしまうことが よくあります。シェル関数がサポートされるべきです。 .Pp ループ中のコマンド入力において、 `?' プロンプトに続けて入力された内容はヒストリに残りません。 制御構造は組み込みコマンドとして解釈されるのではなく、 文法的に解釈するようにするべきです。これにより制御コマンドをどこにでも 置けるようになり、`\&|', `&', `;' との組み合わせが 自由にできるようになります。 .Pp コマンド置換の出力にも `:' 修飾子が適用できるべきです。 .Pp .\" #### modified by kuma 96.12.23 #### ファイル名補完機構の実装は不細工かつ非効率的です。 diff --git a/ja_JP.eucJP/man/man1/cu.1 b/ja_JP.eucJP/man/man1/cu.1 index 6b7ea49a19..9122d5e51b 100644 --- a/ja_JP.eucJP/man/man1/cu.1 +++ b/ja_JP.eucJP/man/man1/cu.1 @@ -1,325 +1,324 @@ ''' %Id: cu.1,v 1.1 1993/08/04 19:31:53 jtc Exp % .\" jpman %Id: cu.1,v 1.2 1997/03/28 10:54:42 mutoh Stab % .TH cu 1 "Taylor UUCP 1.06" .SH 名称 cu \- 別のマシンと接続する .SH 書式 .B cu [ options ] [ system | phone | "dir" ] .SH 解説 .I cu コマンドは、他のシステムを呼び出し、ダイヤルイン端末として働きます。 本コマンドは、 エラーチェックを行わない、 簡単なファイル転送プログラムとしても使用できます。 .I cu は、1 つの引数を、オプションとともに指定可能です。引数として指定する 文字列が "dir" の場合には、cu はポートとの直接接続を行ないます。 本オプションは、ユーザがポートへのライトアクセスを行なう場合にのみ 使用され、通常はモデム等の設定のために用いられます。 引数が数字の場合には、その引数は電話番号として解釈されます。そうで ない場合には、その引数は呼びだすシステム名として解釈されます。 .B \-z または .B \-\-system オプションは、数字で始まるシステム名を引数で指定する場合に指定しなけ ればならないものであり、 .B \-c または .B \-\-phone オプションは、数字以外の記号で始まる電話番号を引数で指定する場合に指 定しなければなりません。 .I cu は、UUCP設定ファイルに記述されたポートを用います。もし単にシステム名 だけが引数で与えられた場合、そのシステムへの発呼に最も適したポートが 選ばれます。 .B \-p,\-\-port,\-l,\-\-line,\-s や .B \-\-speed オプションが指定された場合、ポート選択を制御することが可能です。 リモートシステムとの間でコネクションが設定された場合、 .I cu は 2 プロセスを fork します。1 プロセスは、ポートからのデータ読みだしと 端末へのデータ書き込みを行ない、もう 1 プロセスは、端末からのデータ読み 出しとポートへのデータ書き込みを受け持ちます。 .I cu は、通信中に使用可能なコマンドがあります。 それらのコマンドはすべて、エスケープ文字から始まります。 エスケープ文字は、デフォルトでは .B ~ (チルダ)です。エスケープ文字は、行頭において入力された場合にのみ認識 されます。エスケープ文字を行頭に含むデータをリモートホストに送り たい場合には、当該エスケープ文字を 2 回入力しなければなりません。全 てのコマンドは、1 文字か、もしくは .B % 文字(パーセント記号)に続く複数文字です。 .I cu では、以下のコマンドを使用できます。 .TP 5 .B ~. 通信を終了します。 .TP 5 .B ~! command シェル経由でコマンドを実行します。コマンドが指定されない場合には、 シェルが起動されます。 .TP 5 .B ~$ command コマンドを起動します。その結果、標準出力に出力されたデータを、リ モートシステムに送ります。 .TP 5 .B ~| command コマンドを起動します。リモートシステムからの出力 データをこのコマンドの標準入力とします。 .TP 5 .B ~+ command コマンドを起動します。リモートシステムからの出力 データをこのコマンドの標準入力とします。そして、コマンドから標準出力に出力さ れたデータを、リモートシステムに送ります。 .TP 5 .B ~#, ~%break 可能であればブレーク信号を送ります。 .TP 5 .B ~c directory, ~%cd directory ローカルディレクトリを変更します。 .TP 5 .B ~> file ファイルをリモートシステムに送ります。本コマンドは、ファイルを通信路を 経由して、ファイルをダンプするのに用いられます。この場合、リモートシス テムがこの動作を想定して動作しているものとみなして動作しますので、注意 して下さい。 .TP 5 .B ~< リモートシステムからファイルを受信します。このコマンドを実行すると、 .I cu コマンドは、ローカルファイル名と、ファイル転送のためにリモート側で実 行すべきコマンドの入力を促します。本コマンドは、 .B eofread 変数で指定される文字を受信するまでデータ受信を継続します。 .TP 5 .B ~p from to, ~%put from to ファイルをリモート Unix システムに送信します。本コマンドは、リモート システムがファイルを受信するために必要なコマンドを自動的に起動します。 .TP 5 .B ~t from to, ~%take from to リモート Unix システムから、ファイルを取得します。本コマンドは、リモート システムからファイルを送信するために必要なコマンドを自動的に起動します。 .TP 5 .B ~s variable value .I cu の変数を、指定した値に設定します。値が指定されなかった場合、変数は .B true に設定されます。 .TP 5 .B ~! variable .I cu の変数を .B false に設定します。 .TP 5 .B ~z cu セッションをサスペンドします。この機能は、そんなに多くのシステムで サポートされているわけではありません。 ^Z によってジョブをサスペンドできるシステムでは、 .B ~^Z も、セッションをサスペンドします。 .TP 5 .B ~%nostop XON/XOFF 制御を無効にします。 .TP 5 .B ~%stop XON/XOFF 制御を有効にします。 .TP 5 .B ~v 全ての変数と、その変数に設定された値を表示します。 .TP 5 .B ~? 使用可能なすべてのコマンドを表示します。 .I cu は、いろんな変数を備えています。これらの環境変数一覧は、 .B ~v コマンドを用いて表示することができ、 .B ~s もしくは .B ~! コマンドを用いて設定することが可能です。 .TP 5 .B escape エスケープ文字。初期値は .B ~ (チルダ)です。 .TP 5 .B delay この変数が true の場合には、 .I cu はエスケープ文字を受信してからローカルシステム名を出力するまでに 1 秒のウェイトが入ります。デフォルトでは true です。 .TP 5 .B eol 行末文字として認識される文字の一覧を表示します。エスケープ文字は 以下のいずれかが現れた後にしか認識されません。デフォルトでは、 -キャリッジリターン +復帰 および、^U, ^C, ^O, ^D, ^S, ^Q, ^R の各文字です。 .TP 5 .B binary ファイルを送信する時に、バイナリデータを転送するかしないかを設定します。 本変数が false の場合には、ファイル中のニューライン記号はすべて、キャリッ ジリターンに変換されます。 デフォルトでは false です。 .TP 5 .B binary-prefix .B binary 変数が true の状態でファイル転送を行う時に、 バイナリ文字を送る前に使われる文字列の設定を決めます。 デフォルトでは ^V に設定されます。 .TP 5 .B echo-check リモートシステムのエコーバックをチェックすることで、ファイル転送のチェ ックをするかどうか決めます。しかし、あまりちゃんと動かないでしょう。 デフォルトでは false です。 .TP 5 .B echonl ファイル中の1行を送信した後に検出しようとする文字を設定します。 -デフォルトでは、キャリッジリターンです。 +デフォルトでは、復帰文字です。 .TP 5 .B timeout エコーバックもしくは .B echonl 文字の検出をタイムアウトとする時間を秒単位で設定します。 デフォルトでは 30 です。 .TP 5 .B kill エコーチェックが失敗した場合に、1 行削除に使う文字を設定します。 デフォルトでは ^U です。 .TP 5 .B resend エコーチェックが失敗しつづけた場合に、1 行を再送する回数を設定します。 デフォルトでは 10 です。 .TP 5 .B eofwrite .B ~> コマンドを用いてファイルを送信し終った場合に、最後に送信する文字列を 設定します。デフォルトでは、^D です。 .TP 5 .B eofread .B ~< コマンドを用いてファイルを受信する場合に、検出する文字列を設定します。 デフォルトでは $ です。この文字列は、典型的なシェルプロンプトです。 .TP 5 .B verbose ファイル転送時に、転送情報を表示するかどうか設定します。デフォルトで は true です。 .SH オプション .I cu. コマンドでは、以下のオプションが指定可能です。 .TP 5 .B \-e, \-\-parity=even 偶数パリティを用います。 .TP 5 .B \-o, \-\-parity=odd 奇数パリティを用います。 .TP 5 .B \-\-parity=none パリティは用いません。 .B \-e と .B \-o が同時に指定された場合もパリティなしになります。 .TP 5 .B \-h, \-\-halfduplex 文字のローカルエコーを許可します(半二重モード)。 .TP 5 .B \-\-nostop XON/XOFF 制御を無効にします。デフォルトでは有効です。 .TP 5 .B \-E char, \-\-escape char エスケープ文字を指定します。初期値は .B ~ (チルダ)です。 .B \-E '' とすることにより、エスケープ文字を無視できます。 .TP 5 .B \-z system, \-\-system system 発呼先のシステムを指定します。 .TP 5 .B \-c phone-number, \-\-phone phone-number 発呼先の電話番号を指定します。 .TP 5 .B \-p port, \-\-port port 使用するポートを指定します。 .TP 5 .B \-a port .B \-\-port port と同じです。 .TP 5 .B \-l line, \-\-line line 使用する回線を、デバイス名で指定します。本オプションは、UUCP 設定ファイル に記述されていないポートを用いて通信を行なう場合に使用されます。当該デバ イスには、write パーミッションが許可されていることが必要になります。 .TP 5 .B \-s speed, \-\-speed speed 通信速度(ボーレート)を設定します。 .TP 5 .B \-# # に位置するのは数字です。 .B \-\-speed # と同じです。 .TP 5 .B \-n, \-\-prompt 使用する電話番号の問い合わせプロンプトを出力します。 .TP 5 .B \-d デバッグモードに入ります。これは .B \-\-debug all と同様です。 .TP 5 .B \-x type, \-\-debug type 特定のデバッグタイプを有効にします。タイプとしては、abnormal, chat, handshake, uucp-proto, proto, port, config, spooldir, execute, incoming, outgoing があります。 .I cu では、abnormal, chat, handshake, port, config, incoming, outgoing が意味を持ちます。 本オプションでは、コンマで区切ることで複数のデバッグタイプが指定可能です。そして、 .B \-\-debug オプションは、1回のコマンド起動で複数回指定可能です。 また、タイプとして数字を指定することも可能です。例えば、 .B \-\-debug 2 という指定は、 .B \-\-debug abnormal,chat と同じ意味です。 .B \-\-debug all は、すべてのデバッグオプションが指定されたのと同じです。 .TP 5 .B \-I file, \-\-config file -使用するコンフィギュレーションファイルの指定を行ないます。ただし、本オ -プションは、 +使用する設定ファイルの指定を行ないます。ただし、本オプションは、 .I cu のコンパイル条件によっては使用できないことがあります。 .TP 5 .B \-v, \-\-version バージョンを表示し、終了します. .TP 5 .B \-\-help ヘルプメッセージを表示し、終了します。 .SH バグ 本プログラムは、あまり良好に動作しません。 .SH 関連ファイル ファイル名は、コンパイル環境や設定ファイルの内容によって変わることが あります。ここに挙げるのは、一例でしかありません。 .br /etc/uucp/config - 設定ファイル .SH 作者 Ian Lance Taylor diff --git a/ja_JP.eucJP/man/man1/dialog.1 b/ja_JP.eucJP/man/man1/dialog.1 index 37c8ec858b..0114a78dd9 100644 --- a/ja_JP.eucJP/man/man1/dialog.1 +++ b/ja_JP.eucJP/man/man1/dialog.1 @@ -1,282 +1,280 @@ .TH DIALOG 1 "10 January 1994" .\" jpman %Id: dialog.1,v 1.3 1997/07/27 11:54:02 horikawa Stab % .SH 名称 dialog \- シェルスクリプトからダイアログボックスを表示する .SH 書式 .B dialog --clear .br .BI "dialog --create-rc " file .br .B dialog [ .BI "\-\-title " title ] [ .B \-\-clear ] [ .BI "\-\-hline " line ] [ .BI "\-\-hfile " file ] .B box-options .SH 解説 .B dialog はシェルスクリプトから、 質問形式、メッセージ表示形式など、 いろいろな種類のダイアログボックスを表示するプログラムです。 現在サポートされているイアログボックスは 以下のとおりです。 .LP .BR yes/no " ボックス、" " menu" " ボックス、" " input" " ボックス、" .BR message " ボックス、" " text" " ボックス、" " info" " ボックス、" .BR checklist " ボックス、" " program" " ボックス" .SH オプション .TP .B \-\-clear 終了時に画面をクリアします。 .TP .BI \-\-create-rc " file" .B dialog はランタイムコンフィグレーションをサポートしています。 .I file -にサンプルのコンフィグレーションファイルを書き出します。 +にサンプルの設定ファイルを書き出します。 .TP .BI \-\-title " title" ダイアログボックスの最上行に表示する文字列 .I title を指定します。 .TP .BI \-\-hline " line" ダイアログボックスの最下行に表示する文字列 .I line を指定します。 .TP .BI \-\-hfile " file" ? キーか F1 キーをタイプしたときに 表示する .I file を指定します。 .TP .B ボックスオプション .TP .BI \-\-yesno " text height width" 縦 .I height 横 .I width のサイズの .BR yes/no ダイアログボックスを表示します。 .I text で指定された文字列はダイアログボックスの内部に 表示されます。 この文字列が長すぎて、1行で表示できない場合は、 自動的に複数行に分割されます。 .I text が文字列 .I "\en" もしくは改行文字 .I `\en\' を含んでいる場合、その場所で 改行します。 このダイアログボックスは ユーザに yes あるいは no という返答を求める 際に役に立ちます。 ダイアログボックスは .B Yes と .B No のボタンを持っており、 .IR TAB キーで選択することができます。 .TP .BI \-\-msgbox " text height width" .B message ボックスは .B yes/no ボックスと似ていますが、 .B message ボックスの場合、 .B OK ボタンしか表示されません。 このダイアログボックスを使って、メッセージを表示 することができます。 ユーザはこのメッセージを読んだ後、 .I ENTER キーを押して、 .B dialog を終了し、シェルスクリプトの実行を続けることになります。 .TP .BI \-\-infobox " text height width" .B info ボックスは基本的に .B message ボックスと同じですが、メッセージを表示すると すぐに終了します。 .B dialog の終了時に画面はクリアされません。 メッセージはシェルが後で画面をクリアするまで残ります。 これは終了までに時間のかかる処理を行うことを、 ユーザに知らせるときに便利です。 .TP .BI \-\-inputbox " text height width" .B input ボックスはユーザに文字列を入力させる ときに役に立ちます。入力時に .I バックスペース キーを 押すことで、タイプミスを訂正することができます。 入力文字列がダイアログボックスより長くなった 場合は、入力フィールドがスクロールします。 終了時には入力された文字列を .IR stderr に出力します。 .TP .BI \-\-textbox " file height width" .B text ボックスは、テキストファイルの内容をダイアログボックスの中に 表示するためのものです。これは簡単なテキストファイルビュアーの ようなものです。 表示中は、 .IR UP/DOWN "、" PGUP/PGDN "、" HOME/END キーを使ってファイル中を移動できます。 1 行がダイアログボックスより長い場合は、 .I LEFT/RIGHT で左右にスクロールできます。 より便利に使うために、 前方検索、後方検索の機能も実装されています。 .IP "\fB\-\-menu \fItext height width menu-height \fR[ \fItag item \fR] \fI..." .B menu ボックスは、その名のとおりダイアログボックスにリストを表示して ユーザに選ばせるものです。 各メニューは .I tag と .I item で構成されます。 .I tag は他の項目と区別するためのものです。 .I item はその項目が表す内容を短く記述したものです。 ユーザは .I UP/DOWN キー、または .I tag の先頭文字、 .I 1-9 を押すことで項目を選べます。 .I menu-height は一度に表示できるメニューの数を設定します。 .I menu-height より多くの項目がある場合、メニューがスクロールします。 .B dialog を終了するとき、 選択されたメニューの .I tag が .I stderr に出力されます。 .TP .BI \-\-prgbox " command height width" .B program ボックスは .B command の出力をダイアログボックスに表示します。 .IP "\fB\-\-checklist \fItext height width list-height \fR[ \fItag item status \fR] \fI..." .B checklist ボックスは、 メニューから項目を選ぶという点で .B menu ボックスと似ていまが、 項目のなかから 1 つを選ぶのではなく、 ユーザが各項目をオン・オフに設定することができます。 各項目のオン・オフの初期設定は .I status で設定できます。 終了時には、 ステータスがオンになっている項目の .I tag が .I stderr に出力されます。 .SH ランタイムコンフィグレーション .TP 4 1. -以下のように、サンプルのコンフィグファイルを作成します。 +以下のように、サンプルの設定ファイルを作成します。 .LP .in +1i "dialog --create-rc " .TP 4 2. .B dialog -は以下のように読み込むコンフィグファイルを決定します。 +は以下のように読み込む設定ファイル決定します。 .RS .TP 4 a) 環境変数 .B DIALOGRC -が設定されている場合、その値はコンフィグレーション -ファイル名として扱われます。 +が設定されている場合、その値は設定ファイル名として扱われます。 .TP 4 b) (a) で指定されたファイルが存在しなかった場合、 .I $HOME/.dialogrc -がコンフィグレーションファイルとして扱われます。 +が設定ファイルとして扱われます。 .TP 4 c) (b) のファイルが存在しなかった場合、 デフォルトの設定で起動します。 .RE .TP 4 3. -サンプルのコンフィグレーションファイルを編集して、 +サンプルの設定ファイルを編集して、 2 を参考に .B dialog が見付けることができる場所にコピーします。 .SH 環境変数 .TP 15 .B DIALOGRC -独自に設定をする場合は、コンフィグレーション -ファイル名を指定します。 +独自に設定をする場合は、設定ファイル名を指定します。 .SH 関連ファイル .TP 20 .I $HOME/.dialogrc -デフォルトのコンフィギュレーションファイル +デフォルトの設定ファイル .SH 診断 .BR dialog が .BR Yes か .BR OK を押されて終了した場合は 0 を、 .BR No か .BR Cancel を押されて終了した場合は 1 を返します。 また、 .B dialog の内部でエラーが起こるか、 .B dialog を .I ESC キーを押して終了させた場合、-1 を返します。 .SH 関連項目 .B dialog(3) .SH バグ .I タブ キャラクタを含むテキストファイルを .B text ボックス で表示すると、うまく表示されません。 テキストファイルの中の .I タブ キャラクタは 事前にスペースに変換しておかなくてはなりません。 .TP 画面の書き換えには時間がかかります。 .SH 作者 Savio Lam (lam836@cs.cuhk.hk) diff --git a/ja_JP.eucJP/man/man1/ed.1 b/ja_JP.eucJP/man/man1/ed.1 index 325013ebd9..55ebd8c0b4 100644 --- a/ja_JP.eucJP/man/man1/ed.1 +++ b/ja_JP.eucJP/man/man1/ed.1 @@ -1,966 +1,966 @@ .\" %Id: ed.1,v 1.8.2.2 1998/01/24 14:07:29 helbig Exp % .\" jpman %Id: ed.1,v 1.2 1997/06/09 15:03:56 jsakai Stab % .TH ED 1 "21 May 1993" .SH 名称 .\" ed, red \- text editor ed \- 行指向のテキストエディタ .SH 書式 ed [-] [-sx] [-p \fIstring\fR] [\fIfile\fR] .\" .LP .\" red [-] [-sx] [-p \fIstring\fR] [\fIfile\fR] .SH 解説 .B ed は、行指向のテキストエディタです。 本コマンドを用いることで、テキストファイルの生成、表示、変更その他の操作を 行なうことができます。 .\" .B red .\" is a restricted .\" .BR ed : .\" it can only edit files in the current .\" directory and cannot execute shell commands. .I file 引数を指定して本コマンドを起動すると、ファイル .I file のコピーをエディタのバッファに読み込みます。 以後の変更はそのコピーに対して行なわれ、 .I file で指定したファイル自身が直接変更されることはありません。 .B ed コマンドを終了する際、 .I `w' コマンドで明示的にセーブしなかった変更点はすべて失われます。 編集は、 .I コマンド モードと .I 入力 モードの 2 つの異なるモードを使い分けて行ないます。 .B ed を起動したら、まずコマンドモードに入ります。 本モードでは、標準入力からコマンドを読み込み、それを実行することで エディタバッファの内容操作を行ないます。 典型的なコマンドは、以下のようなものです。 .sp .RS ,s/\fIold\fR/\fInew\fR/g .RE .sp これは、編集しているテキストファイル中に .I old という文字列があったら、これらをすべて文字列 .IR new に置き換えるコマンドです。 .I `a' (append)、 .I `i' (insert)、あるいは .I `c' (change) といった入力コマンドが入力された場合、 .B ed は入力モードに移行します。これが、ファイルにテキストを追加する 主たる方法です。 このモードでは、コマンドを実行することはできません。 そのかわり、標準入力から入力されたデータは、 直接エディタバッファへと書き込まれます。行は、改行キャラクタまで のテキストデータおよび、最後の .IR 改行 キャラクタを含むデータから構成されます。 ピリオド 1 つだけ (\fI.\fR) の行を入力すると、入力モードを終了します。 すべての .B ed コマンドは、全ての行もしくは指定した範囲の行の操作が可能です。例えば、 .I `d' コマンドは指定した行を削除し、 .I `m' コマンドは指定した行を移動します。 上に示した例のように、置換によってある行の一部分のみを変更することは 可能ですが、 .I `s' コマンドは、一度に全部の行にわたって変更を行なうことも可能です。 一般的には、 .B ed コマンドは、0 個以上の行番号および、それに連なる 1 文字コマンドから 成り立ちます。場合によっては追加のパラメータをもつこともあります。 いうなれば、コマンドは以下の構造を持ちます。 .sp .RS .I [address [,address]]command[parameters] .RE .sp 行番号はコマンドの操作対象行あるいは対象行範囲を示します。 行番号の指定個数が、コマンドが受け付け可能な個数よりも少ない場合には、 デフォルトの行番号が採用されます。 .SS オプション .TP 8 -s 診断メッセージを抑制します。本オプションは、 .BR ed の入力がスクリプトによって行なわれる場合に有効です。 .TP 8 -x 続く読み書きの際に行なわれる暗号化に用いる鍵の入力を促します ( .I `x' コマンドを参照して下さい)。 .TP 8 .RI \-p \ string コマンドプロンプトとして表示する文字列を指定します。 コマンドプロンプトは、コマンドモードで .I `P' コマンドを実行することで、表示する/しないを切り替えることが可能です。 .TP 8 .I file 編集対象のファイルを指定します。 .I file 名の先頭に感嘆符 (!) が付加されていた場合、そのファイル名はシェルコマンドと して解釈されます。この場合、編集対象のテキストは、 .I file で指定したコマンドを実行した結果、標準出力に出力されるデータです。 先頭が感嘆符で始まるファイルを編集する場合には、ファイル名の先頭に バックスラッシュ (\\) を付加して下さい。 感嘆符以外の文字で始まるファイル名については、編集対象のファイル名は .I file となります。 .SS 行指定 行は、バッファ内の行番号で表現されます。 .B ed は .I 現在行 と呼ばれるものを管理しており、 コマンドに行番号が指定されない場合は、 現在行がデフォルト行として用いられます。 ファイルが最初に読み出された直後は、現在行はファイルの最後の行となります。 一般的に、現在行はコマンドが操作した最後の行となります。 行番号は、以下の一覧のうち 1 つおよび、補助的に付加される 相対行番号 (オフセット) から構成されます。 相対行番号は、任意の数字の組合せと演算子、そして空白文字を含みます ( 例えば .IR + , .I - や .IR ^ が演算子に含まれます ) 。 行番号は、左から右に解釈され、それらの演算子を含む値は、現在行からの相対行番 号と解釈されます。 行番号の表現に関して上記の規則が適用される中で、行番号 .I 0 ( ゼロ ) に関しては、例外的な扱いがされます。 これは「最初の行より前」を意味し、 それが正しい意味を持つ場合は常に利用可能です。 行範囲は、カンマもしくはセミコロンで区切られた 2 つのアドレスで示されます。 最初に指定される行番号は、次に指定される行番号を超える値を指定して はいけません。行範囲指定で行番号が 1 つしか指定されなかった場合には、次に 指定されるアドレスと最初に指定されたアドレスが同じものであるとみなされ ます。ここで 2 つを超える数の行番号が指定されると、最後の 2 つの行番号で 決定される範囲がコマンド実行対象になります。行番号の指定を 1 つだけしか 想定していないコマンドの場合、最後の 1 つの行番号の行がコマンド実行対象 となります。 コンマで区切られた各行番号は、現在行からの相対行を指し示します。 セミコロンで区切られている場合は、範囲の始めの行は現在行が設定され、 範囲の終りは始めの行からの相対行で表わされます。 行番号の指定には、以下のシンボルが使用可能です。 .TP 8 \&. バッファ中の現在行を表します。 .TP 8 $ バッファ中の最終行を表します。 .TP 8 n The バッファ内の .IR n 行目を表します。 .I n は、 .I [0,$] の間です。 .TP 8 - or ^ 1 行前の行です。 相対行指定 .I -1 と同等であり、複数指定することで効果を累積することが可能です。 .\" --- という指定をすることで、2 行前を示すことができます。 .\" ↑原文中に無いのでコメントアウト sakai@jp.freebsd.org (Jun 9,1997) .TP 8 -\fIn\fR or ^\fIn\fR .IR n 行前の行を表します。 .I n は、負でない整数です。 .TP 8 + 次の行を表します。 これは、 .I +1 と同様であり、- と同様の累積的指定が可能です。 .TP 8 +\fIn\fR or whitespace\fIn\fR .I n 行後ろの行を表します。 .I n は、負でない整数です。 .I n の前に .I whitespace ( 空白文字 ) を付加して指定した場合も .I +n と解釈されます。 .\" ↓原文中に無いのでコメントアウト sakai@jp.freebsd.org (Jun 9,1997) .\" ただし、空白文字による指定を行なった場合は、単独では現在行からの相対行数を .\" 指定することはできず、相対行指定の基準となる行をその前に指定しなければなり .\" ません。 .TP 8 , \fRor\fB % バッファの最初から最後までを表します。これは、 .I 1,$ と指定した場合と同等です。 .TP 8 ; バッファ中の現在行から最後の行までを表します。これは、 .I .,$ と指定した場合と同等です。 .TP 8 .RI / re/ 指定された正規表現 .IR re を含む、(現在行よりも後ろの) 次の行を表します。 必要であれば、文字列検索はテキスト先頭に折り返し、 現在行に達するまで検索を行ないます。 // は、最後に行なった検索を繰り返します。 .TP 8 .RI ? re? The 指定した正規表現 .I re を含む、現在行より前の行を表します。 必要であれば、文字列検索はテキストの最後に折り返し、 現在行に達するまで検索を行ないます。 ?? は、最後に行なった検索を繰り返します。 .TP 8 .RI \' lc .I `k' (mark) コマンドでマークをつけた行を表します。 .I lc は、英小文字です。 .SS 正規表現 正規表現はテキストを選択する際に用いるパターンです。 例えば次の .B ed コマンド .sp .RS g/\fIstring\fR/ .RE .sp は .IR string を含む全ての行を表示します。 正規表現は .I `s' コマンドで古いテキストを新しいテキストで置き換える際にも用いられます。 文字リテラルを指定するのに加え、 正規表現は文字列のクラスを表現することができます。 このようにして表現された文字列は、それに対応する正規表現に「マッチする」と 言います。 ある正規表現が一つの行の中の複数の文字列にマッチする場合、 マッチする部分のうち最も左にあって最も長いものが選択されます。 正規表現を組み立てる際には以下のシンボルが用いられます: .TP 8 c 以下に挙げるものを除く任意の文字 .I c は、その文字自身にマッチします。 このような文字には `{', '}', `(', `)', `<', `>' を含みます。 .TP 8 \fR\e\fIc\fR バックスラッシュでエスケープした文字 .IR c は、その文字自身にマッチします。 ただし `{', '}', `(', `)', `<', `>' を除きます。 .TP 8 \fR.\fR 任意の一文字にマッチします。 .TP 8 .I [char-class] 文字クラス .IR char-class に含まれる任意の一文字にマッチします。 文字クラス .IR char-class に `]' を含めるには、文字 `]' を最初の文字に指定します。 文字の範囲を指定するには、範囲の最後の文字との間を `-' でつなぎます。 例えば `a-z' は小文字全体を表します。 以下のようなリテラル表記も、文字集合を指定するために文字クラス .I char-class で使用することができます: .sp \ \ [:alnum:]\ \ [:cntrl:]\ \ [:lower:]\ \ [:space:] .PD 0 \ \ [:alpha:]\ \ [:digit:]\ \ [:print:]\ \ [:upper:] .PD 0 \ \ [:blank:]\ \ [:graph:]\ \ [:punct:]\ \ [:xdigit:] .sp 文字クラス .IR char-class の最初あるいは最後の文字として `-' が用いられると、 それはその文字自身にマッチします。 文字クラス .I char-class 中のこれ以外の文字は全て、それら自身にマッチします。 .sp 以下の形式の文字クラス中のパターン: .sp \ \ [.\fIcol-elm\fR.] or, .PD 0 \ \ [=\fIcol-elm\fR=] .sp は .IR locale (5) に沿って解釈されます (現在のところサポートされません)。ここで .I col-elm は .I collating element です。詳しい説明は .IR regex (3) を参照して下さい。 .TP 8 [^\fIchar-class\fR] 文字クラス .IR char-class に含まれない、改行以外の任意の一文字にマッチします。 文字クラス .IR char-class は上で定義しています。 .TP 8 ^ `^' が正規表現の最初の文字である場合、 その正規表現は行頭でのみマッチします。 それ以外の場合、`^' はそれ自身にマッチします。 .TP 8 $ `$' が正規表現の最後の文字である場合、 その正規表現は行末でのみマッチします。 それ以外の場合、`$' はそれ自身にマッチします。 .TP 8 \fR\e<\fR これに続く単一文字の正規表現あるいはその部分式が、 単語の先頭でのみマッチするようにします (この機能は利用できない 場合があります)。 .TP 8 \fR\e>\fR これに続く単一文字の正規表現あるいはその部分式が、 単語の末尾でのみマッチするようにします (この機能は利用できない 場合があります)。 .TP 8 \fR\e(\fIre\fR\e)\fR 部分式 (subexpression) .IR re を定義します。部分式はネストできます。 これ以降、\fI`\en'\fR ( .I n は [1,9] の範囲の数) の形式の後方参照は、 .I n 番目の部分式にマッチしたテキストに展開されます。 例えば、正規表現 `\e(.*\e)\e1' は、 同じ文字列が隣接しているような任意の文字列にマッチします。 部分式は左側のデリミタから順に番号が振られます。 .TP 8 * 直前にある単一文字の正規表現あるいはその部分式のゼロ回以上の繰り返しに マッチします。 `*' が正規表現あるいはその部分式の最初の文字として用いられた場合、 `*' はその文字自身にマッチします。 `*' 演算子は時に予期しない結果をもたらすことがあります。 例えば、正規表現 `b*' は文字列 `abbb' の先頭に マッチします (部分文字列 `bbb' ではありません)。 これはヌルへのマッチが最も左にあるマッチだからです。 .TP 8 \fR\e{\fIn,m\fR\e}\fR or \fR\e{\fIn,\fR\e}\fR or \fR\e{\fIn\fR\e}\fR 直前にある単一文字の正規表現あるいはその部分式の、 .I n 回以上 .I m 回以下の繰り返しにマッチします。 .I m が省略された場合、 .I n 回以上の繰り返しにマッチします。 更にコンマも省略された場合、ちょうど .I n 回の繰り返しにのみマッチします。 .LP 各 .IR regex (3) の実装によって、更にいくつかの正規表現演算子が定義されていることがあります。 .SS コマンド 全ての .B ed コマンドは、1 文字からなりますが、追加パラメータが必要なコマンドもあります。 コマンドのパラメータが複数の行にわたる場合には、そのパラメータを含めたコマンド の終りを含む行を除き、行末にバックスラッシュ (\\) を付加して下さい。 一般的には、1 行ごとに 1 コマンドを入れることが許されています。 しかしながら、ほとんどのコマンドは、コマンド実行を行なった後のデータ更新 その他を確認するために、 .I `p' (print)、 や .I `l' (list)、 .I `n' (enumerate), のような表示系のコマンドを同時に指定できます。 インタラプト (一般的には ^C) を入力することで、現在実行しているコマンドを 強制終了し、コマンドモードに戻すことができます。 .B ed は、以下のコマンドを使用できます。コマンド実行時に何の指定もない場合の デフォルトの行番号もしくは行範囲が括弧内に示されています。 .TP 8 (.)a 指定した行の後にテキストを追加します。 テキストは入力モードで入力されていきます。 現在行番号は、入力された最後の行に設定されます。 .TP 8 (.,.)c バッファ内の指定した行を変更します。指定した行のデータは、バッファから消去 され、そこに対してテキストデータを入力するようになります。 テキストは入力モードで入力されていきます。 現在行番号は、入力した最後の行に設定されます。 .TP 8 (.,.)d 指定した範囲をバッファから削除します。 削除した範囲の後に行が続いている場合、現在行番号は、その行に設定されます。 そうでない場合には、現在行番号は、削除された範囲の前の行に設定されます。 .TP 8 .RI e \ file .I file を編集し、デフォルトのファイル名を設定します。 もし .I file が指定されなかった場合には、デフォルトのファイル名が使用されます。 本コマンド実行時に、それまで別のファイルを編集していた場合には、 その内容はすべて消去され、新しいファイルが読み込まれます。 現在行番号は、入力された最後の行に設定されます。 .TP 8 .RI e \ !command command で指定されたコマンドを実行し、その結果として標準出力へ 出力されたデータを編集します (後述する .RI ! command を参照して下さい)。 デフォルトのファイル名は変更されません。 本コマンド実行時に、それまで別のファイルを編集していた場合には、 その内容はすべて消去され、標準出力へ出力されたデータが読み込まれます。 現在行番号は、入力された最後の行に設定されます。 .TP 8 .RI E \ file 無条件で .I file で指定したファイルを読み込み、編集します。 .I e コマンドと動作は似ていますが、すでにバッファ上のデータに変更が加えられ ている場合でも、警告を出さずに指定したファイルを読み込む点が異なります。 現在行番号は、入力された最後の行に設定されます。 .TP 8 .RI f \ file デフォルトファイル名を .I file に設定します。 .I file 名が指定されない場合には、デフォルトファイル名が表示されます。 .TP 8 .RI (1,$)g /re/command-list .I command-list で指定されたコマンドを、指定した正規表現 .IR re に一致する各行に対して実行します。 現在行番号は、 .I command-list で指定されたコマンドが実行される前に、指定した正規表現に一致した行 に設定されます。 .I `g' コマンドが終了した場合、現在行番号は最後にコマンドが実行された行に 設定されます。 .I command-list で指定されるコマンドは、1 行ごとに 1 つずつ書かれる必要があります。各コマンド 行の終りには、一番最後のコマンド行を除いてはバックスラッシュ (\\) を記述する 必要があります。 以下のコマンドを除くすべてのコマンドを指定可能です。 .IR `g', .IR `G', .IR `v', .IR `V'. コマンドリスト中の空行は、 .I `p' コマンドと同等に扱われます。 .TP 8 .RI (1,$)G /re/ 指定した正規表現 .IR re に一致した行に対して、対話編集を行ないます。 指定した正規表現に一致する文字列を含む行があると、その行を表示し、現在行番号を 設定します。 そして、ユーザに .I command-list の入力を促します。 .I `G' コマンドが終了した場合、現在行番号は、 .IR command-list で編集された最後の行に設定されます。 .I command-list の記述形式は、 .I `g' コマンドで指定するものと同じです。改行のみの場合は、コマンド実行をしない ( ヌルコマンドリストを指定した ) ものとみなされます。 `&' 文字のみを入力した場合には、 直前に実行した ( ヌルコマンドリストではない ) コマンドを再実行します。 .TP 8 H エラーメッセージの出力の有無を切り替えます。 デフォルトでは、エラーメッセージは出力されません。 ed スクリプトを作成する場合、スクリプトのデバッグのために、本コマンドを 最初に実行することをおすすめします。 .TP 8 h 最後に表示されたエラーメッセージを表示します。 .TP 8 (.)i 編集バッファ中の現在行の前に、テキストを挿入します。 テキストは入力モードで入力されていきます。 現在行番号は、入力された最後の行に設定されます。 .TP 8 (.,.+1)j 指定した範囲の行を 1 行に連結します。指定した行はバッファから削除され、 その行の内容を含む 1 行に置き換えられます。 現在行番号は、置き換えられた行に設定されます。 .TP 8 .RI (.)k lc 行に、英小文字 .I lc で指定したマークをつけます。 その後、マークをつけられた行は、コマンド中で .I 'lc (つまり、シングルクォートと .I lc ) として指定できるようになります。 マークは、その行が削除されるかもしくは変更されるかしない限り、消えることは ありません。 .TP 8 (.,.)l 指定した範囲の行の内容を見やすく表示します。 もし 1 つの行が 1 画面以上を占める場合 ( 例えばバイナリファイルを見ている 場合など ) `--More--' プロンプトが最下行に表示されます。 次の画面を表示する前に .B ed はリターンキーが入力されるまで待ちます。 現在行番号は、表示された最後の行に設定されます。 .TP 8 (.,.)m(.) 指定した範囲の行をバッファ内で移動します。指定した行は、 コマンドの右辺で指定した行の後ろに 移動されます。移動先の行としては、 .IR 0 (ゼロ) が指定可能です。 現在行番号は、移動された最後の行に設定されます。 .TP 8 (.,.)n 指定した行の内容を、行番号つきで表示します。 現在行番号は、表示された最後の行に設定されます。 .TP 8 (.,.)p 指定した範囲の行の内容を表示します。 現在行番号は、表示された最後の行に設定されます。 .TP 8 P コマンドプロンプト表示の有無を切り替えます。 コマンド起動時のオプション \fI-p string\fR でプロンプトが指定されていなければ、 コマンドプロンプトの表示はデフォルトでオフになっています。 .TP 8 q ed を終了します。 .TP 8 Q 無条件に ed を終了します。 このコマンドは .I q コマンドと似ていますが、まだファイルに書き出されていない 変更があっても警告せずに終了する点が異なります。 .TP 8 .RI ($)r \ file .I file で指定されたファイルを、指定した行の後ろに読み込みます。 .I file が指定されない場合、デフォルトのファイル名が読み込みに使用されます。 このコマンドに先だってデフォルトのファイル名が設定されていない場合、 デフォルトのファイル名には、 .I file で指定されたものが設定されます。 それ以外の場合、デフォルトのファイル名は変更されません。 現在行番号は、読み込まれたファイルの最後の行に設定されます。 .TP 8 .RI ($)r \ !command command で指定されたコマンドを実行し、その結果として標準出力へ出力された データを指定した行の後ろに読み込みます (後述する .RI ! command を参照して下さい)。 デフォルトのファイル名は変更されません。現在行番号は、読み込まれた最後の行の 行番号に設定されます。 .HP .RI (.,.)s /re/replacement/ .PD 0 .HP .RI (.,.)s /re/replacement/\fRg\fR .HP .RI (.,.)s /re/replacement/n .br 指定した行のテキスト中の、正規表現 .I re に一致する文字列を、文字列 .IR replacement に置き換えます。 デフォルトでは、それぞれの行で最初に一致した文字列のみを置き換えます。 .I `g' (global) サフィックスが指定された場合、一致した文字列はすべて置き換えられます。 .I `n' サフィックス ( .I n は正の整数) が指定された場合、 .I n 回目に一致した文字列だけを置き換えます。 指定した範囲で一度も文字列の置換が起こらなかった場合、エラーとみなされます。 現在行番号は、最後に置換が発生した行に設定されます。 .I re および .I replacement は、スペースおよび改行を除くすべてのキャラクタを用いて区切ることが 可能です (後述する .I `s' コマンドを見て下さい)。 最後のデリミタのうち 1 つか 2 つが省略された場合、 最後に文字列置換が発生した行は、 .I `p' コマンドが指定された場合と同様に表示されます。 .I replacement 中のエスケープされていない `&' は、一致した文字列と置き換えられます。 キャラクタシーケンス \fI`\em'\fR( .I m は [1,9] の範囲の整数です ) は、一致した文字列の .IR m 番目の後方参照で置き換えられます。 .I replacement の中に入る文字が `%' のみだった場合、 最後に行なった置換の .I replacement が使用されます。 改行を .I replacement に指定したい場合は、バックスラッシュを用いてエスケープすれば可能です。 .TP 8 (.,.)s 最後の置換を繰り返します。 この形式の .I `s' コマンドは、回数を示すサフィックス .I `n' もしくは、他の .IR `r' 、 .IR `g' 、 .I `p' のどのキャラクタとの組合せも可能です。 .I `n' が指定されると、 .I n 回目に一致した文字列だけが置換されます。 .I `r' サフィックスが指定されると、最後の置換が発生した文字列の変わりに、 最後に指定した正規表現が使用されます。 .I `g' サフィックスは、最後の置換で用いたグローバルサフィックスの使用の 有効/無効を切り替えます。 .I `p' サフィックスは、最後の置換に指定されたプリントサフィックスを反転します。 現在行番号は、最後に置換が発生した行に設定されます。 .TP 8 (.,.)t(.) 指定した範囲の行を、コマンド文字の右辺に指定した行番号の後に コピー (つまり転送) します。コピー先の行番号としては、 .IR 0 (ゼロ) の指定が許されています。 現在行番号は、コピーした一番最後の行の行番号に設定されます。 .TP 8 u 最後に実行したコマンドの実行結果を取り消し、現在行番号を、取り消したい コマンドが実行される前のものに戻します。 グローバルコマンドである .IR `g' 、 .IR `G' 、 .IR `v' 、 .I `V' については、その改変は 1 コマンドで行なわれたとして扱います。 .I `u' は自分自身の動作を取り消すこともできます。 .TP 8 .RI (1,$)v /re/command-list 指定した範囲の行のうち、指定した正規表現 .I re と一致する文字列が含まれていない行について、 .I command-list で指定したコマンドを実行します。 これは .I `g' コマンドに動作が似ています。 .TP 8 .RI (1,$)V /re/ 指定した範囲の行のうち、指定した正規表現 .IR re に一致する文字列が含まれていない行について、対話編集を行ないます。 これは .I `G' コマンドに動作が似ています。 .TP 8 .RI (1,$)w \ file 指定した範囲の行を、 .IR file で指定したファイルに書き出します。 それまで .I file に格納されていた内容は、警告なしに消去されます。 デフォルトファイル名が設定されていない場合、デフォルトファイル名は .IR file に設定されます。それ以外の場合では、デフォルトファイル名は変更されません。 ファイル名が指定されなかった場合には、デフォルトファイル名が使用されます。 現在行番号は変更されません。 .TP 8 .RI (1,$)wq \ file 指定した範囲の行を .IR file で指定したファイルに書き出し、 .I `q' コマンドを実行します。 .TP 8 .RI (1,$)w \ !command 指定した範囲の行の内容を .I `!command' の標準入力に書き出します (! command については、以下の説明を参照して下さい)。 デフォルトファイル名および現在行番号は変更されません。 .TP 8 .RI (1,$)W \ file 指定した範囲の行の内容を、 .IR file で指定したファイルの後ろに追加書き込みします。 .I `w' コマンドと似ていますが、指定したファイルにそれまで格納されていた内容 がなくなることはありません。 現在行番号は変更されません。 .TP 8 x 以降の読み書きで用いられる暗号化鍵の入力を促します。 改行のみが入力されると、暗号化は解除されます。 それ以外の場合、キー読み込み中のエコーは抑制されます。 暗号化および復号化は bdes(1) アルゴリズムを用いて行われます。 .TP 8 .RI (.+1)z n 指定した行から一度に .I n 行だけスクロールします。 .I n が指定されない場合には、現在のウィンドウサイズだけスクロールします。 現在行番号は、最後に表示した行の行番号に設定されます。 .TP 8 .RI ! command .I command で指定したコマンドを、 .IR sh (1) 経由で実行します。 .I command の最初の文字が `!'の場合には、その文字は直前に .I `!command' で実行したコマンド文字列が格納されます。 .I command 文字列をバックスラッシュ(\\)でエスケープした場合には、 .B ed は処理を行ないません。 しかし、エスケープされない .I `%' 文字があった場合には、その文字列はデフォルトファイル名に置き換えられます。 シェルがコマンド実行から戻ってきた場合には、`!' が標準出力に出力されます。 現在行番号は変更されません。 .TP 8 ($)= 指定された行の行番号を表示します。 .TP 8 (.+1)newline 指定した行を表示します。そして、現在行番号を表示した行のものに 設定します。 .SH 関連ファイル .TP 20 /tmp/ed.* バッファファイル .PD 0 .TP 20 ed.hup -端末がハングアップした場合に、 +端末が回線切断した場合に、 .B ed がバッファ内容を書き出すファイル .SH 関連項目 .IR vi (1), .IR sed (1), .IR regex (3), .IR bdes (1), .IR sh (1). USD:12-13 B. W. Kernighan and P. J. Plauger, .I Software Tools in Pascal , Addison-Wesley, 1981. .SH 制限 .B ed は .I file 引数に対してバックスラッシュエスケープ処理を施します。 つまり、ファイル名中でバックスラッシュ (\\) を前につけた文字は、 リテラルとして解釈されます。 (バイナリではない) テキストファイルの最後が改行文字で終っていない場合、 .B ed はそれを読み書きする際に改行文字を追加します。 バイナリファイルの場合は、 .B ed はこのような改行文字追加は行いません。 1 行あたりのオーバヘッドは整数 4 つ分です。 .SH 診断 エラーが発生すると、 .B ed は `?' を表示し、コマンドモードに戻るか、スクリプトによる実行のエラーの場合には プログラムを終了します。 最後のエラーメッセージについての説明は、 .I `h' (help) コマンドを用いることで表示可能です。 .I `g' (global) コマンドは、検索や置換が失敗したというエラーを隠蔽します。 そのため、スクリプトの中で条件つきコマンド実行を行なわせるのによく使われます。 例えば .sp .RS g/\fIold\fR/s//\fInew\fR/ .RE .sp は、出現した文字列 .I old をすべて文字列 .I new に置き換えます。 .I `u' (undo) コマンドがグローバルコマンドリスト内で実行された場合、コマンドリストは 1 度だけの実行になります。 診断が無効にされていないと、 .B ed を終了しようとする場合やバッファ内のデータを書き出さずに他のファイルを 編集しようとする場合にエラーになります。 その場合でも、同一のコマンドを 2 回入力すると、コマンドは成功します。 しかし、それまでの未保存の編集結果は、すべて失われます。 .SH 歴史 .I ed コマンドは Version 1 AT&T UNIX で登場しました。 diff --git a/ja_JP.eucJP/man/man1/find.1 b/ja_JP.eucJP/man/man1/find.1 index 9f79e50709..9c053c4f5b 100644 --- a/ja_JP.eucJP/man/man1/find.1 +++ b/ja_JP.eucJP/man/man1/find.1 @@ -1,497 +1,497 @@ .\" Copyright (c) 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. .\" .\" @(#)find.1 8.4 (Berkeley) 4/1/94 .\" %Id: find.1,v 1.4.2.4 1998/02/01 07:36:15 steve Exp % .\" jpman %Id: find.1,v 1.4 1997/09/23 14:13:10 horikawa Stab % .\" .Dd April 1, 1994 .Dt FIND 1 .Os .Sh 名称 .Nm find .Nd ディレクトリツリーを再帰的に下ってファイルを捜す .Sh 書式 .Nm find .Op Fl H | Fl L | Fl P .Op Fl Xdx .Op Fl f Ar file .Op Ar file ... .Ar expression .Sh 解説 .Nm find は、 .Ar file に対してディレクトリツリーを再帰的に下って、 ツリー上の各ファイルについて .Ar expression (後に示す ``プライマリ'' と ``演算子'' から構成されます) で指定された処理を実行します。 .Pp オプションとしては以下のものがあります: .Pp .Bl -tag -width Ds .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 (`` ' ''), double quotes (`` " ''), backslash (``\e''), space, tab, newline) が含まれるファイル名 が使われた場合、診断メッセージを標準エラー出力に表示して、 そのファイル名をスキップします。 .It Fl d ファイルに対する処理順序を深さ優先の探索方式にします。 すなわち、ディレクトリ自体に 対する処理を行う前に、ディレクトリ内の個々のファイルに対して処理を 実行します。デフォルトでは、ディレクトリは最初に処理されます。 (デフォルトの方式は幅優先探索方式ではないです。) .It Fl f Ar file 明示的にファイルを指定します。ファイル名の先頭が ``\-'' で始まっていたり、 あとで述べる .Ar expression の指定と混同してしまうようなファイル名を指定したりするときに使用します。 (ファイルはオプション直後のオペランドとしても指定可能です。) .It Fl x ディレクトリツリーを下って行くとき、最初に file のあったファイルシステムとは 異なるファイルシステム上のファイルに対する処理になる場合は、実行しないように します。 .El .Sh プライマリ .Bl -tag -width Ds .It Ic -atime Ar n 最後にファイルがアクセスされた時刻と、 .Nm find を起動した時刻との差(24 時間単位で切り上げます)が .Ar n 日であれば、真とします。 .It Ic -ctime Ar n 最後にファイルのステータスが変更された時刻と、 .Nm find を起動した時刻の差 (24 時間単位で切り上げます) が .Ar n 日であれば、真とします。 .It Ic -delete 見付けたファイルやディレクトリを消去します。常に真を返します。 現在の作業ディレクトリから .Nm は再帰的にディレクトリツリーを下ります。 セキュリティ上の理由から、 "." からの相対パス名に ``/'' 文字を含むファイル名のファイルを 消去しようとはしません。 このオプションにより暗示的に深さ優先の処理が指定されます。 .It Ic -exec Ar utility Op argument ... ; .Ar utility で指定した名前のプログラムを実行し、終了コードが 0 の場合、真とします。argument は、utility への引き数として渡されます。この 指定は、最後に必ずセミコロン (``;'') をつけてください。 utility もしくは argument の指定 のなかで ``{}'' が使われていた場合は、その部分が、現在 .Nm find が対象としてい るファイルのパス名に置き換えられます。ただし、 .Ar utility が実行されるときのカレントディレクトリは、 .Nm find が起動されたディレクトリのままです。 .It Ic -fstype Ar type 対象ファイルが格納されているファイルシステムのタイプが、 .Ar type で指定されたものである場合に真となります。type としては、 ``local'', ``mfs'', ``nfs'', ``msdos'', ``rdonly'', `'ufs'' を指定することができます。 ``local'' と ``rdonly'' は特定のファイルシステムを指すものではありません。 ``local'' は、 .Nm find を実行しているシステム上に物理的 にマウントされているファイルシステムです。``rdonly'' は、リードオンリーで マウントされているファイルシステムです。 .It Ic -group Ar gname ファイルが .Ar gname で指定したグループに属している場合、真になります。 .Ar gname が数字で、そのようなグループ名がない場合は、 .Ar gname をグループ ID として扱います。 .It Ic -inum Ar n ファイルの i ノード番号が .Ar n なら、真になります。 .It Ic -links Ar n ファイルのリンク数が .Ar n なら、真になります。 .It Ic -ls このプライマリは常に真になります。対象となっているファイルの情報を 標準出力に出力します。出力する内容は i ノード番号、 512 バイトブロックでのファイルの大きさ、 -ファイルのパーミッション、ハードリンクの数、オーナ、グループ、 +ファイルのパーミッション、ハードリンクの数、所有者、グループ、 バイトで表したファイルの大きさ、最後にファイルが修正された時刻、パス名です。 ファイルがブロック型もしくはキャラクタ型のスペシャルファイルならば、 バイトで表したファイルの大きさの代わりにメジャー番号とマイナー番号を 出力します。ファイルがシンボリックリンクならば、 `\`->''の後にリンク先のファイルのパス名を表示します。 フォーマットは ``ls -dgils'' の出力結果と同じです。 .It Ic -mtime Ar n 最後にファイルが修正された時刻と、 .Nm find を起動した時刻との差(24 時間単位で切り上げます)が .Ar n 日であれば、真とします。 .It Ic \&-ok Ar utility Op argument ... ; .Ic exec とほぼ同じですが、 .Ar utility を実行するかどうかの確認をユーザに求め、端末にメッセージを出力します。 ``y'' 以外の返答をした場合は、 コマンドは実行されず、 このプライマリの値は偽になります。 .It Ic -name Ar pattern 対象ファイルのパス名の最後のファイル名部分が .Ar pattern で指定したものとマッチするかどうかを調べ、マッチした場合は真になります。 .Ar pattern としては、シェルで使われるパターンマッチ 指定 (``['', ``]'', ``*'', ``?'') を使用することができます。これらの文字は バックスラッシュ(``\e'')を前において、パターンマッチ指定ではなく文字として 扱う事を明示することができます。 .It Ic -newer Ar file 対象ファイルの修正日付が、 .Ar file で指定したファイルのものより新しい場合は、真になります。 .It Ic -nouser -対象ファイルのオーナが unknown の場合、真になります。 +対象ファイルの所有者が unknown の場合、真になります。 .It Ic -nogroup 対象ファイルのグループが unknown の場合、真になります。 .It Ic -path Ar pattern 対象ファイルのパス名が、 .Ar pattern で指定したものとマッチす るかどうかを調べます、マッチした場合は真になります。 .Ar pattern としては、シェルで使われるパターンマッチ 指定 (``['', ``]'', ``*'', ``?'') を使用することができます。これらの文字は バックスラッシュ (``\e'') を前において、パターンマッチ指定ではなく文字として 扱う事を明示することができます。 ``/'' は、そのままパスのディレクトリの区切りにマッチします。 .It Ic -perm Op Ns Ar mode ファイルのモードを、 .Ar mode と比較します。 .Ar mode は、シンボル 形式( .Xr chmod 1 参照) もしくは 8 進数形式で指定します。シンボル形式の場合は、 00000 から開始してパーミッションのセットとクリアを行います。 (プロセスのファイル生成マスクとは無関係です。) 8 進数形式の場合は、 ファイルのモードビットのうち、07777 .Pf ( Dv S_ISUID | .Dv S_ISGID | .Dv S_ISTXT | .Dv S_IRWXU | .Dv S_IRWXG | .Dv S_IRWXO ) の部分が比較対象になります。 .Ar mode の最初に ``\-'' を指定した場合は、 .Ar mode でセットされているすべてのビットが ファイルのモードでもセットされていれば真となります。 ``\-'' が指定されていない場合は、ファイルのモードと .Ar mode が完全に一致した場合にのみ真となります。 なお、 シンボル形式でモード指定をする場合は、少なくとも最初が ``\-'' にならない ようにする必要があります。 .It Ic -print このプライマリは常に真になります。 対象となっているファイルのパス名を標準出力に出力して改行します。 .Ic -exec , .Ic -ls , .Ic -ok , .Ic -print0 のどのプライマリも指定されなかった場合は、 本プライマリが指定されているものとみなします。 .It Ic -print0 .Ic -print とほぼ同じですが、標準出力に対象となっているファイルのパス名を出力 したあと、改行ではなく、 .Tn ASCII .Tn NUL 文字(文字コード 0)を出力します。 .It Ic -prune このプライマリは常に真になります。 対象となっているファイル配下のディレクトリに下りないようにします。 .Fl d オプションが指定されている場合は、 .Ic -prune の指定は無効になります。 .It Ic -size Ar n Ns Op Cm c ファイルサイズを 512 バイトのブロック単位で数えたとき (端数は切り上げ)、 .Ar n ブロックであれば真になります。 .Ar n のあとに ``c'' が指定されていた場合は、ファイルサイズが .Ar n バイトであれば真になります。 .It Ic -type Ar t ファイルタイプが .Ar t で指定されたタイプに一致すれば真になります。 タイプとして、次のような指定が可能です: .Pp .Bl -tag -width flag -offset indent -compact .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 ファイルの所有者が、 .Ar uname で指定されたユーザと一致すれば真になります。もし .Ar uname が数字で、そのようなユーザ名がなければ、 ユーザ ID が指定されたものとして扱います。 .El .Pp なお、数字を引数にとるプライマリは、 数字の前に ``+'' および ``\-'' をつけることができます。 それぞれ ``n より大'' および ``n より小'' の意味になり、 ``正確に n''という意味ではなくなります。 .Sh 演算子 .Pp 以下の演算子を使って、プライマリを組み合わせることができます。 演算子は優先度が下がる順番で示されています。 .Bl -tag -width (expression) .It Cm \&( Ns Ar expression Ns Cm \&) もし、括弧内の .Ar expression が真なら、真になります。 .Pp .It Cm \&! Ns 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 は実行されません。 .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 expression2 は実行されません。 .El .Sh 使用例 .Pp コマンドラインからのタイプ例です。 .Nm find の演算子がシェルの特殊文字と間違われないように、 エスケープ文字 ``\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'' であるようなものを表示します。 .El .Sh 関連項目 .Xr chmod 1 , .Xr locate 1 , .Xr stat 2 , .Xr fts 3 , .Xr getgrent 3 , .Xr getpwent 3 , .Xr strmode 3 , .Xr symlink 7 .Sh 規格 .Nm find ユーティリティの文法は .St -p1003.2 の仕様で決められた文法のスーパセットです。 全 1 文字オプションと .Ic -inum , .Ic -print0 , .Ic -delete , .Ic -ls のプライマリは .St -p1003.2 の拡張です。 .Pp 昔は .Fl d , .Fl h , .Fl x のオプションは それぞれ ``\-depth'', ``\-follow'', ``\-xdev'' のプライマリを 用いて実装されていました。 これらのプライマリは常に真に評価されていました。 これらのプライマリは 探索が始まる前に効果を与える本当のグローバル変数であったので、 いくつかの合法的な expression が予期しない結果となりました。 一例として ``\-print \-o \-depth''の expression があります。 \-print が常に真に評価されるため 標準の評価の順番では \-depth は決して評価されないはずですが、 そうではありませんでした。 .Pp 演算子の ``-or'' は ``\-o'' として実装されていました。 演算子の ``-and'' は ``\-a'' として実装されていました。 .Pp 昔の実装では .Ic exec と .Ic ok のプライマリでは、 utility 名やその引数中において、 空白以外の文字が前後に続く ``{}'' を置き換えませんでした。 このバージョンでは utility 名やその引数のどの場所に ``{}'' が現れても 置き換えます。 .Sh バグ .Nm find によって使われる特殊文字は多くのシェルにとっても 特殊文字です。 特に ``*'', ``['', ``?'', ``('', ``)'', ``!'', ``\e'', ``;'' は、 シェルからエスケープされなくてはならないでしょう。 .Pp オプションとファイル名との間および ファイル名と .Ar expression との間を区切るデリミタが存在しませんので、 ファイル名にオプションと間違えるようなもの (``-xdev'' のようなもの) や、 .Ar expression と間違えるようなもの (``!'' のようなもの) を指定することは難しいです。 このようなファイル名を指定する場合は .Fl f オプションを使うか、 .Xr getopt 3 で使われるオプション指定の終了記号 ``--'' を使用します。 .Pp .Ic -delete プライマリは、ファイルシステムツリーの検索順序に影響する 他のオプションとは十分には連係しません。 .Sh 歴史 .Nm コマンドは .At v1 から登場しました。 diff --git a/ja_JP.eucJP/man/man1/gcc.1 b/ja_JP.eucJP/man/man1/gcc.1 index e42bcf1830..da6233c3e9 100644 --- a/ja_JP.eucJP/man/man1/gcc.1 +++ b/ja_JP.eucJP/man/man1/gcc.1 @@ -1,4008 +1,4008 @@ .\" Copyright (c) 1991, 1992, 1993, 1994 Free Software Foundation -*-Text-*- .\" See section COPYING for conditions for redistribution .\" .\" jpman %Id: gcc.1,v 1.4 1997/10/11 07:52:34 horikawa Stab % .\" Set up \*(lq, \*(rq if -man hasn't already set it up. .if @@\*(lq@ \{\ . ds lq " . if t .ds lq `` . if !@@\(lq@ .ds lq "\(lq .\} .if @@\*(rq@ \{\ . ds rq " . if t .ds rq '' . if !@@\(rq@ .ds rq "\(rq .\} .de Id .ds Rv \\$3 .ds Dt \\$4 .. .de Sp .if n .sp .if t .sp 0.4 .. .Id %Id: gcc.1,v 1.4 1993/10/13 23:19:12 pesch Exp % .TH GCC 1 "\*(Dt" "GNU Tools" "GNU Tools" .SH 名称 gcc, g++ \- GNU プロジェクト C コンパイラ および C++ コンパイラ (v2.7) .SH 書式 .B gcc .RI "[ " option " | " filename " ].\|.\|." .br .SH 注意 このマニュアルに書かれた情報は GNU C コンパイラの完全な ドキュメンテーションからの抜粋であり、オプションの意味の記述にとどめます。 .PP このマニュアルはボランティアのメンテナンスが行なわれた時にのみ更新され るもので、常に最新の情報を示しているわけではありません。 もしこのマニュアルと実際のソフトウェアの間に矛盾点があれば、 正式なドキュメントである Info ファイルのほうを参照して下さい。 .PP このマニュアル中の古い記述が重大な混乱や不具合をきたすことになれば、 このマニュアルページの配布は中止します。 GNU CCのメンテナンス作業の都合上、 Info ファイルを更新した時にマニュアルページも併せて更新することは できません。マニュアルページは時代遅れであり、 これに時間をかけるべきではないと GNU プロジェクトでは考えています。 .PP 完全な最新のドキュメンテーションが必要な場合は、Info ファイルの`\|\c .B gcc\c \&\|' またはマニュアルの .I Using and Porting GNU CC (for version 2.0)\c \& を参照して下さい。この双方は Texinfo のソースファイル .B gcc.texinfo から生成されます。 .SH 解説 C と C++ のコンパイラは統合されています。どちらの場合も、入力ファイル は、プリプロセス、コンパイル、アセンブル、リンクの 4 つの処理ステージの うちの 1 つ以上のステージを踏んで処理されます。 ソースファイル名の拡張子によってソースの言語を識別しますが、 デフォルトの動作は、どちらの名前でコンパイラを使うかに依存しています: .TP .B gcc プリプロセス済みの (\c .B .i\c \&) ファイルを C のファイルと仮定し、C スタイルのリンクを行います。 .TP .B g++ プリプロセス済みの(\c .B .i\c \&) ファイルを C++ のファイルと仮定し、C++ スタイルのリンクを行います。 .PP ソースファイル名の拡張子は、その言語が何であるかと、どのような処理が行われる べきかを示します: .Sp .nf .ta \w'\fB.cxx\fP 'u \&\fB.c\fP C言語ソースです。プリプロセッサ、コンパイラ、アセンブラにかけられます。 \&\fB.C\fP C++言語ソースです。プリプロセッサ、コンパイラ、アセンブラにかけられます。 \&\fB.cc\fP C++言語ソースです。プリプロセッサ、コンパイラ、アセンブラにかけられます。 \&\fB.cxx\fP C++言語ソースです。プリプロセッサ、コンパイラ、アセンブラにかけられます。 \&\fB.m\fP Objective-C 言語ソースです。プリプロセッサ、コンパイラ、アセンブラにかけられます。 \&\fB.i\fP プリプロセッサにかけられたC言語ソースです。コンパイラ、アセンブラにかけられます。 \&\fB.ii\fP プリプロセッサにかけられたC++言語ソースです。コンパイラ、アセンブラにかけられます。 \&\fB.s\fP アセンブリ言語ソースです。アセンブラにかけられます。 \&\fB.S\fP アセンブリ言語ソースです。プリプロセッサ、アセンブラにかけられます。 \&\fB.h\fP プリプロセッサファイルです。通常はコマンドラインには現れません。 .Sp .fi その他の拡張子を持つファイルはリンカに渡されます。以下のものがあります。 .Sp .nf \&\fB.o\fP オブジェクトファイルです。 \&\fB.a\fP アーカイブファイルです。 .br .fi .Sp リンクは、オプション .BR \-c , .BR \-S , .B \-E を指定して抑制しないかぎり(もしくはコンパイルエラーによってすべての処理が中断 しないかぎり)、常に最終ステージで実行されます。 リンクのステージにおいては、ソースファイルに対応した全ての .B .o ファイルと、 .B \-l で指定したライブラリと、認識されなかったファイル名 (名前に .B .o のついたオブジェクトファイルや .B .a のついたアーカイブを含む) は、 コマンドラインに並べられた順番でリンカに渡されます。 .SH オプション オプションは分割されていなければなりません。すなわち `\|\c .B \-dr\c \&\|' は `\|\c .B \-d \-r \&\|'とは異なった扱いを受けます。 .PP ほとんどの `\|\c .B \-f\c \&\|' と `\|\c .B \-W\c \&\|' 形式のオプションには、 .BI \-f name と .BI \-fno\- name\c \& (または .BI \-W name と .BI \-Wno\- name\c \&) の形式の、対照的な表現があります。ここではデフォルトでない形式の みを示します。 .PP すべてのオプションを種類別に分けてまとめました。詳しい解説は 以下の節で行ないます。 .hy 0 .na .TP .B 全体的なオプション .br \-c \-S \-E .RI "\-o " file \-pipe \-v .RI "\-x " language .TP .B 言語オプション \-ansi \-fall\-virtual \-fcond\-mismatch \-fdollars\-in\-identifiers \-fenum\-int\-equiv \-fexternal\-templates \-fno\-asm \-fno\-builtin \-fno\-strict\-prototype \-fsigned\-bitfields \-fsigned\-char \-fthis\-is\-variable \-funsigned\-bitfields \-funsigned\-char \-fwritable\-strings \-traditional \-traditional\-cpp \-trigraphs .TP .B 警告オプション \-fsyntax\-only \-pedantic \-pedantic\-errors \-w \-W \-Wall \-Waggregate\-return \-Wcast\-align \-Wcast\-qual \-Wchar\-subscript \-Wcomment \-Wconversion \-Wenum\-clash \-Werror \-Wformat .RI \-Wid\-clash\- len \-Wimplicit \-Winline \-Wmissing\-prototypes \-Wmissing\-declarations \-Wnested\-externs \-Wno\-import \-Wparentheses \-Wpointer\-arith \-Wredundant\-decls \-Wreturn\-type \-Wshadow \-Wstrict\-prototypes \-Wswitch \-Wtemplate\-debugging \-Wtraditional \-Wtrigraphs \-Wuninitialized \-Wunused \-Wwrite\-strings .TP .B デバッグオプション \-a .RI \-d letters \-fpretend\-float \-g .RI \-g level \-gcoff \-gxcoff \-gxcoff+ \-gdwarf \-gdwarf+ \-gstabs \-gstabs+ \-ggdb \-p \-pg \-save\-temps .RI \-print\-file\-name= library \-print\-libgcc\-file\-name .TP .B 最適化オプション \-fcaller\-saves \-fcse\-follow\-jumps \-fcse\-skip\-blocks \-fdelayed\-branch \-felide\-constructors \-fexpensive\-optimizations \-ffast\-math \-ffloat\-store \-fforce\-addr \-fforce\-mem \-finline\-functions \-fkeep\-inline\-functions \-fmemoize\-lookups \-fno\-default\-inline \-fno\-defer\-pop \-fno\-function\-cse \-fno\-inline \-fno\-peephole \-fomit\-frame\-pointer \-frerun\-cse\-after\-loop \-fschedule\-insns \-fschedule\-insns2 \-fstrength\-reduce \-fthread\-jumps \-funroll\-all\-loops \-funroll\-loops \-O \-O2 .TP .B プリプロセッサオプション .RI \-A assertion \-C \-dD \-dM \-dN .RI \-D macro [\|= defn \|] \-E \-H .RI "\-idirafter " dir .RI "\-include " file .RI "\-imacros " file .RI "\-iprefix " file .RI "\-iwithprefix " dir \-M \-MD \-MM \-MMD \-nostdinc \-P .RI \-U macro \-undef .TP .B アセンブラオプション .RI \-Wa, option .TP .B リンカオプション .RI \-l library \-nostartfiles \-nostdlib \-static \-shared \-symbolic .RI "\-Xlinker\ " option .RI \-Wl, option .RI "\-u " symbol .TP .B ディレクトリオプション .RI \-B prefix .RI \-I dir \-I\- .RI \-L dir .TP .B ターゲットオプション .RI "\-b " machine .RI "\-V " version .TP .B コンフィギュレーション依存オプション .I M680x0\ オプション .br \-m68000 \-m68020 \-m68020\-40 \-m68030 \-m68040 \-m68881 \-mbitfield \-mc68000 \-mc68020 \-mfpa \-mnobitfield \-mrtd \-mshort \-msoft\-float .Sp .I VAX オプション .br \-mg \-mgnu \-munix .Sp .I SPARC オプション .br \-mepilogue \-mfpu \-mhard\-float \-mno\-fpu \-mno\-epilogue \-msoft\-float \-msparclite \-mv8 \-msupersparc \-mcypress .Sp .I Convex オプション .br \-margcount \-mc1 \-mc2 \-mnoargcount .Sp .I AMD29K オプション .br \-m29000 \-m29050 \-mbw \-mdw \-mkernel\-registers \-mlarge \-mnbw \-mnodw \-msmall \-mstack\-check \-muser\-registers .Sp .I M88K オプション .br \-m88000 \-m88100 \-m88110 \-mbig\-pic \-mcheck\-zero\-division \-mhandle\-large\-shift \-midentify\-revision \-mno\-check\-zero\-division \-mno\-ocs\-debug\-info \-mno\-ocs\-frame\-position \-mno\-optimize\-arg\-area \-mno\-serialize\-volatile \-mno\-underscores \-mocs\-debug\-info \-mocs\-frame\-position \-moptimize\-arg\-area \-mserialize\-volatile .RI \-mshort\-data\- num \-msvr3 \-msvr4 \-mtrap\-large\-shift \-muse\-div\-instruction \-mversion\-03.00 \-mwarn\-passed\-structs .Sp .I RS6000 オプション .br \-mfp\-in\-toc \-mno\-fop\-in\-toc .Sp .I RT オプション .br \-mcall\-lib\-mul \-mfp\-arg\-in\-fpregs \-mfp\-arg\-in\-gregs \-mfull\-fp\-blocks \-mhc\-struct\-return \-min\-line\-mul \-mminimum\-fp\-blocks \-mnohc\-struct\-return .Sp .I MIPS オプション .br \-mcpu=\fIcpu type\fP \-mips2 \-mips3 \-mint64 \-mlong64 \-mlonglong128 \-mmips\-as \-mgas \-mrnames \-mno\-rnames \-mgpopt \-mno\-gpopt \-mstats \-mno\-stats \-mmemcpy \-mno\-memcpy \-mno\-mips\-tfile \-mmips\-tfile \-msoft\-float \-mhard\-float \-mabicalls \-mno\-abicalls \-mhalf\-pic \-mno\-half\-pic \-G \fInum\fP \-nocpp .Sp .I i386 オプション .br \-m486 \-mno\-486 \-msoft\-float \-mrtd \-mregparm \-msvr3\-shlib \-mno\-ieee\-fp \-mno\-fp\-ret\-in\-387 \-mfancy\-math\-387 \-mno\-wide\-multiply \-mdebug\-addr \-mno\-move \-mprofiler\-epilogue \-reg\-alloc=LIST .Sp .I HPPA オプション .br \-mpa\-risc\-1\-0 \-mpa\-risc\-1\-1 \-mkernel \-mshared\-libs \-mno\-shared\-libs \-mlong\-calls \-mdisable\-fpregs \-mdisable\-indexing \-mtrailing\-colon .Sp .I i960 オプション .br \-m\fIcpu-type\fP \-mnumerics \-msoft\-float \-mleaf\-procedures \-mno\-leaf\-procedures \-mtail\-call \-mno\-tail\-call \-mcomplex\-addr \-mno\-complex\-addr \-mcode\-align \-mno\-code\-align \-mic\-compat \-mic2.0\-compat \-mic3.0\-compat \-masm\-compat \-mintel\-asm \-mstrict\-align \-mno\-strict\-align \-mold\-align \-mno\-old\-align .Sp .I DEC Alpha オプション .br \-mfp\-regs \-mno\-fp\-regs \-mno\-soft\-float \-msoft\-float .Sp .I System V オプション .br \-G \-Qy \-Qn .RI \-YP, paths .RI \-Ym, dir .TP .B コード生成オプション .RI \-fcall\-saved\- reg .RI \-fcall\-used\- reg .RI \-ffixed\- reg \-finhibit\-size\-directive \-fnonnull\-objects \-fno\-common \-fno\-ident \-fno\-gnu\-linker \-fpcc\-struct\-return \-fpic \-fPIC \-freg\-struct\-return \-fshared\-data \-fshort\-enums \-fshort\-double \-fvolatile \-fvolatile\-global \-fverbose\-asm .ad b .hy 1 .SH 全体的なオプション .TP .BI "\-x " "language" このオプションに続く入力ファイルの言語を .I language\c \& であると明示的に指定します (拡張子に基づくデフォルトの選択よりも優先されます)。このオプションは、 次の `\|\c .B \-x\c \&\|' オプションが出てくるまで、後続する全ての入力ファイルに対して 適用されます。\c .I language\c \& としては、 `\|\c .B c\c \&\|', `\|\c .B objective\-c\c \&\|', `\|\c .B c\-header\c \&\|', `\|\c .B c++\c \&\|', `\|\c .B cpp\-output\c \&\|', `\|\c .B assembler\c \&\|', `\|\c .B assembler\-with\-cpp\c \&\|' を指定することが可能です。 .TP .B \-x none 言語の指定を解除します。このオプションのあとに続くファイルは、それらの拡張子に 基づいて (あたかも何の `\|\c .B \-x\c \&\|' オプションも使用されたことがないように) 処理されます。 .PP もし、4 つのステージ (プリプロセス、コンパイル、アセンブル、リンク) の うちの一部のみが必要な場合は、 `\|\c .B \-x\c \&\|' オプション (またはファイル名の拡張子) を使用して \c .B gcc\c \& に対してどのステージから開始するかを伝え、さらに `\|\c .B \-c\c \&\|', `\|\c .B \-S\c \&\|', `\|\c .B \-E\c \&\|' のオプションのうちのどれかを使用して .B gcc\c \& に対してどこで処理を停止させるかを指定します。ここで、 いくつかの組合せ (例えば `\|\c .B \-x cpp\-output \-E\c \&\|') は \c .B gcc\c \& に対して何の動作も行なわないように指定することになることに注意してください。 .TP .B \-c ソースファイルを、コンパイルまたはアセンブルまではしますが、リンクはしません。 コンパイラの出力は、それぞれのソースファイルに対応したオブジェクトファイル となります。 .Sp デフォルトでは、GCC はオブジェクトファイルのファイル名として、 ソースファイルの拡張子 `\|\c .B .c\c \&\|', `\|\c .B .i\c \&\|', `\|\c .B .s\c \&\|' 等を `\|\c .B .o\c \&\|' で置き換えたものを使用します。 .B \-o\c \& オプションを使用することによって、他の名前を指定することも可能です。 .Sp GCC は .B \-c オプションを使用した場合は、理解できない入力ファイル (コンパイルやアセンブル を必要としないファイル) を無視します。 .TP .B \-S コンパイルが終った所で処理を停止し、アセンブルは行いません。 アセンブラコードではない入力ファイルが指 定された場合は、出力はアセンブラコードのファイルになります。 .Sp デフォルトでは、GCC はアセンブラファイルのファイル名として、 ソースファイルの拡張子 `\|\c .B .c\c \&\|', `\|\c .B .i\c \&\|' 等を `\|\c .B .s\c \&\|' で置き換えたものを使用します。 .B \-o\c \& オプションを使用することによって、他の名前を指定することも可能です。 .Sp GCC はコンパイルを必要としない入力ファイルを全て無視します。 .TP .B \-E プリプロセス処理が終了したところで停止します。コンパイルはしません。 出力はプリプロセス済みのソースコードであり、標準出力へと送られます。 .Sp GCC はプリプロセスを必要としない入力ファイルを全て無視します。 .TP .BI "\-o " file 出力先を \c .I file\c \& に指定します。このオプションは GCC が実行可能ファイル、 オブジェクトファイル、アセンブラファイル、プリプロセス済み C コードなどの、 いかなる種類の出力を行なう場合にも適用可能です。 .Sp 出力ファイルは 1 つしか指定できないため、 `\|\c .B \-o\c \&\|' を複数の入力ファイルをコンパイルする際に使用することは、実行ファ イルを出力する時以外は無意味です。 .Sp `\|\c .B \-o\c \&\|'オプションを指定しなかった場合のデフォルトは、実行ファイルを作る場 合は `\|\c .B a.out\c \&\|' という名前であり、`\|\c .I source\c .B \&.\c .I suffix\c \&\c \&\|' の形式のファイル名を持ったソースファイルのオブジェクトファイルは `\|\c .I source\c .B \&.o\c \&\|' であり、アセンブラのファイルは `\|\c .I source\c .B \&.s\c \&\|' です。 プリプロセス済みの C 言語は、全て標準出力に送られます。 .TP .B \-v (標準エラー出力に対して) コンパイルの各ステージで実行されるコマンドを 表示します。コンパイラドライバ、プリプロセッサおよび本来のコンパイラの 各バージョン番号も表示します。 .TP .B -pipe コンパイル時のステージの間のデータの受け渡しに、テンポラリファイルではなく パイプを使用します。いくつかのシステムではアセンブラがパイプからの入力を受け 付けることができないために、このオプションを指定すると失敗します。 GNU アセンブラでは問題なく使用できます。 .PP .SH 言語オプション .TP 以下のオプションは、コンパイラが受け付ける C の方言に関する制御を行ないます: .TP .B \-ansi 全ての ANSI 標準の C プログラムをサポートします。 .Sp このオプションは、GNU C が持つ ANSI C との非互換な機能を全て排除します。 例えば、\c .B asm\c \&, \c .B inline\c \&, \c .B typeof などのキーワードや、\c .B unix\c \& や \c .B vax などの現在使用しているシステムを規定する定義済みマクロなどが抑制されます。 さらに、好ましくなくかつほとんど使用されない ANSI のトライグラフの機能を使 用可能とし、さらに `\|\c .B $\c \&\|' を識別子の一部として使用できないようにします。 .Sp 代替キーワードである\c .B _\|_asm_\|_\c \&, \c .B _\|_extension_\|_\c \&, .B _\|_inline_\|_\c \&, \c .B _\|_typeof_\|_\c \& は、 `\|\c .B \-ansi\c \&\|' が指定された場合でも使用することが可能です。もちろん、 これらを ANSI C プログラムで使用することが望ましくないのは当然ですが、`\|\c .B \-ansi\c \&\|' をつけてコンパイルされる場合でも、インクルードされるヘッダファイル中に これらが記述できるということは有用です。 \c .B _\|_unix_\|_\c \& や \c .B _\|_vax_\|_\c \& などの代替定義済みマクロは、 `\|\c .B \-ansi\c \&\|' を指定する場合でも指定しない場合でも、利用可能となっています。 .Sp `\|\c .B \-ansi\c \&\|' オプションは、ANSI 準拠でないプログラムを不必要に拒否することは ありません。もしこのような動作を行なわせたい場合には`\|\c .B \-ansi\c \&\|'に加えて\c .B \-pedantic\c \&\|' オプションを指定する必要があります。 .Sp プリプロセッサ定義済みマクロ \c .B _\|_STRICT_ANSI_\|_\c \& が `\|\c .B \-ansi\c \&\|' オプションを使用した際には定義されます。いくつかのヘッダファイルは、この マクロを識別して、ANSI 標準が望まない関数やマクロの定義を抑制します。 これは、 それらの関数やマクロと同じ名前を別の目的で使用するプログラム を混乱させないようにするためです。 .TP .B \-fno\-asm \c .B asm\c \&, \c .B inline\c \&, \c .B typeof\c \& をキーワードとして解釈しません。 これらの単語は識別子として解釈されるようになります。これらの代用として \c .B _\|_asm_\|_\c \&, \c .B _\|_inline_\|_\c \&, \c .B _\|_typeof_\|_\c \& が使用できます。 `\|\c .B \-ansi\c \&\|' を指定すると、暗黙のうちに `\|\c .B \-fno\-asm\c \&\|' を指定したものとみなされます。 .TP .B \-fno\-builtin ビルトイン関数のうち、2 つのアンダースコアで始まるもの以外を認識しなくなり ます。現在、この指定は\c .B _exit\c \&, .B abort\c \&, \c .B abs\c \&, \c .B alloca\c \&, \c .B cos\c \&, \c .B exit\c \&, .B fabs\c \&, \c .B labs\c \&, \c .B memcmp\c \&, \c .B memcpy\c \&, \c .B sin\c \&, .B sqrt\c \&, \c .B strcmp\c \&, \c .B strcpy\c \&, \c .B strlen\c \& の関数に影響を及ぼします。 .Sp `\|\c .B \-ansi\c \&\|' オプションを指定すると、\c .B alloca\c \& と \c .B _exit\c \& はビルトイン関数として扱われなくなります。 .TP .B \-fno\-strict\-prototype `\|\c .B int foo ();\c \&\|' のような、引数を指定しない関数宣言を、C 言語のように引数の数や 型について何の仮定もしないという扱いにします (C++ のみ)。通常はこのよう な宣言は、C++ では \c .B foo\c \& という関数が 1 つも引数をとらないことを意味します。 .TP .B \-trigraphs ANSI C のトライグラフを使用可能とします。`\|\c .B \-ansi\c \&\|' オプションを指定すると、暗黙のうちに `\|\c .B \-trigraphs\c \&\|' を指定したものとみなされます。 .TP .B \-traditional 伝統的な C コンパイラのいくつかの特徴をサポートします。詳しくは GNU C の マニュアルを参照してください。以前はここにそのリストの複製を載せていましたが、 それらが完全に時代遅れになった時に我々に文句が来ないように削除してしまいま した。 .Sp しかし、C++ のプログラムだけについて (C ではありません) 特記しておくこと が 1 つあります。 `\|\c .B \-traditional\c \&\|' オプションは C++ に対して 1 つだけ特別な効果を持ちます。それは、 .B this への代入を許可するというものです。これは `\|\c .B \-fthis\-is\-variable\c \&\|'オプションの指定が及ぼす効果と同一のものです。 .TP .B \-traditional\-cpp 伝統的な C プリプロセッサのいくつかの特徴をサポートします。これは上に挙 げた中で特にプリプロセッサに関係したものを含みますが、 `\|\c .B \-traditional\c \&\|' の指定によって引き起こされる以外の効果を及ぼすことはありません。 .TP .B \-fdollars\-in\-identifiers 識別子中の `\|\c .B $\c \&\|' の使用を許可します (C++ のみ)。 `\|\c .B \-fno\-dollars\-in\-identifiers\c \&\|' を使用することによって、明示的に `\|\c .B $\c \&\|'の使用を禁止することも可能です。(GNU C++ では、デフォルトで `\|\c .B $\c \&\|' を許可しているシステムと禁止しているシステムがあります)。 .TP .B \-fenum\-int\-equiv \c .B int\c \& から列挙型への暗黙の変換を許可します (C++ のみ)。通常は GNU C++ は \c .B enum\c \& から \c .B int\c \& への変換は許可していますが、 逆は許していません。 .TP .B \-fexternal\-templates テンプレート関数について、その関数が定義された場所にのみ単一のコピー を生成することによって、テンプレート宣言に対してより小さなコードを生成 します (C++ のみ)。このオプションを使用して正しいコードを得るためには、 テンプレートを使用する全てのファイルにおいて、`\|\c .B #pragma implementation\c \&\|' (定義) または `\|\c .B #pragma interface\c \&\|' (宣言) を記述しておく必要があります。 `\|\c .B \-fexternal\-templates\c \&\|' を指定してコンパイルを行なう場合には、全てのテンプレートの 実体は external となります。全ての使用される実体はインプリメンテーション ファイル中にまとめて記述しておかなければなりません。これはその必要とされ る実体に対応した \c .B typedef\c \& 宣言を行なうことによって実現できます。 逆に、デフォルトのオプション `\|\c .B \-fno\-external\-templates\c \&\|' でコンパイルした場合には全てのテンプレートの実体は internal と なります。 .TP .B \-fall\-virtual 可能な限り全てのメンバ関数を暗黙のうちに仮想関数として扱います。 全てのメンバ関数 (コンストラクタと .B new , .B delete メンバ演算子を除きます) は、出現した時点でそのクラスの仮想関数とし て扱われます。 .Sp これは、これらのメンバ関数への全ての呼び出しが仮想関数のための内部 テーブルを参照して間接的に決定されるということを意味しません。特定の状況 においては、コンパイラは与えられた仮想関数への呼び出しを直接決定できます。 このような場合にはその関数呼び出しは常に直接呼び出しとなります。 .TP .B \-fcond\-mismatch 条件演算子の第 2, 第 3 引数の型が異なる記述を許します。このような式の型は void となります。 .TP .B \-fthis\-is\-variable \c .B this\c \& への代入を許可します (C++ のみ)。ユーザ定義による記憶管理が可 能となった現在では、 `\|\c .B this\c \&\|' への代入は時代遅れのものとなりました。従ってデフォルトでは、クラスの メンバ関数からの \c .B this\c \& への代入は不当なものとして扱われています。しかし、後方互換性のために、 `\|\c .B \-fthis-is-variable\c \&\|' を指定することによってこの効果を得ることができます。 .TP .B \-funsigned\-char \c .B char\c \& 型を \c .B unsigned char\c \& のように符号無しとして扱います。 .Sp それぞれのマシンには \c .B char\c \& がどちらであるべきかというデフォルトがあります。 デフォルトで \c .B unsigned char\c \& であることもあれば、デフォルトで .B signed char\c \& であることもあります。 .Sp 理想的には、可搬性のあるプログラムは、オブジェクトの符号の有無に依 存する記述を行なう場合には常に \c .B signed char\c \&、もしくは .B unsigned char\c \& を使用すべきです。 しかし実際には多くのプログラムが単なる \c .B char\c \& を用いて記述されており、さらにそのプログラムを記述した 環境に依存して、符号付きである、あるいは符号無しであるという暗黙の仮定が 行なわれています。このオプション、あるいはこの逆のオプションは、デフォル トと逆の動作を行なわせることにより、これらのプログラムを正しく動作させ ることを可能にします。 .Sp \c .B char\c \& 型は常に .B signed char\c \& あるいは \c .B unsigned char\c \& とは区別された型として扱われます。常にそれらの振舞いがそのどち らかと全く同じであるということに関わらず、このような扱いを行います。 .TP .B \-fsigned\-char \c .B char\c \& 型を \c .B signed char\c \& 型のように符号付きとして扱います。 .Sp ただし、このオプションは `\|\c .B \-fno\-unsigned\-char\c \&\|' と等価です。これは `\|\c .B \-funsigned\-char\c \&\|'の否定形です。同様に `\|\c .B \-fno\-signed\-char\c \&\|' は `\|\c .B \-funsigned\-char\c \&\|' と等価です。 .TP .B \-fsigned\-bitfields .TP .B \-funsigned\-bitfields .TP .B \-fno\-signed\-bitfields .TP .B \-fno\-unsigned\-bitfields これらのオプションは、明示的に `\|\c .B signed\c \&\|' または `\|\c .B unsigned\c \&\|' の指定が行なわれていないビットフィールドに対して、符号つきであるかある いは符号なしであるかを制御します。デフォルトではこのようなビットフィール ドは符号つきとなっています。なぜなら、 .B int\c \& のような基本的な型は符号つきであるという点で、整合性がとれるからです。 .Sp ただし、`\|\c .B \-traditional\c \&\|' を指定した場合は、ビットフィールドは常に全て符号無しであるとされます。 .TP .B \-fwritable\-strings 文字列定数を書き込み可能なデータセグメントに配置し、同内容の文字列を 1 つの共有オブジェクトにする処理を行いません。これは、文字定数に書き込む ことができることを仮定した昔のプログラムとの互換性をとるために提供され ています。`\|\c .B \-traditional\c \&\|' オプションも同様の効果を含みます。 .Sp 文字定数に書き込むという考えは非常によくない考えです。\*(lq定数\*(rq はまさに定数であり、変化すべきではありません。 .PP .SH プリプロセッサオプション これらのオプションは C プリプロセッサを制御します。 各 C ソースファイルは、実際にコンパイルする前に、C プリプロセッサに かけられます。 .PP `\|\c .B \-E\c \&\|' オプションを使用すると、GCC はプリプロセス以外の処理を行いません。 以下に示すオプションのうちのいくつかは、`\|\c .B \-E\c \&\|' と同時に使用された時のみ意味をもちます。なぜならば、これらのオプション によって、実際のコンパイルには不適当なプリプロセッサ出力が生成されるためです。 .TP .BI "\-include " "file" \c .I file\c \& を、通常の入力ファイルが処理される前に処理します。結果的に \c .I file\c \& に含まれる内容は、一番最初にコンパイルされることになります。コマンドラ インに指定されたすべての `\|\c .B \-D\c \&\|' や `\|\c .B \-U\c \&\|' オプションは、その記述された順番に関わらず常に `\|\c .B \-include \c .I file\c \&\c \&\|' が処理される前に処理されます。全ての `\|\c .B \-include\c \&\|' や `\|\c .B \-imacros\c \&\|' オプションは、それらが記述された順番通りに処理されます。 .TP .BI "\-imacros " file 通常の入力ファイルを処理する前に\c .I file\c \& を入力として処理しますが、その結果の出力を捨てます。 .I file\c \& によって生成された出力は捨てられるため、`\|\c .B \-imacros \c .I file\c \&\c \&\|' の処理結果の影響は、\c .I file\c \& 中に記述されたマクロがメインの入力ファイル中で使用可能になることだけです。 プリプロセッサは、`\|\c .B \-imacros \c .I file\c \&\|' が記述された順番に関わらず、これを処理する前に、 コマンドラインから与えられた全ての `\|\c .B \-D\c \&\|' や `\|\c .B \-U\c \&\|' オプションを評価します。全ての `\|\c .B \-include\c \&\|' および `\|\c .B \-imacros\c \&\|' オプションは、それらが記述された順番通りに処理されます。 .TP .BI "\-idirafter " "dir" ディレクトリ \c .I dir\c \& を第 2 インクルードパスに加えます。第 2 インクルードパス中のディレクトリは、 メインインクルードパス (オプション `\|\c .B \-I\c \&\|' によって追加されます) 中にヘッダファイルを探した結果発見できな かった場合に検索されます。 .TP .BI "\-iprefix " "prefix" \c .I prefix\c \& を、その後に続く `\|\c .B \-iwithprefix\c \&\|' オプション用のプレフィックスとして使用します。 .TP .BI "\-iwithprefix " "dir" ディレクトリを第 2 インクルードパスに追加します。ディレクトリ名は \c .I prefix\c \& と \c .I dir\c \& を連結することによって得られます。ここで \c .I prefix は、`\|\c .B \-iprefix\c \&\|' オプションによって指定されたものです。 .TP .B \-nostdinc ヘッダファイルのための標準のシステムディレクトリを検索しません。`\|\c .B \-I\c \&\|' オプションによって指定したディレクトリ (またはカレントディレクト リ) のみを検索します。 .Sp `\|\c .B \-nostdinc\c \&\|' と `\|\c .B \-I\-\c \&\|'を使用することにより、インクルードファイルの検索パスを明示的に指 定したディレクトリのみに限定することが可能となります。 .TP .B \-nostdinc++ ヘッダファイルの検索に、C++\-固有の標準ディレクトリを用いません。ただ しそれ以外の標準ディレクトリは検索されます。 (このオプションは `\|\c .B libg++\c \&\|' の構築に使用されます。) .TP .B \-undef 標準でない定義済みマクロ(アーキテクチャフラグも含めて)を定義しません。 .TP .B \-E C プリプロセッサの処理のみを行います。指定された全ての C のソースファイル に対してプリプロセスを行ない、標準出力、または指定された出力ファイルに 対して出力を行います。 .TP .B \-C プリプロセッサに対してコメントの削除を行なわないように指示します。 `\|\c .B \-E\c \&\|' オプションとともに使用されます。 .TP .B \-P プリプロセッサに対して `\|\c .B #line\c \&\|' コマンドを生成しないように指示します。 `\|\c .B \-E\c \&\|' オプションとともに使用されます。 .TP .B \-M\ [ \-MG ] プリプロセッサに対して\c .B make で使用可能な、オブジェクト間の依存関係を記述した出力を生成するように指示 します。それぞれのソースファイルに対して、プリプロセッサは\c .B make\c \& のための規則を 1 つ出力します。この出力は、ターゲットとして そのソースファイルから生成されるオブジェクトファイルのファイル名をとり、 依存するファイルのリストとしては `\|\c .B #include\c \&\|' によってソースファイルに 読み込まれる全てのファイルの名前が並びます。この 規則は 1 行、あるいは長い場合には`\|\c .B \e\c \&\|' と改行を入れて複数行で出力されます。この規則のリストは、プリプロセス済 みの C プログラムのかわりに、標準出力へと出力されます。 .Sp `\|\c .B \-M\c \&\|' は暗黙のうちに `\|\c .B \-E\c \&\|' を含みます。 .Sp `\|\c .B \-MG\c \&\|' を指定すると、見つからないヘッダファイルは生成されたファイルであり、 それらはソースファイルと同じディレクトリに存在するとみなします。 これは `\|\c .B \-M\c \&\|' と同時に指定しなければなりません。 .TP .B \-MM\ [ \-MG ] `\|\c .B \-M\c \&\|' と似ていますが、`\|\c .B #include "\c .I file\c .B \&"\c \&\|'によってインクルードされるユーザ定義のヘッダファイルのみを対象に した出力ファイルを生成します。`\|\c .B #include <\c .I file\c .B \&>\c \&\|' によってインクルードされるシステムヘッダファイルは省略されます。 .TP .B \-MD `\|\c .B \-M\c \&\|' と似ていますが、依存情報は出力ファイル名の最後の `\|\c .B .o\c \&\|' を `\|\c .B .d\c \&\|' に置き換えたファイル名のファイルに対して出力されます。 \&`\|\c .B \-MD\c \&\|' を指定したファイルのコンパイルもこれに加えて行なわれ、 `\|\c .B \-M\c \&\|' のように通常のコンパイルを抑制することはありません。 .Sp Mach のユーティリティである`\|\c .B md\c \&\|' は、これらの複数の `\|\c .B .d\c \&\|' ファイルを `\|\c .B make\c \&\|' コマンドによって使用できる単一の依存記述ファイルへとマージするのに使用 することができます。 .TP .B \-MMD `\|\c .B \-MD\c \&\|' と似ていますが、ユーザヘッダファイルのみを対象とし、システムヘッダ ファイルを無視します。 .TP .B \-H 通常の動作に加えて、使用されたヘッダファイルの名前を表示します。 .TP .BI "\-A" "question" ( answer ) .I question\c に対するアサーション .I answer \& を定義します。これは `\|\c .BI "#if #" question ( answer )\c \&\|' のようなプリプロセッサ条件節によってテストされます。`\|\c .B \-A\-\c \&\|' は標準のアサーション(通常はターゲットマシンに関 する情報を表している)を禁止します。 .TP .BI \-D macro マクロ \c .I macro\c \& に対して文字列 `\|\c .B 1\c \&\|' を定義として与えます。 .TP .BI \-D macro = defn マクロ \c .I macro\c \& を \c .I defn\c \& として定義します。コマンドライン上の全ての `\|\c .B \-D\c \&\|' オプションは `\|\c .B \-U\c \&\|' オプションの処理を行なう前に処理されます。 .TP .BI \-U macro マクロ \c .I macro\c \& の定義を無効にします。`\|\c .B \-U\c \&\|' オプションは全ての `\|\c .B \-D\c \&\|' オプションの処理が終了した後、`\|\c .B \-include\c \&\|' と `\|\c .B \-imacros\c \&\|' オプションの処理の前に処理されます。 .TP .B \-dM プリプロセッサに対して、プリプロセス終了時に有効であったマクロの定義の みを出力するように指示します。`\|\c .B \-E\c \&\|' オプションとともに使用します。 .TP .B \-dD プリプロセッサに対して、全てのマクロ定義を適切な順番で出力中にそのまま 出力するように指示します。 .TP .B \-dN `\|\c .B \-dD\c \&\|' と似ていますが、マクロの引数と内容を削除します。 出力には`\|\c .B #define \c .I name\c \&\c \&\|' のみが含まれます。 .PP .SH アセンブラオプション .TP .BI "\-Wa," "option" \c .I option\c \& をアセンブラに対するオプションとして渡します。\c .I option がコンマを含む場合は、そのコンマで区切られた複数のオプションとして与え られます。 .PP .SH リンカオプション これらのオプションは、コンパイラがオブジェクトファイル群をリンクして 1 つ の実行可能ファイルを出力する際に使用されるものです。これらはコンパイラが リンクステップを行なわない場合には意味を持ちません。 .TP .I object-file-name 特別に認識される拡張子で終っていないファイル名は、オブジェクトファイル、 またはライブラリであると認識されます。(オブジェクトファイルとライブラリ はリンカがその内容を参照することで区別されます。) GCC がリンクステップを 行なう場合は、これらのファイルはリンカへの入力として使用されます。 .TP .BI \-l library 名前が .I library\c \& であるライブラリをリンク時に使用します。 .Sp リンカは、標準のライブラリ用ディレクトリのリスト中から、 実際のファイル名が `\|\c .B lib\c .I library\c \&.a\c \&\|' であるファイルを検索します。リンカはこのファイルを、ファイル 名で直接指定した場合と同様に使用します。 .Sp 検索するディレクトリには、いくつかの標準システムディレクトリと、`\|\c .B \-L\c \&\|' によって指定したディレクトリが含まれます。 .Sp 通常、この方法で発見されるファイルはライブラリファイル、つまりいくつかの オブジェクトファイルをメンバとして含むアーカイブファイルです。 リンカは、アーカイブファイルの中を検索して、 参照されているが定義されていないシンボルを定義しているメンバを 探し出します。 しかし、もしリンカがライブラリでなく通常のオブジェクトファイルを発見した 場合は、そのオブジェクトファイルを通常の方法でリンクします。`\|\c .B \-l\c \&\|' オプションを使用する場合とファイル名を直接指定する場合の違いは、`\|\c .B \-l\c \&\|' の場合が .I library を `\|\c .B lib\c \&\|' と `\|\c .B .a\c \&\|' で囲み、いくつものディレクトリを検索することだけです。 .TP .B \-lobjc Objective C のプログラムをリンクする場合は、この特別な .B \-l オプションを指定する必要があります。 .TP .B \-nostartfiles リンク時に、標準のシステムスタートアップファイルを使用しません。 標準ライブラリは通常通りに使用されます。 .TP .B \-nostdlib リンク時に、標準のシステムライブラリとスタートアップファイルを使用しません。 指定したファイルのみがリンカに渡されます。 .TP .B \-static ダイナミックリンクをサポートするシステムにおいて、このオプションは共有 ライブラリとのリンクを抑制します。それ以外のシステムではこのオプションは 意味を持ちません。 .TP .B \-shared 他のオブジェクトとリンクして実行可能プログラムを形成し得る共有オブジェクトを 生成します。ごく少数のシステムでのみ、このオプションはサポートされ ています。 .TP .B \-symbolic 共有オブジェクトを構築する際に、グローバルなシンボルへの参照をバインド します。全ての解決できなかった参照に対して警告を与えます (ただしリンクエディタオプション `\|\c .B \-Xlinker \-z \-Xlinker defs\c \&\|' によってこれを無効化した場合を除きます)。ごく少数のシステムでのみ、 このオプションはサポートされています。 .TP .BI "\-Xlinker " "option" オプション \c .I option をリンカに対して渡します。リンカに渡すシステム固有のオプションが、 GNU CC が理解できないものである場合に利用できます。 .Sp 引数を持ったオプションを渡したい場合は、 `\|\c .B \-Xlinker\c \&\|' を 2 度使用すれば可能です。1 度目でオプションを渡し、2 度目で引数を 渡します。例えば `\|\c .B \-assert definitions\c \&\|' を渡すには、 `\|\c .B \-Xlinker \-assert \-Xlinker definitions\c \&\|' のように記述すれば可能です。 `\|\c .B \-Xlinker "\-assert definitions"\c \&\|' のように指定した場合は正常に動作しません。なぜならこれは、文字列全 体を 1 つの引数として渡してしまい、リンカの期待する形式と異なってしま うからです。 .TP .BI "\-Wl," "option" オプション \c .I option\c \& をリンカに渡します。\c .I option\c \& がコンマを含む場合は、それらのコンマで複数のオプションとして分割されます。 .TP .BI "\-u " "symbol" シンボル .I symbol が未定義であるかのように振舞います。これは強制的にこのシンボルを定義してい るライブラリモジュールをリンクするために使用します。`\|\c .B \-u\c \&\|' は異なったシンボルに対して複数回使用することができます。これによっ て、さらに多くのライブラリモジュールを読み込ませることができます。 .SH ディレクトリオプション これらのオプションは、ヘッダファイル、ライブラリ、コンパイラの一部を検 索するディレクトリを指定するために使用されます。 .TP .BI "\-I" "dir" ディレクトリ \c .I dir\c \& を、インクルードファイルの検索するディレクトリのリスト中に追加します。 .TP .B \-I\- `\|\c .B \-I\-\c \&\|' オプション指定前に `\|\c .B \-I\c \&\|' オプションによって指定された全てのディレクトリは、`\|\c .B #include "\c .I file\c .B \&"\c \&\|' の形式によってのみ検索されます。 これらのディレクトリは `\|\c .B #include <\c .I file\c .B \&>\c \&\|' によっては検索されません。 .Sp \&\|` .B \-I\-\c \&\|' オプション指定後に `\|\c .B \-I\c \&\|' で指定したディレクトリは、全ての `\|\c .B #include\c \&\|' 命令によって検索されます。(通常は \c .I 全ての\c \& `\|\c .B \-I\c \&\|' で指定されたディレクトリは この方法で検索されます。) .Sp これに加えて `\|\c .B \-I\-\c \&\|' オプションは、カレントディレクトリ (現在の入力ファイルが存在する ディレクトリ) が `\|\c .B #include "\c .I file\c .B \&"\c \&\|' に対する最初の検索対象となることを抑制します。`\|\c .B \-I\-\c \&\|' によるこの効果を上書きする方法はありません。`\|\c .B \-I.\c \&\|' を指定することによって、コンパイラが起動されたディレクトリが検索 されることを指定することは可能です。これはプリプロセッサが行なう デフォルトの動作とは異なりますが、たいていはこれで十分です。 .Sp `\|\c .B \-I\-\c \&\|' は、ヘッダファイルの検索に標準のシステムディレクトリを使うことを抑制 するわけではありません。 従って、`\|\c .B \-I\-\c \&\|' と `\|\c .B \-nostdinc\c \&\|' は 独立です。 .TP .BI "\-L" "dir" ディレクトリ\c .I dir\c \& を `\|\c .B \-l\c \&\|' による検索が行なわれるディレクトリのリストに加えます。 .TP .BI "\-B" "prefix" このオプションはコンパイラ自身の実行形式、ライブラリ、データファイルの 検索場所を指定します。 .Sp コンパイラドライバはサブプログラム `\|\c .B cpp\c \&\|', `\|\c .B cc1\c \&\|' (または C++ においては `\|\c .B cc1plus\c \&\|'), `\|\c .B as\c \&\|', そして `\|\c .B ld\c \&\|' を 1 つ、あるいはそれ以上起動します。コンパイラドライバは、 起動するプログラムのプレフィックスとして .I prefix\c \& に `\|\c .I machine\c .B /\c .I version\c .B /\c \&\|' をつけたものとつけないものの双方を 使用します。 .Sp コンパイラドライバは各サブプログラムの起動時に、 `\|\c .B \-B\c \&\|' プレフィックスの指定がある場合は、それを最初に利用します。もしその 名前が見つからなければ、または `\|\c .B \-B\c \&\|' が指定されていなければ、ドライバは 2 つの標準プレフィックス `\|\c .B /usr/lib/gcc/\c \&\|' と `\|\c .B /usr/local/lib/gcc-lib/\c \&\|' を試します。このどちらにも見つからなければ、コンパイラドライバは、 環境変数 `\|\c .B PATH\c \&\|' のディレクトリリストを利用して、そのプログラム名を検索します。 .Sp ランタイムサポートファイル `\|\c .B libgcc.a\c \&\|' も、必要ならば `\|\c .B \-B\c \&\|' プレフィックスを用いて検索されます。もしそこに見つからなければ、 前記 2 つの標準プレフィックスが試みられますが、それで終りです。この場合は リンクの対象から外されます。ほとんどの場合、またほとんどのマシンでは、`\|\c .B libgcc.a\c \&\|' は実際には必要ではありません。 .Sp これと同じ効果を、環境変数 .B GCC_EXEC_PREFIX\c \& によっても得ることができます。もしこの環境変数が定義されていれば、こ の値がプレフィックスとして同様に使用されます。もし `\|\c .B \-B\c \&\|' オプションと .B GCC_EXEC_PREFIX\c \& 環境変数の双方が存在した場合は、`\|\c .B \-B\c \&\|' オプションが最初に使用され、環境変数は次に使用されます。 .SH 警告オプション 警告は、本質的に間違いであるわけではありませんが、危険な構造を報告したり、 エラーがあるかもしれないような部分を示唆する診断メッセージです。 .Sp 以下のオプションは、GNU CC が生成する警告の量と種類を制御します。 .TP .B \-fsyntax\-only コードの文法エラーをチェックしますが、一切出力は行いません。 .TP .B \-w 全ての警告メッセージを抑制します。 .TP .B \-Wno\-import .BR #import の利用による警告メッセージを抑制します。 .TP .B \-pedantic 厳密な ANSI 標準 C 言語で規定している全ての警告を表示し、許されていない拡張を 使用したプログラムを全て拒否します。 .Sp 正当な ANSI 標準 C プログラムは、このオプションの有無に関わらず コンパイルできるべきです (もっとも、ほんのわずかではありますが `\|\c .B \-ansi\c \&\|' を必要とするものはあります)。しかし、このオプションを使用しない場合、 GNU 拡張や伝統的な C の特徴も、これに加えてサポートされます。このオプション を使用すれば、それらは拒絶されます。このオプションを\c .I 使う\c \&理由はありませんが、こだわりのある人々を満足させるためにのみ 存在しています。 .Sp `\|\c .B \-pedantic\c \&\|' は、始まりと終りとが `\|\c .B _\|_\c \&\|' である代替キーワードの使用については、警告しません。 同様に .B _\|_extension_\|_\c \& に続く表現についても警告しません。しかし、システムヘッダファイルのみ がこの抜け道を使用すべきであり、アプリケーションプログラムはこれを避け るべきです。 .TP .B \-pedantic\-errors `\|\c .B \-pedantic\c \&\|' と似ていますが、警告のかわりにエラーを出します。 .TP .B \-W 以下のイベントに対して、特別な警告メッセージを表示します。 .TP \ \ \ \(bu volatile でない自動変数が .B longjmp\c \& の呼び出しによって変更され得る場合です。これらの警告は、最適化コンパイル の時のみ問題になり得ます。 .Sp コンパイラは .B setjmp\c \& の呼び出しのみを見ています。コンパイラは、どこで \c .B longjmp\c \& が呼び出されるかを知ることはできません。実際には、シグナルハンドラは コード中の任意の場所で .B longjmp\c \& を呼び出すことができます。従って、実際には \c .B longjmp\c \& への呼び出しが危険な部分からはおこなわれていないために問題のないプ ログラムであっても、警告が発せられることになります。 .TP \ \ \ \(bu 関数が、値を伴ってリターンする場合と、値を伴わずにリターンする場合の両方 が起こりうる場合です。 (関数の最後を抜けていくことは、値を伴わずに関数をリターンするとみなされます。) 例えば、次の関数がこの種類の警告を引き起こします。 .Sp .nf foo (a) { if (a > 0) return a; } .Sp .fi ある関数 (\c .B abort\c \& や\c .B longjmp\c \& を含む) が決してリターンしないということを GNU CC が理解できないために、にせの警告 が発生するかもしれません。 .TP \ \ \ \(bu 式文 (expression-statement) またはコンマ式の左部分が 一切の副作用を含まない場合です。 警告を抑制するには、使用しない式を void にキャストして下さい。 例えば `\|\c .B x[i,j]\c \&\|' といった式は警告されますが、`\|\c .B x[(void)i,j]\c \&\|' は警告されません。 .TP \ \ \ \(bu 符号無しの値が 0 と `\|\c .B >\c \&\|' または `\|\c .B <=\c \&\|' で比較される場合です。 .PP .TP .B \-Wimplicit 関数やパラメータに対する暗黙の宣言に対して常に警告します。 .TP .B \-Wreturn\-type 関数の戻り値の型が、デフォルトである \c .B int\c \& に定義された時に常に警告します。また、戻り値の型が \c .B void\c でない関数内に、戻り値のない \c .B return\c \& 文がある場合にも常に警告します。 .TP .B \-Wunused ローカル変数が宣言されたにも関わらず使用されていない場合、静的に宣言さ れた関数の実体が定義されていない場合、計算結果が明らかに 利用されていない場合に常に警告します。 .TP .B \-Wswitch .B switch\c \& 文がインデックスとして列挙型をとっている時、その列挙型中のいくつ かの値に対する \c .B case\c \& が欠けている場合に常に警告します。(\c .B default\c \& ラベルが存在する場合、この警告は出ません。) このオプションを使用した場合 には、列挙型の範囲を越えた \c .B case\c \& ラベルも、常に警告されます。 .TP .B \-Wcomment コメントの開始文字列 `\|\c .B /\(**\c \&\|' がコメント中に現れた時に常に警告します。 .TP .B \-Wtrigraphs トライグラフの出現を常に警告します (トライグラフが使用可能であると仮定します)。 .TP .B \-Wformat .B printf\c \&, \c .B scanf\c \& などへの呼び出しに対して、与えられた引数が、フォーマット文字列の指 定を満足する型を持っているかを検査します。 .TP .B \-Wchar\-subscripts 配列の添字の型が .BR char であった場合に警告します。これはよくある間違いのもとです。 いくつかのマシンにおいてはこの型が符号付きであることを、 プログラマはしばしば忘れてしまいます。 .TP .B \-Wuninitialized 初期化されていない自動変数が使用されています。 .Sp これらの警告は、最適化コンパイルを行なう時のみ発生します。なぜなら、 コンパイラは最適化を行なう時にのみデータフロー情報を必要とするからです。 もし `\|\c .B \-O\c \&\|' を指定しなかった場合は、この警告を得ることはできません。 .Sp これらの警告は、レジスタ割り当ての対象となった変数についてのみ発生します。 従って、\c .B volatile\c \& であると宣言された変数や、アドレス上に割り当てられた変数、サイズが 1, 2, 4, 8 バイト以外の変数に関してはこれらの警告は発生しません。 さらに、構造体、共用体、配列については、たとえそれらがレジスタに 割り当てられたとしても、これらの警告は発生しません。 .Sp ある変数によって計算された値が結局使用されないような変数については、一切の 警告が生じないことに注意して下さい。このような計算は、警告が表示される前に データフロー解析によって削除されます。 .Sp これらの警告をオプションにした理由の一つは、GNU CC がまだあまり賢くなくて、 あるコードが一見間違いを含むかのように見えても それは実は正しいものかもしれない、 ということを GNU CC が理解できない、というものです。 ここにその 1 つの例を挙げます。 .Sp .nf { int x; switch (y) { case 1: x = 1; break; case 2: x = 4; break; case 3: x = 5; } foo (x); } .Sp .fi もし \c .B y\c \& の値が常に 1, 2 あるいは 3 である限りは \c .B x\c \& は常に 初期化されます。しかし GNU CC はこれを知ることはできません。もう 1 つの一般 的な例を挙げます。 .Sp .nf { int save_y; if (change_y) save_y = y, y = new_y; .\|.\|. if (change_y) y = save_y; } .Sp .fi これはバグを含みません。なぜなら \c .B save_y\c \& は、その値が設定された時のみ使用されるからです。 .Sp いくつかのにせの警告は、使用している決してリターンしない関数全てに対して .B volatile\c \& と宣言することによって防ぐことが可能です。 .TP .B \-Wparentheses ある特定の文脈中で括弧が省略されていた場合に警告します。 .TP .B \-Wtemplate\-debugging C++ プログラムにおいてテンプレートを使用している際に、デバッグが完全に 可能でない場合を警告します (C++ のみ)。 .TP .B \-Wall 全ての上に挙げた `\|\c .B \-W\c \&\|' オプションを結合したものです。これらのオプションは全て、 たとえマクロとの組合せ であっても、避けたほうがいいと我々が推奨する用法や、 簡単に避けることができると我々が信じている用法に関するものです。 .PP 残りの `\|\c .B \-W.\|.\|.\c \&\|' オプションは `\|\c .B \-Wall\c \&\|' によっては暗黙のうちに指定されません。なぜならこれらは、クリーンなプ ログラムにおいても、ある状況においては使用することが妥当であると我々が 考える構造についての警告を行なうオプションだからです。 .TP .B \-Wtraditional 伝統的な C と ANSI C において異なった振舞いをする特定の構造について警 告します。 .TP \ \ \ \(bu マクロ引数がマクロ本体内の文字列定数に現れるものです。これは、伝統的な C に おいてはその引数で置換しましたが、ANSI C においては定数の一部として扱わ れます。 .TP \ \ \ \(bu ブロック内で外部宣言であると宣言され、かつそのブロックの終端の後で 使用されている関数です。 .TP \ \ \ \(bu オペランドとして \c .B long\c \& 型をとる \c .B switch\c \& 文です。 .PP .TP .B \-Wshadow ローカル変数が他のローカル変数を隠している時に常に警告します。 .TP .BI "\-Wid\-clash\-" "len" 2 つの全く別の識別子の最初の \c .I len 文字が一致した時に警告します。これはある種の旧式な おばかさんコンパイラでコンパイルされ得るプログラムを作る場合に役に立ちます。 .TP .B \-Wpointer\-arith 関数型や \c .B void\c \& の \*(lqサイズ\*(rq に依存するものを全て警告します。GNU C はこれらに対して、 サイズ 1 を割り当てています。これは \c .B void \(**\c \& ポインタと関数へのポインタにおける計算を簡便にするためです。 .TP .B \-Wcast\-qual ポインタが、型修飾子が削除されるようにキャストされる全ての場合に警告します。 例えば \c .B const char \(**\c \& を 普通の \c .B char \(**\c \& にキャストした場合に警告がなされます。 .TP .B \-Wcast\-align -ポインタのキャストにおいて、そのターゲットに要求されるアラインメントが +ポインタのキャストにおいて、そのターゲットに要求される境界条件が 大きくなるようなキャストを全て警告します。例えば \c .B char \(**\c \& が \c .B int \(**\c \& へとキャストされると、整数が 2、あるいは 4 バイト境界でしかアクセスで きないマシンにおいては警告が発せられます。 .TP .B \-Wwrite\-strings 文字定数に対して、型 \c .B const char[\c .I length\c .B ]\c \& を与え、非-\c .B const\c \& の \c .B char \(** ポインタへのアドレスのコピーに対して警告するようにします。この警告は、 宣言とプロトタイプにおいて \c .B const\c \& の使用を非常に注意深くおこなっていさえすれば、 文字列定数に書き込みをしそうなコードをコンパイル時に発見することを助けますが、 そうでない場合は有害無益な指定です。これが、我々がこの警告を `\|\c .B \-Wall\c \&\|' のリクエストに含めなかった理由です。 .TP .B \-Wconversion 同じ引数が与えられた時に、プロトタイプが存在する場合とプロトタイプが 存在しない場合とで、異なった型変換を引き起こす場合について警告します。 これは固定小数点から浮動小数点への変換やその逆、デフォルトの動作と異なる固定 小数点引数の幅や符号の有無の変換が含まれます。 .TP .B \-Waggregate\-return 構造体や共用体を返す関数を定義した場合や、 それらを呼び出す全ての場合に警告します。 (配列を返すことができる言語においても、これは警告を引き起こします。) .TP .B \-Wstrict\-prototypes 引数の型を指定せずに関数を宣言、あるいは定義した場合に警告します。 (以前に引数の型を指定した宣言が存在する場合には、旧式の関数宣言に対しては 警告をしません。) .TP .B \-Wmissing\-declarations グローバルな関数を、その前にプロトタイプ宣言をせずに定義した場合に 警告します。 この警告は、たとえその定義自身がプロトタイプを含んでいたとしても発生します。 この警告の目的は、ヘッダファイル中にグローバル関数の定義を忘れるこ とを防ぐことにあります。 .TP .B \-Wredundant-decls 同一スコープ中で複数回、同一対象を宣言した場合に、たとえそれが正当で何も 変化させない場合であっても警告します。 .TP .B \-Wnested-externs 関数内で \c .B extern\c \& 宣言を行なった場合に警告します。 .TP .B \-Wenum\-clash 異なる列挙型の間で変換を行なった際に警告します (C++ のみ)。 .TP .B \-Woverloaded\-virtual (C++ のみ。) 導出クラスにおいて、仮想関数の定義は基底クラスで定義された仮想関数の型 の記述と一致していなければなりません。このオプションを使用することによっ て、基底クラスにおける仮想関数と同一の名前を持ち、基底クラスのいかなる 仮想関数とも異なった型の記述を持つ関数に対して警告が行われます。これに よって、導出クラスが仮想関数を定義しようとして失敗する場合を警告するこ とができます。 .TP .B \-Winline 関数がインライン宣言されている、あるいは .B \-finline\-functions オプションが与えられている場合に、関数をインライン展開できなかった場合 に警告します。 .TP .B \-Werror 警告をエラーとして扱います。警告の後にコンパイルを中断します。 .SH デバッグオプション GNU CC は、ユーザのプログラムや GCC の双方をデバッグするために、 多くのオプションを備えています。 .TP .B \-g オペレーティングシステムのネイティブのフォーマット (stabs, COFF, XCOFF, DWARF) でデバッグ情報を生成します。GDB はこのデバッグ情報に基づい て動作することができます。 .Sp stabs フォーマットを使用するほとんどのシステムにおいては、`\|\c .B \-g\c \&\|' を指定すると、GDB だけが使用できる余分なデバッグ情報が使用可能に なります。 この特別の情報は GDB に対してはよりよいデバッグを行なうことを可能 としますが、おそらく他のデバッガに対してはクラッシュ、あるいはそのプログラムを 読めなくしてしまいます。この特別な情報の生成を制御するためには `\|\c .B \-gstabs+\c \&\|', `\|\c .B \-gstabs\c \&\|', `\|\c .B \-gxcoff+\c \&\|', `\|\c .B \-gxcoff\c \&\|', `\|\c .B \-gdwarf+\c \&\|', `\|\c .B \-gdwarf\c \&\|' を使用してください (下記参照)。 .Sp 他の多くの C コンパイラと異なり、GNU CC は `\|\c .B \-g\c \&\|' を `\|\c .B \-O\c \&\|' とともに使用することを許しています。最適化されたコードが通る近道は、 時には驚くべき結果を生み出すかもしれません。 定義したはずの変数が存在しなかったり、 制御の流れが予想もしなかった場所に移動したり、結果が定数とわかる計算や、 結果がすでに手元にある文は実行されなくなり、ある文がループの外に追い出されて 別の場所で実行されたりします。 .Sp それにも関わらず、このオプションは最適化された出力のデバッグを可能とし ています。これによって、バグを含むかもしれないプログラムに対して オプティマイザを使用することができるようになります。 .PP 以下のオプションは、GNU CC を 1 つ以上のデバッグフォーマットを扱 えるように作成してある場合に有益です。 .TP .B \-ggdb (もしサポートされていれば)ネイティブのフォーマットでデバッグ情報を生成 します。これは可能な限りの全ての GDB 拡張を含みます。 .TP .B \-gstabs (もしサポートされていれば) stabs フォーマットでデバッグ情報を生成します。 ただし GDB 拡張は含みません。このフォーマットはほとんどの BSD システム上 の DBX で利用できるフォーマットです。 .TP .B \-gstabs+ (もしサポートされていれば) stabs フォーマットでデバッグ情報を生成します。 ただし GNU デバッガ (GDB) でしか理解できない GNU 拡張を使用します。 この拡張を使用すると、他のデバッガでは、クラッシュや プログラムが読めなくなるなどの影響がおそらく出ます。 .TP .B \-gcoff (サポートされていれば) COFF フォーマットでデバッグ情報を生成します。 これは、System V Release 4 より前の ほとんどの System V 上の SDB で利用できるフォーマットです。 .TP .B \-gxcoff (サポートされていれば) XCOFF フォーマットでデバッグ情報を生成します。こ れは IBM RS/6000 システムにおいて DBX デバッガによって使用される フォーマットです。 .TP .B \-gxcoff+ (もしサポートされていれば) XCOFF フォーマットでデバッグ情報の生成を行 います。ただし、GNU デバッガ (GDB) によってのみ理解され得る GNU 拡張を使 用します。これらの拡張を使用すると、他のデバッガに対してはクラッシュやプ ログラムを読みとり不能にするなどの影響を及ぼし得ます。 .TP .B \-gdwarf (もしサポートされていれば) DWARF フォーマットでデバッグ情報の生成を行 います。これはほとんどの System V Release 4 システムにおいて SDB によっ て使用される形式です。 .TP .B \-gdwarf+ (もしサポートされていれば) DAWRF フォーマットでデバッグ情報の生成を行 います。ただし、GNU デバッガ (GDB) によってのみ理解され得る GNU 拡張を使 用します。これらの拡張を使用すると、他のデバッガに対してはクラッシュや プログラムを読みとり不能にするなどの影響を及ぼし得ます。 .PP .BI "\-g" "level" .br .BI "\-ggdb" "level" .br .BI "\-gstabs" "level" .br .BI "\-gcoff" "level" .BI "\-gxcoff" "level" .TP .BI "\-gdwarf" "level" デバッグ情報を要求しますが、同時に \c .I level\c \& によってどの程度の情報が必要かを指定します。デフォルトのレベルは 2 です。 .Sp レベル 1 は、デバッグを予定しないプログラムの部分に対してバックトレース を生成するに十分な最低限の情報を生成します。これは関数と外部変数の記述 を含みますが、ローカル変数や行番号に関する情報は含みません。 .Sp レベル 3 はプログラムに含まれる全てのマクロ定義などの特別な情報を含みます。 いくつかのデバッガは `\|\c .B \-g3\c \&\|' の使用によってマクロの展開をサポートします。 .TP .B \-p プログラム \c .B prof\c \& によって使用されるプロファイル情報を書き込む特別なコードを生成します。 .TP .B \-pg プログラム \c .B gprof\c \& によって使用されるプロファイル情報を書き込む特別なコードを生成します。 .TP .B \-a 基本ブロックのプロファイル情報を書き込む特別なコードを生成します。これは それぞれのブロックが何回実行されたかを記録します。このデータは \c .B tcov\c \& のようなプログラムによって解析されます。ただし、このデータフォーマットは \c .B tcov\c \& が期待するものとは異なっています。最終的には、GNU \c .B gprof\c \& が処理できるように拡張されるべきです。 .TP .BI "\-d" "letters" コンパイル中の .I letters\c \& で指定されるタイミングに、デバッグ用のダンプを生成するように指示します。 これはコンパイラをデバッグするために使用されます。ほとんどのダンプのファイル 名はソースファイル名に 1 単語をつなげたものになります。(例えば、`\|\c .B foo.c.rtl\c \&\|' や `\|\c .B foo.c.jump\c \&\|' などです)。 .TP .B \-dM 全てのマクロ定義をダンプし、プリプロセス終了時に出力に書き出します。 その他には何も書き出しません。 .TP .B \-dN 全てのマクロ名をダンプし、プリプロセス終了時に出力に書き出します。 .TP .B \-dD 全てのマクロ定義をプリプロセス終了時に通常の出力に加えてダンプします。 .TP .B \-dy パース中にデバッグ情報を標準エラー出力にダンプします。 .TP .B \-dr RTL 生成後に `\|\c .I file\c .B \&.rtl\c \&\|' に対してダンプします。 .TP .B \-dx 関数をコンパイルするかわりに、RTL を生成するのみの処理を行います。通常は `\|\c .B r\c \&\|' とともに使用されます。 .TP .B \-dj 最初のジャンプ最適化の後に、`\|\c .I file\c .B \&.jump\c \&\|' に対してダンプします。 .TP .B \-ds 共通部分式削除 (しばしば共通部分式削除に続くジャンプ最適化も含みます) の終了 時に `\|\c .I file\c .B \&.cse\c \&\|' に対してダンプします。 .TP .B \-dL ループ最適化終了時に `\|\c .I file\c .B \&.loop\c \&\|' に対してダンプします。 .TP .B \-dt 第 2 共通部分式削除段階 (しばしば共通部分式削除に続くジャンプ最適化も 含みます) の終了時に、`\|\c .I file\c .B \&.cse2\c \&\|' に対してダンプします。 .TP .B \-df フロー解析終了後に、`\|\c .I file\c .B \&.flow\c \&\|' に対してダンプします。 .TP .B \-dc 命令コンビネーション終了時に `\|\c .I file\c .B \&.combine\c \&\|' に対してダンプします。 .TP .B \-dS 第 1 命令スケジューリング段階終了時に `\|\c .I file\c .B \&.sched\c \&\|' に対してダンプします。 .TP .B \-dl ローカルレジスタ割り当て終了時に `\|\c .I file\c .B \&.lreg\c \&\|' に対してダンプします。 .TP .B \-dg グローバルレジスタ割り当て終了時に `\|\c .I file\c .B \&.greg\c \&\|' に対してダンプします。 .TP .B \-dR 第 2 命令スケジューリング段階終了時に `\|\c .I file\c .B \&.sched2\c \&\|' に対してダンプします。 .TP .B \-dJ 最終ジャンプ最適化終了時に `\|\c .I file\c .B \&.jump2\c \&\|' に対してダンプします。 .TP .B \-dd 遅延分岐スケジューリング終了時に `\|\c .I file\c .B \&.dbr\c \&\|' に対してダンプします。 .TP .B \-dk レジスタからスタックへの転換終了時に `\|\c .I file\c .B \&.stack\c \&\|' に対してダンプします。 .TP .B \-da 以上の全てのダンプを生成します。 .TP .B \-dm 処理の終了時に、メモリ使用に関する統計情報を標準エラー出力に出力します。 .TP .B \-dp どのようなパターンや選択肢が使用されたかを示すコメントをアセンブラ出力 中のコメントで解説します。 .TP .B \-fpretend\-float クロスコンパイラで処理を行なう際に、ホストマシンと同じ浮動小数点フォーマット をターゲットマシンが持つかのように振舞わせます。これは浮動小数点定 数の誤った出力を引き起こしますが、実際の命令列はおそらく GNU CC を ターゲットマシンで起動した場合と同じものとなるでしょう。 .TP .B \-save\-temps 通常の \*(lq一時\*(rq 中間ファイルを消去せずに保存します。これらは カレントディレクトリに置かれ、ソースファイルに基づいた名前が付けられます。 従って、`\|\c .B foo.c\c \&\|' を `\|\c .B \-c \-save\-temps\c \&\|' を使用してコンパイルした場合は、 `\|\c .B foo.cpp\c \&\|', `\|\c .B foo.s\c \&\|' が、`\|\c .B foo.o\c \&\|' と同様に生成されます。 .TP .BI "\-print\-libgcc\-file\-name=" "library" ライブラリファイル `\|\c .nh .I library .hy \&\|' の完全な絶対名を表示します。このファイルはリンクの際のみに使用され、 それ以外の働きはありません。このオプションが指定された場合は、GNU CC は コンパイルやリンクを何も行なわず、ただファイル名を表示するのみです。 .TP .B \-print\-libgcc\-file\-name `\|\c .B \-print\-file\-name=libgcc.a\c \&\|' と同じです。 .TP .BI "\-print\-prog\-name=" "program" `\|\c .B \-print\-file\-name\c \&\|' と似ていますが、`\|\c cpp\c \&\|' のような program を検索します。 .SH 最適化オプション これらのオプションは様々な種類の最適化処理を制御します。 .TP .B \-O .TP .B \-O1 最適化を行います。最適化コンパイルは幾分長めの処理時間と、大きな関数に対 する非常に多くのメモリを必要とします。 .Sp `\|\c .B \-O\c \&\|' が指定されなかった場合は、コンパイラの目標はコンパイルのコストを 低減することや、目的の結果を得るためのデバッグを可能とすることに置かれ ます。それぞれの文は独立しています。つまり、ブレークポイントでプログラムを 停止させることによって、任意の変数に新し い値を代入したり、プログラムカウンタを他の文へと変更することを可能とし、 そのソースコードにプログラマが望む正しい結果を得ることを可能にします。 .Sp `\|\c .B \-O\c \&\|' を指定しなかった場合は、\c .B register\c \& と宣言した変数のみがレジスタへと割り当てられます。コンパイルの結果と して得られるコードは、PCC を `\|\c .B \-O\c \&\|' なしで使用した場合と比較して若干良くないものとなります。 .Sp `\|\c .B \-O\c \&\|' が指定されると、コンパイラはコードのサイズと実行時間を減少させる ことを試みます。 .Sp `\|\c .B \-O\c \&\|' を指定することによって、 `\|\c .B \-fthread\-jumps\c \&\|' と `\|\c .B \-fdefer\-pop\c \&\|' のフラグが指定されます。遅延スロットをもつマシンでは `\|\c .B \-fdelayed\-branch\c \&\|' が指定されます。フレームポインタを使わないデバッグをサポートしている マシンでは、`\|\c .B \-fomit\-frame\-pointer\c \&\|' も指定されます。マシンによってはさらにその他のフラグが 指定されることもあります。 .TP .B \-O2 さらに最適化を行います。サポートされている最適化手段のうち、 空間と速度のトレードオフを含まないものはほとんどの全て使用されます。 例えばループのアンローリングや関数のインライン化は行われません。 .B \-O\c \& と比較して、このオプションはコンパイル時間と生成コードの性能の双方を増加 させます。 .TP .B \-O3 さらなる最適化を行います。これは .B \-O2 が行う全ての最適化手段に加えて .B \-finline\-functions も有効にします。 .TP .B \-O0 最適化を行いません。 .Sp 複数の .B \-O オプションを指定した場合は、レベル番号の有無に関わらず、最後に指定した ものが有効になります。 .PP `\|\c .B \-f\c .I flag\c \&\c \&\|' の形式を持ったオプションは、マシン独立のフラグです。ほとんどの フラグは有効形式と無効形式の双方を持っています。`\|\c .B \-ffoo\c \&\|' の無効形式は `\|\c .B \-fno\-foo\c \&\|' です。以下のリストでは、デフォルトではない方の形式のみを示します。 これに対して `\|\c .B no\-\c \&\|' を削除する、あるいは追加することによって双方の形式を生成すること が可能です。 .TP .B \-ffloat\-store 浮動小数点変数をレジスタに格納しません。このオプションは 68000 のように (68881 の) 浮動小数点レジスタが \c .B double\c \& よりも高い精度を持っていると思われるマシンにおいて、望まない超過精度を 抑制することを可能にします。 .Sp ほとんどのプログラムにおいては、超過精度は単に良い結果を生むだけですが、 いくつかのプログラムは正確な IEEE の浮動小数点フォーマット定義に依 存しています。 このようなプログラムに対して `\|\c .B \-ffloat\-store\c \&\|' を使用します。 .TP .B \-fmemoize\-lookups .TP .B \-fsave\-memoized コンパイルを高速に行なうために、ヒューリスティックスを使用します (C++ のみ)。これらのヒューリスティックスはデフォルトでは有効になってい ません。なぜなら、これはある種の入力ファイルにしか効果がなく、その他の ファイルではかえってコンパイルが低速になるからです。 .Sp 最初に、コンパイラはメンバ関数への呼び出し (あるいはデータメンバへの参 照) を構築します。これは (1) どのクラスでその名前のメンバ関数が実装さ れているかを決定し、(2) どのメンバ関数への呼び出しであるかという問題 (これはどの種類の型変換が必要となるかという決定も含みます) を解決し、(3) 呼び出し側に対するその関数の可視性を検査するという作業を行なう必要があります。 これらは全て、コンパイルをより低速にしてしまいます。通常は、そのメンバ 関数への 2 度目の呼び出しが起こった場合も、この長い処理がまた行なわれ ることになります。これは次のようなコード .Sp \& cout << "This " << p << " has " << n << " legs.\en"; .Sp は、これらの 3 つの手順を 6 回繰り返すということを意味します。これに対し て、ソフトウェアキャッシュを使用すると、そのキャッシュへの\*(lqヒット \*(rqは、コストを劇的に低減することが期待できます。不幸なことに、キャッシュ の導入によって異なったレイヤの機構を実装することが必要となり、それ 自身のオーバヘッドが生じてしまいます。`\|\c .B \-fmemoize\-lookups\c \&\|' はこのソフトウェアキャッシュを有効にします。 .Sp -メンバとメンバ関数へのアクセス特権 (可視性) はある関数におけるコンテクスト +メンバとメンバ関数へのアクセス特権 (可視性) はある関数におけるコンテキスト と別の関数におけるものとでは異なるので、 .B g++ はキャッシュをフラッシュしなければなりません。`\|\c .B \-fmemoize\-lookups\c \&\|' フラグを使用すると、全ての関数をコンパイルするたびに毎回キャッシュを フラッシュします。`\|\c .B \-fsave\-memoized\c \&\|' フラグは同一のソフトウェアキャッシュについて、コンパイラが前回 コンパイルした関数のコンテキストが、次にコンパイルするコンテキストと同 一のアクセス特権を有しているとみなせる時には、キャッシュを保持します。 これは同一クラス中に多くのメンバ関数を定義している時に特に有効です。 他のクラスのフレンドになっているメンバ関数を除き、同一のクラスに属して いる全てのメンバ関数のアクセス特権は、全て同一です。このような場合は キャッシュをフラッシュする必要はありません。 .TP .B \-fno\-default\-inline クラススコープ中に定義されたメンバ関数をデフォルトでインライン関数とす る処理を行ないません (C++ のみ)。 .TP .B \-fno\-defer\-pop それぞれの関数呼び出しに対して、関数のリターン直後に常に引数をポップします。 関数呼出後に引数をポップしなければならないマシンにおいては、 コンパイラは通常、いくつかの関数の引数をスタックに積んで、 それらを同時にポップします。 .TP .B \-fforce\-mem メモリオペランドに対して、それらに対する演算が行なわれる前に、 レジスタにコピーします。これは全てのメモリ参照を、潜在的な共通部分式であると 定めることによって、より良いコードを生成します。もしそれが共通部分式でな かった場合は、命令コンビネーションによってレジスタへの読み込みは削 除されます。私はこれがどのような違いを生み出すかということに興味があります。 .TP .B \-fforce\-addr メモリアドレス定数について、それらに対する演算が行なわれる前にレジスタ にコピーします。これは `\|\c .B \-fforce\-mem\c \&\|' と同じ手法でより良いコードを生成します。私はこれがどのような違いを 生み出すかということに興味があります。 .TP .B \-fomit\-frame\-pointer フレームポインタをレジスタに格納する必要のない関数において、この処理を 行いません。これはフレームポインタの保存、設定、復帰にかかる命令を省略 し、さらに、多くの関数でレジスタ変数として使用できる余分なレジスタを 得ることを可能にします。\c .I ただし、このオプションはほとんどのマシンにおいてデバッグを不可能にします。 .Sp Vax などのいくつかのマシンでは、このフラグは効果を持ちません。なぜならこ れらのマシンでは標準の呼び出し手順が自動的にフレームポインタの設定を 行なってしまい、これが存在しないとしたところで何も節約ができないからです。 マシン記述マクロ \c .B FRAME_POINTER_REQUIRED\c \& が、ターゲットマシンがこのフラグをサポートするかどうかを制御しています。 .TP .B \-finline\-functions 全ての単純な関数を呼び出し側に組み込んでしまいます。コンパイラは ヒューリスティックスを用いて、 どの関数がこの方法で組み込むに足りるほど単純かを決定します。 .Sp もし、ある関数に対する全ての呼び出しを組み込むことができ、かつその関数が \c .B static\c \& と宣言されていた場合は、GCC はその関数を独立したアセンブラコードと しては出力をしません。 .TP .B \-fcaller\-saves 関数呼び出しにおいて破壊されるであろう値を、レジスタに保持することを可 能とします。これはこのような呼び出しの周囲にレジスタに対する保存、復帰の 特別なコードを出力することによって実現されます。このような割り当ては、そ れが通常よりも良いコードを出力するとみなされる場合にのみ行われます。 .Sp このオプションは特定のマシンではデフォルトで有効となっています。これらは 通常、このオプションの処理の代わりに使うことができる呼び出し時保存 レジスタが存在しないマシンです。 .TP .B \-fkeep\-inline\-functions ある関数への呼び出しが全て呼び出し側に組み込むことができて、かつその関数が \c .B static\c \& と宣言されていたとしても、実行時に呼び出し可能な関数も生成します。 .TP .B \-fno\-function\-cse 関数のアドレスをレジスタに置きません。つまり、定まった関数を呼び出すコードは、 それぞれ明示的な関数のアドレスを含むコードとなります。 .Sp このオプションは効率の低いコードを生成しますが、アセンブラ出力を書き換え るようなハックを行なう場合には、このオプションを使用しなければ 混乱させられることでしょう。 .TP .B \-fno\-peephole マシン固有のピープホール最適化を禁止します。 .TP .B \-ffast-math このオプションは生成コードのスピードのために、GCC に対して、いくつかの ANSI または IEEE の規則/規格を侵させます。例えば、このオプションは \c .B sqrt\c \& 関数の引数は非負の数であることを仮定します。 .Sp このオプションはどの `\|\c .B \-O\c \&\|' オプションによっても有効とされません。なぜなら、このオプションは数 学関数に関する IEEE または ANSI の規則/規格の厳密な実装に依存して書かれた プログラムに対して誤った出力を与えるからです。 .PP 以下のオプションは特殊な最適化に関する制御を行います。`\|\c .B \-O2\c \&\|' オプションは`\|\c .B \-funroll\-loops\c \&\|' と `\|\c .B \-funroll\-all\-loops\c \&\|' を除くこれらの全てのオプションを有効にします。 .PP `\|\c .B \-O\c \&\|' オプションは通常 `\|\c .B \-fthread\-jumps\c \&\|' と `\|\c .B \-fdelayed\-branch\c \&\|' を有効とします。ただし、特殊なマシンではデフォルトの最適化に対して 変更が加えられているかもしれません。 .PP 最適化に関する \*(lqきめ細かいチューニング\*(rq が必要な場合に、以下の フラグを使用することが可能です。 .TP .B \-fstrength\-reduce ループのストレングスリダクションと繰り返し変数の除去を行います。 .TP .B \-fthread\-jumps 分岐ジャンプによってある場所にジャンプした時に、最初の分岐に包括される 比較が存在した時に、最初の分岐のジャンプ先を後者の分岐先に変更します。 この変更先は、2 番目の分岐条件の真偽によって、2 番目の分岐のジャンプ先か、 あるいは2 番目の分岐の直後に定められます。 .TP .B \-funroll\-loops ループ展開の最適化を行います。これはループの繰り返し数がコンパイル時、 あるいはランタイムに決定できる時においてのみ、実行されます。 .TP .B \-funroll\-all\-loops ループ展開の最適化を行います。これは全てのループに対して行われます。この オプションは大抵、より遅く動作するプログラムを生成します。 .TP .B \-fcse\-follow\-jumps 共通部分式削除の処理において、ジャンプ命令の行先が 他の経路から到達できない場合は、そのジャンプ命令を越えてスキャンを行 ないます。例えば、共通部分式削除処理中に \c .B else \c \& 節を伴った .B if \c \& 文に出会った場合、条件が偽ならば分岐先に対しても共通部分式削除を続けます。 .TP .B \-fcse\-skip\-blocks これは `\|\c .B \-fcse\-follow\-jumps\c \&\|' に似ていますが、ブロックを跨ぐジャンプに対しても共通部分式削除を継 続します。共通部分式削除処理中に、else 節を持たない単純な \c .B if\c \& 文にであった時、 `\|\c .B \-fcse\-skip\-blocks\c \&\|' は \c .B if\c \& のボディを跨いだジャンプに対する共通部分式削除処理を継続します。 .TP .B \-frerun\-cse\-after\-loop ループ最適化が行なわれた後に、再度共通部分式削除の処理を行います。 .TP .B \-felide\-constructors コンストラクタへの呼び出しが省略できるように思われる場合に、その呼び出 しを省略します (C++ のみ)。このフラグを指 定した場合は、GNU C++ は以下のコードに対して、一時オブジェクトを経由せずに \c .B y\c \& を \c .B foo への呼び出しの結果から直接初期化します。 .Sp A foo (); A y = foo (); .Sp このオプションを使用しない場合は、GNU C++ は最初に \c .B y\c \& を\c .B A\c \& 型の適切なコンストラクタを呼び出すことによって初期化します。そして、 .B foo\c \& の結果を一時オブジェクトに格納し、最終的には `\|\c .B y\c \&\|' の値を一時オブジェクトの値に入れ換えます。 .Sp デフォルトの振舞い (`\|\c .B \-fno\-elide\-constructors\c \&\|') が、ANSI C++ 標準のドラフトには規定されています。コンストラクタ が副作用を含むプログラムに対して、`\|\c .B \-felide-constructors\c \&\|' を指定すると、そのプログラムは異なった動作をする可能性があります。な ぜなら、いくつかのコンストラクタの呼び出しが省略されるからです。 .TP .B \-fexpensive\-optimizations 比較的コストの高いいくつかの些細な最適化を行います。 .TP .B \-fdelayed\-branch ターゲットマシンにおいてこのフラグがサポートされている場合は、遅延分岐 命令後の命令スロットを命令の順番変更によって利用するように設定します。 .TP .B \-fschedule\-insns ターゲットマシンにおいてこのフラグがサポートされている場合は、必要な データを利用可能になるまで待つことによる実行の遅滞を防ぐために、命令 の順番の変更を行います。これは遅い浮動小数点命令やメモリ読み込み命令の実 行において、それらの結果を必要とする命令の前に他の命令を詰め込みます。 .TP .B \-fschedule\-insns2 `\|\c .B \-fschedule\-insns\c \&\|' と似ていますが、レジスタ割当て処理の後にもう一度命令スケジューリングの 段階を置きます。これは、比較的レジスタ数が少なく、メモリロード命令 が 1 サイクルよりも多くを要するマシンにおいて、特に効果的です。 .SH ターゲットオプション デフォルトでは、GNU CC コンパイラは、現在使用しているマシンと同じタイプの コードをコンパイルします。しかし、GNU CC はクロスコンパイラ としてもインストールすることが可能です。実際には、異なったターゲット マシンのための様々なコンフィギュレーションの GNU CC は、同時にいくつ もインストールすることが可能です。そこで、どの GNU CC を使用するかを 指定するために、`\|\c .B \-b\c \&\|' オプションを使用することができます。 .PP これに加えて、古い、あるいはより新しいバージョンの GNU CC も同時にいく つもインストールしていくことができます。これらのうち 1 つ (おそらくもっ とも新しいもの) がデフォルトとなります。しかし、ひょっとしたら別のものを使 いたくなるかもしれません。 .TP .BI "\-b " "machine" 引数 \c .I machine\c \& は、コンパイルのターゲットマシンを規定します。これは GNU CC をクロス コンパイラとしてインストールした時に有用です。 .Sp .I machine\c \& に指定する値は、GNU CC をクロスコンパイラとしてコンフィギュレーション した時に与えたマシンタイプと同じです。例えば、80386 上の System V で実行されるプログラムのために `\|\c .B configure i386v\c \&\|' というコンフィギュレーションを行なったクロスコンパイラを起動した い場合は、`\|\c .B \-b i386v\c \&\|' と指定します。 .Sp `\|\c .B \-b\c \&\|' の設定を省略した場合は、通常は使用しているマシンと同タイプのマシン のためのコンパイルが行われます。 .TP .BI "\-V " "version" 引数 \c .I version\c \& は、起動される GNU CC のバージョンを規定します。これは複数のバージョンが インストールされている場合に有用です。例えば、 .I version\c \& が `\|\c .B 2.0\c \&\|' ならば、GNU CC バージョン 2.0 を起動することを意味します。 .Sp `\|\c .B \-V\c \&\|' を指定しなかった場合のデフォルトのバージョンは、GNU CC をインストール する時に調整可能です。通常は、もっとも一般的な使用に勧めることができる バージョンがここに指定されます。 .SH マシン依存オプション それぞれのターゲットマシンタイプは、それぞれの特別なオプションを持つ ことが可能です。`\|\c .B \-m\c \&\|' で始まるオプション群は、様々なハードウェアモデルや コンフィギュレーション\(em\&例えば 68010 と 68020、 浮動小数点コプロセッサの有無\(em\& などを選択できます。このオプションを指定することによって、コンパイラは どれか 1 つのモデル、 あるいはコンフィギュレーションに対するコンパイルが可能です。 .PP いくつかのコンフィギュレーションは、通常はそのプラットホーム上の 他のコンパイラとのコマンドラインに関するの互換性をとるため の特別なオプションを用意しています。 .PP 以下は 68000 シリーズのために定義された `\|\c .B \-m\c \&\|' オプションです。 .TP .B \-m68000 .TP .B \-mc68000 68000 のためのコードを生成します。これは 68000 ベースのシステムに対して コンフィギュレーションを行なったコンパイラのデフォルトです。 .TP .B \-m68020 .TP .B \-mc68020 (68000 ではなく) 68020 のためのコードを生成します。これは 68020 ベースの システムに対してコンフィギュレーションを行なったコンパイラのデフォルト です。 .TP .B \-m68881 浮動小数点演算のために 68881 命令を含んだ出力を行います。これはほとんどの 68020 ベースのシステムにおいて、コンパイラのコンフィギュレーション時に .B \-nfp を指定されなかった場合のデフォルトです。 .TP .B \-m68030 68030 のためのコードを生成します。これは 68030 ベースのシステムに対して コンフィギュレーションを行なったコンパイラのデフォルトです。 .TP .B \-m68040 68040 のためのコードを生成します。これは 68040 ベースのシステムに対して コンフィギュレーションを行なったコンパイラのデフォルトです。 .TP .B \-m68020\-40 68040 のためのコードを生成しますが、新しい命令を使用しません。この結果とし て得られるコードは、68020/68881, 68030, 68040 のいずれのシステムにおいても、 比較的高い性能を持ちます。 .TP .B \-mfpa 浮動小数点演算のために Sun FPA 命令を含んだ出力を行います。 .TP .B \-msoft\-float 浮動小数点演算のためにライブラリを呼び出す出力を行います。 .I 警告: この必須のライブラリは GNU CC の一部としては含まれません。通常はそのマシン の一般的な C コンパイラの提供するものを使用しますが、これは通常の方法 ではクロスコンパイルで直接使用することはできません。クロスコンパイルを行 ないたい場合は、自分自身で必要なライブラリ関数を用意する必要があります。 .TP .B \-mshort .B int\c \& 型を \c .B short int\c \& 型のように 16 ビット幅とみなします。 .TP .B \-mnobitfield ビットフィールド命令を使用しません。`\|\c .B \-m68000\c \&\|' は暗黙のうちに `\|\c .B \-mnobitfield\c \&\|' を含みます。 .TP .B \-mbitfield ビットフィールド命令を使用します。`\|\c .B \-m68020\c \&\|' は暗黙のうちに `\|\c .B \-mbitfield\c \&\|' を含みます。これは変更されていないソースの場合のデフォルトです。 .TP .B \-mrtd 固定個数の引数をとる関数に対して、異なった関数呼び出し規約を使用します。 これは、リターン時に引数をポップする \c .B rtd 命令を利用するものです。これは呼び出し側で引数をポップさせる必要がな いために、1 命令を省略することが可能となります。 .Sp この呼び出し規約は通常の Unix で使用されている方式とは互換性がありません。そ のため、Unix コンパイラでコンパイルされたライブラリを呼び出す必要があ る限りは、使用することはできません。 .Sp さらに、全ての可変引数をとり得る関数 ( .B printf\c を含みます) に対して、関数プロトタイプを用意する必要があります。さもないと、 これらの関数に対して誤ったコードが生成されます。 .Sp さらに、関数に対して多過ぎる引数をつけて呼び出すコードを書いた場合、こ れは深刻な誤ったコードを生成します。(通常は多過ぎる変数は害を及ぼすこと なく無視されます。) .Sp .B rtd\c \& 命令は 68010 と 68020 によってサポートされますが、 68000 では使用でき ません。 .PP 以下は Vax のために定義された `\|\c .B \-m\c \&\|' オプションです。 .TP .B \-munix 特定のいくつかのジャンプ命令 (\c .B aobleq\c \& 等) を出力しません。これらの命令で長いレンジを使用した場合、 Vax 用の Unix アセンブラはこれを処理できません。 .TP .B \-mgnu これらのジャンプ命令を出力します。アセンブルには GNU アセンブラの使用 を仮定します。 .TP .B \-mg 浮動小数点数について、d-フォーマットではなく、g-フォーマットのための コードを出力します。 .PP 以下は SPARC でサポートされている `\|\c .B \-m\c \&\|' スイッチです。 .PP .B \-mfpu .TP .B \-mhard\-float 浮動小数点命令を含む出力を行います。これはデフォルトです。 .PP .B \-mno\-fpu .TP .B \-msoft\-float 浮動小数点の処理のためにライブラリを呼び出す出力を行います。 .I 警告: SPARC 用の GNU 浮動小数点ライブラリは存在しません。 通常はそのマシンの一般的な C コンパイラの提供するものを使用しますが、 これは通常の方法ではクロスコンパイルで直接使用することはできません。 クロスコンパイルを行ないたい場合は、 自分自身で必要なライブラリ関数を用意する必要があります。 .Sp .B \-msoft\-float は呼び出し規約を変更します。したがって、 .I 全て のプログラムをこのオプションでコンパイルしない限り、 このオプションは意味をなしません。 .PP .B \-mno\-epilogue .TP .B \-mepilogue .B \-mepilogue を指定することによって (デフォルト)、コンパイラは関数を抜けるため のコードを常に関数の最後に出力します。関数の途中で関数を抜けるコードは全て、 関数の最後の終了コードへのジャンプとして生成されます。 .Sp .BR \-mno\-epilogue を設定することによって、コンパイラは関数から抜けるコードをインライン化 することを試みます。 .PP .B \-mno\-v8 .TP .B \-mv8 .TP .B \-msparclite これらの 3 つのオプションは SPARC アーキテクチャのバリエーションを選択 するために使用されます。 .Sp デフォルトでは、(Fujitsu SPARClite 用にコンフィギュレーションしない限 りは) GCC は SPARC アーキテクチャ v7 用のコードを生成します。 .Sp .B \-mv8 は、SPARC v8 用コードを生成します。v7 コードとの違いは、整数の乗算と整数 の除算が v7 では存在しないが v8 には存在するという点のみです。 .Sp .B \-msparclite は、SPARClite 用のコードを生成します。これは v7 には存在せず SPARClite に存在する、整数乗算、整数除算とスキャン (ffs) 命令を追加します。 .PP .B \-mcypress .TP .B \-msupersparc これら 2 つのオプションはコード最適化対象のプロセッサを選択するための ものです。 .Sp .B \-mcypress を用いると(これがデフォルト)、 コンパイラは Cypress CY7C602 チップ用にコードを最適化します。 このチップは SparcStation/SparcServer 3xx シリーズに用いられています。 このオプションは古い SparcStation 1, 2, IPX などにも適用できます。 .Sp .B \-msupersparc を用いると、コンパイラは SuperSparc CPU 用にコードを最適化します。 このチップは SparcStation 10, 1000, 2000 シリーズに用いられています。 このオプションを用いると、SPARC v8 の全命令セットを用いるようになります。 .PP 以下は Convex のために定義された `\|\c .B \-m\c \&\|' オプションです。 .TP .B \-mc1 C1 用の出力を行います。これはコンパイラが C1 用にコンフィギュレーション を行なわれた時のデフォルトです。 .TP .B \-mc2 C2 用の出力を行います。これはコンパイラが C2 用にコンフィギュレーション を行なわれた時のデフォルトです。 .TP .B \-margcount 引数列の前に、引数の数をワードに置くコードを生成します。いくつかの可搬性 のない Convex や Vax のプログラムはこのワードを必要とします。(デバッガは 不定長引数リストを持つ関数を除いて、このワードを必要としません。これらの 情報はシンボルテーブルに書かれます。) .TP .B \-mnoargcount 引数の数を示すワードを省略します。これは変更されていないソースを使用した 場合のデフォルトです。 .PP 以下は、AMD Am29000 のために定義された `\|\c .B \-m\c \&\|' オプションです。 .TP .B \-mdw DW ビットが立っていることを仮定したコードを出力します。これは、ハードウェア によってバイト操作やハーフワード操作がサポートされているということを 意味します。これはデフォルトです。 .TP .B \-mnodw DW ビットが立っていないことを仮定したコードを出力します。 .TP .B \-mbw システムがバイト操作やハーフワード書き込み操作をサポートしていることを仮定した コードを生成します。これはデフォルトです。 .TP .B \-mnbw システムがバイト操作やハーフワード書き込み操作をサポートしていないことを仮定し たコードを生成します。これは暗黙のうちに `\|\c .B \-mnodw\c \&\|' を含みます。 .TP .B \-msmall スモールメモリモデルを使用します。これは全ての関数のアドレスが単一の 256KB のセグメント内に入ることと、関数の絶対アドレスが 256K 以下にある ことを仮定します。このオプションは \c .B call\c \& 命令を \c .B const\c \&, \c .B consth\c \&, \c .B calli\c \& シーケンスの代わりに使用することを可能にします。 .TP .B \-mlarge .B call\c \& 命令が使用できることを仮定しません。これはデフォルトです。 .TP .B \-m29050 Am29050 用のコードを生成します。 .TP .B \-m29000 Am29000 用のコードを生成します。これはデフォルトです。 .TP .B \-mkernel\-registers .B gr96-gr127\c \& レジスタへの参照の代わりに .B gr64-gr95\c \& を参照するコードを生成します。このオプションは、ユーザのコードか ら使用できるグローバルレジスタから区別されたグローバルレジスタの集合 を利用するカーネルのコードをコンパイルする時に使用できます。 .Sp ただし、このオプションが使用されている時にも `\|\c .B \-f\c \&\|' フラグ中のレジスタ名は通常のユーザモードでの名前を使用します。 .TP .B \-muser\-registers 通常のグローバルレジスタの集合 \c .B gr96-gr127\c \& を使用します。これはデフォルトです。 .TP .B \-mstack\-check .B _\|_msp_check\c \& への呼び出しをそれぞれのスタック調整の後に挿入します。これはしばしば カーネルのコードにおいて用いられます。 .PP 以下は、Motorola 88K アーキテクチャのために定義された `\|\c .B \-m\c \&\|' オプションです。 .TP .B \-m88000 m88100 と m88110 の双方で比較的高性能で動作するコードを生成します。 .TP .B \-m88100 m88100 に最適なコードを生成します。ただし m88110 においても動作します。 .TP .B \-m88110 m88110 に最適なコードを生成します。 ただし m88100 においては動作しないかも知れません .TP .B \-midentify\-revision アセンブラ出力中に、ソースファイル名、コンパイラ名とバージョン、 タイムスタンプ、使用されたコンパイルフラグを記した \c .B ident\c \& ディレクティブを挿入します。 .TP .B \-mno\-underscores シンボル名の最初にアンダースコアキャラクタをつけないアセンブラ出力を生 成します。デフォルトでは個々の名前に対して、アンダースコアをプレフィック スとして使用します。 .TP .B \-mno\-check\-zero\-division .TP .B \-mcheck\-zero\-division 初期の 88K のモデルはゼロによる除算の処理に問題を持っていました。特に、そ れらの多くにおいてトラップが生じなかったことは問題でした。これ らのオプションを使用することによって、ゼロ除算を発見し、例外を知らせる コードを埋め込むことを禁止 (あるいは明示的に許可) することができます。全 ての 88K 用の GCC のコンフィギュレーションは `\|\c .B \-mcheck\-zero\-division\c \&\|' をデフォルトとして使用しています。 .TP .B \-mocs\-debug\-info .TP .B \-mno\-ocs\-debug\-info 88Open Object Compatibility Standard \*(lqOCS\*(rq で定義された (それぞれのスタックフレーム中で使用されるレジスタに関する) 付加的なデバッグ 情報を取り込みます (または省略します)。これらの付加的な情報は GDB によっ ては必要とされません。DG/UX, SVr4, Delta 88 SVr3.2 ではデフォルトでこの情 報を含めます。その他の 88K コンフィギュレーションではデフォルトで省略します。 .TP .B \-mocs\-frame\-position .TP .B \-mno\-ocs\-frame\-position OCS で規定されているように、レジスタの値に対して、スタックフレーム中の 特定の場所に保存されるという動作を強制します (あるいは要求しません)。 DG/UX, Delta88 SVr3.2, BCS のコンフィギュレーションでは `\|\c .B \-mocs\-frame\-position\c \&\|' をデフォルトとして、それ以外の 88k コンフィギュレーションでは `\|\c .B \-mno\-ocs\-frame\-position\c \&\|' をデフォルトとして使用しています。 .TP .B \-moptimize\-arg\-area .TP .B \-mno\-optimize\-arg\-area 関数の引数がどのような方法でスタックフレームに格納されるかを指定します。 `\|\c .B \-moptimize\-arg\-area\c \&\|' はスペースを節約しますが、いくつかのデバッガ (GDB は含まれない) を クラッシュさせます。`\|\c .B \-mno\-optimize\-arg\-area\c \&\|' はより標準に従っています。デフォルトでは GCC は引数エリアの最適化 を行いません。 .TP .BI "\-mshort\-data\-" "num" データ参照時に、それらの処理を \c .B r0\c \& からの相対参照で行なうことによって小さなコードにすることを可能とします。 これは値のロードを (その他の場合は 2 命令かかるところを) 1 命令で行な うことを可能にします。\c .I num\c \& をこのオプションとともに指定することによって、どのデータ参照が影響 を受けるかを指定することができます。例えば `\|\c .B \-mshort\-data\-512\c \&\|' を指定すると、512 バイト以内のディスプレースメントのデータ参照が 影響を受けることになります。 `\|\c .B \-mshort\-data\-\c .I num\c \&\c \&\|' は \c .I num\c \& が 64K よりも大きな時は効果を持ちません。 .PP .B \-mserialize-volatile .TP .B \-mno-serialize-volatile volatile なメモリへの参照について、シーケンシャルな整合性を持った コードを生成する、あるいは生成しません。 .Sp GNU CC はデフォルトではどのプロセッササブモデルを選んだ場合においても、 整合性を常に保証します。これがどのように実現されているかは、サブモデルに 依存しています。 .Sp m88100 プロセッサはメモリ参照の順番を入れ換えないので、常にシーケンシャルな 整合性は保たれます。もし `\|\c .B \-m88100\c \&\|' を使用した場合は、GNU CC はシーケンシャルな整合性を保つための特 別な命令を生成しません。 .Sp m88110 プロセッサにおけるメモリ参照の順番は、必ずしもそれらの要求を行 なった命令の順番とは一致しません。特に、読み込み命令は、先行する書き込み 命令よりも先に実行され得ます。このような順番の入れ換えは、マルチプロセッサ時に volatile なメモリの参照におけるシーケンシャルな整合性を崩してしまいます。 `\|\c .B \-m88000\c \&\|' または `\|\c .B \-m88110\c \&\|' を指定した場合には、GNU CC は、必要な場合は特別な命令を生成し、 命令の実行が正しい順番で行なわれることを強制します。 .Sp ここで生成される整合性を保証するための特別な命令はアプリケーションの性 能に対して影響を及ぼします。もしこの保証無しで問題がないということがわかっ ている場合は、`\|\c .B \-mno-serialize-volatile\c \&\|' を使用することができます。 .Sp `\|\c .B \-m88100\c \&\|' オプションを使用しているが、m88110 における実行時にシーケンシャルな 整合性が必要とされる場合は、`\|\c .B \-mserialize-volatile\c \&\|' を使用するべきです。 .PP .B \-msvr4 .TP .B \-msvr3 System V release 4 (SVr4) に関連したコンパイラの拡張を有効 (`\|\c .B \-msvr4\c \&\|') あるいは無効 (`\|\c .B \-msvr3\c \&\|') にします。これは以下の内容を制御します。 .TP \ \ \ \(bu 生成するアセンブラの文法の種類 (これは `\|\c .B \-mversion\-03.00\c \&\|' を使用することによって独立に制御できます)。 .TP \ \ \ \(bu `\|\c .B \-msvr4\c \&\|' は C プリプロセッサに対して `\|\c .B #pragma weak\c \&\|' を理解させます。 .TP \ \ \ \(bu `\|\c .B \-msvr4\c \&\|' は、GCC に SVr4 によって使用されている付加的な宣言ディレクティブ を生成させます。 .PP `\|\c .B \-msvr3\c \&\|' は、SVr4 を除く全ての m88K コンフィギュレーションにおけるデフォ ルトです。 .TP .B \-mtrap\-large\-shift .TP .B \-mhandle\-large\-shift 31 ビットより大きいビットシフトを検出するコードを埋め込みます。これらの オプションを指定することによって、それぞれトラップ、あるいは適切に処理す るコードが埋め込まれます。デフォルトでは GCC は大きなビットシフトには 特別な対策を行いません。 .TP .B \-muse\-div\-instruction 非常に初期の 88K アーキテクチャのモデルは除算命令を持っていません。従っ て、GCC はデフォルトでは除算命令を生成しません。このオプションは除算命令 が安全に使用できるということを指定します。 .TP .B \-mversion\-03.00 DG/UX コンフィギュレーションには、2 つの SVr4 の種類があります。このオプション は .B \-msvr4 オプションによって hybrid-COFF と real-ELF のどちらが使用されるかを選択します。 他のコンフィギュレーションはこのオプションを無視します。 .TP .B \-mwarn\-passed\-structs 関数に対して構造体を渡した場合と、関数が構造体を返した場合に警告します。 構造体を渡す規約は C 言語の発展の中で変化しており、移植性の問題をしば しば生じることになります。デフォルトでは GCC はこの警告を行いません。 .PP 以下のオプションは IBM RS6000 のために定義されたものです。 .PP .B \-mfp\-in\-toc .TP .B \-mno\-fp\-in\-toc 浮動小数点定数を Table of Contents (TOC) に入れるかどうかを指定します。 このテーブルは全てのグローバル変数と関数のアドレスを格納します。デフォルト -では GCC は浮動小数点定数をここに格納します。もし TOC がオーバフロー -する場合は、`\|\c +では GCC は浮動小数点定数をここに格納します。もし TOC が算術あふれをおこす +場合は、`\|\c .B \-mno\-fp\-in\-toc\c \&\|' を使用することによって TOC のサイズを小さくすることが可能であり、 -オーバーフローを防ぐことができるでしょう。 +算術あふれを防ぐことができるでしょう。 .PP 以下は IBM RT PC 用に定義された `\|\c .B \-m\c \&\|' オプションです。 .TP .B \-min\-line\-mul 整数の乗算に対してインラインのコード列を生成します。これはデフォルトです。 .TP .B \-mcall\-lib\-mul 整数の乗算に対して \c .B lmul$$\c \& を呼び出します。 .TP .B \-mfull\-fp\-blocks フルサイズの浮動小数点データブロックを生成します。これは IBM によって推 奨されている最低限のスクラッチスペースの量を包含します。これはデフォルトです。 .TP .B \-mminimum\-fp\-blocks 浮動小数点データブロック内に特別なスクラッチスペースを含めません。これに よって、より小さなコードが生成されますが、実行は遅くなります。 なぜならスクラッチスペースが動的に確保されるからです。 .TP .B \-mfp\-arg\-in\-fpregs IBM の関数呼び出し規約とは互換性のない呼び出し手順を使用します。 この規約では浮動小数点引数を浮動小数点レジスタに入れて渡します。 このオプションを指定すると、\c .B varargs.h\c \& や \c .B stdarg.h\c \& で浮動小数点オペランドが使用できなくなることに注意して下さい。 .TP .B \-mfp\-arg\-in\-gregs 浮動小数点に対して通常の関数呼び出し規約を使用します。これはデフォルトです。 .TP .B \-mhc\-struct\-return 1 ワードより大きな構造体を返す時に、レジスタではなくメモリを使用して返します。 これは MetaWare HighC (hc) コンパイラとの互換性を提供します。`\|\c .B \-fpcc\-struct\-return\c \&\|' を使用することによって Portable C Compiler (pcc) との互換性を得 ることができます。 .TP .B \-mnohc\-struct\-return 1 ワードより大きな構造体を返す時に、レジスタによって返される場合があります。 これはその方が便利であると考えられる時に使用されます。これはデフォルトです。 IBM が提供するコンパイラとの互換性を得るためには、`\|\c .B \-fpcc\-struct\-return\c \&\|' と `\|\c .B \-mhc\-struct\-return\c \&\|' の双方を使用します。 .PP 以下は MIPS ファミリのために定義された `\|\c .B \-m\c \&\|' オプションです。 .TP .BI "\-mcpu=" "cpu-type" 命令スケジューリング時に、デフォルトのマシンタイプを .I cpu-type に仮定します。デフォルトの .I cpu-type は .BR default です。この選択はすべてのマシンに対する最長のサイクル数を元にコードを 生成します。これは、生成されるコードがどの MIPS cpu においても適当な速度 で処理されるようにするためです。これ以外の .I cpu-type の選択としては、 .BR r2000 , .BR r3000 , .BR r4000 , .BR r6000 があります。特定の .I cpu-type を選択した場合は、その特定のチップに適したスケジュールが行われます。 コンパイラは、 .B \-mips2 または .B \-mips3 スイッチが使用されていない場合は、MIPS ISA (instruction set architecture) のレベル 1 に合致しないコードを生成することはありません。 .TP .B \-mips2 MIPS ISA のレベル 2 (branch likely 命令, 平方根命令) による命令群 を出力します。 .B \-mcpu=r4000 と .B \-mcpu=r6000 スイッチは、 .BR \-mips2 と共に使用される必要があります。 .TP .B \-mips3 MIPS ISA のレベル 3 (64 ビット命令) を含む命令群を出力します。 .B \-mcpu=r4000 スイッチは、 .BR \-mips2 と同時に使用する必要があります。 .TP .B \-mint64 .TP .B \-mlong64 .TP .B \-mlonglong128 これらのオプションは現在動作しません。 .TP .B \-mmips\-as MIPS アセンブラのためのコードを生成し、 .B mips\-tfile を起動して通常のデバッグ情報を追加します。 これは OSF/1 リファレンスプラットフォーム 以外の全てのプラットフォームにおけるデフォルトです。 OSF/1 リファレンスプラットフォームは OSF/rose オブジェクトフォーマットを 使用します。スイッチ .BR \-ggdb , .BR \-gstabs , .B \-gstabs+ のうちのどれかが使用されている場合は、 .B mips\-tfile プログラムは、stabs を MIPS ECOFF 中にカプセル化します。 .TP .B \-mgas GNU アセンブラ用のコードを生成します。これは OSF/1 リファレンスプラットフォーム におけるデフォルトです。OSF/1 リファレンスプラットフォームは OSF/rose オブジェクトフォーマットを使用します。 .TP .B \-mrnames .TP .B \-mno\-rnames .B \-mrnames スイッチは出力コードにおいて、レジスタの名前として、ハードウェア名の代 わりに MIPS ソフトウェア名を使用することを指定します。(つまり、 .B a0 を .BR $4 の代わりに使用します)。 GNU アセンブラは .B \-mrnames スイッチをサポートしません。MIPS アセンブラはソースファイルに対して MIPS C プリプロセッサを起動するでしょう。 .B \-mno\-rnames スイッチがデフォルトです。 .TP .B \-mgpopt .TP .B \-mno\-gpopt .B \-mgpopt スイッチは、全てのデータ宣言をテキストセクション中の全命令の前に書き出 すことを指定します。これによって、全ての MIPS アセンブラは、 ショートグローバル、あるいは静的なデータアイテムに対して、2 ワードではなく、1 ワードのメモリ参照命令を生成します。 これは最適化が指定された場合のデフォルトです。 .TP .B \-mstats .TP .B \-mno\-stats .B \-mstats が指定された場合は、コンパイラによってインラインでない関数が処理される ごとに、標準エラー出力ファイルに対して、そのプログラムに対する統計情報 を示す 1 行のメッセージを出力します。このメッセージは、保存したレジスタ の数、スタックのサイズなどを示します。 .TP .B \-mmemcpy .TP .B \-mno\-memcpy .B \-mmemcpy スイッチは、全てのブロック転送に対して、インラインコードを生成する代わ りに、適切なストリング関数 .RB ( memcpy または .BR bcopy ) を呼び出すコードを生成します。 .TP .B \-mmips\-tfile .TP .B \-mno\-mips\-tfile .B \-mno\-mips\-tfile スイッチを指定すると、 MIPS アセンブラがデバッグサポートのために生成したオブジェクトファイルに対し、 .B mips\-tfile を使用した後処理を行いません。 .B mips\-tfile が実行されないと、デバッガからはローカル変数を扱うことができません。 さらに、 .B stage2 と .B stage3 のオブジェクトはアセンブラに渡される一時的なファイル名をオブジェクトファイル 中に埋め込まれて持っており、このためそれらを比較した場合に同一のも のとはみなされません。 .TP .B \-msoft\-float 浮動小数点演算のためにライブラリを呼び出す出力を行います。 .I 警告: この必須のライブラリは GNU CC の一部としては含まれません。通常はそのマシンの 一般的な C コンパイラの提供するものを使用しますが、これは通常の方法 ではクロスコンパイルで直接使用することはできません。クロスコンパイルを行 ないたい場合は、自分自身で必要なライブラリ関数を用意する必要があります。 .TP .B \-mhard\-float 浮動小数点命令を含んだ出力を生成します。これは変更されないソースを使用し た場合のデフォルトです。 .TP .B \-mfp64 ステータスワード中の .B FR ビットが立っていることを仮定します。これは 32 個の 32 ビット浮動小数点 レジスタの代わりに、32 個の 64 ビットの浮動小数点レジスタが存在するとい うことを示します。この場合は、同時に .B \-mcpu=r4000 と .B \-mips3 スイッチを指定する必要があります。 .TP .B \-mfp32 32 個の 32 ビット浮動小数点レジスタが存在するということを仮定します。こ れはデフォルトです。 .PP .B \-mabicalls .TP .B \-mno\-abicalls いくつかの System V.4 の移植が位置独立コードのために使用する疑似命令 .BR \&.abicalls , .BR \&.cpload , .B \&.cprestore を出力する、あるいは出力しません。 .TP .B \-mhalf\-pic .TP .B \-mno\-half\-pic .B \-mhalf\-pic スイッチは、テキストセクション中に参照を配置する代わりに、外部参照を行 なうポインタをデータセクションに配置し、それをロードする動作を指定します。 このオプションは現在まだ動作しません。 .B .BI \-G num は .I num バイト以下のグローバル、あるいは静的なアイテムを、通常のデータや bss セクションではなく、小さなデータ、または bss セクションに配置することを 指定します。 これによりアセンブラは、通常では 2 ワードの参照を行うところを、 グローバルポインタ .RB ( gp または .BR $28 ) を基準とした 1 ワードのメモリ参照命令を生成可能となります。 デフォルトでは MIPS アセンブラが使用される場合、 .I num は 8 です。また、GNU アセンブラが使用される場合のデフォルトは 0 です。 .BI \-G num スイッチはアセンブラ、リンカにも同様に渡されます。全てのモジュールは同一の .BI \-G num の値でコンパイルされなければなりません。 .TP .B \-nocpp MIPS アセンブラに、ユーザアセンブラファイル (`\|\c .B .s\c \&\|' 拡張子を持ちます) に対するアセンブル時のプリプロセッサの起動を抑制さ せます。 .PP 以下は、Intel 80386 ファミリ用に定義された `\|\c .B \-m\c \&\|' オプションです。 .TP .B \-m486 .TP .B \-mno\-486 386 ではなく 486 に最適化されたコードを出力する、あるいはその逆を行な う指定を行います。486 用に生成されたコードは 386 で実行可能であり、逆も また可能です。 .TP .B \-msoft\-float 浮動小数点演算のためにライブラリを呼び出す出力を行います。 .I 警告: この必須のライブラリは GNU CC の一部としては含まれません。通常はそのマシンの 一般的な C コンパイラの提供するものを使用しますが、これは通常の方法 ではクロスコンパイルで直接使用することはできません。クロスコンパイルを行 ないたい場合は、自分自身で必要なライブラリ関数を用意する必要があります。 .Sp 関数が浮動小数点数を返す時に 80387 レジスタスタックを使用するマシンに おいては、`\|\c .B \-msoft-float\c \&\|' を使用した場合でも、いくつかの浮動小数点命令が生成されます。 .TP .B \-mno-fp-ret-in-387 関数からの返り値に FPU のレジスタを使用しません。 .Sp 通常の関数呼び出し規約は、たとえ FPU が存在しなくても .B float\c \& と \c .B double\c \& の結果を FPU レジスタに入れて返します。したがってこの場合、 オペレーティングシステムは FPU をエミュレートしなければなりません。 .Sp `\|\c .B \-mno-fp-ret-in-387\c \&\|' オプションを指定すると、浮動小数点数も通常の CPU レジスタに入れ て返されます。 .TP .B \-mprofiler-epilogue .TP .B \-mno-profiler-epilogue 関数から抜けるコードにてプロファイル情報を書き出す追加コードを生成します。 .PP 以下は HPPA ファミリ用に定義された `\|\c .B \-m\c \&\|' オプションです。 .TP .B \-mpa-risc-1-0 PA 1.0 プロセッサ用のコードを出力します。 .TP .B \-mpa-risc-1-1 PA 1.1 プロセッサ用のコードを出力します。 .TP .B \-mkernel カーネルに適したコードを生成します。特に、引数の 1 つとして DP レジスタを とる .B add\c \& 命令の使用を抑制し、その代わりに、\c .B addil\c \& 命令を生成します。これは HP-UX リンカの深刻なバグを避けるための措置です。 .TP .B \-mshared-libs HP-UX 共有ライブラリとリンクさせるコードを生成します。このオプションはま だ完全に動作しているわけではなく、どの PA ターゲットにおいてもデフォルト になっていません。このオプションを指定すると、コンパイラは誤ったコード を出力し得ます。 .TP .B \-mno-shared-libs 共有ライブラリとリンクしないコードを生成します。これは全ての PA ターゲット においてデフォルトのオプションです。 .TP .B \-mlong-calls 関数の呼び出し先と呼び出し元が同一ファイルに含まれた場合、呼び出し時の 距離が 256K を越える場合でも動作するようなコードを出力します。 このオプションは、リンカから \*(lqbranch out of range errors\*(rq で リンクを拒否された時以外には使用しないようにしてください。 .TP .B \-mdisable-fpregs いかなる形においても、浮動小数点レジスタの使用を禁止します。 これは浮動小数点レジスタに配慮しないコンテキストスイッチを行なう カーネルに対して有効です。 このオプションを使用して、浮動小数点処理を行なおうとすると、 コンパイラはアボートします。 .TP .B \-mdisable-indexing コンパイラに対して、indexing addressing mode を使用しないように指定します。 これによって MACH において MIG によって生成されたコードをコンパイルす る際の、あまり重要でないいくつかの問題を防ぐことができます。 .TP .B \-mtrailing-colon ラベル定義の後にコロンを加えます (ELF アセンブラ用)。 .PP 以下は、Intel 80960 ファミリ用に定義された `\|\c .B \-m\c \&\|' オプションです。 .TP .BI "\-m" "cpu-type" デフォルトのマシンタイプを .I cpu-type -に仮定します。これは生成する命令とアドレッシングモード、そしてアラインメントに +に仮定します。これは生成する命令とアドレッシングモード、そして境界条件に 関係します。 デフォルトの .I cpu-type は .BR kb です。その他の選択としては .BR ka , .BR mc , .BR ca , .BR cf , .BR sa , .BR sb があります。 .TP .B \-mnumerics .TP .B \-msoft\-float .B \-mnumerics オプションはプロセッサが浮動小数点命令をサポートすることを示します。 .B \-msoft\-float オプションは浮動小数点サポートを仮定しないことを示します。 .TP .B \-mleaf\-procedures .TP .B \-mno\-leaf\-procedures 葉に位置する手続きについて、 .IR call 命令と同様に .I bal 命令でも呼び出すことを可能とします (あるいは、しません)。これは .I bal 命令がアセンブラ、またはリンカによって置き換えられ得る場合には、直接呼 び出しに対して効率の良いコードを得ることができます。ただし、それ以外の場 合は効率の良くないコードを生成します。例えば、関数へのポインタ経由の呼び 出しや、この最適化をサポートしないリンカを使用した場合などがこれ に該当します。 .TP .B \-mtail\-call .TP .B \-mno\-tail\-call (マシン非依存の部分を越えて) 末尾再帰を分岐に変換する処理に関するさ らなる最適化を行います(または行いません)。 この手法の適用が正当でないということに関する判断 が完全ではないので、まだこのオプションを使用することは適当でないかも しれません。デフォルトは .BR \-mno\-tail\-call です。 .TP .B \-mcomplex\-addr .TP .B \-mno\-complex\-addr この i960 の実装では複雑なアドレッシングモードの使用が優位であると仮定 します (あるいは仮定しません)。複雑なアドレッシングモードは K-シリーズでは 使用する価値は無いかも知れませんが、 C-シリーズでは確かに使用する価値があります。 現在は .B \-mcomplex\-addr が、CB と CC を除く全てのプロセッサにおけるデフォルトです。 .TP .B \-mcode\-align .TP .B \-mno\-code\-align より高速なフェッチのためにコードを 8 バイトにアラインします (または何も しません)。現在では C シリーズの実装においてのみデフォルトで有効にしています。 .TP .B \-mic\-compat .TP .B \-mic2.0\-compat .TP .B \-mic3.0\-compat iC960 v2.0 または v3.0 との互換性を持たせます。 .TP .B \-masm\-compat .TP .B \-mintel\-asm iC960 アセンブラとの互換性を持たせます。 .TP .B \-mstrict\-align .TP .B \-mno\-strict\-align アラインされないアクセスを許可しません (あるいは許可します)。 .TP .B \-mold\-align Intel による gcc リリースバージョン 1.3 (gcc 1.37 ベース) との構造体の -アラインメントに関する互換性を持たせます。現在は、 +境界条件に関する互換性を持たせます。現在は、 .B #pragma align 1 が同時に仮定されてしまい、無効化できないというバグを持っています。 .PP 以下は、DEC Alpha 用に定義された `\|\c .B \-m\c \&\|' オプションです。 .TP .B \-mno-soft-float .TP .B \-msoft-float 浮動小数点操作に対して、ハードウェアによる浮動小数点命令を使用します (し ません)。もし、\c .B \-msoft-float\c \& が指定された場合は、`\|\c .B libgcc1.c\c \&\|' 内の関数が浮動小数点演算に使用されます。ただし、これらのルーチンが 浮動小数点演算をエミュレートするルーチンによって置き換えられているか、 そのようなエミュレーションルーチンを呼び出すようにコンパイルされている のでない限り、これらのルーチンは浮動小数点演算を行なってしまいます。浮動小 数点演算のない Alpha のためのコンパイルを行なうためには、ライブラリも これらを呼び出さないようにコンパイルされていなければなりません。 .Sp 浮動小数点演算のない Alpha の実装は、浮動小数点レジスタを必要とすると いうことに注意して下さい。 .TP .B \-mfp-reg .TP .B \-mno-fp-regs 浮動小数点レジスタセットを使用する (使用しない)コードを生成します。 .B \-mno-fp-regs\c \& は暗黙のうちに \c .B \-msoft-float\c \& を含みます。浮動小数点レジスタセットが使用されない場合は、浮動小数点 オペランドは整数レジスタに入れられて渡され、浮動小数点数の結果は $f0 では なく $0 に入れて返されます。これは非標準の関数呼び出し手順であり、 浮動小数点数の引数や返り値を持つ関数で、\c .B \-mno-fp-regs\c \& をつけてコンパイルされたコードから呼び出される関数はすべてこのオプションを つけてコンパイルされている必要があります。 .Sp このオプションの典型的な用法は、浮動小数点レジスタを使用せず、したがっ て浮動小数点レジスタへのセーブもリストアも必要のないカーネルを構築する 時などがあるでしょう。 .PP ここに追加するオプションは System V Release 4 において、これらのシステム上の 他のコンパイラとの互換性のために提供されるものです。 .TP .B \-G SVr4 システムにおいて、\c .B gcc\c \& は `\|\c .B \-G\c \&\|' オプションを受け付けます (そして これをシステムリンカに渡します)。これは他のコンパイラとの互換性のためです。 しかし、リンカオプションを \c .B gcc のコマンドラインから渡すよりも、我々は `\|\c .B \-symbolic\c \&\|' または `\|\c .B \-shared\c \&\|' の使用が適当であると考えています。 .TP .B \-Qy コンパイラが使用したそれぞれのツールのバージョンを .B .ident\c \& アセンブラディレクティブを使用して、出力で明示します。 .TP .B \-Qn .B .ident\c \& ディレクティブを出力に加えることを抑制します (これは デフォルトです)。 .TP .BI "\-YP," "dirs" `\|\c .B \-l\c \&\|' で指定されたライブラリに対して、 .I dirs\c で規定されたディレクトリのみを検索し、他は検索しません。 .I dirs\c \& 中は、1 つのコロンで区切ることにより、 複数のディレクトリエントリを記述します。 .TP .BI "\-Ym," "dir" M4 プリプロセッサを \c .I dir\c \& に検索します。アセンブラがこのオプションを使用します。 .SH コード生成オプション これらのマシン独立オプションは、 コード生成にて使用されるインタフェース規約を制御します。 .PP これらのほとんどは `\|\c \-f\c \&\|' で始まります。これらのオプションは有効形式と無効形式の 2 つの形式を持っ ています。`\|\c .B \-ffoo\c \&\|' の無効形式は `\|\c .B \-fno\-foo\c \&\|' です。以下に挙げる表においては、このうち、デフォルトではない片 方のみが挙げられています。`\|\c .B no\-\c \&\|' を追加するか、削除するかによって双方の形式を得ることができます。 .TP .B \-fnonnull\-objects 参照型によって参照されるオブジェクトはヌルでないと仮定します (C++ のみ)。 .Sp 通常は GNU C++ は参照型によって参照されるオブジェクトに関しては保守的 な仮定を行います。例えば、コンパイラは \c .B a が以下のコードにおいてヌルでないことをチェックする必要があります。 .Sp obj &a = g (); a.f (2); .Sp この種の参照がヌルでないことのチェックは、特別なコードを必要とします。 しかし、これは多くのプログラムにとって無用なものです。 このヌルに対するチェックを必要のない場合 `\|\c .B \-fnonnull-objects\c \&\|' を使用することにより、省略することができます。 .TP .B \-fpcc\-struct\-return .B struct\c \& と \c .B union の値を返す場合に、普通の C コンパイラが行なうのと同じ規約を使用します。 この規約は小規模な構造体に対して非効率なものとなり、また多くのマシンでその 関数を再入不可能としてしまいます。しかしこれは、GCC でコンパイルされたコード と PCC でコンパイルされたコードを相互に呼び出すことを可能とするとい う利点を持ちます。 .TP .B \-freg\-struct\-return .B struct と .B union の値を返す場合に、可能な場合はレジスタを使用する規約を使用します。これは .BR \-fpcc\-struct\-return を使用した場合と比較して、小さな構造体を返す場合に高い性能を発揮します。 .Sp .B \-fpcc\-struct\-return と .BR \-freg\-struct\-return のどちらも使用しなかった場合には、GNU CC は各ターゲットに対して標準で あると考えられる規約をデフォルトとして使用します。 もし標準規約がなかった場合は、 .BR \-fpcc\-struct\-return をデフォルトとして使用します。 .TP .B \-fshort\-enums .B enum\c \& 型に対して、ちょうど取り得る値の範囲に応じたバイト数の型を与えます。 具体的には、\c .B enum\c \& 型は、その値域を格納するに十分な最小の整数型と等価になります。 .TP .B \-fshort\-double .B double を .B float \& と同サイズにします。 .TP .B \-fshared\-data データと非 \c .B const\c \& 変数を、プライベートなデータではなく、共有データとしてコンパイルします。 このオプションは、走行中の同じプログラム間は共有データが共有され、 プライベートデータがそれぞれのプロセスに 1 つずつ与えられるような一部 のオペレーティングシステムで意味を持ちます。 .TP .B \-fno\-common bss セクション中の初期化されていないグローバル変数に対してでも、共通ブロック に生成するのではなく、領域を割り当てます。このオプションは、(\c .B extern\c \& をつけずに) 同一の変数を宣言した 2 つのコンパイルに対して、リンク時 にエラーを発生するという効果があります。このオプションは、常にこのような動 作を行なうシステムにおいても、プログラムが正常に動作するかどうかを検査 する場合にのみ有用です。 .TP .B \-fno\-ident `\|\c .B #ident\c \&\|' ディレクティブを無視します。 .TP .B \-fno\-gnu\-linker (C++ のコンストラクタとデストラクタのような) グローバルな初期化のコードを (GNU リンカがこれらを扱う標準のシステムであるようなシステムにおいて) GNU リンカで使用される形式で出力しません。これは GNU リンカではない リンカを使用する場合に指定します。この場合、 .B collect2\c \& を使用して、確実にシステムリンカにコンストラクタとデストラクタを含 んだコードを出力させる必要があります。(\c .B collect2\c \& は GNU CC のディストリビューションに含まれます。) \c .B collect2 \c を\c .I 必ず使用しなければならない\c \& システムにおいては、 コンパイラドライバ \c .B gcc\c \& は自動的にそのようにコンフィギュレーションされます。 .TP .B \-finhibit-size-directive .B .size\c アセンブラディレクティブなど、関数が途中で分割され、メモリ上の異なった 位置にそれぞれの部分が配置されるような場合に不都合が生じるような要素を 出力しません。このオプションは `\|\c .B crtstuff.c\c \&\|' をコンパイルする時に使用されます。それ以外の場所ではこれを使用する 必要はありません。 .TP .B \-fverbose-asm 出力のアセンブラ中に特別なコメント情報を追加し、可読性を高めます。この オプションは一般的には、出力のアセンブラコードを本当に読みたい場合 (例え ばコンパイラ自身をデバッグしているような場合) にのみ効果があります。 .TP .B \-fvolatile ポインタによるメモリの参照を全て volatile として扱います。 .TP .B \-fvolatile\-global 外部変数やグローバルデータアイテムへのメモリ参照を全て volatile として 扱います。 .TP .B \-fpic このオプションがターゲットマシンでサポートされていれば、位置独立なコードを 出力します。このオプションは共有ライブラリでの使用に適します。 .TP .B \-fPIC このオプションがターゲットマシンでサポートされていれば、位置独立なコードを 出力します。このオプションはダイナミックリンクに適しており、分岐にお いて大きなディスプレースメントを要求する場合にも適応します。 .TP .BI "\-ffixed\-" "reg" 名前が \c .I reg\c \& のレジスタを固定レジスタとして扱います。生成されたコードはこのレジスタ を参照しません (ただし、スタックポインタ、フレームポインタ、その他固定用 途の場合を除きます)。 .Sp .I reg\c \& はレジスタ名でなければなりません。受け付けられるレジスタ名はマシン固 有であり、マシン記述マクロファイル内の \c .B REGISTER_NAMES マクロに記述されたものです。 .Sp このフラグは無効形式を持ちません。なぜなら、これは 3 通りの指定が可能で あるからです。 .TP .BI "\-fcall\-used\-" "reg" 名前が \c .I reg\c \& のレジスタを、関数呼び出しによって破壊される割り当て可能のレジスタ として取り扱います。これは、関数呼び出しを跨いで存在しない一時領域や変数 として割り当ることができます。この指定でコンパイルされた関数は、レジスタ \c .I reg\c \& の保存や復帰を行いません。 .Sp このフラグをマシンの実行モデルにおいて、ある固定的で特殊な役割を持って いるレジスタ、例えばスタックポインタやフレームポインタに対して適用する ことは、破滅的な結果を生みます。 .Sp このフラグは無効形式を持ちません。なぜなら、これは 3 通りの指定が可能で あるからです。 .TP .BI "\-fcall\-saved\-" "reg" 名前が \c .I reg\c \& のレジスタを、関数によって保存される割り当て可能なレジスタとして取 り扱います。これは、関数呼び出しを跨いで存在する一時領域や変数としても割り 当てることができます。この指定でコンパイルされた関数は、レジスタ \c .I reg\c \& を使用する場合、その保存と復帰を行います。 .Sp このフラグをマシンの実行モデルにおいて、ある固定的で特殊な役割を持って いるレジスタ、例えばスタックポインタやフレームポインタに対して適用する ことは、破滅的な結果を生みます。 .Sp また、このフラグを関数の返り値が格納されるレジスタに使用すると、これも 破滅的な結果を生みます。 .Sp このフラグは無効形式を持ちません。なぜなら、これは 3 通りの指定が可能で あるからです。 .SH プラグマ 2 つの `\|\c .B #pragma\c \&\|' ディレクティブ(指令)が GNU C++ によってサポートされています。これは、1 つのヘッダファイルを 2 つの目的、つまりあるオブジェクトクラスのための インタフェースの定義としての目的と、オブジェクトクラスに含まれる内容 の完全な定義としての目的の、両方の目的で使用するためのものです。 .TP .B #pragma interface (C++ のみ) このディレクティブを、オブジェクトクラスを定義しているヘッダファイル中 に使用することによって、それらのクラスを使用するほとんどのオブジェクト ファイルの大きさを減少させることができます。通常は、 特定の情報 (インラインメンバ関数のバックアップコピー、デバッグ情報、 仮想関数実現のための内部テーブル) の複製がそのクラス定義をインクルードした それぞれのオブジェクトファイル中に置かれます。 このプラグマを使用することによって、このような複製を防ぐことが 可能となります。`\|\c .B #pragma interface\c \&\|' を含んだヘッダファイルをインクルードした場合は、これらの追加情報 は生成されません (ただし、メインの入力ソースファイル自身が `\|\c .B #pragma implementation\c \&\|' を含んでいる場合を除きます)。そのかわり、オブジェクトファイルは リンク時に解決される参照を含むことになります。 .TP .B #pragma implementation .TP \fB#pragma implementation "\fP\fIobjects\fP\fB.h"\fP (C++ のみ) インクルードされたヘッダファイルによる完全な出力を生成させたい (またそ れをグローバルに可視化したい) 場合には、メインの入力ファイル中でこの プラグマを使用します。この場合、インクルードされるヘッダファイルは、`\|\c .B #pragma interface\c \&\|' を使用していなければなりません。インライン関数のバックアップ情報、 デバッグ情報、仮想関数実現用の内部テーブルは、全てインプリメンテーション ファイル中に生成されます。 .Sp `\|\c .B #pragma implementation\c \&\|' を、引数をつけずに使用した場合は、これはそのソースファイルと同じ ベースネーム(basename)を持つファイルに対して適用されます。例えば、`\|\c .B allclass.cc\c \&\|' 中の `\|\c .B #pragma implementation\c \&\|' は、`\|\c .B #pragma implementation \*(lqallclass.h\*(rq \c \&\|' と等価です。もし複数のヘッダファイルに対して、 1 つのインプリメンテーションファイルを対応させたい場合は、 文字列の引数を使用する必要があります。 .Sp 1 つのヘッダファイルに対して、複数のインプリメンテーションファイルを対 応させる方法はありません。 .SH 関連ファイル .nf .ta \w'LIBDIR/g++\-include 'u file.c C 言語ソースファイル file.h C 言語ヘッダ (プリプロセッサ) ファイル file.i プリプロセス済みの C 言語ソースファイル file.C C++ ソースファイル file.cc C++ ソースファイル file.cxx C++ ソースファイル file.m Objective-C ソースファイル file.s アセンブリ言語ファイル file.o オブジェクトファイル a.out リンクエディット済みの出力 \fITMPDIR\fR/cc\(** 一時ファイル群 \fILIBDIR\fR/cpp プリプロセッサ \fILIBDIR\fR/cc1 C 言語コンパイラ \fILIBDIR\fR/cc1plus C++ コンパイラ \fILIBDIR\fR/collect いくつかのマシンで必要となるリンカのフロントエンド \fILIBDIR\fR/libgcc.a GCC サブルーチンライブラリ /lib/crt[01n].o スタートアップルーチン \fILIBDIR\fR/ccrt0 C++ 用の付加的なスタートアップルーチン /lib/libc.a 標準ライブラリ、\c .IR intro (3) \c を参照 /usr/include \fB#include\fP ファイルのための標準ディレクトリ \fILIBDIR\fR/include \fB#include\fP ファイルのための GCC 標準ディレクトリ \fILIBDIR\fR/g++\-include \fB#include\fP ファイルのための付加的な g++ ディレクトリ .Sp .fi .I LIBDIR は通常 .B /usr/local/lib/\c .IR machine / version の形式を持ちます .br .I TMPDIR は環境変数 .B TMPDIR (もし使用可能ならば .B /usr/tmp を、そうでなければ .B /tmp\c \& を使用します) からとられます。 .SH "関連項目" cpp(1), as(1), ld(1), gdb(1). .br .B info \c 中の .RB "`\|" gcc "\|', `\|" cpp \|', .RB "`\|" as "\|', `\|" ld \|', .RB `\| gdb \|' \& エントリ .br .I Using and Porting GNU CC (for version 2.0)\c , Richard M. Stallman; .I The C Preprocessor\c , Richard M. Stallman; .I Debugging with GDB: the GNU Source-Level Debugger\c , Richard M. Stallman and Roland H. Pesch; .I Using as: the GNU Assembler\c , Dean Elsner, Jay Fenlason & friends; .I ld: the GNU linker\c , Steve Chamberlain and Roland Pesch. .SH バグ バグを報告する方法については、GCC マニュアルを参照してください。 .SH COPYING Copyright .if t \(co 1991, 1992, 1993 Free Software Foundation, Inc. .PP Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies. .PP Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one. .PP Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions, except that this permission notice may be included in translations approved by the Free Software Foundation instead of in the original English. .SH 作者 GNU CC に対して貢献した人々に関しては、GNU CC マニュアルを参照してください。 .SH 日本語訳 細川 達己(hosokawa@mt.cs.keio.ac.jp): NetBSD 用に翻訳 .br sakai@csl.cl.nec.co.jp, h-nokubi@nmit.mt.nec.co.jp, .br kumano@strl.nhk.or.jp, horikawa@isrd.hitachi.co.jp: FreeBSD 向けに修正, 査閲 diff --git a/ja_JP.eucJP/man/man1/groff.1 b/ja_JP.eucJP/man/man1/groff.1 index 2244698e5d..e1e6bbd858 100644 --- a/ja_JP.eucJP/man/man1/groff.1 +++ b/ja_JP.eucJP/man/man1/groff.1 @@ -1,412 +1,412 @@ .ig \"-*- nroff -*- Copyright (C) 1989-1995 Free Software Foundation, Inc. Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies. Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one. Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions, except that this permission notice may be included in translations approved by the Free Software Foundation instead of in the original English. .. .\" jpman %Id: groff.1,v 1.2 1997/05/13 16:13:14 horikawa Stab % .de TQ .br .ns .TP \\$1 .. .\" Like TP, but if specified indent is more than half .\" the current line-length - indent, use the default indent. .de Tp .ie \\n(.$=0:((0\\$1)*2u>(\\n(.lu-\\n(.iu)) .TP .el .TP "\\$1" .. .TH GROFF 1 "8 September 1996" "Groff Version 1.10" .SH 名称 groff \- groff ドキュメントフォーマットシステムのフロントエンド .SH 書式 .B groff [ .B \-tpeszaivhblCENRSVXZ ] [ .BI \-w name ] [ .BI \-W name ] [ .BI \-m name ] [ .BI \-F dir ] [ .BI \-T dev ] [ .BI \-f fam ] [ .BI \-M dir ] [ .BI \-d cs ] [ .BI \-r cn ] [ .BI \-n num ] [ .BI \-o list ] [ .BI \-P arg ] [ .IR files \|.\|.\|.\| ] .SH 解説 .B groff は、groff ドキュメントフォーマットシステムのフロントエンドプログラムです。通常 .B groff は .B troff を実行し、その出力を指定されたデバイスで扱うための 後処理プログラムを実行します。利用可能なデバイスは以下のとおりです: .TP .B ps PostScript プリンタやプレビュア .TP .B dvi TeX の dvi フォーマット .TP .B X75 75 dpi の X11 プレビュア .TP .B X100 100 dpi の X11 プレビュア .TP .B ascii タイプライタに似た特性を持つデバイス .TP .B latin1 ISO Latin-1 文字集合を利用するタイプライタに似た特性を持つデバイス .TP .B koi8-r ロシア語 KOI8-R 文字集合を利用するタイプライタに似た特性を持つデバイス .LP 指定されたデバイス用の後処理を行うプログラムは、デバイス記述ファイルの .B postpro コマンドにより指定されています。これは .B \-X オプションにより変更できます。 .LP デフォルトのデバイスは .B ps です。 .BR pic , .BR eqn , .BR tbl , .BR refer , .B soelim の任意の前処理を行わせることもできます。 .LP 引数を伴わないオプションは .B \- のあとにまとめて続けることができます。 ファイル名のかわりに用いられる .B \- は標準入力を意味します。 .LP .B grog コマンドを用いてドキュメントを正しくフォーマットするための .B groff コマンドを調べることができます。 .SH オプション .TP .B \-h ヘルプメッセージを表示します。 .TP .B \-e .B eqn を使って前処理を行います。 .TP .B \-t .B tbl を使って前処理を行います。 .TP .B \-p .B pic を使って前処理を行います。 .TP .B \-s .B soelim を使って前処理を行います。 .TP .B \-R .B refer を使って前処理を行います。 .B refer に引数を渡す機構は用意されていません。 .B refer のほとんどのオプションは、ファイル中に記述することができる等価なコマンドを 備えているからです。詳しくは .BR refer (1) のマニュアルを参照してください。 .TP .B \-v .B groff から起動されるプログラムのバージョン番号を表示します。 .TP .B \-V 実行しないで、 .B groff で実行される処理内容を標準出力に表示します。 .TP .B \-z .B troff からの出力を捨てます。エラーメッセージのみが表示されます。 .TP .B \-Z .B troff からの出力を後処理しません。通常 .B groff は、自動的に適当な後処理プログラムを起動します。 .TP .BI \-P arg 後処理プログラムに .I arg を引数として渡します。別々の引数は別々の .B \-P オプションで指定する必要があります。 .B groff は、 .I arg の前に .B \- をつけてコマンドに渡したりしないことに注意してください。 .TP .B \-l -プリンタへ出力します。プリントアウトに用いられるコマンドは、デバイス +プリンタへ出力します。印字出力に用いられるコマンドは、デバイス 記述ファイルの .B print コマンドによって指定されます。 .TP .BI \-L arg .I arg をプリンタスプーラプログラムに渡します。別々の引数は、別々の .B \-L オプションで指定する必要があります。 .B groff は、 .I arg の前に .B \- をつけてコマンドに渡したりしないことに注意してください。 .TP .BI \-T dev デバイス .I dev 用に出力します。デフォルトのデバイスは .B ps です。 .TP .B \-X 通常の後処理プログラムのかわりに、 .B gxditview を起動してプレビューします。 .B groff は .B gxditview に .B -printCommand オプションを渡します。このオプションは .B groff に .B -l オプション指定時に実行される .B Print アクションを実行させます。 .B \-Tps 以外が指定されている場合は、よい結果が得られません。 .TP .B \-N .B eqn の区切り文字間に改行が入ることを禁止します。 .B eqn の .B \-N オプションと同様です。 .TP .B \-S より安全なモード。 .B \-S オプションを .B pic に渡し、 .B troff にて .B \%\-msafer マクロを使用します。 .TP .B \-a .TQ .B \-b .TQ .B \-i .TQ .B \-C .TQ .B \-E .TQ .BI \-w name .TQ .BI \-W name .TQ .BI \-m name .TQ .BI \-o list .TQ .BI \-d cs .TQ .BI \-r cn .TQ .BI \-F dir .TQ .BI \-M dir .TQ .BI \-f fam .TQ .BI \-n num これらのオプションの詳細は、 .BR troff (1) に記述してあります。 .SH 環境変数 .TP .SM .B GROFF_COMMAND_PREFIX もしこの変数が .I X に設定されていると、 .B groff は .B troff のかわりに .IB X troff を起動します。これは、 .BR tbl , .BR pic , .BR eqn , .BR refer , .B soelim にも同様に影響します。 .BR gropos , .BR grodvi , .BR grotty , .B gxditview には影響しません。 .TP .SM .B GROFF_TMAC_PATH マクロファイルを検索すべきディレクトリのリスト(リストの区切りはコロンです) .TP .SM .B GROFF_TYPESETTER デフォルトのデバイス .TP .SM .B GROFF_FONT_PATH .BI dev name という名前のディレクトリを検索するディレクトリのリスト(リストの区切りはコロンです) .TP .SM .B PATH .B groff から起動されるプログラムが存在するパス .TP .SM .B GROFF_TMPDIR 一時的なファイルが作成されるディレクトリ。もし、 .SM GRROFF_TMPDIR が設定さ れておらず、 .B .SM TMPDIR が設定されているなら、 .SM TMPDIR で示されるディレクトリ に一時ファイルが生成されます。さもなければ、一時ファイルは .B /tmp に作られます。 .BR grops (1) と .BR refer (1) が一時ファイルを作成する可能性があります。 .SH 関連ファイル .Tp \w'\fB/usr/share/groff_font/dev\fIname\fB/DESC'u+3n .BI /usr/share/groff_font/dev name /DESC デバイス .IR name のデバイス記述ファイル .TP .BI /usr/share/groff_font/dev name / F デバイス .I name のためのフォント .I F を記述したフォントファイル .SH 作者 James Clark .SH バグ バグレポートは、bug-groff@prep.ai.mit.edu. までお願いします。 レポートの際にはバグを再現できる完全な例題を添付し、あなたの利 用している groff のバージョンを添えて下さい。 .SH 著作権 Copyright (C) 1989, 1990, 1991, 1992 Free Software Foundation, Inc. .LP groff はフリーソフトウェアです。Free Software Foundation から 出版されている the GNU General Public License の ver 2.0 かそ れ以降に基づく限り再配布したり、変更することが可能です。 .LP groff は使い易いツールとして配布されることを望まれていますが、 どのような保証もありません。それが商業的であってもある特定の目 的に対するだけであっても保証はありません。詳しくは GNU の General Public License を参照して下さい。 .LP あなた は groff のコピーを GNU General Public License と共に受 けとっているはずです。その COPYING を参照して下さい。そうでな い場合には、 Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA まで御連絡下さい。 .SH 可用性 最新の groff はたいてい prep.ai.mit.edu の pub/gnu ディレクト リに置かれており、anonymous ftp で入手できます。 .SH 関連項目 .\" .BR grog (1), .BR troff (1), .BR tbl (1), .BR pic (1), .BR eqn (1), .BR soelim (1) , .BR refer (1), .BR grops (1), .BR grodvi (1), .BR grotty (1), .\" .BR gxditview (1), .BR groff_font (5), .BR groff_out (5), .BR groff_ms (7), .BR me (7), .BR groff_char (7), .BR msafer (7) diff --git a/ja_JP.eucJP/man/man1/gtar.1 b/ja_JP.eucJP/man/man1/gtar.1 index 67849b7e75..660181412d 100644 --- a/ja_JP.eucJP/man/man1/gtar.1 +++ b/ja_JP.eucJP/man/man1/gtar.1 @@ -1,483 +1,483 @@ .\" Copyright (c) 1991, 1992, 1993 Free Software Foundation -*- nroff -*- .\" See /usr/src/gnu/COPYING for conditions of redistribution .\" .\" Written by John F. Woods .\" Updated by Robert Eckardt .\" .\" %Id: tar.1,v 1.6.2.3 1998/02/15 17:05:30 steve Exp % .\" jpman %Id: tar.1,v 1.2 1997/06/24 07:09:44 bobson Stab % .\" .Dd 25 August 1997 .Os FreeBSD .Dt TAR 1 .Sh 名称 .Nm tar .Nd テープアーカイバ; "tar" アーカイブファイルの操作 .Sh 書式 .Nm tar .Op [-] Ns Ar bundled-options .Op Ar gnu-style-flags .Op Ar tarfile .Op Ar blocksize .Op Ar exclude-file .Op Ar filenames .Op Fl C Ar directory-name .Sh 解説 .Nm は、歴史的な理由により .Dq tape archiver を省略して名付けられました。 .Nm プログラムは、 .Ar tarfile と呼ばれる .Dq tar フォーマットのアーカイブファイルを作成し、アーカイブにファイルを追加したり、 またアーカイブからファイルを抽出したりします。 tarfile は通常磁気テープを指しますが、フロッピディスケットや 通常のファイルでも構いません。 .Pp 通常、 .Nm コマンドラインの最初の引数は、機能文字および機能変更文字からなる単語であり、 その前に ダッシュ(-)をつけてもつけなくてもいいようになっています。 単語には、次の機能文字のうちちょうど 1 つを含んでいなければなりません: .Cm A , .Cm c , .Cm d , .Cm r , .Cm t , .Cm u , .Cm x , これらはそれぞれ 追加 (append) 、作成 (create) 、差分 (difference) 、 置換 (replace) 、リスト表示 (table of contents) 、更新 (update) 、 そして抽出 (extract) を意味しています (下記に詳細があります) 。 これらの他に、以下に詳細を述べる機能変更文字を、コマンド単語に 含めることができます。それらのいくつかは、コマンド単語内と同じ順で コマンドライン引数を要求します (使用例の節を参照) 。 機能文字と機能変更文字は、GNU 形式の引数で指定することもできます (2 つのダッシュを最初につけ、1 つのコマンド単語ごとに機能文字か 機能変更文字を 1 つだけ指定する) 。 アーカイブへの追加、アーカイブからの抽出、そしてリスト表示のために コマンドライン指定するファイル名には、 シェルのパターンマッチ文字列を使用することができます。 .Sh 機能 以下の機能のいずれか1つだけを必ず指定しなければなりません。 .Pp .Bl -tag -width "--concatenate" -compact .It Fl A .It Fl -catenate .It Fl "-concatenate" 指定された(tar アーカイブ形式の)ファイルを tar アーカイブの末尾 に追加します。(追加する前の古い end-of-archive ブロックは削除さ れます。) これは、指定されたファイルがアーカイブの中の1ファイルとなるので はなく、指定したファイルの中に含まれているファイルを、最初に指定 したアーカイブに追加するという効果を持ちます。 .Em 注: このオプションは tarfile を再書き込みする必要があるため、1/4 インチカートリッジテープでは動作しません。 .It Fl c .It Fl -create 新しいアーカイブを作成して (もしくは古い内容を切り捨てて)、指定 されたファイルをアーカイブに書き込みます。 .It Fl d .It Fl -diff .It Fl -compare アーカイブの中のファイルと、それに相当するファイルシステム内の ファイルとの違いを調査します。 .It Fl -delete 指定されたファイルをアーカイブから削除します。(1/4 インチテープ では動作しません。) .It Fl r .It Fl -append アーカイブの末尾にファイルを追加します。(1/4 インチテープでは 動作しません。) .It Fl t .It Fl -list アーカイブ内容のリスト表示をします。もし引数としてファイル名が 指定されていれば、そのファイルだけがリスト表示されます。そうでなけ れば、アーカイブに含まれるすべてのファイルリストが表示されます。 .It Fl u .It Fl -update 指定したファイルのうち、アーカイブ内のファイルよりもディスク上の ファイルの変更時刻が新しいものだけを追加します。1/4 インチテープ では動作しません。 .It Fl x .It Fl -extract .It Fl -get -アーカイブからファイルを抽出します。可能ならば、オーナ、 +アーカイブからファイルを抽出します。可能ならば、所有者、 変更時刻、ファイル属性はリストアされます。もし .Ar file 引数が指定されていなければ、アーカイブ内の全ファイルが抽出されます。 もし .Ar filename 引数がテープ上のディレクトリ名にマッチしていれば、そのディレクトリと ディレクトリ内のファイルが抽出されます。(ディレクトリ内のす べてのディレクトリについても同様に抽出されます。) もしアーカイブ内に、相当する同じファイルが複数含まれていれば(上記の .Fl -append コマンドを参照)、最後に含まれているものが他のすべてのファイルを 上書きする形で抽出されます。 .Sh オプション .Nm の他のオプションは、組み合わせて使用することができます。 1文字オプションは、コマンド単語の中で指定することができます。 引数を与えるべきオプションの場合、オプションに続けて引数を指定し ます。1文字オプションであれば、これに続くコマンドライン引数を 使用します (以下の .Sx 使用例 を参照してください。) .Pp .Bl -tag -width "--preserve-permissions" -compact .It Fl -help .Nm のすべてのコマンドオプションについて一覧と解説を表示します。 .It Fl -atime-preserve テープに書かれている、ファイルのアクセス時刻をリストアします。 (inodeの変更時刻が変更されることに注意してください!) .It Fl b .It Fl -block-size Ar number 読み書きするブロックサイズを .Ar number * 512-byte ブロック に設定します。 .It Fl B .It Fl -read-full-blocks 短い読みだしブロックを、完全なブロックに再組み立てします。 (4.2BSD パイプの読み込み用。) .It Fl C Ar directory .It Fl -directory Ar directory 抽出時に .Ar directory へ移動します。 .It Fl -checkpoint アーカイブを読み書きする間に読み書きしたバッファの数を表示します。 .It Fl f Ar [hostname:]file .It Fl -file Ar [hostname:]file 指定された .Ar file (デフォルトは /dev/rst0) を読み書きします。 もし .Ar hostname が指定されていれば、 .Nm は .Xr rmt 8 を使って、リモートマシン上の .Ar file を読み書きします。"-" はファイルネームとして使用されることもありますが、 これは標準入力から読み出したり、標準出力へ書き出したりするために使用されます。 .It Fl -force-local コロンがある時でさえ、アーカイブファイルはローカルのものとします。 .It Fl F Ar file .It Fl -info-script Ar file .It Fl -new-volume-script Ar file それぞれのアーカイブが終ると、スクリプトを実行します (暗黙の .Fl M 指定が行なわれます。) .It Fl -fast-read ワイルドカードで指定されていないすべての抽出ターゲットが アーカイブ内に見つかったら、その時点で終了します。 .It Fl G .It Fl -incremental 古い GNU-format インクリメンタルバックアップファイルを作成/リスト/ 抽出します。 .It Fl g Ar file .It Fl -listed-incremental Ar file 新しい GNU-format インクリメンタルバックアップファイルを作成/リスト/ 抽出します。 .It Fl h .It Fl -dereference シンボリックリンクをシンボリックのまま書き込みません。シンボリックリンクが 指しているデータを書き込みます。 .It Fl i .It Fl -ignore-zeros アーカイブの中のゼロブロック(通常、End-Of-File を意味する)を無視します。 .It Fl -ignore-failed-read ファイルが読めなくても、非 0 のステータスで exit しません。 .It Fl k .It Fl -keep-old-files ディスク上に既にあるファイルを保持します。つまり、アーカイブから 抽出するファイルは、ディスク上のファイルへ上書きしません。 .It Fl K Ar file .It Fl -starting-file Ar file アーカイブの中の .Ar file から(抽出、リストなどを)始めます。 .It Fl l .It Fl -one-file-system あるファイルシステム内にあるファイルだけでアーカイブを作成します。 (他ファイルシステムへのマウントポイントを跨ぎません。) .It Fl L Ar number .It Fl -tape-length Ar number .Ar number * 1024 バイト書き込んだ後でテープの交換を要求します。 .It Fl m .It Fl -modification-time ファイルの変更時刻を抽出しません。 .It Fl M .It Fl -multi-volume マルチボリュームアーカイブを作成/リスト/抽出します。 .It Fl n .It Fl -norecurse 作成時に再帰的にサブディレクトリを走査しません。 .It Fl -volno-file Ar file ボリューム番号付きのファイル名です。 .It Fl N Ar date .It Fl -after-date Ar date .It Fl -newer Ar date 作成時間が .Ar date より新しいファイルだけを抽出します。 .It Fl -newer-mtime Ar date 変更時間が .Ar date より新しいファイルだけを抽出します。 .It Fl o .It Fl -old-archive .It Fl -portability POSIX フォーマットではなく、V7 フォーマットのアーカイブを作成します。 .It Fl O .It Fl -to-stdout ファイルを標準出力に抽出します。 .It Fl p .It Fl -same-permissions .It Fl -preserve-permissions 保護情報を完全に抽出します。 .It Fl -preserve .Fl p s の指定と同じ効果を持ちます。 .It Fl P .It Fl -absolute-paths ファイル名から先頭の `/' をとりません。 .It Fl R .It Fl -record-number メッセージ中にアーカイブ内のレコード番号を埋め込み表示します。 .It Fl -remove-files アーカイブに追加したファイルを、追加後に削除します。 .It Fl s .It Fl -same-order .It Fl -preserve-order アーカイブ内から抽出するファイルを、指定された順のままにします。 .It Fl -show-omitted-dirs アーカイブ作成中に除外されたディレクトリを表示します。 .It Fl S .It Fl -sparse 「少ない」ファイルを効率的に扱うようにします。 .It Fl T Ar file .It Fl -files-from Ar file .Ar file から抽出もしくは作成するファイル名を得ます。(1行1ファイル名。) .It Fl -null nullで終わっている名前を考慮し、 .Fl T の振舞を変更します。 これは .Fl C 指定を無効にします。 .It Fl -totals .Fl -create によって書かれたトータルバイト数を表示します。 .It Fl v .It Fl -verbose .Fl -create でアーカイブに書くファイルや .Fl -extract でアーカイブから 取り出すファイル名をリスト表示します。 ファイルの保護情報をファイル名とともに表示させるには、 .Fl -list を使います。 .It Fl V Ar volume-name .It Fl -label Ar volume-name 指定された .Ar volume-name を持ったアーカイブを作成します。 .It Fl -version .Nm プログラムのバージョン番号を表示します。 .It Fl w .It Fl -interactive .It Fl -confirmation すべての動作に対して、確認を求めるようになります。 .It Fl W .It Fl -verify アーカイブを書き込んだ後、ベリファイを試みます。 .It Fl -exclude Ar pattern .Ar pattern にマッチするファイルを除外します。 (抽出しません。追加しません。リスト表示しません。) .It Fl X Ar file .It Fl -exclude-from Ar file .Ar file に一覧されているファイルを除外します。 .It Fl Z .It Fl -compress .It Fl -uncompress アーカイブを .Xr compress 1 でフィルタリングします。 .It Fl z .It Fl -gzip .It Fl -gunzip アーカイブを .Xr gzip 1 でフィルタリングします。 .It Fl -use-compress-program Ar program アーカイブを .Ar program でフィルタリングします。 (これは、 .Fl d が指定されたときは ``decompress'' を意味しなければなりません。) .It Fl -block-compress テープもしくはフロッピのために、圧縮プログラムの出力をブロック 化します。(そうしないと、ブロック長がおかしくなり、デバイスドライバは そのブロックを拒絶するでしょう。) .It Fl [0-7][lmh] テープドライブと密度を指定します。 .It Fl -unlink ファイルを作成する前に、いったん削除します。 .El .Sh 使用例 "bert" と "ernie" というファイルを含む、 ブロックサイズが 20 ブロックのアーカイブを、 テープドライブ /dev/rst0 に作るには、 .Pp .Dl tar cfb /dev/rst0 20 bert ernie .Pp もしくは .Pp .Dl tar\ --create\ --file\ /dev/rst0\ --block-size\ 20\ bert\ ernie .Pp と入力します。 .Fl f および .Fl b フラグは両方とも引数を必要としていることに注意してください。 この引数は、コマンド単語に書かれているのと同じ順序でコマンドラインから 取得されます。 .Pp /dev/rst0 はデフォルトのデバイスであり、20 はデフォルトのブロック サイズですので、上記の例は次のように単純化できます。 .Pp .Dl tar c bert ernie .Pp "backup.tar" というアーカイブから、すべての C ソース及びヘッダを 抽出するには、次のようにタイプします。 .Pp .Dl tar xf backup.tar '*.[ch]' .Pp シェルがカレントディレクトリ内のファイル名に展開しないよう、パタ ーンをクォートしなければならないことに注意してください。(当然、 シェルはアーカイブ内のファイル一覧にアクセスすることはできません。) .Pp ファイルを階層構造ごとコピーするには、このようにコマンドを使用してください: .Bd -literal tar cf - -C srcdir . | tar xpf - -C destdir .Ed .Pp ディスケットに、gzip を使った圧縮アーカイブを作成するには、次の ようなコマンドラインを使うといいでしょう。 .Pp .Dl tar --block-compress -z -c -v -f /dev/rfd1a -b 36 tar/ .Pp まとめ指定フラグと --スタイルのフラグを混在させることができない ことに注意してください。次のようにタイプしなければならないわけで はなく、上記のような書き方で1文字フラグを使うことができます。 .Pp .Dl tar --block-compress --gzip --verbose --file /dev/rfd1a --block-size 20 tar / .Pp 上のようにして作成したディスクの内容は、次のようにすればリスト表 示できます。 .Pp .Dl tar tvfbz /dev/rfd1a 36 .Pp 2 つの tar アーカイブを 1 つのアーカイブにまとめるには、 .Pp .Dl tar Af archive1.tar archive2.tar .Pp を使います。こうすると、archive2.tar に含まれているファイルが archive1.tar の末尾に追加されます。(単純に .Pp .Dl cat archive2.tar >> archive1.tar .Pp とタイプしてもうまくいかないことに注意してください。なぜなら、 tar アーカイブの末尾には end-of-file ブロックがあるからです。) .Pp srcdir ディレクトリから 1997 年 2 月 9 日 13:00 以降に変更をされた 全てのファイルをアーカイブするためには、以下の形式を使って下さい。 .Dl tar\ -c\ -f\ backup.tar\ --newer-mtime\ 'Feb\ 9\ 13:15\ 1997'\ srcdir/ .Pp 他の時間指定形式としては、'02/09/97 13:15', \&'1997-02-09 13:15', '13:15 9 Feb 1997', '9 Feb 1997 13:15', \&'Feb. 9, 1997 1:15pm', '09-Feb', '3 weeks ago', 'May first Sunday' があります。 正しいタイムゾーンを指定するためには、 `13:15 CEST' や `13:15+200' を使用して下さい。 .Sh 環境変数 .Nm プログラムは、以下の環境変数を参照します。 .Bl -tag -width "POSIXLY-CORRECT" .It POSIXLY-CORRECT 通常、 .Nm はファイル指定の中に混ざったフラグを処理します。 この環境変数を設定すると、 .Nm は最初のフラグ以外の引数を見つける とそれ以降の引数に対してフラグ処理を行なわないという、POSIX 仕様 に合わせた動作を行なうようになります。 .It SHELL インタラクティブモードにおいて、サブシェルの起動が要求されたとき、 SHELL 変数が設定されていればそれが、設定されていなければ "/bin/sh" が使用されます。 .It TAPE tar のデフォルトのテープドライブを変更します。(これは、さらに .Fl f フラグによって変更することができます。) .El .Sh 関連ファイル .Bl -tag -width "/dev/rst0" .It Pa /dev/rst0 デフォルトのテープドライブ .El .\" This next request is for sections 1, 6, 7 & 8 only .\" (command return values (to shell) and fprintf/stderr type diagnostics) .\" .Sh 診断 .Sh 関連項目 .Xr compress 1 , .Xr gzip 1 , .Xr pax 1 , .Xr ft 8 , .Xr rmt 8 .\" .Sh 規格 .Sh 歴史 .Nm フォーマットは立派な歴史を持っていて、Sixth Edition UNIX に 原点があります。 この .Nm の実装は GNU 実装であり、John Gilmore によって書かれた パブリックドメイン tar が元になっています。 .Sh 作者 次の人を含む、大変多くの人々。[ソースの中の ChangeLog ファイルに記 述されている人々] John Gilmore (オリジナルのパブリックドメイン版の 作者), Fenlason (最初の GNU 作者), Joy Kendall, Jim Kingdon, David J. MacKenzie, Michael I Bushnell, Noah Friedman, そして バグフィックスや追加を貢献してくれた無数の人々。 このマニュアルページは NetBSD 1.0 release から、FreeBSD グループが 取り込んだものです。 .Sh バグ 特徴的な .Fl C オプションは、これまでの tar プログラムのようには動作しないため、 おそらく信頼できません。 .Pp -A コマンドは、任意の数の tar アーカイブを結合するよう動くべきで すが、そうは動作しません。2 番目やそれ以降のアーカイブの end-of-archive ブロックを取り除くことを試みます。 diff --git a/ja_JP.eucJP/man/man1/login.1 b/ja_JP.eucJP/man/man1/login.1 index d820c7f332..9228d832f5 100644 --- a/ja_JP.eucJP/man/man1/login.1 +++ b/ja_JP.eucJP/man/man1/login.1 @@ -1,190 +1,189 @@ .\" %NetBSD: login.1,v 1.5 1994/12/23 06:53:00 jtc Exp % .\" .\" Copyright (c) 1980, 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. .\" .\" @(#)login.1 8.2 (Berkeley) 5/5/94 .\" %Id: login.1,v 1.4.2.4 1998/01/07 10:44:20 obrien Exp % .\" jpman %Id: login.1,v 1.3 1997/05/19 16:39:53 horikawa Stab % .\" .Dd May 5, 1994 .Dt LOGIN 1 .Os BSD 4 .Sh 名称 .Nm login .Nd 指定したユーザでログインする .Sh 書式 .Nm .Op Fl fp .Op Fl h Ar hostname .Op Ar user .Sh 解説 .Nm は、指定したユーザでログインするものです。 .Pp user を指定しなかった場合、もしくは指定した user でのログインに失敗した ときには、 .Nm は、再度ユーザ名の入力を求めるプロンプトを表示します。 ユーザの確認は入力されたパスワードにより行われます。 .Pp オプションとしては以下のものがあります: .Bl -tag -width Ds .It Fl f パスワードによるユーザの確認を省略します。このオプションは、スーパーユーザ か、すでにログインしているユーザが同じユーザ名で login を実行す るときのみ指定可能です。 .It Fl h コネクションを受信可能なホスト名を指定します。この機能は .Xr telnetd 8 などのデーモンによって使われています。このオプションはスーパーユーザ しか指定することができません。 .It Fl p .Nm は、デフォルトでは実行時の環境 (環境変数など) を引き継ぎ ませんが、このオプションを指定すると、実行時の環境を引き継ぎます。 .El .Pp もし .Pa /etc/nologin ファイルが存在した場合、 .Nm はそのファイル内容 を表示してログイン処理をせずに終了します。この機能は .Xr shutdown 8 で使用されており、システムの終了処理実行中にユーザがログインしないよう にしています。 .Pp もし .Pa /etc/login.access ファイルが存在した場合、 .Nm はそのファイルから、ユーザとホストの組が特別に許可されている、もしくは 拒否されているかどうかをチェックします。 .Pp もし .Pa /etc/fbtab ファイルが存在した場合、 .Nm -はそのファイルに記述された幾つかのデバイスのプロテクトとオーナを変え -ます。 +はそのファイルに記述された幾つかのデバイスのプロテクトと所有者を変えます。 .Pp ファイル .Pa /etc/skeykeys が存在する場合、このファイル中にユーザのエントリが存在する時には、 .Nm は S/key パスワード認証を行います。 .Pa /etc/skey.access により、 接続元のホストやネットワークに応じて S/key パスワード使用の義務を制御します。 .Pp 通常、ユーザがログインすると、 .Nm はシステムのコピーライト表示、 ユーザが最後にログインした日付と時間、その日のメッセージなどの 情報を表示します。ただし、ユーザのホームディレクトリに .Dq Pa .hushlogin というファイルが存在した場合は、これらのメッセージを表示 しないようにします (これは .Xr uucp 1 のようなプログラムがユーザとしてログインするためにあります)。 このあと、 .Nm は .Xr wtmp 5 と .Xr utmp 5 ファイルに記録し、ユーザのコマンドインタプリタ (シェル) を起動します。 .Pp なお、環境変数 ( .Xr environ 7 ) HOME, SHELL, PATH, TERM, LOGNAME, USER は .Nm によりセットされます。 他の環境変数はログインクラスケーパビリティデータベースの エントリにより設定されるかも知れません。 ログインクラスはユーザのシステムパスワードレコードに割り当てられています。 ログインクラスは、当該ログインに許された最大および現在の資源制約、 プロセス優先度や他の多くのユーザログイン環境を制御します。 .Pp 標準シェルである .Xr csh 1 と .Xr sh 1 は、 .Nm が実行されてから起動します。 .Sh 関連ファイル .Bl -tag -width /var/mail/userXXX -compact .It Pa /etc/fbtab デバイスのプロテクトの変更 .It Pa /etc/login.access ログインアクセス制御表 .It Pa /etc/login.conf ログインクラスケーパビリティデータベース .It Pa /etc/motd ログイン時に最初に表示するメッセージ .It Pa /etc/nologin ログインを拒否する時に表示するメッセージ .It Pa /etc/skey.access skey パスワード制御表 .It Pa /etc/skeykeys skey パスワードデータベース .It Pa /var/run/utmp 現在のログイン状況 .It Pa /var/log/lastlog 最後にログインした記録 last login account records .It Pa /var/log/wtmp ログイン・ログアウト状況 .It Pa /var/mail/user ユーザーごとのメイルボックス .It Pa \&.hushlogin ログインメッセージを抑止するファイル .El .Sh 関連項目 .Xr chpass 1 , .Xr passwd 1 , .Xr rlogin 1 , .Xr skey 1 , .Xr getpass 3 , .Xr fbtab 5 , .Xr login.access 5 , .Xr login.conf 5 , .Xr skey.access 5 , .Xr utmp 5 , .Xr environ 7 , .Xr nologin 8 .Sh 歴史 .Nm login ユーティリティは .At v6 から登場しました。 diff --git a/ja_JP.eucJP/man/man1/lprm.1 b/ja_JP.eucJP/man/man1/lprm.1 index d6b38ed217..b7034c4fd2 100644 --- a/ja_JP.eucJP/man/man1/lprm.1 +++ b/ja_JP.eucJP/man/man1/lprm.1 @@ -1,142 +1,142 @@ .\" Copyright (c) 1983, 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. .\" .\" @(#)lprm.1 8.1 (Berkeley) 6/6/93 .\" jpman %Id: lprm.1,v 1.3 1997/08/15 06:33:28 horikawa Stab % .\" .Dd June 6, 1993 .Dt LPRM 1 .Os BSD 4.2 .Sh 名称 .Nm lprm .Nd 印刷ジョブをキューから削除する .Sh 書式 .Nm lprm .Op Fl P Ns Ar printer .Op Fl .Op job # ... .Op Ar user ... .Sh 解説 .Nm は 1 つのジョブ、もしくは複数のジョブをプリンタの スプールキューから削除します。スプールディレクトリはユーザから保護され ているので、ジョブの削除は .Nm を利用するのが唯一の手段です。 -ジョブのオーナは、ユーザのログイン名と +ジョブの所有者は、ユーザのログイン名と .Xr lpr 1 を実行した計算機のホスト名で決定されます。 .Pp オプションとしては以下のものがあります: .Bl -tag -width indent .It Fl P Ns Ar printer .Ar printer を扱うキューを指定します (指定しない場合はデフォルトのプリンタを使います)。 .It Fl もし単一の `-' が与えられた場合、 .Nm はユーザのすべてのジョブを削除します。 もしスーパユーザがこのオプションを使った場合、スプール キューは完全に空になります。 .It Ar user .Nm は、 .Ar user の所有するすべてのジョブを削除しようと 試みます。この .Nm の呼び出し方は、スーパユーザだけに有用です。 .It Ar job\ \&# ユーザは、ジョブ番号を指定することで個々のジョブをキューから 削除することができます。この番号は .Xr lpq 1 プログラムから得ることができます。たとえば、以下のようになります。 .Pp .Bd -literal -offset indent \&% lpq \-l 1st:ken [job #013ucbarpa] (standard input) 100 bytes % lprm 13 .Ed .El .Pp もし、どのオプションも与えられなかったときは、 .Nm を実行したユーザが持つアクティブなジョブを削除します。 .Pp .Nm は削除するファイルの名前をアナウンスしますが、もしキュー内 に削除するジョブがないときには何もアナウンスしません。 .Pp .Nm は、スプールのファイルを削除する前に、もし必要であればアクティブな デーモンを殺します。デーモンを殺した場合、ファイルを削除したあとで 新しいデーモンを自動的に再スタートさせます。 .Sh 環境変数 もし、以下の環境変数が存在したならば、 .Nm は利用します。 .Bl -tag -width PRINTER .It Ev PRINTER もし環境変数 .Ev PRINTER が存在し、プリンタを .Fl P オプションで指定しなかった場合、デフォルトプリンタは .Ev PRINTER の値となります。 .El .Sh 関連ファイル .Bl -tag -width /var/spool/*/lock/ -compact .It Pa /etc/printcap プリンタの特徴を記述するファイル .It Pa /var/spool/* スプールディレクトリ .It Pa /var/spool/*/lock 現在のデーモンのプロセス ID と、現在アクティブなジョブのジョブ番号を 得るためのロックファイル .El .Sh 関連項目 .Xr lpq 1 , .Xr lpr 1 , .Xr lpd 8 .Sh 診断 もし、自分が所有者でないファイルを削除しようとした時は、 ``Permission denied'' になります。 .Sh バグ ロックファイルの更新時に、競争になる場合があるので、現在のアクティブ なジョブを正しく認識しないかもしれません。 .Sh 歴史 .Nm コマンドは .Bx 3.0 から登場しました。 diff --git a/ja_JP.eucJP/man/man1/manpath.1 b/ja_JP.eucJP/man/man1/manpath.1 index 27cc12132d..285238d645 100644 --- a/ja_JP.eucJP/man/man1/manpath.1 +++ b/ja_JP.eucJP/man/man1/manpath.1 @@ -1,67 +1,67 @@ .\" Man page for manpath .\" .\" Copyright (c) 1990, 1991, John W. Eaton. .\" .\" You may distribute under the terms of the GNU General Public .\" License as specified in the README file that comes with the man 1.0 .\" distribution. .\" .\" John W. Eaton .\" jwe@che.utexas.edu .\" Department of Chemical Engineering .\" The University of Texas at Austin .\" Austin, Texas 78712 .\" .\" jpman %Id: manpath.1,v 1.4 1997/08/20 20:58:18 horikawa Stab % .Dd Jan 5, 1991 .Dt MANPATH 1 .Os .Sh 名称 .Nm manpath .Nd マニュアルページのユーザのサーチパスを決める .Sh 書式 .Nm .Op Fl q .Sh 解説 .Nm manpath はシステム標準およびユーザの .Ev PATH からユーザのマニュアルページのサーチパスを決め、結果を標準出力へ表示 します。また警告およびエラーは標準エラー出力へ出力します。ユーザの .Ev PATH 中のディレクトリが manpath.config ファイルに無いときには、manpath は そのディレクトリで man または MAN という名前のサブディレクトリを探し、 見付かればそれをサーチパスに追加します。 .Pp .Nm は .Nm man がサーチパスを決めるのにも使用します。したがって、普通はユーザが環境 変数 .Ev MANPATH を直接設定する必要はありません。 .Pp オプションを以下に示します: .Bl -tag -width Ds .It Fl q 「静かに」実行します。最終的なマニュアルページのサーチパスだけを表示します。 .El .Sh 環境変数 .Bl -tag -width MANPATH -compact .It Ev MANPATH .Ev MANPATH を設定すると .Nm manpath はその設定を標準出力に表示し、標準エラー出力に警告を出力します。 .El .Sh 関連ファイル .Bl -tag -width /etc/manpath.config -compact .It Pa /etc/manpath.config -システムコンフィギュレーションファイル +システムの設定ファイル .El .Sh 関連項目 .Xr apropos 1 , .Xr whatis 1 , .Xr man 1 .Sh バグ 既知のバグはありません。 diff --git a/ja_JP.eucJP/man/man1/mcon.1 b/ja_JP.eucJP/man/man1/mcon.1 index ccf05d91a8..26240bcd09 100644 --- a/ja_JP.eucJP/man/man1/mcon.1 +++ b/ja_JP.eucJP/man/man1/mcon.1 @@ -1,172 +1,172 @@ .\" Copyright (c) 1994 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. .\" 3. All advertising materials mentioning features or use of this software .\" must display the following acknowledgement: .\" This product includes software developed by Joerg Wunsch .\" 4. The name authors may not be used to endorse or promote products .\" derived from this software without specific prior written permission. .\" .\" THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``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 AUTHORS 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. .\" .\" @(#)mcon.1, 3.00, Last Edit-Date: [Mon Jan 10 21:28:22 1994] .\" jpman %Id: mcon.1,v 1.3 1997/08/20 12:33:46 horikawa Stab % .\" .Dd January 3, 1994 .Dt MCON 1 .Sh 名称 .Nm mcon .Nd pcvt マウスエミュレータの制御 .Sh 書式 .Nm mcon .Op Fl l Ar left-button-key .Op Fl m Ar mid-button-key .Op Fl r Ar right-button-key .Op Fl a Ar accel-time .Op Fl s Ar 0 | false | \&no .Op Fl s Ar 1 | true | yes .Ar device .Sh 解説 .Nm mcon は、 .Xr pcvt 4 マウスエミュレータの調整可能なパラメータを制御するユーティリティです。 .br .Em NB : マウスエミュレータはデフォルトでは組み込まれていません。 -この機能を有効にするには、システムのコンフィグファイルに +この機能を有効にするには、システムの設定ファイルに 以下のオプション指定行 .Em options Dq PCVT_EMU_MOUSE を記述する必要があります。 .Pp いずれの場合も、マウスエミュレーションに用いるデバイスノードを指定する .Ar device を引数に指定して .Nm を呼び出さなければなりません。 これは普通、 .Xr pcvt 4 ドライバのうち、仮想端末デバイスとして使われていない最初のデバイスノードです。 例えば、8 つの仮想端末、つまり .Pa /dev/ttyv0 から .Pa /dev/ttyv7 が使えるように設定されている (これがデフォルト) 場合、 マウスエミュレータは .Pa /dev/ttyv8 に割り当てられます。 もしオプションなしで .Nm を起動すると、調整可能パラメータの現在の設定値を表示します。 オプション 1 つを付けて起動すると、 .Nm は新しい値の設定を試みます。 .Pp オプションは以下の通りです: .Bl -tag -width Ds .It Fl l Ar left-button-key .It Fl m Ar mid-button-key .It Fl r Ar right-button-key 指定された .Ar button key がマウスの左, 中央, 右ボタンをエミュレートするようにマッピングします。 .Ar button key はそのキーの通常の名称です。 普通の ASCII 文字はその文字自体で指定し、 ファンクションキーは .Em f1 から .Em f10 で指定します。 注意: AT ファンクションキー .Em f11 から .Em f12 は .Em 拡張された キーであり、マウスエミュレータで使うようにマッピングできません。 基本的な PC スキャンコードキーを使うことしか許されないからです。 .It Fl a Ar accel-time 内部アクセラレータのタイムリミットを .Ar accel-time ミリ秒に設定します。 このタイムリミット以上経過した後キーイベントが発生すると、 単一のステップでマウスカーソルが動きます。 これより短い間隔でキーイベントが到着すると、 マウスカーソルは 6 倍の速さで動きます。 注意: .Em milliseconds は上に示した単位で指定できますが、 時刻の分解能は OS のタイマ分解能の制約を受け、 通常は 10 ミリ秒単位となります。 .It Fl s Ar 0 | false | \&no .It Fl s Ar 1 | true | yes マウスボタンの .Em sticky 動作を無効化あるいは有効化します。 マウスボタンを sticky にすると、ちょうどトグルボタンのようになります。 つまり、はじめて押すとアクティブになり、もう一度押すと非アクティブになります。 他のボタンどれかを押すと、それ以外の sticky なボタンは 全て非アクティブになります。 sticky ボタンを使うと指が 20 本も要らなくなるので便利かも知れません。 他方、マウスのダブルクリックやトリプルクリックは事実上不可能になります。 .El .Sh 実行例 以下の例はマウスエミュレータのデフォルト動作を設定するものです。 .Nm mcon .Fl l Ar f1 .Fl m Ar f2 .Fl r Ar f3 .Fl a Ar 250 .Fl s Ar \&no .Pa /dev/ttyv8 .Sh バグ ボタンをエミュレートするキーをスキャンコードに (あるいはその逆に) マッピングする際のキーの名前は、米国のキーボードレイアウトに基づいています。 しかし、 .Dq 選んだ button は各国のキーボードレイアウトのファンクションキーのどれかに相当する でしょうから、通常、これは問題とならないでしょう。 .Pp マウスエミュレータは結構乱暴なことをやっています。 その唯一の目的は、X ウィンドウ環境の中でポインタを動かすデバイスを 提供することです。 .Sh 関連項目 .Xr X 1 , .Xr pcvt 4 .Sh 歴史 .Nm ユーティリティは .Xr pcvt 4 , release 3.00 で登場しました。 .Sh 作者 マウスエミュレータは .if n Joerg Wunsch .if t J\(:org Wunsch によって寄贈されました。 diff --git a/ja_JP.eucJP/man/man1/mkdir.1 b/ja_JP.eucJP/man/man1/mkdir.1 index aeb636d706..6e06f2ae08 100644 --- a/ja_JP.eucJP/man/man1/mkdir.1 +++ b/ja_JP.eucJP/man/man1/mkdir.1 @@ -1,103 +1,103 @@ .\" Copyright (c) 1989, 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. .\" .\" @(#)mkdir.1 8.2 (Berkeley) 1/25/94 .\" %Id: mkdir.1,v 1.3.2.1 1997/02/28 07:54:38 mpp Exp % .\" jpman %Id: mkdir.1,v 1.2 1997/03/29 06:22:04 horikawa Stab % .\" .Dd January 25, 1994 .Dt MKDIR 1 .Os .Sh 名称 .Nm mkdir .Nd ディレクトリの作成 .Sh 書式 .Nm mkdir .Op Fl p .Op Fl m Ar mode .Ar directory_name ... .Sh 解説 .Nm は、 オペランドで指定されたディレクトリを作成します。 作成する順番は指定された順番です。 作成されるディレクトリのパーミッションは、 .Li rwxrwxrwx (\&0777) に .Xr umask 2 の修正を加えたものです。 .Pp オプションとしては以下のものがあります: .Pp .Bl -tag -width indent .It Fl m Ar mode 作成されるディレクトリのパーミッションを指定します。 .Ar mode の書式は .Xr chmod 1 コマンドと同じです。シンボリック形式で指定する場合、 .Dq + および .Dq - は、最初のパーミッションが .Dq a=rwx であるものとして解釈されます。 .It Fl p 必要に応じて途中のディレクトリを作成します。 このオプションが指定されていない場合には、 .Ar directory_name で指定するパスの途中のディレクトリは既に存在している必要があります。 途中に作成されるディレクトリのパーミッションは、 .Li rwxrwxrwx (\&0777) に現在の umask の修正を加えたものに、 -オーナに対する書き込みと検索パーミッションが加わった値となります。 +所有者に対する書き込みと検索パーミッションが加わった値となります。 .El .Pp ユーザは親ディレクトリに対する 書き込みパーミッションを持っている必要があります。 .Pp .Nm は成功した場合は 0 を、エラーが起きた場合は 1 以上の値を返します。 .Sh 関連項目 .Xr rmdir 1 .Sh 規格 .Nm mkdir ユーティリティは .St -p1003.2 互換です。 .Sh 歴史 .Nm コマンドは .At v1 から登場しました。 diff --git a/ja_JP.eucJP/man/man1/mkstr.1 b/ja_JP.eucJP/man/man1/mkstr.1 index d6ebd1ab76..512959bbfd 100644 --- a/ja_JP.eucJP/man/man1/mkstr.1 +++ b/ja_JP.eucJP/man/man1/mkstr.1 @@ -1,142 +1,142 @@ .\" Copyright (c) 1980, 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. .\" .\" @(#)mkstr.1 8.1 (Berkeley) 6/6/93 .\" jpman %Id: mkstr.1,v 1.2 1997/03/29 06:22:47 horikawa Stab % .\" .Dd June 6, 1993 .Dt MKSTR 1 .Os .Sh 名称 .Nm mkstr .Nd C 言語ソースファイルからエラーメッセージファイルを作成する .Sh 書式 .Nm .Op Fl .Ar messagefile .Ar prefix file ... .Sh 解説 .Nm は C 言語ソースファイルからエラーメッセージを抽出し、 これを格納するファイルを作成します。また作成され たエラーメッセージファイルを使用するように、そのソースファイルを修正し ます。mkstr は巨大なプログラムのサイズを減少させ、スワップを減らすこと を目的としています ( .Sx バグ の項を参照) 。 .Pp .Nm はコマンドラインで指定されたファイルを処理し、修正した入力ファイ -ルを、指定されたファイル名に、指定されたプレフィクスをつけた名前のファイル +ルを、指定されたファイル名に、指定されたプレフィックスをつけた名前のファイル で出力します。以下の使用例は典型的なものです。 .Bd -literal -offset indent mkstr pistrings xx *.c .Ed .Pp .Nm は、カレントディレクトリにあるすべての C 言語ソースから集めた エラーメッセージを、ファイル .Ar pistrings に出力し、修正されたソースファイルを、ファイル名の先頭に .Ar \&xx をつけたファイルに出力します。 .Pp オプション .Bl -tag -width indent .It Fl 指定されたエラーメッセージファイルの最後に、エラーメッセージが置かれます。 これは、 .Nm で処理された巨大なプログラムの一部を再コンパイルするために使用します。 .El .Pp .Nm は、ソースファイル中の .Li \&`error("' という文字列をもとにエラーメッセージを検索します。この文字列が出現すると、 .Sq \&"\& から開始される文字列および その後にヌル文字と改行文字をメッセージファイルに出力します; 変更前のソースにおいて文字列であった部分は、 メッセージファイルのオフセットに置き換えられ .Xr lseek 2 によって対応するメッセージを取り出すことができます。 実際にメッセージを取り出す場合には、以下のようなコードを使用します。 .Bd -literal -offset indent char efilname = "/usr/lib/pi_strings"; int efil = -1; error(a1, a2, a3, a4) \&{ char buf[256]; if (efil < 0) { efil = open(efilname, 0); if (efil < 0) { oops: perror(efilname); exit 1 ; } } if (lseek(efil, (long) a1, 0) \ read(efil, buf, 256) <= 0) goto oops; printf(buf, a2, a3, a4); } .Ed .Sh 関連項目 .Xr xstr 1 , .Xr lseek 2 .Sh 歴史 .Nm は .Bx 3.0 で追加されました。 .Sh バグ .Nm は、PDP 11 ファミリーの制限されたアーキテクチャのために開発されました。 ごく一部のプログラムしか mkstr を使用していません。 Pascal インタプリタ .Xr \&pi 1 とエディタ .Xr \&ex 1 が .Nm により作成されています。 .Nm の方法は効率的なものとはいえないので、 エラーメッセージはプログラムテキストのなかに埋め込まれているべきです .Pq (訳注) 最近はメッセージの国際化等のために、プログラム中にメッセージを埋め込まない方法もよく用いられます 。 .\" 上記(訳注)は翻訳時からあったが、現状確かにそうなので残しました。 .\" 2.1.5-2.2-RELEASE 対象 .\" By horikawa@jp.freebsd.org (Mar 29 1997) diff --git a/ja_JP.eucJP/man/man1/nohup.1 b/ja_JP.eucJP/man/man1/nohup.1 index 888d1094bb..2b0093f57e 100644 --- a/ja_JP.eucJP/man/man1/nohup.1 +++ b/ja_JP.eucJP/man/man1/nohup.1 @@ -1,82 +1,82 @@ .\" Copyright (c) 1989, 1990 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. .\" .\" from: @(#)nohup.1 6.8 (Berkeley) 7/27/91 .\" jpman %Id: nohup.1,v 1.2 1997/05/04 13:33:09 horikawa Stab % .\" .Dd June 6, 1993 .Dt NOHUP 1 .Os .Sh 名称 .Nm nohup -.Nd ハングアップしないようにしてコマンドを実行する +.Nd 回線切断しないようにしてコマンドを実行する .Sh 書式 .Nm .Ar command .Op Ar arg ... .Sh 解説 .Nm は .Dv SIGHUP シグナルを無視するように設定し、指定されたコマンドを指定された引数付で 実行します。 .Dv SIGQUIT も無視するように設定します。 標準出力が端末の時、コマンドの出力はカレントディレクトリのファイル .Pa nohup.out に追加書き込みされます。標準エラー出力が端末の時も、 標準出力と同様に処理されます。 .Pp .Nm はエラーがあれば 1 を返します。その他の場合は .Ar command の終了ステータスを返します。 .Sh 環境変数 .Nm は以下の環境変数を参照します。 .Bl -tag -width flag .It Ev HOME カレントディレクトリにファイル .Pa nohup.out が作成できなかった場合、環境変数 .Ev HOME で示されたディレクトリに作成します。 .El .Sh 関連項目 .Xr signal 3 .Sh 標準 .Nm は .St -p1003.2 互換であるはずです。 diff --git a/ja_JP.eucJP/man/man1/patch.1 b/ja_JP.eucJP/man/man1/patch.1 index 872f362415..1aebf0104d 100644 --- a/ja_JP.eucJP/man/man1/patch.1 +++ b/ja_JP.eucJP/man/man1/patch.1 @@ -1,593 +1,593 @@ .\" -*- nroff -*- .rn '' }` .\" jpman %Id: patch.1,v 1.3 1997/09/10 04:34:14 yugawa Stab % '\" %Header: /home/ncvs/src/gnu/usr.bin/patch/patch.1,v 1.5.2.3 1998/01/22 07:45:53 ache Exp % '\" '\" %Log: patch.1,v % '\" Revision 1.5.2.1 1998/01/11 20:45:30 ache '\" Back out rev1.5 change, Index: precedence restored to historycal behaviour '\" '\" Revision 1.4 1994/02/25 21:45:59 phk '\" added the -C/-check again. '\" .\" Revision 1.3 1994/02/17 22:20:33 jkh .\" Put this back - I was somehow under the erroneous impression that patch was in .\" ports, until I saw the the commit messages, that is! :-) All changed backed out. .\" .\" Revision 1.2 1994/02/17 22:16:02 jkh .\" From Poul-Henning Kamp - Implement a -C option to verify the integrity of .\" a patch before actually applying it. .\" .\" Revision 1.1.1.1 1993/06/19 14:21:51 paul .\" b-maked patch-2.10 .\" '\" Revision 2.0.1.2 88/06/22 20:47:18 lwall '\" patch12: now avoids Bell System Logo '\" '\" Revision 2.0.1.1 88/06/03 15:12:51 lwall '\" patch10: -B switch was contributed. '\" '\" Revision 2.0 86/09/17 15:39:09 lwall '\" Baseline for netwide release. '\" '\" Revision 1.4 86/08/01 19:23:22 lwall '\" Documented -v, -p, -F. '\" Added notes to patch senders. '\" '\" Revision 1.3 85/03/26 15:11:06 lwall '\" Frozen. '\" '\" Revision 1.2.1.4 85/03/12 16:14:27 lwall '\" Documented -p. '\" '\" Revision 1.2.1.3 85/03/12 16:09:41 lwall '\" Documented -D. '\" '\" Revision 1.2.1.2 84/12/05 11:06:55 lwall '\" Added -l switch, and noted bistability bug. '\" '\" Revision 1.2.1.1 84/12/04 17:23:39 lwall '\" Branch for sdcrdcf changes. '\" '\" Revision 1.2 84/12/04 17:22:02 lwall '\" Baseline version. '\" .de Sh .br .ne 5 .PP \fB\\$1\fR .PP .. .de Sp .if t .sp .5v .if n .sp .. '\" '\" Set up \*(-- to give an unbreakable dash; '\" string Tr holds user defined translation string. '\" Bell System Logo is used as a dummy character. '\" .ie n \{\ .tr \(*W-\*(Tr .ds -- \(*W- .if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch .if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch .ds L" "" .ds R" "" .ds L' ' .ds R' ' 'br \} .el \{\ .ds -- \(em\| .tr \*(Tr .ds L" `` .ds R" '' .ds L' ` .ds R' ' 'br\} .TH PATCH 1 LOCAL .SH 名称 patch - diff ファイルをオリジナルのファイルに適用する .SH 書式 .B patch [options] [origfile [patchfile]] [+ [options] [origfile]]... .sp ですが、たいていは以下のようにします。 .sp .B patch .br および多くの貢献者の方々。 .SH 環境変数 .TP .B TMPDIR テンポラリファイルを置くディレクトリ。デフォルトでは /tmp .TP .B SIMPLE_BACKUP_SUFFIX バックアップファイルに付ける拡張子を指定します。デフォルトでは、 \*(L".orig\*(R" もしくは \*(L"~\*(R"。 .TP .B VERSION_CONTROL 数字付きバックアップファイルが作成される際に選択します。 .SH 関連ファイル $TMPDIR/patch* .SH 関連項目 diff(1) .SH パッチ作成者への注意 パッチを作って送付しようとする際に留意すべき点がいくつかあります。 第 1 に、patchlevel.h というファイルを管理することで皆は大変幸せに なれます。作成したパッチファイルの最初の差分はこの patchlevel.h に パッチをあて、パッチレベルをインクリメントします。 パッチの中に Prereq: 行を入れておけば、 順番通りにパッチを適用しない限り警告が出ます。 第 2 に、context diff ヘッダか Index: 行で正しくファイル名を指定している ことを確認して下さい。 サブディレクトリにあるファイルにパッチをあてようとする場合は、 必要に応じて .B \-p オプションを指定するよう、ユーザに伝えて下さい。 第 3 に、空のファイルと新規ファイルを比較する差分を送付することで、 新しいファイルを生成することができます。 これは、ターゲットディレクトリにその新ファイルがまだ存在しない場合にのみ 有効です。 第 4 に、リバースパッチを送付しないように気を付けて下さい。 そのパッチは適用済なのかと皆が混乱します。 第 5 に、例えば 582 個の差分をたったひとつのファイルに突っ込んで ハイサヨナラとすることもできることはできますが、 何か発狂しそうになったときに備えて、 関係あるパッチをいくつかの独立したファイルにまとめあげるほうが おそらく賢明でしょう。 .SH 診断 ここに列挙しきれないほどたくさんありますが、一般に .I patch がパッチファイルを解釈できないことを示しています。 .PP メッセージ \*(L"Hmm...\*(R" は、 パッチファイル中に処理できないテキストが存在していること、 そして .I patch はそのテキスト中にパッチがあるかどうか、もし存在すれば どういう形式のパッチであるかを推測しようとしていることを 示しています。 .PP ひとつでもリジェクトファイルが作成されれば、 .I patch はゼロでない終了ステータスで終了します。 いくつものパッチを繰り返し適用する場合は、 この終了ステータスをチェックし、 パッチが部分的にしか適用されていないファイルに対して さらなるパッチをあてないようにすべきです。 .SH 警告 .I patch は .I ed スクリプト形式では行番号のズレを示せません。 また normal diff 形式でも、行番号の誤りを指摘できるのは \*(L"change\*(R" コマンドや \*(L"delete\*(R" コマンドが現れる場合だけです。 context diff 形式で曖昧度 3 を指定した場合も同様の問題があります。 適切な対話インタフェースが追加されるまでは、 こういう場合は context diff を見比べて修正が意味的に正しいかどうか 確認すべきでしょう。 もちろん、エラーなくコンパイルできれば、 パッチはうまく適用されたという小さなサインにはなりますが、 必ずしもいつもそうだというわけではありません。 .PP たとえ多くの類推を行わなくてはならない場合でも、 .I patch は通常、正しい結果を生成します。 しかし、結果が正しいと保証できるのは、 パッチを作成したのと正確に同じバージョンのファイルに対して パッチを適用した場合だけです。 .SH バグ 多めの \&deviant オフセットと入れ換えコードにより、 部分的なマッチングに関して更に賢くできますが、 そのためにはパスを追加する必要がありそうです。 .PP コードが複製されている場合(例えば #ifdef OLDCODE ... #else ... #endif に よって)、 .I patch は両者にパッチをあてることができません。 そしてそこでパッチコマンドがうまくいった場合、 そのパッチはおそらく誤って適用されており、 おまけに「成功しました」と報告してきます。 .PP 既に適用済のパッチをあてると、 .I patch はそれをリバースパッチと考え、適用したパッチを外すかどうか尋ねてきます。 これも特徴の一つと解釈可能でしょう。 .rn }` '' diff --git a/ja_JP.eucJP/man/man1/pax.1 b/ja_JP.eucJP/man/man1/pax.1 index 6ef207b3d1..d89ffa17a4 100644 --- a/ja_JP.eucJP/man/man1/pax.1 +++ b/ja_JP.eucJP/man/man1/pax.1 @@ -1,1174 +1,1174 @@ .\" Copyright (c) 1992 Keith Muller. .\" Copyright (c) 1992, 1993 .\" The Regents of the University of California. All rights reserved. .\" .\" This code is derived from software contributed to Berkeley by .\" Keith Muller of the University of California, San Diego. .\" .\" 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. .\" .\" @(#)pax.1 8.4 (Berkeley) 4/18/94 .\" jpman %Id: pax.1,v 1.4 1997/08/25 03:45:37 horikawa Stab % .\" %Id: pax.1,v 1.3 1995/08/16 23:12:25 nate Exp % .\" .Dd April 18, 1994 .Dt PAX 1 .Os BSD 4.4 .Sh 名称 .Nm pax .Nd ファイルアーカイブの読み書きやディレクトリ階層のコピーを行う .Sh 書式 .Nm pax .Op Fl cdnv .Bk -words .Op Fl f Ar archive .Ek .Bk -words .Op Fl s Ar replstr .Ar ... .Ek .Bk -words .Op Fl U Ar user .Ar ... .Ek .Bk -words .Op Fl G Ar group .Ar ... .Ek .Bk -words .Oo .Fl T .Op Ar from_date .Op Ar ,to_date .Oc .Ar ... .Ek .Op Ar pattern ... .Nm pax .Fl r .Op Fl cdiknuvDYZ .Bk -words .Op Fl f Ar archive .Ek .Bk -words .Op Fl o Ar options .Ar ... .Ek .Bk -words .Op Fl p Ar string .Ar ... .Ek .Bk -words .Op Fl s Ar replstr .Ar ... .Ek .Op Fl E Ar limit .Bk -words .Op Fl U Ar user .Ar ... .Ek .Bk -words .Op Fl G Ar group .Ar ... .Ek .Bk -words .Oo .Fl T .Op Ar from_date .Op Ar ,to_date .Oc .Ar ... .Ek .Op Ar pattern ... .Nm pax .Fl w .Op Fl dituvHLPX .Bk -words .Op Fl b Ar blocksize .Ek .Oo .Op Fl a .Op Fl f Ar archive .Oc .Bk -words .Op Fl x Ar format .Ek .Bk -words .Op Fl s Ar replstr .Ar ... .Ek .Bk -words .Op Fl o Ar options .Ar ... .Ek .Bk -words .Op Fl U Ar user .Ar ... .Ek .Bk -words .Op Fl G Ar group .Ar ... .Ek .Bk -words .Op Fl B Ar bytes .Ek .Bk -words .Oo .Fl T .Op Ar from_date .Op Ar ,to_date .Op Ar /[c][m] .Oc .Ar ... .Ek .Op Ar file ... .Nm pax .Fl r .Fl w .Op Fl diklntuvDHLPXYZ .Bk -words .Op Fl p Ar string .Ar ... .Ek .Bk -words .Op Fl s Ar replstr .Ar ... .Ek .Bk -words .Op Fl U Ar user .Ar ... .Ek .Bk -words .Op Fl G Ar group .Ar ... .Ek .Bk -words .Oo .Fl T .Op Ar from_date .Op Ar ,to_date .Op Ar /[c][m] .Oc .Ar ... .Ek .Op Ar file ... .Ar directory .Sh 解説 .Nm pax は、アーカイブファイルの読み込み、書きだし、アーカイブファイルに 格納されているファイルの一覧読みだし、そしてディレクトリ階層のコピーを 行います。 .Nm pax の操作は指定したアーカイブフォーマットとは独立しており、また .Nm pax は広範囲に渡る種類のアーカイブフォーマットの操作をサポートします。 .Nm pax のサポートするアーカイブフォーマット一覧は、 .Fl x オプションの説明時に示します。 .Pp .Fl r および .Fl w は、以下の .Nm pax の機能モードのいずれかを指定するのに用いられます。その機能モードとは、 .Em 一覧表示モード、読み込みモード、書き込みモード、コピーモード の 4 つです。 .Bl -tag -width 6n .It .Em 一覧表示モードです。 .Nm pax は、 .Dv 標準入力 から読み込まれたアーカイブ内の格納ファイルのリストを .Dv 標準出力 へ書き出します。標準入力から読み込まれるファイルのパス名は、指定した .Ar pattern に一致するものが採用されます。 ファイル一覧は 1 行に 1 つのファイル名を含み、1 行バッファリングを行って 書き出されます。 .It Fl r .Em 読み込みモードです。 .Nm pax は、 .Dv 標準入力 からアーカイブ読み込み、その内に格納されたファイルのうち指定した .Ar pattern に一致するファイル名を持つファイルを展開します。 アーカイブフォーマット及びブロック化係数は、自動的に入力から決定されます。 展開されるファイルがディレクトリの場合、そのディレクトリ配下に連なる ファイル階層は完全な形で展開されます。 展開される全てのファイルは、現在のファイル階層からの相対ディレクトリに 生成されます。展開されるファイルの所有権、アクセス時刻、更新時刻、 そしてファイルモードの設定についての詳細は、 .Fl p オプションのところで述べます。 .It Fl w .Em 書き込みモードです。 .Nm pax は、 .Ar file オペランドで指定したファイル群のアーカイブを 指定したフォーマットで標準出力に書き出します。 .Ar file オペランドが指定されない場合には、1 行に 1 つずつ コピーするファイルを記述したリストを標準入力から読み込みます。 .Ar file オペランドがディレクトリの場合、そのディレクトリ配下の 全ファイルが作成されるアーカイブに含まれます。 .It Fl r Fl w .Em コピーモードです。 .Nm pax は、ファイルオペランドで指定したファイル群を、指定した .Ar ディレクトリ にコピーします。 .Ar file オペランドが指定されない場合には、1 行に 1 つずつ コピーするファイルを記述したリストを標準入力から読み込みます。 .Ar file オペランドがディレクトリの場合、そのディレクトリ配下のファイルがすべて、 コピー先として指定したディレクトリ配下に作成されます。 .Em コピーモード は、ファイルがアーカイブファイルに対して書き込まれ、 そして一方でそのアーカイブファイルが展開されるかのように見ます。 ただし、これはオリジナルファイルとコピーファイルの間に ハードリンクが張られるかも知れない事を除きます .Ns ( Fl l オプションを参照して下さい)。 .Pp .Em 注意 コピー先の .Ar ディレクトリ には、コピー元にあるものと同じファイル名の .Ar file オペランドや .Ar file オペランドで指定されるディレクトリ階層の配下にあるファイル名などを 指定してはいけません。 そのような場合、 .Em コピー の結果は予測できないものになります。 .El .Pp .Em 読み込み 操作や .Em 一覧表示 動作において壊れたアーカイブを処理する場合、 .Nm pax は媒体破損を可能な限り復旧し、 アーカイブの中から可能な限りのファイルを処理しようと試みます (エラー時の 処理の詳細は .Fl E オプションを参照して下さい)。 .Sh オペランド .Pp .Ar directory オペランドは、コピー先ディレクトリの指定を行います。 .Ar directory オペランドが存在しない場合、もしくはユーザが書き込みを出来ない、 もしくは指定したオペランドがディレクトリでない場合には、 .Nm pax は、0 以外のステータスでプログラムを終了します。 .Pp .Ar pattern オペランドは、アーカイブに格納されているファイルの名前を選択するために 用いられます。 アーカイブメンバは、 .Xr fnmatch 3 に記述のある表記に一致するパターンを用いて選択されます。 .Ar pattern オペランドが指定されない場合には、アーカイブ内に格納されている 全てのメンバが選択されます。 .Ar pattern がディレクトリ名と一致する場合には、そのディレクトリ配下の階層に 位置する全てのファイルが選択されます。 もしアーカイブ内に .Ar pattern オペランドの指定と一致する名前のファイルがない場合には、 .Nm pax は .Ar 標準エラー出力 に出力される診断メッセージにこの .Ar pattern オペランドを書き出し、0 以外のステータスでプログラムを終了します。 .Pp .Ar file オペランドは、コピーもしくはアーカイブされるファイルのパス名を指定します。 .Ar file オペランドが 1 つもアーカイブメンバを選択しない場合には、 .Nm pax は .Dv 標準エラー出力 に出力される診断メッセージにこの .Ar file オペランドの内容を書き出し、0 以外のステータスでプログラムを終了します。 .Sh オプション .Pp .Nm pax では、以下のオプションが使用可能です。 .Bl -tag -width 4n .It Fl r アーカイブファイルを .Dv 標準入力 から読み込み、 .Ar files で指定したファイルを展開します。 アーカイブされているファイルの展開に中間ディレクトリの作成が必要な場合、 これらのディレクトリは、 .Xr mkdir 2 の mode 引数のところに .Dv S_IRWXU , S_IRWXG , S_IRWXO の .Dv 論理和 を指定して呼び出された場合と同様に作成されます。 選択されたアーカイブ形式がリンクファイルの指定をサポートし、 かつアーカイブ展開時にリンク不可能である場合には、 .Nm pax は、処理が終了する時に、診断メッセージを .Dv 標準エラー出力 に書き出し、0 以外のステータスで終了します。 .It Fl w 指定したアーカイブフォーマットで、 .Dv 標準出力 にアーカイブを書き出します。 .Ar file オペランドが指定されない場合には、1 行につき展開するファイルのパス名 1 つを 記述したリストを .Dv 標準入力 から読み込みます。 このリストの各行の先頭や末尾には .Aq 空白 を入れてはいけません。 .It Fl a すでに存在するアーカイブファイルの後ろに、ファイル .Ar files を追加書き込みします。 .Fl x オプションによるアーカイブフォーマット指定がされない場合、 アーカイブフォーマットは追加書き込み対象となるアーカイブファイルの フォーマットと同一になります。 アーカイブファイルに対して、そのアーカイブファイルのフォーマットと 異なるフォーマットを用いてファイルを追加書き込みをしようとした場合、 .Nm pax は即時に 0 以外の終了ステータスでプログラム終了します。 アーカイブボリュームに最初に書き込んだブロックサイズを引き継いで、 残りのアーカイブボリュームのブロックサイズとします。 .Pp .Em 注意 : 多くの記憶装置は追加書き込み処理に必要な操作をサポートできません。 そのようなサポートしていないデバイスに対するアーカイブの追加書き込みは、 アーカイブの破損もしくは他の予期せぬ結果を招くことになります。 特に、テープドライブに対する追加書き込み処理は、最もサポートしそうにない ものです。 普通のファイルシステムのファイルとして、もしくはディスクデバイス上に 保存されているアーカイブについては、通常は追加書き込み処理をサポートします。 .It Fl b Ar blocksize アーカイブを .Em 書き出す 際、アーカイブへと書き出す内容を blocksize (正の整数) で指定したバイト数 でブロック化します。 .Ar blocksize で指定出来る値は、512 の倍数でなくてはならず、最大は 32256 です。 .Ar blocksize で指定する数は、その最後に .Li k もしくは .Li b を付加することで、1024(1K) もしくは 512 の倍数として指定できます。 .Ar blocksizes に指定する数字を .Li x で区切ることで、文字 x で区切られた数字の積がブロックサイズとして採用されます。 アーカイブの書き込みのために指定するデバイスによっては、 ブロックサイズに対してさらに制限がかかることがあります。 ブロック化が指定されない場合には、デフォルトの .Ar blocksize は使用される特定のアーカイブフォーマットに依存します。 .Ns ( Fl x オプションを参照して下さい)。 .It Fl c .Ar pattern に指定されたパターンにマッチしたファイルおよび .Ar file オペランドで指定されたファイル .Em 以外 の、全てのファイルもしくはアーカイブ内メンバにマッチします。 .It Fl d コピーもしくはアーカイブされるディレクトリ、もしくはアーカイブに格納され ているディレクトリについて、指定パターンに一致した名前のディレクトリもし くはアーカイブ内に格納されているディレクトリのみ処理し、そのディレクトリ 配下にあるファイルについては処理しません。 .It Fl f Ar archive .Ar archive で指定したファイルを入力元のアーカイブもしくは出力先のアーカイブに指定し ます。この場合、デフォルトの .Dv 標準入力 .Ns ( Em 一覧表示モード および .Em 読み込みモード の場合) もしくは .Dv 標準出力 .Ns ( Em 書き込みモード ) については無視されます。 1 つのアーカイブが複数のファイルもしくは異なるアーカイブデバイスに渡って も構いません。必要があった場合、 .Nm pax は、アーカイブの格納されている次のボリュームのファイルもしくはデバイスの パス名の入力を促します。 .It Fl i 対話的にファイルもしくはアーカイブ内に格納されるファイルのリネームを行います。 .Ar pattern で指定した文字列パターンに一致するアーカイブ内の格納ファイルもしくは .Ar file オペランドの指定に一致するファイルについて、 .Nm pax は .Pa /dev/tty に対してファイルの名前やファイルモード、そしてファイルの更新時刻を表示して 入力を促します。 それから .Nm pax は .Pa /dev/tty からデータを 1 行読み込みます。 その行が空行だった場合には、その時のファイルもしくはアーカイブ内の 格納ファイルについては、処理を行いません。 その行がピリオド 1 つだけの行だった場合には、その時のファイルもしくは アーカイブ内の格納ファイルについては、ファイル名についての更新は行いません。 それ以外の場合には、ファイル名はその行の文字列で指定した名前に変更されます。 上記操作中に .Dv を .Pa /dev/tty から受けとった場合、もしくは何らかの理由で .Pa /dev/tty をオープン出来なかった場合、 .Nm pax は 0 以外の終了ステータスで即座に終了します。 .It Fl k すでに存在するファイルに対する上書きをしません。 .It Fl l (アルファベットの ``エル'' ) ファイルをリンクします。 .Em コピーモード .Ns ( Fl r .Fl w ) の場合には、コピー元コピー先間には可能な限りハードリンクが作成されます。 .It Fl n アーカイブに格納されるファイルのうち、各 .Ar pattern オペランドに指定した文字列パターンに一致するファイル名を持つ最初のものを 選択します。 アーカイブに格納されるファイルのうち .Ar pattern オペランドに指定した文字列パターン に一致するもので、2 つめ以降のものは選択されません。 文字列パターンで指定した条件に合致するものがディレクトリだった場合、 そのディレクトリ配下のファイルについても選択されたものとみなされます(ただし、 .Fl d オプションが指定された場合にはこの限りではありません)。 .It Fl o Ar options .Fl x で指定されるアーカイブフォーマットから特定される、 アーカイブファイル展開/書き出しアルゴリズムの更新情報を指定します。 一般的に、 .Ar options は .Cm name=value のように指定されます。 .It Fl p Ar string 1 つ以上のファイルの属性操作に関する動作をオプション指定します。 .Ar string オプション引数は、ファイル展開時に、展開ファイルの属性を保存するか破棄す るかを指定する文字列です。 string は、 .Cm a , e , m , o , p の 5 つの指定文字から成ります。 複数の属性を同じ文字列の中につなげて記述したり、複数の .Fl p オプションを指定したりすることもできます。 これらの文字は、以下のように動作の指定を行います: .Bl -tag -width 2n .It Cm a ファイルのアクセス時間を保存しません。 デフォルトでは、ファイルのアクセスタイムは可能な限り保存されます。 .It Cm e ファイルのユーザ ID, グループ ID, ファイルモードのビット、ファイルの アクセス時間、ファイルの更新時間、これらの .Sq 全ての属性を保存します。 本オプションは、 .Em スーパユーザ、 もしくは適正な権限を持ったユーザによって 使用されることを推奨します。 これは、アーカイブ内に格納されたすべてのファイルについて、 そのファイルの特性を保存するためです。 フラグを指定した場合は、 .Cm o および .Cm p フラグを指定したのと同様の効果を持ちます。 .It Cm m ファイルの更新時間を保存しません。 デフォルトでは、ファイルの更新時間は可能な限り保存されます。 .It Cm o ユーザ ID とグループ ID を保存します。 .It Cm p ファイルモードのビットを .Sq 保存します。 本オプションは、 ファイルについて、所有者情報以外の全ての情報の保存を希望するなど適正な 権限を持った .Em ユーザ に使用されることを推奨しています。 ファイルの時刻はデフォルトで保存されますが、 これを無効にしたり、展開時の時刻を用いるようにするために 別に 2 つのフラグが用意されています。 .El .Pp 先述のオプション一覧にて、 .Sq 属性の保存 とは、起動したプロセスの権限に応じて アーカイブ内に保存された属性が展開ファイルに反映されることを意味します。 これ以外の場合は、展開されるファイルの属性は、 通常のファイル生成と同様に決定されます。 .Cm e と .Cm o のどちらも指定されない場合、あるいは ユーザ ID とグループ ID がいかなる理由にせよ保存されない場合、 .Nm pax はファイル属性中の .Dv S_ISUID .Em ( setuid ) および .Dv S_ISGID .Em ( setgid ) のビットを設定しません。 これらの情報の引き継ぎが何らかの理由で失敗した場合、 .Nm pax は診断メッセージを .Dv 標準エラー出力 に書き出します。 これらの情報の保存失敗は、最終的な終了ステータスに影響しますが、 展開されたファイルが削除されるようなことはありません。 ファイル属性の操作に関するオプション文字が重複していたり、 他のオプション文字と処理上の競合を起こす場合には、 それらのオプションの中で一番最後に記述されたものの処理が採用されます。 例えば、 .Dl Fl p Ar eme が指定された場合には、ファイルの更新時間は保存されます。 .It Fl s Ar replstr アーカイブ内に格納されているファイルのうち、 .Ar pattern オペランドもしくは .Ar file オペランドで指定されたもののファイル名を、 .Ar replstr で指定された置換表現にしたがって更新します。この置換表現は、 .Xr ed 1 にて記述されている正規表現の書法に準じます。 これらの正規表現の書式は .Dl /old/new/[gp] です。 .Xr ed 1 に示されるように、 .Cm old は基本的な正規表現であり、 .Cm new はアンパサンド (&)、後方参照 \\n (nの部分は数字が入ります)、 補助表現を含むことができます。 文字列 .Cm old には、 .Dv 改行文字 を含んでも構いません。 ヌル文字以外のいかなる文字も、区切り文字として用いることが可能です (ここでは / を示しました)。 また、複数の .Fl s 表現を指定することが許されています。 これらの表現はコマンドラインで指定された順に適用され、 最初の置換が成功した時点でその置換を終了します。 置換処理の追加処理指定として、 .Cm g を指定した場合には、継続してファイル名の置換を行うことを指示します。 この場合、前回置換に成功した直後の文字から継続して置換を行います。 そして最初に置換を失敗したときに .Cm g オプションの処理を終了します。 置換処理の追加処理指定として .Cm p を指定した場合には、最初の置換成功結果を .Dv 標準エラー出力 に以下のフォーマットで書き出します: .Dl >> 空白文字に置換される通常ファイルもしくはアーカイブ内に格納されたファイルの ファイル名は、処理対象として選択されず、そのファイル名に対する 処理はスキップされます。 .It Fl t .Nm pax が読み込んだ、もしくはアクセスした全てのファイルやディレクトリの アクセス時間を、 .Nm pax がそれらのファイルやディレクトリを処理する前のものに再設定します。 .It Fl u 同じ名前ですでに存在するファイルやアーカイブ内に格納されているファイルより 古い (ファイル更新時刻が古い) ファイルを無視します。 .Em 読み込み処理 においては、アーカイブ内のファイルにファイルシステム上にすでに存在するものと 同じ名前のファイルがあり、アーカイブ内のファイルの方が新しい場合に、 アーカイブ内のファイルが展開されます。 .Em 書き込み処理 においては、ファイルシステム上のファイルとアーカイブ内のファイルの名前が 同じもので、かつファイルシステム上のファイルの方がアーカイブ内のものより も新しい場合に、ファイルシステム上のファイルのアーカイブへの格納が行われます。 .Em コピー処理 においては、コピー先にあるファイルとコピー元にあるファイルが同一のファイル名 を持ち、かつコピー元にあるファイルの方が新しい場合に、 コピーあるいはリンクが行われます。 .It Fl v .Em 一覧表示処理 において、 .Xr ls 1 コマンドの .Fl l オプションを用いた時の表示と同じ形式を用いて、アーカイブ内容の表示を行います。 アーカイブの他のメンバとの間にハードリンクを構成するファイルのパス名に ついては、以下のフォーマットで出力されます。 .Dl == アーカイブの他のメンバとの間にシンボリックリンクを構成するファイルの パス名については、以下のフォーマットで出力されます。 .Dl => ここで の箇所は、 .Xr ls 1 コマンドを .Fl l オプションを付けて実行した場合の出力形式になります。 他のオプショナルモード (読み込みモード、書き込みモード、そしてコピーモード) の場合には、当該ファイルもしくはアーカイブ内のファイルの処理が始まるとすぐに、 それらのパス名が末尾の .Dv 改行文字 なしで .Dv 標準エラー出力 に書き込まれ、フラッシュされます。 ファイル名に付随する .Dv 改行文字 はバッファリングされることなく、ファイルが読み込まれたもしくは書き込まれた 直後に書き出されます。 .It Fl x Ar format 出力されるアーカイブフォーマットを指定します。デフォルトフォーマットは、 .Ar ustar フォーマットです。 .Nm pax は、現在以下のアーカイブフォーマットをサポートします: .Bl -tag -width "sv4cpio" .It Ar cpio .St -p1003.2 -standard にて規定される、拡張 cpio インタチェンジフォーマットです。 +標準にて規定される、拡張 cpio 交換形式です。 本フォーマットのデフォルトブロックサイズは、5120 バイトです。 このフォーマットで欠落するファイルの inode およびデバイス情報 (この フォーマットでファイルのハードリンクの検出に用いられます) は、 .Nm pax にて検出され、復元されます。 .It Ar bcpio 古い binary cpio フォーマットです。 本フォーマットのデフォルトのブロックサイズは、5120 バイトです。 本フォーマットはポータビリティがそれほどよくないので、別のフォーマットが 使えるならば、そちらを使用したほうがよいでしょう。 このフォーマットで欠落するファイルの inode およびデバイス情報 (この フォーマットでファイルのハードリンクの検出に用いられます) は、 .Nm pax にて検出され、復元されます。 .It Ar sv4cpio Unix System V Release 4(SVR4) の cpio フォーマットです。 本フォーマットのデフォルトのブロックサイズは 5120 バイトです。 このフォーマットで欠落するファイルの inode およびデバイス情報 (この フォーマットでファイルのハードリンクの検出に用いられます) は、 .Nm pax にて検出され、復元されます。 .It Ar sv4crc SVR4 で使用される、ファイルの crc チェックサムつきの cpio フォーマットです。 本フォーマットのデフォルトのブロックサイズは 5120 バイトです。 このフォーマットで欠落するファイルの inode およびデバイス情報 (この フォーマットでファイルのハードリンクの検出に用いられます) は、 .Nm pax にて検出され、復元されます。 .It Ar tar BSD4.3 から用いられている古い BSD tar フォーマットです。 本フォーマットのデフォルトのブロックサイズは、10240 バイトです。 本フォーマットでは、アーカイブ内に格納されるファイルのパス名は 100 文字以内 でなくてはなりません。 .Em 通常ファイル、ハードリンクファイル、 .Em シンボリックリンクファイル、ディレクトリ のみがアーカイブ内に格納されます (他のファイルシステムタイプについては、 サポートされません)。 さらに古い tar フォーマットとの過去の互換性は、 .Fl o オプションを用いて、アーカイブへのファイル保存時に ディレクトリを無視することで実現されます。 本オプションは、以下のように指定します: .Dl Fl o Cm write_opt=nodir .It Ar ustar .St -p1003.2 -standardにて規定される、 -拡張 tar インタチェンジフォーマットです。 +標準にて規定される、 +拡張 tar 交換形式です。 本フォーマットのデフォルトのブロックサイズは、10240 バイトです。 本フォーマットのアーカイブ内に保存されるファイルのパス名は、250 文字以下 の長さでなくてはなりません。 .El .Pp .Nm pax は、指定したアーカイブフォーマットの制限に起因して、ファイルの アーカイブへの格納もしくはアーカイブからのファイルの展開が出来ない場合には、 それを検出し、報告します。 各アーカイブフォーマットを使用した場合には、 使用時に更にそのアーカイブフォーマットの制限が課せられることがあります。 典型的なアーカイブフォーマットの制限は、ファイルのパス名の長さ、 ファイルサイズ、リンクファイルの指すファイルのパス名の長さ、 そしてファイルタイプなど。 (なお、制限要素はこれらに限られるわけではありません。) .It Fl B Ar bytes 単一のアーカイブボリュームに書き出される最大データ長を、 .Ar bytes で制限します。 .Ar bytes パラメータの末尾には .Li m , .Li k , .Li b のいずれかの文字を付加でき、それぞれ 1048576 (1M), 1024 (1K), 512 の倍数を 意味します。 また、 .Ar bytes に指定する数字を .Li x で区切ることで、文字 x で区切られた数字の積がブロックサイズとして採用されます。 .Pp .Em 警告 : 最後の (もしくは最大の) 書き込み時のオフセットに基づいた EOF をサポートする デバイス (テープや通常ファイルなどのようなもの) にアーカイブを書き出す時 にのみ本オプションを使って下さい。 本オプションをフロッピーやハードディスクデバイスファイルに対して用いる ことは、推奨しません。 .It Fl D 本オプションは、 .Fl u オプションと同様の動作を行いますが、ファイルの更新時間の代わりに ファイルの inode 変更時間がチェックされるところが異なります。 ファイルの inode 変更時間は、inode 情報 (ユーザ ID、グループ ID、その他) が コピー先のディレクトリ .Ar directory にあるものよりも新しいファイルを選択するのに用いられます。 .It Fl E Ar limit 部分的に破損したアーカイブの読み込みをリトライする際、その読み込み失敗回数を .Ar limit までに制限します。 .Ar limit に正の数を指定した場合、 .Nm pax はアーカイブの読み込みエラーからの復帰を試行し、アーカイブに格納されて いる次のファイルから処理を継続します。 .Ar limit が 0 の場合、 .Nm pax は最初のリードエラーがアーカイブボリュームに発生したところで処理を停止します。 .Ar limit が .Li NONE の場合には、読み込み失敗からの復帰を永遠に試行します。 デフォルトの .Ar limit の値は、小さい正の整数(リトライ回数)です。 .Pp .Em 警告 : .Nm pax コマンドを、本オプションを .Li NONE 指定して起動する場合には十分に気をつけて下さい。 というのも、処理対象となるアーカイブがぼろぼろに破損していた場合には、 処理が無限ループに陥る可能性があるからです。 .It Fl G Ar group グループ名が .Ar group で指定したものであるファイルを選択します。 グループ名が .Cm # で始まる場合には、ファイルのグループ ID がそれに連なる数字のものを 選択します。'\\' を用いて .Cm # をエスケープすることができます。 .Fl G オプションは、複数指定することが可能です。 この場合、最初にグループ名もしくはグループIDが一致したらところで チェックは停止します。 .It Fl H 物理的にファイルシステムトラバースを行いながら、 コマンドラインで指定されたファイルについてのみ シンボリックリンクをたどります。 .It Fl L 全てのシンボリックリンクファイルをたどります。 すなわち、論理的にファイルシステムトラバースを行います。 .It Fl P シンボリックリンクをたどりません。 すなわち、物理的にファイルシステムトラバースを行います。 デフォルトはこのモードです。 .It Fl T Ar [from_date][,to_date][/[c][m]] ファイル更新時間もしくは inode 更新時間が .Ar from_date から .Ar to_date の間 (それぞれで指定した時間も含みます) にあるファイルを選択します。 .Ar from_date のみ指定された場合には、ファイル更新時間もしくは inode 更新時間が その時間と同じかそれより新しいもののみ選択されます。 .Ar to_date のみ指定された場合には、ファイル更新時間もしくは inode 更新時間が その時間と同じかそれより古いもののみ選択されます。 .Ar from_date と .Ar to_date が等しい場合には、ファイル更新時間もしくは inode 更新時間が その時間と等しいものが選択されます。 .Pp .Nm pax が .Em 書き込みモード もしくは .Em コピーモード の場合には、オプションフィールドとして .Ar [c][m] を指定することが可能です。このフィールドは、時間の比較に inode更新時間と ファイル更新時間のどちら(あるいは両方)を使うかを決定します。 どちらも指定されない場合(デフォルト時)には、ファイル更新時間のみが用いられます。 .Ar m は、ファイル更新時間 (ファイルへの書き込みが最後に行われた時間) を 比較対象として用います。 .Ar c は、inode 更新時間 (inode が最後に更新された時間。例えば所有者、 グループ、モードその他が更新された時間) を比較対象として用います。 .Ar c と .Ar m の両者が指定された場合、ファイル更新時間と inode 更新時間の両者が比較対象 になります。 inode 更新時間の比較は、最近属性が変更されたファイルや 最近作成されたファイル、そしてファイル更新時間が古いものに再設定された ファイル (ファイル更新時間を保存するオプションを用いてアーカイブから 展開されたファイルなどがこれにあたります) を選択するのに便利です。 ファイル時間も併用して時間比較をする機能は、 .Nm pax を用いて、 時間を基準にしたインクリメンタルアーカイブ (指定した期間内に更新された ファイルのみアーカイブすること) を行うのに便利です。 .Pp 時間の範囲は、6 つの異なるフィールドから成り、各フィールドは 2 ケタの数字を 含む必要があります。 その形式は以下の通りです: .Dl [yy[mm[dd[hh]]]]mm[.ss] .Cm yy は、年号 (西暦) の最後の 2 桁です。 最初の .Cm mm は、月 (01 から 12) です。 .Cm dd は、日付 (01 から 31 まで) です .Cm hh は、時 (00 から 23 まで) です。 2 番めの .Cm mm は、分 (00 から 59 まで)です。 そして、 .Cm ss は、秒 (00 から 59 まで)です。 分のフィールドの .Cm mm は、省略不可であり、他のフィールドはオプションであり、以下の順序で 付加されなければなりません: .Dl Cm hh , dd , mm , yy ただし、 .Cm ss フィールドだけは、他のフィールドとは独立して付加可能です。 時間の範囲は、現在時刻からの相対値で表され、 .Dl Fl T Ar 1234/cm は、本日の 12:34 PM から後のファイル更新時間、もしくは inode 更新時間を持つ ファイルを選択することを表します。 複数の .Fl T による時間範囲指定を行うことが許可されており、 指定した範囲のうちいずれかと一致したら、その後の範囲チェックは行いません。 .It Fl U Ar user ファイルの所有者名 .Ar user に基づいて、ファイル選択が行われます。所有者名が .Cm # で始まる場合には、ファイルの UID がそれに連なる数字のものを 選択します。'\\' を用いて .Cm # をエスケープすることができます。 複数の .Fl U オプションを指定することが許されており、その指定の中で最初にユーザが 一致した場合には、それ以降のユーザ名のチェックは行いません。 .It Fl X パス名で指定されたファイル階層をトラバースする場合に、異なるデバイス ID を 持つディレクトリへは下りていきません。 デバイス ID について詳細な情報を取得したい場合には、 .Xr stat 2 の .Li st_dev フィールドを参照して下さい。 .It Fl Y 本オプションは、 .Fl D オプションと動作が似ていますが、全てのファイル名更新が終了した後、 生成されたパス名を用いて inode 更新時間をチェックするところが異なります。 .It Fl Z 本オプションは、 .Fl u オプションと動作が似ていますが、全てのファイル名更新が終了した後、 生成されたパス名を用いて、ファイル更新時間をチェックするところが異なります。 .El .Pp ファイルもしくはアーカイブ内に格納されたファイルについての操作を制御する オプション ( .Fl c , .Fl i , .Fl n , .Fl s , .Fl u , .Fl v , .Fl D , .Fl G , .Fl T , .Fl U , .Fl Y , .Fl Z ) は、相互に以下のような影響を及ぼします。 .Pp .Em 読み込み 処理におけるファイル展開時には、 展開されるファイルは、まず、アーカイブ内に格納されるファイルのうち .Fl c , .Fl n , .Fl u , .Fl D , .Fl G , .Fl T , .Fl U のそれぞれのオプションを用いて指定されるユーザ指定のパターンオペランド に基づいて選択されます。 それらのファイルの中から .Fl s および .Fl i オプションがこの順に、選択されたファイル名を修正します。 それから、最終的なファイル名にて .Fl Y および .Fl Z オプションによる条件を用いて絞り込みを行い、処理するファイルのパス名が 決まります。 そして最後に、 .Fl v オプションは、これまでの処理結果として得られた名前をファイル名として 書き出します。 .Pp .Em 書き込み 操作や .Em コピー 操作のファイルアーカイブでは、以下のオプション .Fl n , .Fl u , .Fl D , .Fl G , .Fl T , .Fl U ( .Fl D オプションはコピー操作時のみ適用されます) によって アーカイブメンバのファイルを選択します。 続いて、それらのファイルの中から .Fl s および .Fl i オプションがこの順に、選択されたファイル名を修正します。 それから .Em コピー 処理においては、最終的なファイル名にて .Fl Y および .Fl Z オプションによる条件を用いて絞り込みを行い、処理するファイルのパス名が 決まります。 そして最後に、 .Fl v オプションは、これまでの処理結果として得られた名前をファイル名として 書き出します。 .Pp .Fl n といっしょに .Fl u オプションあるいは .Fl D オプションのどちらか、もしくは両方が指定された場合、そのファイルが 比較対象のファイルより新しくなければ、そのファイルは選択されたとは みなされません。 .Sh 使用例 コマンド: .Dl pax -w -f /dev/rst0 .\ は、カレントディレクトリの内容を .Pa /dev/rst0 にコピーします。 .Pp コマンド: .Dl pax -v -f filename は、 .Pa filename で指定したアーカイブに格納されているファイル内容の詳細な一覧を表示します。 .Pp 以下のコマンド: .Dl mkdir newdir .Dl cd olddir .Dl pax -rw .\ newdir を実行すると、 .Pa olddir 配下のディレクトリ階層全体を .Pa newdir にコピーします。 .Pp コマンド: .Dl pax -r -s ',^//*usr//*,,' -f a.pax は、アーカイブファイル .Pa a.pax からデータを読み込み、アーカイブ中の ``/usr'' 配下のファイルを全て、 カレントディレクトリからの相対ディレクトリに展開します。 .Pp コマンド: .Dl pax -rw -i .\ dest_dir は、カレントディレクトリから .Pa dest_dir ディレクトリにコピーしますが、ファイルをコピーするかどうかを 対話的に選択します。 .Pp コマンド: .Dl pax -r -pe -U root -G bin -f a.pax は、 .Pa a.pax 中に格納されているファイルのうち、所有者が .Em root でグループが .Em bin であるファイルを選択し、すべてのファイル属性を保存して展開します。 .Pp コマンド: .Dl pax -r -w -v -Y -Z home /backup は、コピー先ディレクトリ .Pa /backup にあるファイルのうち、コピー元ディレクトリ .Pa home に存在する同名のファイルより (inode 更新時刻もしくは ファイル更新時刻が) 古いものについて更新を行い、一覧表示します。 .Sh 規格 .Nm pax ユーティリティは、 .St -p1003.2 標準のスーパセットです。 オプション .Fl B , .Fl D , .Fl E , .Fl G , .Fl H , .Fl L , .Fl P , .Fl T , .Fl U , .Fl Y , .Fl Z 、アーカイブ形式 .Ar bcpio , .Ar sv4cpio , .Ar sv4crc , .Ar tar 、および .Ar 一覧表示 モードと .Ar 読み込み モードにおける破損したアーカイブの取り扱いは、 .Tn POSIX 標準に対する拡張です。 .Sh 作者 Keith Muller at the University of California, San Diego .Sh エラー .Nm pax は、以下の値のいずれかで終了します: .Bl -tag -width 2n .It 0 すべてのファイルは正常に処理されました。 .It 1 エラーが発生しました。 .El .Pp アーカイブ読み込み中に .Nm pax がファイルを作成できない場合やリンクを張れない場合、 アーカイブに書き込み中にファイルが見つからない場合、 .Fl p オプション指定時にユーザ ID、グループ ID、ファイル属性を保存できない場合には、 診断メッセージが .Dv 標準エラー出力に 書き出され、0 以外の終了ステータスが返却されますが、 処理自体は継続して行われます。 ファイルへのリンクを作成できない場合には、 .Nm pax はファイルの二次コピーを作成しません。 .Pp アーカイブからのファイルの展開が、シグナル受信もしくはエラー発生により 途中で異常終了した場合、 .Nm pax はユーザが指定したファイルの一部分だけを展開して終了する可能性があります。 更に、展開したファイルやディレクトリの属性が不正であったり、 アクセス時間、更新時間も不正である可能性があります。 .Pp アーカイブの生成が、シグナル受信もしくはエラー発生により 途中で異常終了した場合、 .Nm pax は中途半端なアーカイブを生成している可能性があります。 このようなアーカイブは 特定のアーカイブフォーマット規定を満足していない可能性があります。 .Pp .Em コピー を行っている最中に、 .Nm pax が読み出したのと同じファイルへの書き込みを検出した場合、 そのファイルはコピーされず、診断メッセージが .Dv 標準エラー出力 へ書き出され、 .Nm pax は 0 以外の終了ステータスでプログラム終了します。 diff --git a/ja_JP.eucJP/man/man1/perl.1 b/ja_JP.eucJP/man/man1/perl.1 index 60dcfca0fa..845f6985ec 100644 --- a/ja_JP.eucJP/man/man1/perl.1 +++ b/ja_JP.eucJP/man/man1/perl.1 @@ -1,5933 +1,5933 @@ .rn '' }` .\" jpman %Id: perl.1,v 1.5 1997/10/11 07:57:22 horikawa Stab % ''' %RCSfile: perl.1,v %%Revision: 1.3.2.1 %%Date: 1997/10/12 08:11:42 % ''' ''' %Log: perl.1,v % ''' Revision 1.3.2.1 1997/10/12 08:11:42 jmg ''' MFC: spelling fixes ''' ''' Revision 1.4 1997/08/30 12:22:46 jmg ''' fix a few spelling changes ''' ''' Submitted by: Josh Gilliam ''' ''' Closes PR's: 4429, 4431-4438 ''' ''' PS: He has agreed to submit all contrib fixes back to the original author. ''' ''' Revision 1.3 1996/10/05 22:26:23 wosch ''' delete doubled words, e.g.: "the the" -> "the" ''' ''' Revision 1.2 1994/10/27 23:16:52 wollman ''' Convince Perl to that is is part of the system, as /usr/bin/perl (binary) ''' and /usr/share/perl (library). The latter was chosen as analogous to other ''' directories already present in /usr/share, like /usr/share/groff_font and ''' (particularly) /usr/share/mk. ''' .\" Revision 1.1.1.1 1994/09/10 06:27:36 gclarkii .\" Initial import of Perl 4.046 bmaked .\" .\" Revision 1.1.1.1 1993/08/23 21:29:37 nate .\" PERL! .\" ''' Revision 4.0.1.6 92/06/08 15:07:29 lwall ''' patch20: documented that numbers may contain underline ''' patch20: clarified that DATA may only be read from main script ''' patch20: relaxed requirement for semicolon at the end of a block ''' patch20: added ... as variant on .. ''' patch20: documented need for 1; at the end of a required file ''' patch20: extended bracket-style quotes to two-arg operators: s()() and tr()() ''' patch20: paragraph mode now skips extra newlines automatically ''' patch20: documented PERLLIB and PERLDB ''' patch20: documented limit on size of regexp ''' ''' Revision 4.0.1.5 91/11/11 16:42:00 lwall ''' patch19: added little-endian pack/unpack options ''' ''' Revision 4.0.1.4 91/11/05 18:11:05 lwall ''' patch11: added sort {} LIST ''' patch11: added eval {} ''' patch11: documented meaning of scalar(%foo) ''' patch11: sprintf() now supports any length of s field ''' ''' Revision 4.0.1.3 91/06/10 01:26:02 lwall ''' patch10: documented some newer features in addenda ''' ''' Revision 4.0.1.2 91/06/07 11:41:23 lwall ''' patch4: added global modifier for pattern matches ''' patch4: default top-of-form format is now FILEHANDLE_TOP ''' patch4: added $^P variable to control calling of perldb routines ''' patch4: added $^F variable to specify maximum system fd, default 2 ''' patch4: changed old $^P to $^X ''' ''' Revision 4.0.1.1 91/04/11 17:50:44 lwall ''' patch1: fixed some typos ''' ''' Revision 4.0 91/03/20 01:38:08 lwall ''' 4.0 baseline. ''' ''' .de Sh .br .ne 5 .PP \fB\\$1\fR .PP .. .de Sp .if t .sp .5v .if n .sp .. .de Ip .br .ie \\n(.$>=3 .ne \\$3 .el .ne 3 .IP "\\$1" \\$2 .. ''' ''' Set up \*(-- to give an unbreakable dash; ''' string Tr holds user defined translation string. ''' Bell System Logo is used as a dummy character. ''' .tr \(*W-|\(bv\*(Tr .ie n \{\ .ds -- \(*W- .if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch .if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch .ds L" "" .ds R" "" .ds L' ' .ds R' ' 'br\} .el\{\ .ds -- \(em\| .tr \*(Tr .ds L" `` .ds R" '' .ds L' ` .ds R' ' 'br\} .TH PERL 1 "\*(RP" .UC .SH 名称 perl \- 実用的抽出とレポートのための言語 .SH 書式 .B perl [options] filename args .SH 解説 .I perl は、任意のテキストファイルを走査し、そこから情報を取り出し、情報に基づ いたレポートを出力するために最適化されたインタプリタ言語です。 また、多くのシステム管理作業に適した言語でもあります。 .I perl は美しい (小さい、エレガント、最小) というよりは、むしろ実用的 (使いやすい、効率的、完全) であることをめざしています。 .I perl は、C, \fIsed\fR, \fIawk\fR, and \fIsh\fR, の最も良いところを 組み合わせてある (作者の意向としては、でありますが) ので、これらの言語に なじみのある人には、容易に使えるでしょう。 (言語歴史学者なら、\fIcsh\fR, Pascal, そして BASIC-PLUS の痕跡にさえも 気がつくでしょう。) 式の書式は、C のものに極めて似ています。 他の多くの UNIX ユーティリティと異なり、 .I perl は、データのサイズを勝手に制限するようなことはなく (メモリのある限りです)、 ファイル全体を一つの文字列として読み込んでしまえます。 再帰の深さには制限がありません。連想配列で使われるハッシュテーブルは、 パフォーマンスの低下を防ぐため、必要に応じて大きくなります。 .I perl は、大量のデータを非常に迅速に走査する洗練されたパターンマッチ テクニックを使います。 テキスト走査に最適化されてはいますが、 .I perl はバイナリデータも扱うこともできて、(dbm が使えるなら) 連想配列に似た dbm ファイルを作れます。 setuid .I perl スクリプトは、多くの馬鹿らしいセキュリティホールを防ぐデータフロー追跡 機構により、C のプログラムより安全です。 普通なら \fIsed\fR, \fIawk\fR, \fIsh\fR を使うような問題で、その能力を 越えていたり、もう少し速く走らせなければならなかったり、 くだらないことを C で書きたくないような場合に .I perl がぴったりです。 既存の .I sed や .I awk スクリプトを .I perl スクリプトにする変換プログラムもあります。 さあ、宣伝はこれで十分でしょう。 .PP まず始めに、 .I perl 次の場所からスクリプトを探します。 .Ip 1. 4 2 コマンドライン上の .B \-e スイッチで指定された行。 .Ip 2. 4 2 コマンドライン上で、最初に指定されたファイルの内容。 (#! の表記をサポートするシステムは、インタプリタをこうして起動します) .Ip 3. 4 2 標準入力から暗黙のうちに読み込まれます。これは、ファイル名の指定が一つ もない場合にだけ働きます。\*(-- .I 標準入力 スクリプトに引数を渡すには、スクリプト名として明示的に \- を 指定しなければなりません。 .PP スクリプトを見つけると、 .I perl は内部形式にコンパイルし、スクリプトが文法的に正しければ それを実行します。 .Sh "オプション" 注意: 最初にこのセクションを読んでも意味がわからないかもしれません。 簡単なリファレンスとして前半部分になっています。 .PP 一文字オプションは、次に続くオプションとくっつけてもかまいません。 #! 構造を使うスクリプトを起動する際には一つの引数しか許されないの で、特に便利です。 例: .nf .ne 2 #!/usr/bin/perl \-spi.bak # \-s \-p \-i.bak と同じ .\|.\|. .fi 以下のオプションがあります: .TP 5 .BI \-0 数字 レコードセパレータ ($/) を 8 進数で指定します。 数字がないと、ヌルキャラクタがセパレータになります。 他のコマンドラインスイッチは、前に置くか、もしくは数字の後に続けます。 例えば、ヌル文字を終端としたファイル名を表示可能なバージョンの .I find なら、このように書けます。 .nf find . \-name '*.bak' \-print0 | perl \-n0e unlink .fi 00 は特殊な値で、 .I perl はファイルをパラグラフモードで読み込みます。 0777 という値を使うと、この値の文字はないので、ファイル全体を 読み込みます。 .TP 5 .B \-a .B \-n や .BR \-p オプションと一緒に用いて、オートスプリットモードを ON にします。 .B \-n や .BR \-p オプションで自動的に生成される while ループの内側の 最初のところで、@F 配列に対して暗黙の split コマンドが行なわれます。 .nf perl \-ane \'print pop(@F), "\en";\' は、次の例と同等になります。 while (<>) { @F = split(\' \'); print pop(@F), "\en"; } .fi .TP 5 .B \-c .I perl スクリプトの文法をチェックし、実行せずに終了します。 .TP 5 .BI \-d perl デバッガのもとでスクリプトを実行します。 デバッグのセクションを参照して下さい。 .TP 5 .BI \-D 数字 デバッグフラッグをセットします。 スクリプトがどのように実行されるかを見るには、 .BR \-D14 を使います。 (これはデバッグ機能を .IR perl に組み込んでコンパイルした時にのみ動作します。) \-D1024 も有用な値で、コンパイルされた文法ツリーをリストします。 \-D512 を使うと、コンパイルされた正規表現を出力します。 .TP 5 .BI \-e " コマンドライン" 一行スクリプトを入力する場合に使えます。 複数行スクリプトを組み立てるには、複数の .B \-e コマンドを指定すればできます。 .B \-e が与えられると、 .I perl は引数のリストの中からスクリプトファイル名を探しません。 .TP 5 .BI \-i 拡張子 <> 構造で処理されるファイルをその場で修正することを指定します。 入力ファイルをリネームし、出力ファイルを元の名前でオープンし、出力ファイルを print 文のデフォルト出力にすることで処理されます。 拡張子が与えられれば、バックアップファイルの名前として元のファイル名に その拡張子を加えたものが使われます。 拡張子が与えられなければ、バックアップファイルは作成されません。 \*(L"perl \-p \-i.bak \-e "s/foo/bar/;" .\|.\|. \*(R" を実行することは、 次のスクリプトと同じです。 .nf .ne 2 #!/usr/bin/perl \-pi.bak s/foo/bar/; これは以下のものとも同等になります。 .ne 14 #!/usr/bin/perl while (<>) { if ($ARGV ne $oldargv) { rename($ARGV, $ARGV . \'.bak\'); open(ARGVOUT, ">$ARGV"); select(ARGVOUT); $oldargv = $ARGV; } s/foo/bar/; } continue { print; # 元の名前のファイルに出力する } select(STDOUT); .fi ただし、 .B \-i を用いた方法では、ファイル名が変更された時刻を知るために $ARGV と $oldargv を 比較する必要がないという点が異なります。 実際にはファイルハンドルとして ARGVOUT がセレクトされて使われます。 .I STDOUT がデフォルト出力のファイルハンドルとして保存され、 ループのあとで戻されることに注意して下さい。 .Sp 入力ファイルすべてに追加を行なう場合や、行番号をリセットしたりする場合、 各入力ファイルの終わりを知るために `eof' を使うことができます。 (eof の例を参照して下さい) .TP 5 .BI \-I ディレクトリ .B \-P と一緒に用いて C プリプロセッサにインクルードファイルの位置を 知らせます。デフォルトでは、/usr/include と /usr/lib/perl を検索します。 .TP 5 .BI \-l 8進数 行末処理を自動的に行ないます。これには二つの効果があります。 まず、 .B \-n や .B \-p と共に使われることで、行ターミネータを自動的に除きます。 二つ目は、$\e が、 .I 8進数 をセットし、print 文がすべて最後に行末文字をつけるということです。 .I 8進数 が省略された場合は、$\e に $/ の現在の値をセットします。 例えば、行を 80 コラムに切り揃えるためには: .nf perl -lpe \'substr($_, 80) = ""\' .fi $\e = $/ という代入はコマンドラインスイッチが処理される時に 行なわれるので、 .B \-l スイッチに .B \-0 が続くときは、入力レコードセパレータと出力レコードセパレータが 異なることもあり得るということに注意して下さい。 .nf gnufind / -print0 | perl -ln0e 'print "found $_" if -p' .fi これは、$\e に改行をセットし、$/ にはヌル文字をセットします。 .TP 5 .B \-n スクリプトの前後に下に示すループがあるものとして .I perl を起動します。こうすると、引数のファイル全部について \*(L"sed \-n\*(R" または \fIawk\fR と同じような繰り返しが行なわれます: .nf .ne 3 while (<>) { .\|.\|. # ここにスクリプトが来ます } .fi デフォルトで入力行の出力はされないことに注意して下さい。 出力したければ .B \-p を参照して下さい。 以下は、1 週間より古いファイルすべてを削除する効率的な方法です。 .nf find . \-mtime +7 \-print | perl \-nle \'unlink;\' .fi この場合、ファイルが見つかるたびにプロセスを開始する必要がないので、 find の \-exec スイッチを使うより速くなります。 .TP 5 .B \-p スクリプトの前後に下に示すループがあるものとして .I perl を起動します。こうすると、引数のファイル全部について \fIsed\fR と同じような繰り返しが行なわれます: .nf .ne 5 while (<>) { .\|.\|. # ここにスクリプトが来ます } continue { print; } .fi 入力行は自動的に出力されることに注意して下さい。 出力を抑制したければ、 .B \-n スイッチを使って下さい。 .B \-p は、 .B \-n スイッチに優先します。 .TP 5 .B \-P .IR perl によるコンパイルの前に C プリプロセッサを通します。 (perl のコメントも cpp の命令も # の文字で始まるので、 コメントを C プリプロセッサが理解する単語、例えば \*(L"if\*(R" や \*(L"else\*(R" や \*(L"define\*(R" で始めてはなりません。) .TP 5 .B \-s コマンドライン上で、スクリプト名とファイル名の引数 (または \-\|\-) の間にある各スイッチについて基本的な解析を行ないます。 スイッチが見つかると、@ARGV から除かれ、対応する変数を .I perl スクリプト内でセットします。 以下のスクリプトでは、\-xyz スイッチをつけてスクリプトを起動したとき だけ、\*(L"true\*(R" を出力します。 .nf .ne 2 #!/usr/bin/perl \-s if ($xyz) { print "true\en"; } .fi .TP 5 .B \-S スクリプトを探すのに、環境変数 PATH を用います (スクリプト名が / で始まらないかぎり) 。 通常は、#! をサポートしないマシンにおいて #! を エミュレートするために用いられます。 次のような使い方です: .nf #!/usr/bin/perl eval "exec /usr/bin/perl \-S $0 $*" if $running_under_some_shell; .fi システムは 1 行目を無視し、スクリプトを /bin/sh に渡します。 /bin/sh は .I perl スクリプトをシェルスクリプトとして実行しようとします。シェルは 2 行目 を通常のシェルコマンドとして実行し、perl インタプリタを起動する ことになります。 システムによっては $0 は必ずしもフルパス名にならないので、 .B \-S を用いて .I perl に必要ならばスクリプトを探すように指示します。 .I perl がスクリプトを見つけたあと、解析を行ないますが、変数 $running_under_some_shell が真になることはないので、2 行目を無視します。 ファイル名などに含まれるスペースを正しく扱うには、$* よりも ${1+"$@"} の方がよいでしょうが、csh が解釈する場合には動作しません。 csh ではなく sh で起動するには、あるシステムでは #! 行を、perl で 無視されるコロンのみに書き換える必要があるかもしれません。その他の システムではこの方法は使えず、次のように、csh, sh, perl のどの下で も動作するような、とてもまわりくどい方法をとる必要があります: .nf .ne 3 eval '(exit $?0)' && eval 'exec /usr/bin/perl -S $0 ${1+"$@"}' & eval 'exec /usr/bin/perl -S $0 $argv:q' if 0; .fi .TP 5 .B \-u スクリプトのコンパイルの後、 .I perl はコアダンプします。 このコアダンプから、`undump' プログラム(提供していません)を用いて 実行可能ファイルに変換できます。 こうすると、ディスク消費が増えるかわりに (実行ファイルを strip すれば 最小にできます)、スタートアップが速くなります。 (しかし、私のマシンでは "hello world" の実行形式が約 200K の大きさ になります。) 実行形式を set-id プログラムとして走らせるのなら、通常の perl ではなく 多分 taintperl を用いてコンパイルすべきです。 ダンプする前に実行したいスクリプトがある場合は、代わりに dump 演算子を 使って下さい。 注意 : undump が使えるかどうかはプラットフォームに依存するので、perl の 移植によっては利用できないものもあるかもしれません。 .TP 5 .B \-U 安全でない操作を可能にします。 現在の所、\*(L"安全でない\*(R" 操作とは、スーパユーザ権限での 実行時にディレクトリを unlink すること、および汚れチェックで 警告が出るような setuid プログラムを走らせることだけです。 .TP 5 .B \-v .I perl のバージョンとパッチレベルを出力します。 .TP 5 .B \-w 一度だけ出てくる識別子、セットする前に使用されるスカラ変数に対して、 警告を出します。 サブルーチンが再定義されたとき、定義されていないファイルハンドルの参照 があるとき、リードオンリーでオープンしたファイルハンドルへ書き込もうと したときにも警告を出します。数値ではなさそうな値に == を使ったときや、 サブルーチンが 100 回以上再帰したときにも警告を出します。 .TP 5 .BI \-x ディレクトリ スクリプトがメッセージに埋め込まれていることを .I perl に知らせます。#! で始まり、"perl" という文字列を含む最初の行が現れる までは、ゴミとして無視されます。 その行に指定した意味のあるスイッチはすべて適用されます (ただし通常の #! 処理と同じく、スイッチのかたまり一つだけです)。 ディレクトリ名を指定すると、perl はスクリプトを実行する前にその ディレクトリに移ります。 .B \-x スイッチは、先頭のゴミを捨てるだけです。 スクリプトの後にゴミがある場合は、スクリプトは _\|_END_\|_ で終わらせなければなりません (望むなら、スクリプトで後ろのゴミの一部 または全部をファイルハンドル DATA 経由で処理することが可能です) 。 .Sh "データの型とオブジェクト" .PP .I perl には 3 種類のデータ型が有ります: スカラ、スカラ配列、 および連想配列です。 通常の配列は添え字が数字ですが、連想配列の場合は文字列です。 .PP perl における演算や値の解釈は、演算や値のコンテキスト(文脈)からの要求 にしばしば依存します。 主なコンテキストは三つ: すなわち文字列、数値、配列です。 演算の中には、配列を要求するコンテキストでは配列を、そうでなければ スカラ値を返すものもあります。 (そのような演算子についてはドキュメント内のその演算子のところに 記載されています。) スカラ値を返す演算子は、コンテキストが文字列あるいは 数値のどちらを要求しているかは考慮しませんが、スカラ変数および スカラ値は文字列あるいは数値のコンテキストの適切な方に解釈されます。 スカラはそれがヌル文字列あるいは 0 でなければ論理的に真であると 解釈されます。 演算子が返す論理値は、真の場合は 1、偽の場合は 0 または \'\' (ヌル文字列)です。 .PP 実際には、ヌル文字には二種類あります。define と undefined です。 undefined のヌル文字列は、エラー、ファイル終端、初期化されていない変数や 配列要素を参照しようとしたときなど、実際の値が存在しない場合に返ります。 undefined のヌル文字列は、最初にそれにアクセスしたときに defined となる ことがありますが、その前に defined() 演算子を用いて値が defined かどう かを知ることができます。 .PP スカラ変数への参照は、それが配列の一部であっても、常に \*(L'$\*(R' で始めます。 つまりこうです: .nf .ne 3 $days \h'|2i'# 単純なスカラ変数 $days[28] \h'|2i'# 配列 @days の 29 番目の要素 $days{\'Feb\'}\h'|2i'# 連想配列の値の一つ $#days \h'|2i'# 配列 @days の最後の添え字 しかし、配列全部や一部の取り出しは \*(L'@\*(R' で始めます: @days \h'|2i'# ($days[0], $days[1],\|.\|.\|. $days[n]) @days[3,4,5]\h'|2i'# @days[3.\|.5] と同じ @days{'a','c'}\h'|2i'# ($days{'a'},$days{'c'}) と同じ そして、連想配列全部を扱うには \*(L'%\*(R' で始めます: %days \h'|2i'# (key1, val1, key2, val2 .\|.\|.) .fi .PP これら 8 つはすべて左辺値として扱うことができます。すなわち、代入可能 ということです。 (さらに、あるコンテキストでは代入操作自体も左辺値となり得ます。 \*(-- s, tr, chop のところの例を参照して下さい。) スカラへの代入を行なうと、右辺をスカラのコンテキストで評価するのに 対し、配列や配列の一部への代入は右辺を配列のコンテキストで評価します。 .PP 配列 @days の長さを .IR csh のように \*(L"$#days\*(R" で評価してもかまいません。 (実際には、通常 0 番目の要素があるので、配列の長さではなく、最後の要素 の添え字になります。) $#days に代入すると、配列の長さが変わります。 この方法によって配列を小さくしても、実際には値は破壊されません。 すでに小さくした配列を大きくすると、もともとあった要素が元に戻ります。 大きくなりそうな配列をあらかじめ大きくしておくと、 効率をいくらか良くすることもできます。 (配列を大きくするには、配列の最後を超える要素に代 入を行なう方法もあります。この方法と、$#whatever へ代入する方法との 違いは、間の要素にヌルがセットされることです) 配列を縮めて空にするには、ヌルリスト () を代入すればできます。 次の二つは全く同等となります。 .nf @whatever = (); $#whatever = $[ \- 1; .fi .PP 配列をスカラのコンテキストで評価すると、配列の長さが返ります。 次の式は常に真となります: .nf scalar(@whatever) == $#whatever \- $[ + 1; .fi 連想配列をスカラのコンテキストで評価すると、配列が要素を含む場合 かつその場合に限り真の値を返します。 (要素がある場合に返る値は、使用している bucket の数およびアロケートさ れている bucket の数から成る文字列で、/ で区切られます。) .PP 多次元配列は直接はサポートされていませんが、連想配列を用いて複数の 添え字をエミュレートする方法については、$; 変数の項を参照して下さい。 多次元の添え字を 1 次元の添え字に変換するサブルーチンを書くことも できます。 .PP 各々のデータ型に応じて、それぞれの名前空間があります。衝突を心配する ことなく、同じ名前をスカラ変数、配列、連想配列、ファイルハンドル、 サブルーチン名、またはラベルにつけることができます。 変数や配列への参照は常に \*(L'$\*(R', \*(L'@\*(R', \*(L'%\*(R' で始まるので、\*(L"予約\*(R" 語は変数名については実際には 使用可能です。 (しかし、ラベルやファイルハンドルについては予約語は使用できません。 特殊な文字で始まらないからです。 .br ヒント: open(log,\'logfile\') より open(LOG,\'logfile\') を使った方が 良いです。大文字のファイルハンドル名を使うと、読み易さも向上し、 将来の予約語になるものとの衝突も避けることができるからです。) 大文字小文字の区別は重要です \*(--\*(L"FOO\*(R", \*(L"Foo\*(R", \*(L"foo\*(R" はすべて異なる 名前です。アルファベットで始まる名前は数字や下線を含んでもかまいません。 アルファベットで始まらない名前は 1 文字に限られます。 例えば、\*(L"$%\*(R" や \*(L"$$\*(R" です。 (ほとんどの一文字名は .IR perl の予約変数として意味があります。 詳細は後ほど述べます。) .PP 数値文字列は通常の浮動小数点や整数の形式で指定します。 .nf .ne 6 12345 12345.67 .23E-10 0xffff # 16 進 0377 # 8 進 4_294_967_296 .fi 文字列はシングルクォートまたはダブルクォートで区切られます。 動作はシェルにおけるクォートとよく似ています。 ダブルクォートで囲まれた文字列にはバックスラッシュや変数の置換が 行なわれます。シングルクォートで囲まれた文字列には行なわれません (\e\' と \e\e を除きます)。 通常のバックスラッシュ規則が改行やタブなどの文字を表すのに使え、 更に以下のちょっと変わった形式も使えます: .nf \et タブ \en 改行 \er リターン \ef フォームフィード \eb バックスペース \ea アラーム (ベル) \ee エスケープ \e033 8進文字 \ex1b 16進文字 \ec[ コントロール文字 \el 次の文字を小文字にします \eu 次の文字を大文字にします \eL \eE までを小文字にします \eU \eE までを大文字にします \eE 大小文字の修飾の終り .fi 改行を直接文字列に書き入れることもできます。すなわち、文字列は始まった 行と異なる行で終わることができることになります。これは便利ですが、 最後にクォートを忘れると、クォートを含むかなり離れた別の行を見つけるまで .I perl はエラーを報告しないでしょう。 文字列内の変数置換はスカラ変数、通常の配列、配列の一部に限られます。 (言い換えると、$ や @ で始まる識別子と、それに括弧で囲まれた添え字が ある場合だけです。) 次のコードは \*(L"The price is $100.\*(R" を出力します。 .nf .ne 2 $Price = \'$100\';\h'|3.5i'# 解釈されません print "The price is $Price.\e\|n";\h'|3.5i'# 解釈されます .fi 後に続くアルファベットや数字と区別するために、識別子を {} で囲う ことができることを覚えておいて下さい。 また、シングルクォートは識別子として有効な文字であるため、 シングルクォートで囲まれた文字列は、前の単語とは空白で区切られて いなければならないことも覚えておきましょう (パッケージの項を参照して下さい) 。 .PP プログラムのその時点での行番号とファイル名を表す _\|_LINE_\|_ と _\|_FILE_\|_ という二つの特殊な文字があります。 これらは独立したトークンとしてのみ使用でき、文字列中に 書き入れることはできません。 さらにトークン _\|_END_\|_ は、実際のファイルが終了する前で、スクリプト の論理的な終了を示すために使えます。残りのテキストはすべて無視されますが、 ファイルハンドル DATA から読むことができます。 (ファイルハンドル DATA は、メインスクリプトからのみデータを 読み込めますが、require されたファイルや評価された文字列からは 読み込めません。) ^D と ^Z の二つのコントロールキャラクタは _\|_END_\|_ と同義になります。 .PP 文法的に解釈不可能な単語は、それがシングルクォートで囲まれている かのように扱われます。このため、アルファベット、数字、下線のみからなり、 単語はアルファベットで始まらなければなりません。 ファイルハンドルやラベルと同じく、小文字のみからなる裸の単語は、 将来の予約語と衝突する危険があります。 .B \-w スイッチを使えば、perl はそのような単語について警告してくれます。 .PP 配列値をダブルクォートで囲まれた文字列に入れた場合は、配列の全要素を $" 変数で指定される区切り (デフォルトは空白) で連結して一つにした 文字列になります。 (3.0 以前のバージョンの perl では、@ はダブルクォートで囲まれた文字列 の中のメタキャラクタではなかったので、@array, $array[EXPR], @array[LIST], $array{EXPR}, @array{LIST} の文字列への挿入は、 配列がプログラムのどこかで参照されている場合、もしくは予約されている 場合にのみ起こります。) 次の二つは同等になります。 .nf .ne 4 $temp = join($",@ARGV); system "echo $temp"; system "echo @ARGV"; .fi 検索パターン (これにもダブルクォートと同じ置換が行なわれます) に おいては、あいまいな場合があります。 /$foo[bar]/ は /${foo}[bar]/ ([bar]は正規表現の文字クラス) でしょうか、 それとも /${foo[bar]}/ ([bar]は配列 @foo の添字) なのでしょうか 。 @foo が存在しないなら、それは明らかに文字クラスです。 @foo が存在するなら、perl は [bar]について考え、大抵の場合正しい類推を します。それが間違っていたり、あなたが単に偏執狂なら、 上記のように中括弧 {} を入れることで、正しい解釈をさせることができます。 .PP 行指向の引用法はシェルと同様の文法に基づいています。 << の後に引用文の終わりを示す文字列を指定すると、現在行からその文字列 が現れるまでの行すべてがその値になります。終わりを示す文字列は識別子 (単語) でも、クォートされたテキストでもかまいません。 クォートされているテキストの場合、通常クォートで囲む場合と同じく クォートの種類がテキストの扱い方を決めます。クォートされていない識別子 はダブルクォートされている場合と同じ動作となります。 (スペースを入れた場合、それは有効なヌル識別子として扱われ、 最初の空行にマッチします。 \*(--下の Merry Christmas の例を見て下さい。) 終わりを示す文字列はそれだけで (クォートされず、空白を前後につけずに) 書かれていなければなりません。 .nf print < に囲まれたファイルハンドルを評価すると、そのファイルから次の 行を読み込みます (改行が含まれるため EOF までは決して偽に成りません。 EOF では undefined 値が返ります) 。 通常はその値を変数に代入する必要がありますが、一つだけ 自動的に代入が起こる状況があります。入力シンボルだけが while ループの 条件文の中にある場合は(そしてこの場合にかぎり)、値は変数 \*(L"$_\*(R" に自動的に代入されます。 (奇妙に思うかもしれませんが、ほとんどの .I perl スクリプトにおいて、この構文を使うことになるでしょう。) とにかく、次の例はすべて同等となります。 .nf .ne 5 while ($_ = ) { print; } while () { print; } for (\|;\|;\|) { print; } print while $_ = ; print while ; .fi ファイルハンドル .IR STDIN , .IR STDOUT , .I STDERR は予約されています。 (ファイルハンドル .IR stdin , .IR stdout , .I stderr でも動作しますが、パッケージの中ではグローバルではなくローカルな識別子 として解釈されるので、働きません。) これ以外のファイルハンドルは、 .I open 関数で作成できます。 .PP 配列を探すコンテキストの中で が使われると、すべての入力行 の一行が一要素である配列が返ります。この方法で*巨大*なデータ空間が簡単 に作られるので、注意して使って下さい。 .PP ヌルファイルハンドル <> は特殊で、\fIsed\fR や \fIawk\fR の動作を エミュレートするために使えます。 <> からの入力には、標準入力やコマンドラインに並べられた全ファイルが 入ります。動作の仕方はこうなります。 <> の最初の評価では、ARGV 配列が チェックされ、それがヌルであると、$ARGV[0] は標準入力をオープンする \'-\' にセットされます。 次に ARGV 配列がファイル名のリストとして処理されます。 次のループは、 .nf .ne 3 while (<>) { .\|.\|. # 各行に対するコード } .ne 10 以下の疑似コードと同等になります。 unshift(@ARGV, \'\-\') \|if \|$#ARGV < $[; while ($ARGV = shift) { open(ARGV, $ARGV); while () { .\|.\|. # 各行に対するコード } } .fi 前者は、書くのが面倒でないというだけで、同じように動作します。 実際には、前者でも 配列 ARGV を shift し、現在のファイル名を変数 ARGV に代入します。 内部では、ファイルハンドル ARGV を使います \*(--<> は、魔術的な とまったく同義です。 (上の疑似コードでは、 を魔術的でないものとして扱うので、 動きません) .PP ファイル名のリストの配列が残っている限り、最初の <> の前に @ARGV を 変更することができます。 行番号 ($.) は入力が一つの大きなファイルであるかのように増えていきます。 (ファイル毎に行番号をリセットする方法については eof の例を参照して 下さい。) .PP .ne 5 @ARGV に自分でファイルのリストをセットしたい場合は、そうして下さい。 スクリプトにスイッチを渡したい場合、スクリプトの前の方に次のような ループを置くことでできます: .nf .ne 10 while ($_ = $ARGV[0], /\|^\-/\|) { shift; last if /\|^\-\|\-$\|/\|; /\|^\-D\|(.*\|)/ \|&& \|($debug = $1); /\|^\-v\|/ \|&& \|$verbose++; .\|.\|. # 他のスイッチ } while (<>) { .\|.\|. # 各行に対するコード } .fi <> シンボルは一回だけ*偽*を返します。 その後、もう一度呼ぶと、別の @ARGV リストを処理しているとみなして、 @ARGV がセットされていない場合は .IR STDIN から入力されることになります。 .PP カギ括弧の中の文字列がスカラ変数への参照であるとき (例えば <$foo>) 、 その変数の内容が読み込むべきファイルハンドル名となります。 .PP カギ括弧の中の文字列がファイルハンドルではないとき、検索 (glob) される ファイルパターンと解釈され、コンテキストによってファイル名の配列 またはリストの中の次のファイルが返されます。 最初に $ の解釈の一レベルが行なわれますが、<$foo> は前の段落で 説明されたような間接ファイルハンドルとなるため使えません。 強制的にファイル名検索と解釈させさければ <${foo}> のように 中括弧 {} を挿入できます。 例: .nf .ne 3 while (<*.c>) { chmod 0644, $_; } は以下と等価です。 .ne 5 open(foo, "echo *.c | tr \-s \' \et\er\ef\' \'\e\e012\e\e012\e\e012\e\e012\'|"); while () { chop; chmod 0644, $_; } .fi 実際、現在のところこのように実装されてます。 (これは、マシン上に /bin/csh がなければ、空白を含むファイル名では 動かないことを意味します。) もちろん、上の操作を行なう一番短い方法は、 .nf chmod 0644, <*.c>; .fi です。 .Sh "文法" .PP .I perl スクリプトは、一連の宣言とコマンドからなります。 .I perl の中で宣言されなければならないものは、レポートフォーマットと サブルーチンです。 これらの宣言の詳しい説明は下のセクションを参照して下さい。 初期化されていないユーザが作成したオブジェクトは、それが代入のように 明示的に定義されるまでは、ヌルまたは 0 の値であるとみなされます。 コマンド列が各入力行に対して実行される .I sed や .I awk スクリプトと違って、コマンド列は一度だけ実行されます。 入力ファイル (または複数のファイル) の各行について繰り返しを行うには 明示的にループを設けなければなりませんが、 着目するファイル、行をよりよくコントロールすることができます。 (実は、正しくありません \*(-- .B \-n や .B \-p スイッチで、暗黙のループを行なうことができます。) .PP 宣言は、コマンドを書くことができる場所ならどこにでも書くことができますが、 コマンド実行の基本的な流れには影響を与えません \*(-- 宣言は、 コンパイル時だけにしか影響を与えません。通常、すべての宣言は スクリプトの最初か最後のどちらかに置きます。 .PP .I perl は、ほとんどの部分において自由形式言語です。 (唯一の例外はフォーマット宣言で、理由は実に明白です。) コメントは、# 文字で指示され、行末までとなります。 /* */ という C のコメントを使おうとすると、コンテキストにより 除算またはパターンマッチと解釈されるので、そういうことはしないで下さい。 .Sh "複合文" .IR perl では、複数のコマンド列を中括弧 {} で囲むことで、一つのコマンドとして 扱うことになり、これをブロックと呼びます。 .PP 次のような複合コマンドは、フローコントロールに使われます: .nf .ne 4 if (EXPR) BLOCK if (EXPR) BLOCK else BLOCK if (EXPR) BLOCK elsif (EXPR) BLOCK .\|.\|. else BLOCK LABEL while (EXPR) BLOCK LABEL while (EXPR) BLOCK continue BLOCK LABEL for (EXPR; EXPR; EXPR) BLOCK LABEL foreach VAR (ARRAY) BLOCK LABEL BLOCK continue BLOCK .fi C や Pascal と違って、これらは文ではなく*ブロック*として定義されているこ とに注意して下さい。 これは、中括弧 {} が、\fI必要である\fR ことを意味します \*(-- 一つの 文を置くことは許されません。 中括弧 {} なしで書きたい場合は、別の方法があります。 以下はすべて同等のことを行ないます: .nf .ne 5 if (!open(foo)) { die "Can't open $foo: $!"; } die "Can't open $foo: $!" unless open(foo); open(foo) || die "Can't open $foo: $!"; # foo でなければ終わり open(foo) ? \'hi mom\' : die "Can't open $foo: $!"; # 最後のものは、ちょっとエキゾチック .fi .PP .I if 文は単純です。 *ブロック*は、常に中括弧 {} で囲まれるため、 .I else が、どの .I if にかかるかという曖昧さは生じません。 .I unless を .IR if の代わりに使うと、逆の意味となります。 .PP .I while 文は、式が真 (ヌル文字列または 0 でない) である限り、ブロックを 実行し続けます。 識別子とコロンからなるラベルをつけることもできます。 ラベルはループ制御文 .IR next , .IR last , .I redo (以下を参照) によって指し示すループの名前となります。 .I continue ブロックがあると、条件文が再評価される前に必ず実行され、C における .I for ループの三番目の部分と同様となります。 こうして、たとえ .I next 文で継続された場合でもループ変数はインクリメントできることになります (C の \*(L"continue\*(R" 文と同じ) 。 .PP .I while が .IR until に置き換えられると テストの意味は逆になりますが、条件判断は最初のループ の前に行なわれます。 .PP .I if や .I while 文では、\*(L"(EXPR)\*(R" をブロックに置き換えることができ、 ブロックの最後のコマンドの値が真なら、条件判断は真となります。 .PP .I for ループは、対応する .I while と全く同じように動作します: .nf .ne 12 for ($i = 1; $i < 10; $i++) { .\|.\|. } は、以下と同じになります。 $i = 1; while ($i < 10) { .\|.\|. } continue { $i++; } .fi .PP foreach ループは、通常の配列値について、配列の各要素を変数 VAR に順に セットしながら繰り返します。 その変数は、ループに対して暗黙のうちにローカルであり、それ以前の値はルー プを抜けると元の値に戻ります。 \*(L"foreach\*(R" キーワードは、実は \*(L"for\*(R" キーワードと同じで、 \*(L"foreach\*(R" を可読性のために、\*(L"for\*(R" を簡潔さのために 使うことができます。 VAR が省略されると、$_ が各値にセットされます。 ARRAY が実際の配列 (配列を返す式ではなく) の場合、ループ内の VAR を変 更することによって、配列の各要素を変更することができます。 例: .nf .ne 5 for (@ary) { s/foo/bar/; } foreach $elem (@elements) { $elem *= 2; } .ne 3 for ((10,9,8,7,6,5,4,3,2,1,\'BOOM\')) { print $_, "\en"; sleep(1); } for (1..15) { print "Merry Christmas\en"; } .ne 3 foreach $item (split(/:[\e\e\en:]*/, $ENV{\'TERMCAP\'})) { print "Item: $item\en"; } .fi .PP ブロックそれ自身 (ラベルが付いていても、付いていなくても) は、一度だけ 実行されるループと等価です。 だから、ブロックを抜けたり再実行するために、すべてのループ制御文を使う ことができます。 .I continue ブロックも付けられます。 この構成は、case 構造を作成するには特に有用です。 .nf .ne 6 foo: { if (/^abc/) { $abc = 1; last foo; } if (/^def/) { $def = 1; last foo; } if (/^xyz/) { $xyz = 1; last foo; } $nothing = 1; } .fi 同等のものを記述する方法が、既にいくつもあるので、perl には公式の switch 文がありません。 上記のものに加えて、 .nf .ne 6 foo: { $abc = 1, last foo if /^abc/; $def = 1, last foo if /^def/; $xyz = 1, last foo if /^xyz/; $nothing = 1; } または .ne 6 foo: { /^abc/ && do { $abc = 1; last foo; }; /^def/ && do { $def = 1; last foo; }; /^xyz/ && do { $xyz = 1; last foo; }; $nothing = 1; } または .ne 6 foo: { /^abc/ && ($abc = 1, last foo); /^def/ && ($def = 1, last foo); /^xyz/ && ($xyz = 1, last foo); $nothing = 1; } さらに .ne 8 if (/^abc/) { $abc = 1; } elsif (/^def/) { $def = 1; } elsif (/^xyz/) { $xyz = 1; } else {$nothing = 1;} .fi とも書けます。 これらはすべて内部で switch 構造に最適化されるため、perl は直接目的の 文にジャンプするので、同じ単純なスカラ変数を == や eq や上記のような パターンマッチで判定する限り、50 個の elsif を使っても perl がたくさん の不要な文を実行するのでは、という心配は不要となります。 (ある特定の case ステートメントが最適化されているかどうかに興味があるなら、 \-D1024 スイッチを付けて実行前に文法ツリーを表示することができます。) .Sh "単文" 単文のみがその副作用を評価される式となります。 どの単文もブロックの最後の文でない限り、セミコロンで終らなければ なりません。最後の文では、セミコロンはなくてもかまいません。 (それでも、ブロックが一行以上を含んでいるのなら、 セミコロンはあった方が望ましいです) .PP どの単文も、セミコロンで終る前に一つの修飾子を続けることができます。 可能な修飾子は以下の通りです: .nf .ne 4 if EXPR unless EXPR while EXPR until EXPR .fi .I if と .I unless 修飾子は見かけ通りの意味があります。 .I while と .I until 修飾子も見かけ通りの意味 (条件文が始めに評価されます) ですが、 do ブロックや do サブルーチンコマンドが付けられたときには異なり、 条件式が評価される前に一度だけ実行されます。 これは、以下のようなループが記述できるようにするためです: .nf .ne 4 do { $_ = ; .\|.\|. } until $_ \|eq \|".\|\e\|n"; .fi (後述の .I do 演算子を参照のこと。修飾子は、どれもループラベルを持てないため、 後に書かれたループ制御コマンドはこの構造では動かないことに 気をつけて下さい。あしからず。) .Sh "式" .I perl の式は、ほとんど C の式と同じに動作しますが、違いをここに述べます。 .PP 以下が .I perl にあって、C にないものです: .Ip ** 8 2 指数演算子。 .Ip **= 8 指数代入演算子。 .Ip (\|) 8 3 配列をヌルに初期化するために使う、ヌルリスト。 .Ip . 8 2 つの文字列の結合演算子。 .Ip .= 8 結合代入演算子。 .Ip eq 8 文字列の同値性 (== は数値の同値性) 。 覚えるためには、\*(L"eq\*(R" が文字列であると考えれば良いです。 (状況に応じて、== が文字列と数値の両方の同値性を表す .I awk に慣れている人は、ここでは明示しなければならないことに気をつけて下さい !) .Ip ne 8 文字列の非同値性 (!= は数値の非同値性) 。 .Ip lt 8 文字列の less than .Ip gt 8 文字列の greater than .Ip le 8 文字列の less than or equal .Ip ge 8 文字列の greater than or equal .Ip cmp 8 文字列の比較。 -1, 0, 1 を返します。 .Ip <=> 8 数値の比較。 -1, 0, 1 を返します。 .Ip =~ 8 2 演算には、検索、変更をデフォルトで文字列 \*(L"$_\*(R" に対して行うもの があります。 この演算子を用いると、別の文字列に対してその演算が行われます。 右の引数は、検索パターン、置換、変換です。 左の引数は、デフォルトの \*(L"$_\*(R" の代わりに検索、置換、変換が 行なわれる対象となるものです。 戻り値は、演算の成否を示します。 (右の引数が検索パターン、置換、変換以外の式なら、実行時に検索パターン として解釈されますが、パターンは式が評価される度にコンパイルされなけれ ばならないので、明示的な検索より効率的ではありません。) この演算子の優先度は単項マイナス演算子 (-) 、autoincrement/decrement (++, --) より低く、他のどの演算子よりも高くなります。 .Ip !~ 8 戻り値が否定されることを除いて =~ と同じです。 .Ip x 8 繰り返し演算子。 左オペランドを右オペランドで指定した回数だけ繰り返した文字列を返します。 配列のコンテキストでは、左オペランドが括弧に入ったリストの場合、 リストを繰り返します。 .nf print \'\-\' x 80; # ダッシュの列を出力します print \'\-\' x80; # 不正、x80 は識別子 print "\et" x ($tab/8), \' \' x ($tab%8); # タブに変換 @ones = (1) x 80; # 80 個 1 が並んだ配列 @ones = (5) x @ones; # 全要素を 5 にセット .fi .Ip x= 8 繰り返し代入演算子。 スカラに対してのみ動作します。 .Ip .\|. 8 範囲演算子。コンテキストによって、実際は二つの異なる演算子になります。 配列のコンテキストでは、左の値から右の値まで一つずつ数を増やした配列を 返します。 これは、\*(L"for (1..10)\*(R" というループや配列の切り出し (slice) を 行なうときに便利です。 .Sp スカラのコンテキストでは、.\|. は論理値を返します。 この演算子は、flip-flop のように二つの値を取り、 sed や awk やいろいろなエディタの行範囲 (comma) 演算子をエミュレート します。 各 .\|. 演算子はそれ自身の論理値を保持し、左のオペランドが偽である限り 偽となります。 左のオペランドが真になると、範囲演算子は、右のオペランドが真になるまで 真となります。その後、範囲演算子が再び偽となります。 (次に範囲指定演算子が評価されるまで、偽にはなりません。 真になったのと同じ評価を行った時 (awkと同様) に右のオペランドをテスト して、偽になることがあり得ますが、一度は真を返します。 次の評価まで右のオペランドをテストしたくなければ (sed のように) 、二つ にするかわりに三つのドット (.\|.\|.) を使って下さい。) 右のオペランドは、演算子が \*(L"偽\*(R" の状態である間は、 評価されず、左のオペランドは演算子が \*(L"真\*(R" である間は 評価されません。 || や && より優先度はやや低くなります。 戻り値は、偽ではヌル文字列に、真では (1で始まる) 連続した数に なります。 この数は、範囲指定毎にリセットされます。 連続した範囲の最後の数は、文字列 \'E0\' を持っていて、数値には影響しま せんが、終点を除きたい場合に検索のきっかけになります。 数字が 1 より大きくなるのを待つことで、始点を除くことができます。 スカラ .\|. の両方のオペランドが静的である場合、オペランドは暗黙の うちに現在の行番号を表す $. 変数と比べられます。 例: .nf .ne 6 スカラ演算子としては: if (101 .\|. 200) { print; } # 100行台を出力します next line if (1 .\|. /^$/); # ヘッダ行を読み飛ばします s/^/> / if (/^$/ .\|. eof()); # 本体をクォートします .ne 4 配列としては: for (101 .\|. 200) { print; } # $_ を 100回表示します @foo = @foo[$[ .\|. $#foo]; # 高価なノーオペレーション @foo = @foo[$#foo-4 .\|. $#foo]; # 最後の 5 要素を取り出します .fi .Ip \-x 8 ファイルテスト。 この単項演算子は一つの引数として、ファイル名またはファイルハンドルを取 り、そのファイルについて、何かが真であるかどうかを見るものです。 引数が省略されると、$_ を調べますが、例外として \-t は .IR STDIN を調べます。 真の場合は 1 を、偽の場合は \'\' を返し、ファイルが存在していない場合 は、undefined の値を返します。 優先度は、論理値や関係演算子より高くなりますが、算術演算子より低くなり ます。 演算子は以下の通りです: .nf \-r ファイルを実効 uid/gid で読み込める。 \-w ファイルに実効 uid/gid で書き込める。 \-x ファイルを実効 uid/gid で実行できる。 \-o ファイルの所有者が、実効 uid である。 \-R ファイルを実 uid/gid で読み込める。 \-W ファイルを実 uid/gid で書き込める。 \-X ファイルを実 uid/gid で実行できる。 \-O ファイルの所有者が、実 uid である。 \-e ファイルが存在する。 \-z ファイルサイズが 0 である。 \-s ファイルサイズが 0 でない (サイズを返す) 。 \-f ファイルはプレーンファイルである。 \-d ファイルはディレクトリである。 \-l ファイルはシンボリックリンクである。 \-p ファイルは名前付きパイプ (FIFO) である。 \-S ファイルはソケットである。 \-b ファイルはブロック特殊ファイルである。 \-c ファイルはキャラクタ特殊ファイルである。 \-u ファイルには setuid ビットが立っている。 \-g ファイルには setgid ビットが立っている。 \-k ファイルには sticky ビットが立っている。 \-t ファイルハンドルが tty にオープンされている。 \-T ファイルはテキストファイルである。 \-B ファイルはバイナリファイルである (\-T の逆) 。 \-M スクリプトを開始した時点でのファイルの古さ(単位は日) 。 \-A アクセス時刻と同じ。 \-C inode 変更時刻と同じ。 .fi ファイルパーミッション演算子 \-r, \-R, \-w, \-W, \-x, \-X の解釈は、 単にファイルのモードとユーザの uid, gid に基づきます。 他の理由で、実際にファイルを読み、書き、実行ができないことがあるかも しれません。 また、気をつけなけらばならないのは、スーパユーザにとって \-r, \-R, \-w, \-W は常に 1 を返し、そのモードでいずれかの実行ビットが 立っていれば、\-x, \-X も常に 1 を返すというところです。 従って、スーパユーザが実行するスクリプトは、ファイルの実際のモードを決 めるために stat() を実行したり、一時的に他の uid を立てる必要があるか もしれません。 .Sp 例: .nf .ne 7 while (<>) { chop; next unless \-f $_; # 特殊ファイルを無視 .\|.\|. } .fi \-s/a/b/ としても、否定した置換をするわけではないことに注意して 下さい。 \-exp($foo) とすると、期待通りに動きますが、\*(-- マイナスの後が一文字 の場合、ファイルテストと解釈されます。 .Sp \-T と \-B は以下のように動作します。 ファイルの先頭のブロックあたりに、変なコントロールコードや メタキャラクタのような、おかしな文字がないかどうかを調べます。 おかしな文字が (10%以上) 見つかると、それは \-B ファイル、 でなければ \-T ファイルとなります。 最初のブロックにヌルが含まれるファイルもバイナリファイルとみなされます。 \-T や \-B がファイルハンドルに使われると、最初のブロックではなく、 そのときの標準入力バッファが調べられます。 ヌルファイル(サイズ 0 のファイル)の場合やファイルハンドルをテストしていて 、それが EOF である場合、\-T と \-B は共に真を返します。 .PP すべてのファイルテスト (と stat 演算子)は、アンダライン一つ _ から 成る特殊ファイルハンドルを与えられると、システムコールを保存することに よって、その直前に行なわれたファイルテスト (または stat演算子) で使わ れた stat 構造体が使われます。 (この _ の働きは \-t では動作せず、lstat と -l が stat 構造体に 実ファイルではなく、シンボリックリンクの値を残すことを覚えて おかなければなりません。) 例: .nf print "Can do.\en" if -r $a || -w _ || -x _; .ne 9 stat($filename); print "Readable\en" if -r _; print "Writable\en" if -w _; print "Executable\en" if -x _; print "Setuid\en" if -u _; print "Setgid\en" if -g _; print "Sticky\en" if -k _; print "Text\en" if -T _; print "Binary\en" if -B _; .fi .PP C にあって、 .I perl にないもの: .Ip "単項 &" 12 アドレス演算子 .Ip "単項 *" 12 "アドレスを通しての"参照演算子 .Ip "(TYPE)" 12 型変換演算子。 .PP C のように、 .I perl は、演算子への引数が皆、静的で、副作用がない場合だけコンパイル時にある 程度の式の評価を行なってしまいます。 特に、変数置換を行なわないリテラル間での文字列の結合は、コンパイル時に 行なわれます。 バックスラッシュの解釈もコンパイル時に起こります。 .nf .ne 2 \'Now is the time for all\' . "\|\e\|n" . \'good men to come to.\' .fi これは全部、内部では一つの文字列にされてしまいます。 .PP ++ 演算子にはちょっと拡張した細工が施されています。 数値変数や数値コンテキストとして使われた変数をインクリメントすると、通 常のインクリメントになりますが、変数がヌルでない文字コンテキストとして だけ使われて来ていて、パターン /^[a\-zA\-Z]*[0\-9]*$/ にマッチする場合は、 各文字の範囲をキャリー付きで保存し、文字としてインクリメントされます: .nf print ++($foo = \'99\'); # prints \*(L'100\*(R' print ++($foo = \'a0\'); # prints \*(L'a1\*(R' print ++($foo = \'Az\'); # prints \*(L'Ba\*(R' print ++($foo = \'zz\'); # prints \*(L'aaa\*(R' .fi -- 演算子には、このような細工はありません。 .PP (配列のコンテキストにおける) 範囲演算子は、最大値と最小値が文字列の 場合に、細工した自動インクリメントアルゴリズムを使います。 すべてのアルファベット文字を得るには、 @alphabet = (\'A\' .. \'Z\'); 16 進数を得るには、 $hexdigit = (0 .. 9, \'a\' .. \'f\')[$num & 15]; 始めに 0 を付けた日付を得るには、 @z2 = (\'01\' .. \'31\'); print @z2[$mday]; と書けます。 (最後に指定された値が、細工したインクリメントの生成するシークエンスに 含まれていない場合、次の値が最後に指定された値より長くなるまでシークエ ンスを続けます。) .PP || と && は、0 や 1 を返す C のそれとは違って、最後に評価された値を 返します。 だから、ホームディレクトリをみつける移植性の高い方法は、こうなります。 .nf $home = $ENV{'HOME'} || $ENV{'LOGDIR'} || (getpwuid($<))[7] || die "You're homeless!\en"; .fi .PP 前述のリテラルや変数に合わせ、以降の節で説明する演算は 式中で項として使えます。 これらの演算の幾つかは、引数に*リスト*を取ります。 リストは、スカラや配列値からなります。 配列値がリストの中にあると、その場所に挿入されたように個々の値がリスト の中に含まれて、長い一次元配列値を作ることになります。 *リスト* の要素はコンマで区切られていなければなりません。 引数を括弧で囲んでも囲まなくても、演算をリスト出来ます。 これは関数呼び出しと同様単項演算子として、 演算を使うことができることを意味します。 関数呼び出しとして使うには、同じ行の次のトークンは左括弧でなければなり ません。 (空白が間にはさまってもかまいません。) そのような関数は、予想される通り最優先となります。 左括弧を持っていないトークンが続くとすれば、それは単項演算子で、リスト 演算子かどうかによって、優先度が決まります。 リスト演算子は最も優先度が低くなります。 すべての単項演算子は、関係演算子よりも優先されますが、算術演算子よりも 優先度は低くなります。 優先度のセクションを参照して下さい。 .PP スカラや配列のコンテキストで使われる演算子の場合、失敗すると一般に、 スカラコンテキストでは undefined 値を返し、配列のコンテキストでは ヌルリストを返します。 しかし、*リストをスカラに変換する一般的な規則はない* ということを 忘れないで下さい。 それぞれの演算子は、どの種のスカラを返すのが最も適当であるかを決めます。 ある演算子は、配列のコンテキストとして返されるようなリストの長さを返し ます。リストの最初の値を返す演算子、リストの最後の値を返す演算子、 操作に成功した回数を返す演算子などもあります。 一般に、一貫性を求めなければ、演算子は求めるものを返します。 .Ip "/PATTERN/" 8 4 m/PATTERN/ を参照して下さい。 .Ip "?PATTERN?" 8 4 これは、 .I reset 演算子呼び出しの間で一回しかマッチしないことを除けば、 /pattern/ 検索と全く同じです。 これは例えば、一群のファイルの中で、各ファイルに最初に何かが出現すること を見たいとき、便利な最適化です。 そのときのパッケージにローカルな ?? パターンだけは、リセットされます。 .Ip "accept(NEWSOCKET,GENERICSOCKET)" 8 2 accept システムコールと同じことをします。 成功すると真を、失敗すると偽を返します。 プロセス間通信のセクションの例を参照して下さい。 .Ip "alarm(SECONDS)" 8 4 .Ip "alarm SECONDS" 8 指定した秒数 (実際には、1 を引いたもの) が経過したあと、自分の プロセスに SIGALRM を伝えます。 つまり、alarm(15) なら、14 秒以上経ったある時点で SIGALRM を生じます。 一度に一つのタイマしかカウントされません。呼び出される毎にそれ以前の タイマは無効となり、引数 0 で呼び出すと以前のタイマをキャンセルし て、新しいタイマは始動しません。 戻り値は、直前のタイマの残り時間です。 .Ip "atan2(Y,X)" 8 2 Y/X の アークタンジェント を .if t \-\(*p から \(*p. .if n \-π から π の範囲で返します。 .Ip "bind(SOCKET,NAME)" 8 2 bind システムコールと同じことをします。 成功すれば真を、失敗すれば偽を返します。 NAME は、ソケットに合った適切な型の pack されたアドレスでなければなりません。 プロセス間通信のセクションの例を参照して下さい。 .Ip "binmode(FILEHANDLE)" 8 4 .Ip "binmode FILEHANDLE" 8 4 バイナリファイルとテキストファイルを区別するオペレーティングシステム上 で、そのファイルを \*(L"バイナリ\*(R" として読み込まれるようにします。 バイナリモードで読み込まれないファイルは、CR LF が入力時に LF に変換 され、出力時には、LF が CR LF に変換されます。 binmode は、UNIX では無効です。 FILEHANDLE が式のときは、値がファイルハンドルの名前として扱われます。 .Ip "caller(EXPR)" .Ip "caller" 現在のサブルーチン呼び出しのコンテキストを返します: .nf ($package,$filename,$line) = caller; .fi EXPRがあると、デバッガがスタックトレースに出力して使う拡張情報も 返します。 EXPRの値は、現在のサブルーチンの前にいくつの call フレームがあるかを 示します。 .Ip "chdir(EXPR)" 8 2 .Ip "chdir EXPR" 8 2 動作しているディレクトリを、もしできるなら EXPR に変更します。 EXPRが省略されると、ホームディレクトリになります。 成功すれば 1 を、失敗すれば 0 を返します。 .IR die の例を参照して下さい。 .Ip "chmod(LIST)" 8 2 .Ip "chmod LIST" 8 2 ファイルのリストのパーミッションを変更します。 リストの最初の要素は、数値モードでなければなりません。 成功したファイルの数を返します。 .nf .ne 2 $cnt = chmod 0755, \'foo\', \'bar\'; chmod 0755, @executables; .fi .Ip "chop(LIST)" 8 7 .Ip "chop(VARIABLE)" 8 .Ip "chop VARIABLE" 8 .Ip "chop" 8 文字列の最後の文字を削り、削られた文字を返します。 基本的には、入力されたレコードの終りから改行文字を除くために使われます が、文字列のコピーをスキャンするわけではないので、s/\en// より 効率的です。 VARIABLE を省略すると、$_ を chop します。 例: .nf .ne 5 while (<>) { chop; # 最後のフィールドの \en を除く @array = split(/:/); .\|.\|. } .fi 実際には、代入を含む左辺値のいかなるものも chop できます。 .nf chop($cwd = \`pwd\`); chop($answer = ); .fi リストを chop するとすべての要素が chop され、 最後に chop された値が返されます。 .Ip "chown(LIST)" 8 2 .Ip "chown LIST" 8 2 ファイルのリストの所有者 (と所有グループ) を変えます。 リストの最初の二つの要素は数値で表した uid と gid がこの順で指定され なければなりません。 変更に成功したファイルの数を返します。 .nf .ne 2 $cnt = chown $uid, $gid, \'foo\', \'bar\'; chown $uid, $gid, @filenames; .fi .ne 23 以下は、passwd ファイルから数値でない uid を検索する例です: .nf print "User: "; $user = ; chop($user); print "Files: " $pattern = ; chop($pattern); .ie t \{\ open(pass, \'/etc/passwd\') || die "Can't open passwd: $!\en"; 'br\} .el \{\ open(pass, \'/etc/passwd\') || die "Can't open passwd: $!\en"; 'br\} while () { ($login,$pass,$uid,$gid) = split(/:/); $uid{$login} = $uid; $gid{$login} = $gid; } @ary = <${pattern}>; # ファイルを得ます if ($uid{$user} eq \'\') { die "$user not in passwd file"; } else { chown $uid{$user}, $gid{$user}, @ary; } .fi .Ip "chroot(FILENAME)" 8 5 .Ip "chroot FILENAME" 8 同名のシステムコールと同じことをします。 これが何をするのか知らないとしても、気にしないで下さい。 FILENAME を省略すると、$_ に chroot します。 .Ip "close(FILEHANDLE)" 8 5 .Ip "close FILEHANDLE" 8 ファイルハンドルに結びつけられたファイルやパイプをクローズします。 別のファイルをオープンしようとしている場合は、FILEHANDLE を閉じる 必要がありません。オープンした際に前のファイルをクローズしてくれる からです。 ( .IR open を参照して下さい) しかし、明示的に入力ファイルのクローズをすると行カウンタ ($.) が リセットされるのに対し、 .I open のときに行なわれる暗黙のクローズでは、リセットされません。 また、後でパイプの出力を見たい場合は、パイプをクローズするとパイプで 起動されたプロセスの完了を待ちます。 パイプを明示的にクローズすると、コマンド情報の戻り値が $? に 入れられます。 例: .nf .ne 4 open(OUTPUT, \'|sort >foo\'); # sort へパイプ .\|.\|. # print stuff to output close OUTPUT; # sort の終了を待ちます open(INPUT, \'foo\'); # sortの結果を得ます .fi FILEHANDLE は実際のファイルハンドル名を与える式でもかまいません。 .Ip "closedir(DIRHANDLE)" 8 5 .Ip "closedir DIRHANDLE" 8 opendir() でオープンされたディレクトリをクローズします。 .Ip "connect(SOCKET,NAME)" 8 2 connect システムコールと同じことをします。 成功すると真を、失敗すると偽を返します。 NAME はソケットに合った適当な型のパッケージアドレスでなければ なりません。 プロセス間通信のセクションの例を参照して下さい。 .Ip "cos(EXPR)" 8 6 .Ip "cos EXPR" 8 6 EXPR (ラジアンで表現) のコサインを返します。 EXPR を省略すると $_ のコサインを取ります。 .Ip "crypt(PLAINTEXT,SALT)" 8 6 C ライブラリの crypt() 関数と正確に同じように encrypt された文字列 を返します。 パスワードファイルを調べて、粗野なパスワードを見つけるのに便利です。 白い帽子をかぶっている奴だけがこれをしなければなりません。 .Ip "dbmclose(ASSOC_ARRAY)" 8 6 .Ip "dbmclose ASSOC_ARRAY" 8 dbm ファイルと連想配列の結び付きを解除します。 連想配列に残っている値は、dbm ファイルのキャッシュに何が入っているか を知りたいのでなければ、意味がないものとなります。 この関数は、ndbm を使う場合にのみ有用です。 .Ip "dbmopen(ASSOC,DBNAME,MODE)" 8 6 dbm や ndbm ファイルと連想配列を結び付けます。 ASSOC は連想配列の名前です。 (通常の open と違って、最初の引数はファイルハンドルのように見えても、 ファイルハンドルでは*ありません*) 。 DBNAME は、(.dir や .pag の拡張子を除いた) データベースの名前です。 データベースが存在しないと、(umaskで修飾された) MODE で指定された プロテクションで作成します。 古い dbm 関数しかサポートしないシステムでは、プログラムの中で一つの dbmopen しか許されないかもしれません。 dbm も ndbm もないシステムでは、dbmopen 呼び出しは致命的なエラーを生 じます。 .Sp それまでの dbmopen で関連付けられた連想配列の値は失われます。 dbm ファイルのうち、ある量の値はメモリにキャッシュされます。 デフォルトでその量は 64 ですが、dbmopen の前に連想配列の ガーベッジエントリの数をあらかじめ確保しておくことで、 増やすことができます。必要なら、reset コマンドでキャッシュを フラッシュすることができます。 .Sp dbm ファイルへの書き込み許可を持っていない場合、連想配列変数を 読み出すだけで、それをセットすることはできません。 書き込めるかどうかをテストしたければ、ファイルテストを使うか、エラーを トラップできる eval の中で、ダミーの配列エントリをセットしようと してみて下さい。 .Sp keys() や valuse() のような関数は、大きな dbm ファイルを使ったときに、 巨大な配列値を返すかもしれません。 大きな dbm ファイルで繰り返しをするときは、each() 関数を使った方が 良いかもしれません。 例: .nf .ne 6 # 履歴ファイルのオフセットを表示します dbmopen(HIST,'/usr/lib/news/history',0666); while (($key,$val) = each %HIST) { print $key, ' = ', unpack('L',$val), "\en"; } dbmclose(HIST); .fi .Ip "defined(EXPR)" 8 6 .Ip "defined EXPR" 8 左辺値 EXPR が、実際に値を持っているかどうかを表す論理値を返します。 多くの演算で、ファイル終端、初期化されていない変数、システムエラーなど の例外処理条件で undefined 値が返されます。 この関数は、本当のヌル文字列を返すかもしれない操作、特に配列要素を参照 する操作の際に、未定義のヌル文字列と定義されたヌル文字列の判別を可能に します。 配列やサブルーチンが存在するかどうかを調べることもできます。 予約済み変数を使うときは、直観的に期待するような結果になるとは保証されて いません。 例: .nf .ne 7 print if defined $switch{'D'}; print "$val\en" while defined($val = pop(@ary)); die "Can't readlink $sym: $!" unless defined($value = readlink $sym); eval '@foo = ()' if defined(@foo); die "No XYZ package defined" unless defined %_XYZ; sub foo { defined &$bar ? &$bar(@_) : die "No bar"; } .fi undef も参照して下さい。 .Ip "delete $ASSOC{KEY}" 8 6 指定した連想配列から、指定した値を削除します。 削除された値が返りますが、何も削除されなかった場合は undefined 値が 返ります。 $ENV{} から削除すると、環境変数を変更します。 dbm ファイルに結びつけられた配列を削除すると、dbm ファイルからその項 目を削除します。 .Sp 以下の例は、連想配列のすべての値を削除します: .nf .ne 3 foreach $key (keys %ARRAY) { delete $ARRAY{$key}; } .fi (しかし、 .I reset コマンドを使った方が速いでしょう。undef %ARRAY ならもっと速いでしょう) .Ip "die(LIST)" 8 .Ip "die LIST" 8 eval の外で、LIST の値を .I STDERR に表示して、そのときの $! (errno) の値で終了 (exit) します。 $! が 0 なら、($? >> 8) (\`command\` のステータス) の値で終了します。 ($? >> 8) が 0 なら、255 で終了します。 eval の中では、エラーメッセージは $@ に詰め込まれ、eval は undefined 値で終了します。 .Sp 同等の例: .nf .ne 3 .ie t \{\ die "Can't cd to spool: $!\en" unless chdir \'/usr/spool/news\'; 'br\} .el \{\ die "Can't cd to spool: $!\en" unless chdir \'/usr/spool/news\'; 'br\} chdir \'/usr/spool/news\' || die "Can't cd to spool: $!\en" .fi .Sp EXPR の値が改行で終らない場合、スクリプトの現在の行番号と (もしあれば) 入力行番号が出力され、改行が加えられます。 ヒント: \*(L", stopped\*(R" をメッセージに加えておくと、 \*(L"at foo line 123\*(R" が加えられたときにわかり易くなるので良い でしょう。 スクリプト \*(L"canasta\*(R" を走らせているとすると、 .nf .ne 7 die "/etc/games is no good"; die "/etc/games is no good, stopped"; は、多分 /etc/games is no good at canasta line 123. /etc/games is no good, stopped at canasta line 123. .fi と出力されます。 .IR exit を参照して下さい。 .Ip "do BLOCK" 8 4 BLOCK 内で指定されたうち、最後のコマンドの値を返します。 ループ修飾子に修飾されたときは、ループ条件をテストする前に BLOCK が 一度実行されます。 (他の文では、ループ修飾子は、条件を始めにテストします。) .Ip "do SUBROUTINE (LIST)" 8 3 .I sub で宣言されたサブルーチンを実行し、SUBROUTINE で最後に評価された式の値 を返します。 その名前のサブルーチンがない場合、致命的エラーを生じます。 (サブルーチンが存在しているかどうかを判定したいなら、\*(L"defined\*(R" 演算子を使うのが良いでしょう。) 配列をリストの一部として渡したいなら、各配列の前に配列の長さを付けて 渡すのが良いでしょう。 (後に出てくるサブルーチンのセクションを参照して下さい。) \*(L"do EXPR\*(R" の形との混乱を避けるため、括弧は必要となります。 .Sp SUBROUTINE は、一つのスカラ変数でもかまいません。その場合、 実行されるサブルーチン名は、変数から得られます。 .Sp 別の (好まれる) 形として、アンパサンド & を前に付ける &foo(@args) の ように、サブルーチンを呼んでもかまいません。 引数を渡さないなら、括弧を使う必要はありません。 括弧を省略すると、サブルーチンには @_ 配列は渡されません。 & 型は、defined や undef 演算子にサブルーチンを指示するのにも 使われます: .nf if (defined &$var) { &$var($parm); undef &$var; } .fi .Ip "do EXPR" 8 3 ファイル名として EXPR の値を使い、 .I perl スクリプトとして、ファイルの内容を実行します。 これは基本的に .I perl サブルーチンライブラリからサブルーチンをインクルードするという使い方を します。 .nf do \'stat.pl\'; は、 eval \`cat stat.pl\`; .fi とほとんど同じです。 違うのは、より効率的で、より簡潔で、エラーメッセージ中の現在ファイル名 は正しく、カレントディレクトリに stat.pl がなければ .B \-I で指定されたライブラリをすべて探すということです。 (予約変数のセクション中の @INC 配列を参照して下さい) 。 しかし、呼び出しのたびにファイルを解析し直すのは同じなので、ループの 内側でこのファイルを使うなら、起動時間は少し余計にかかるとしても、 \-P と #include を使った方が良いでしょう。 (この #include を使う問題点は、cpp が # コメントを認識してくれない ことです。\*(--逃げ道は、コメント単独として \*(L";#\*(R" を使うことです。) 次のものは等価ではないことに注意して下さい: .nf .ne 2 do $foo; # ファイルを eval します do $foo(); # サブルーチンを呼びます .fi ライブラリルーチンのインクルードとしては、 \*(L"require\*(R" 演算子の方がより良いことを覚えておいて下さい。 .Ip "dump LABEL" 8 6 ただちにコアダンプします。 もともと、これは、プログラムの始めにすべての変数を初期化した後に ダンプされたコアを undump プログラムを使って実行バイナリを作るために あります。 新しいバイナリが実行されるとき、"goto LABEL" を実行することから 始まります (goto が受けるすべての制限は適用されます) 。 コアダンプで止まったところから、goto で再び始まると考えれば良いです。 LABEL が省略されると、プログラムは先頭から再スタートします。 警告: ダンプされたときに open されていたどのファイルも、プログラムが 再生したときにはもう open されておらず、perlの側では混乱する可能性が あります。 \-u も参照して下さい。 .Sp 例: .nf .ne 16 #!/usr/bin/perl require 'getopt.pl'; require 'stat.pl'; %days = ( 'Sun',1, 'Mon',2, 'Tue',3, 'Wed',4, 'Thu',5, 'Fri',6, 'Sat',7); dump QUICKSTART if $ARGV[0] eq '-d'; QUICKSTART: do Getopt('f'); .fi .Ip "each(ASSOC_ARRAY)" 8 6 .Ip "each ASSOC_ARRAY" 8 連想配列の次のキーと値の 2 つの要素から成る配列を順次返し、 それを繰り返すことができます。 各エントリはランダムのように見える順序で返されます。 配列全部が読み込まれたとき、ヌル配列 (代入されると FALSE(0) 値となる) が返されます。 その後、次の each() の呼び出しで繰り返しを再び始めます。 繰り返し情報は、配列からすべての要素を読み込むことによってのみ リセットできます。 繰り返しの間は、配列を変更してはいけません。 各連想配列につき一つずつ繰り返し情報があり、プログラム中のすべての each(), keys(), values() 関数呼び出しで共有されます。 次の例は、順序は異なるものの printenv プログラムのように環境変数を 表示します: .nf .ne 3 while (($key,$value) = each %ENV) { print "$key=$value\en"; } .fi keys() 関数と values() 関数も参照して下さい。 .Ip "eof(FILEHANDLE)" 8 8 .Ip "eof()" 8 .Ip "eof" 8 次に FILEHANDLE を読んだときファイル終端であるか、 または FILEHANDLE がオープンされていないとき、1 を返します。 FILEHANDLE は実際のファイルハンドル名を値に持つ式でもかまいません。 (この関数は、実際には一文字読み込んでは、ungetc するので、対話的な コンテキストではそれほど有用ではありません。) 引数無しの eof は、最後に読んだファイルの eof 状態を返します。 空の括弧 () は、コマンドラインで指定されたファイル群からなる 擬似ファイルを指します。つまり、eof() は while (<>) の内側で最後の ファイルの終端を検出するときに意味があります。 while (<>) ループの中で各ファイルを調べたいときは、eof(ARGV) または 括弧のない eof を使って下さい。 例: .nf .ne 7 # 最後のファイルの最終行の直前にダッシュを挿入します while (<>) { if (eof()) { print "\-\|\-\|\-\|\-\|\-\|\-\|\-\|\-\|\-\|\-\|\-\|\-\|\-\|\-\en"; } print; } .ne 7 # 各入力ファイル毎に、行番号をリセットします while (<>) { print "$.\et$_"; if (eof) { # Not eof(). close(ARGV); } } .fi .Ip "eval(EXPR)" 8 6 .Ip "eval EXPR" 8 6 .Ip "eval BLOCK" 8 6 EXPR は解析され、一つの小さな .I perl プログラムであるかのように実行されます。 .I perl プログラムのコンテキストの中で実行されるので、どの変数設定、 サブルーチン、フォーマット定義もその後に残ります。 戻り値は、丁度サブルーチンと同様に、最後に評価された式が返ります。 文法エラーや実行時エラーがあるか、die 文があれば、eval により undefined が返り、$@ にエラーメッセージがセットされます。 もしエラーがなければ、$@ はヌル文字列であることが保証されます。 EXPRを省略すると、$_ を評価します。 最後のセミコロンはどれも式から除かれます。 .Sp eval はしかし、致命的エラーまでトラップするので、 (dbmopen や symlinkのような) ある機能が実装されているかどうかを 決めるには便利なことを覚えておいて下さい。 die 演算子が例外を起こすように使われるのは、perl の例外トラップ機構 でもあります。 .Sp 実行されるコードが変わらないなら、その度に再コンパイルされる時間を 費すよりは、実行時エラーをトラップする eval-BLOCK の形をとった方が良い かもしれません。 どんなエラーも起これば $@ にメッセージが返ります。 EXPR のような、シングルクォートされた文字列を評価すると、同じ効果が ありますが、eval-BLOCK の形ではコンパイル時に文法エラーを報告するのに 対し、eval-EXPR の形では $@ を通して実行時に文法エラーを報告する点が 異なります。 eval-EXPR の形は、最初に成功したときに eval-BLOCK に最適化されます。 (e 修飾子を使った場合、置換される側はシングルクォートされた文字列と みなされ、同じ最適化が起こります。) 例: .nf .ne 11 # 0 除算を致命的エラーにしません eval { $answer = $a / $b; }; warn $@ if $@; # 初回使用後、同じものに最適化されます。 eval '$answer = $a / $b'; warn $@ if $@; # コンパイル時エラー eval { $answer = }; # 実行時エラー eval '$answer ='; # sets $@ .fi .Ip "exec(LIST)" 8 8 .Ip "exec LIST" 8 6 LIST の中に一つ以上の引数があるか、LIST が一つ以上の値を持つ配列ならば、 リストの引数を付けて execvp() を呼びます。 一つのスカラ引数だけなら、引数にシェルのメタキャラクタがあるかどうか を調べます。あれば、解析のために引数を丸ごと \*(L"/bin/sh \-c\*(R" に 渡し、無ければ、引数は単語に split され、execvp() に直接渡されます。 その方が効率が良いからです。 注意: exec (と system) は出力バッファをフラッシュしないので、出力が 失われるのを避けるために $| をセットする必要があるかもしれません。 例: .nf exec \'/bin/echo\', \'Your arguments are: \', @ARGV; exec "sort $outfile | uniq"; .fi .Sp もし、最初の引数を本当に実行したいのでなく、実行しようとしている プログラムの名前を詐称したいだけなら、本当に走らせたいプログラムを変数に 割り当てて、LIST の前に変数の名前をカンマを付けずに置くように 指定できます。 (これは、たとえ単一スカラしかリストに無くても、常に多くの値を持つ リストとして LIST の解釈を強制します。) 例: .nf .ne 2 $shell = '/bin/csh'; exec $shell '-sh'; # ログインシェルのふりをします .fi .Ip "exit(EXPR)" 8 6 .Ip "exit EXPR" 8 EXPR を評価し、ただちにその値で終了します。 例: .nf .ne 2 $ans = ; exit 0 \|if \|$ans \|=~ \|/\|^[Xx]\|/\|; .fi .IR die を参照して下さい。 EXPR が省略されると、値 0 の状態で終了します。 .Ip "exp(EXPR)" 8 3 .Ip "exp EXPR" 8 .I e の EXPR 乗を返します。 EXPR を省略すると、exp($_) を返します。 .Ip "fcntl(FILEHANDLE,FUNCTION,SCALAR)" 8 4 fcntl(2) 関数の実装です。 正しい関数定義を得るには、多分 .nf require "fcntl.ph"; # 多分 /usr/local/lib/perl/fcntl.ph .fi を始めに書いておかなければならないでしょう。 もし、fcntl.ph が存在しないか、もしくは正しい定義がされていない場合、 のような C のヘッダファイルに基づいて、 自分で何とかしなければなりません。 (perl kit から来る h2ph と呼ばれる perl スクリプトがあり、 このことを助けてくれるでしょう) 引数の処理と戻り値を返すことは、 この後に書かれている ioctl のように動作します。 fcntl は、fcntl(2) が実装されていないマシンで使われると 致命的エラーを生じます。 .Ip "fileno(FILEHANDLE)" 8 4 .Ip "fileno FILEHANDLE" 8 4 ファイルハンドルに対するファイルディスクリプタを返します。 select() のビットマップを構成するのに便利です。 FILEHANDLE が式だと、その値がファイルハンドルの名前と解釈されます。 .Ip "flock(FILEHANDLE,OPERATION)" 8 4 ファイルハンドルに対し flock(2) を呼びます。 OPERATION の定義については、flock(2) のマニュアルを参照して下さい。 成功すれば真を、失敗すれば偽を返します。 flock(2) が実装されていないマシンで使うと、致命的エラーになります。 以下は、BSD システムのメールボックスにメールを追加します。 .nf .ne 20 $LOCK_SH = 1; $LOCK_EX = 2; $LOCK_NB = 4; $LOCK_UN = 8; sub lock { flock(MBOX,$LOCK_EX); # 待っている間に、他の誰かが追加する # 場合のために... seek(MBOX, 0, 2); } sub unlock { flock(MBOX,$LOCK_UN); } open(MBOX, ">>/usr/spool/mail/$ENV{'USER'}") || die "Can't open mailbox: $!"; do lock(); print MBOX $msg,"\en\en"; do unlock(); .fi .Ip "fork" 8 4 fork() システムコールを実行します。 親プロセスに子の pid を返し、子プロセスには 0 を返します。 注意: フラッシュされていないバッファは、両方のプロセスでフラッシュ されずに残ります。これは二重出力を避けるために、$| をセットする必要が あるかもしれないということを意味します。 .Ip "getc(FILEHANDLE)" 8 4 .Ip "getc FILEHANDLE" 8 .Ip "getc" 8 FILEHANDLE に結びつけられた入力ファイルから、次の文字を返します。 EOF ではヌルを返します。 FILEHANDLE を省略すると、STDIN から読み込み ます。 .Ip "getlogin" 8 3 現在のログイン状況が /etc/utmp から得られれば、それを返します。 得られなければ、getpwuid を使って下さい。 $login = getlogin || (getpwuid($<))[0] || "Somebody"; .Ip "getpeername(SOCKET)" 8 3 SOCKET 接続の向こう側の pack された sockaddr アドレスを返します。 .nf .ne 4 # 内部 sockaddr $sockaddr = 'S n a4 x8'; $hersockaddr = getpeername(S); .ie t \{\ ($family, $port, $heraddr) = unpack($sockaddr,$hersockaddr); 'br\} .el \{\ ($family, $port, $heraddr) = unpack($sockaddr,$hersockaddr); 'br\} .fi .Ip "getpgrp(PID)" 8 4 .Ip "getpgrp PID" 8 指定された PID に対する現在のプロセスグループを返します。 現在のプロセスでは 0 です。 getpgrp(2) が実装されていないマシンで使うと、致命的エラーになります。 EXPR が省略されると、現在のプロセスのプロセスグループが返ります。 .Ip "getppid" 8 4 親プロセスのプロセス ID を返します。 .Ip "getpriority(WHICH,WHO)" 8 4 プロセス、プロセスグループ、ユーザの現在のプライオリティを返します。 (getpriority(2)を参照して下さい。) getpriority(2) を実装していないマシンで使うと致命的エラーになります。 .Ip "getpwnam(NAME)" 8 .Ip "getgrnam(NAME)" 8 .Ip "gethostbyname(NAME)" 8 .Ip "getnetbyname(NAME)" 8 .Ip "getprotobyname(NAME)" 8 .Ip "getpwuid(UID)" 8 .Ip "getgrgid(GID)" 8 .Ip "getservbyname(NAME,PROTO)" 8 .Ip "gethostbyaddr(ADDR,ADDRTYPE)" 8 .Ip "getnetbyaddr(ADDR,ADDRTYPE)" 8 .Ip "getprotobynumber(NUMBER)" 8 .Ip "getservbyport(PORT,PROTO)" 8 .Ip "getpwent" 8 .Ip "getgrent" 8 .Ip "gethostent" 8 .Ip "getnetent" 8 .Ip "getprotoent" 8 .Ip "getservent" 8 .Ip "setpwent" 8 .Ip "setgrent" 8 .Ip "sethostent(STAYOPEN)" 8 .Ip "setnetent(STAYOPEN)" 8 .Ip "setprotoent(STAYOPEN)" 8 .Ip "setservent(STAYOPEN)" 8 .Ip "endpwent" 8 .Ip "endgrent" 8 .Ip "endhostent" 8 .Ip "endnetent" 8 .Ip "endprotoent" 8 .Ip "endservent" 8 これらのルーチンは、システムライブラリ中の同名の関数を実行します。 配列のコンテキストの中では、これらの各 get ルーチンの戻り値は、 以下のようになります: .nf ($name,$passwd,$uid,$gid, $quota,$comment,$gcos,$dir,$shell) = getpw.\|.\|. ($name,$passwd,$gid,$members) = getgr.\|.\|. ($name,$aliases,$addrtype,$length,@addrs) = gethost.\|.\|. ($name,$aliases,$addrtype,$net) = getnet.\|.\|. ($name,$aliases,$proto) = getproto.\|.\|. ($name,$aliases,$port,$proto) = getserv.\|.\|. .fi (もしエントリが存在しなければ、ヌルリストになります。) .Sp スカラのコンテキストでは、 name による検索でない場合には name が得られ、 name による検索の場合には name 以外が得られます。 (エントリが存在しない場合は、undefined 値となります。) 例: .nf $uid = getpwnam $name = getpwuid $name = getpwent $gid = getgrnam $name = getgrgid $name = getgrent 他 .fi getgr.\|.\|. の返す $menbers 値は、空白で区切られたグループメンバの ログイン名のリストです。 .Sp gethost.\|.\|. 関数では、h_errno 変数が C でサポートされていれば、 関数のコールが失敗したとき $? を介して返されます。 成功した関数コールの返す @addrs 値は、相当するシステムライブラリ 呼び出しに返された raw address のリストです。 インターネットドメイン (INET) では、各アドレスは 4 バイト長で 以下のように書くと unpack できます。 .nf ($a,$b,$c,$d) = unpack('C4',$addr[0]); .fi .Ip "getsockname(SOCKET)" 8 3 pack された、SOCKET接続のこちら側の sockaddr アドレスを返します。 .nf .ne 4 # An internet sockaddr $sockaddr = 'S n a4 x8'; $mysockaddr = getsockname(S); .ie t \{\ ($family, $port, $myaddr) = unpack($sockaddr,$mysockaddr); 'br\} .el \{\ ($family, $port, $myaddr) = unpack($sockaddr,$mysockaddr); 'br\} .fi .Ip "getsockopt(SOCKET,LEVEL,OPTNAME)" 8 3 要求したソケットのオプションを返します。エラーの場合は undefined を 返します。 .Ip "gmtime(EXPR)" 8 4 .Ip "gmtime EXPR" 8 time 関数に返された時刻を、Greenwich timezone として 9 要素の配列に 変換します。 通常は次のように使います: .nf .ne 3 .ie t \{\ ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = gmtime(time); 'br\} .el \{\ ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = gmtime(time); 'br\} .fi すべての配列要素は数値で、構造体 tm から直接得られるものです。 これにより $mon は 0.\|.11 の範囲で $wday は 0.\|.6 の範囲であることに なります。 EXPR を省略すると、gmtime(time) を実行します。 .Ip "goto LABEL" 8 6 LABEL というラベルを付けられた文を探し、そこから実行を再開します。 現在のところ、プログラムの本体内で do {} 構造の内側が 入れ子になっていない文にしか行けません。 この文は効率的には実装されておらず、 .IR sed -to- perl 翻訳プログラムを簡単にできるようにするためだけあります。 翻訳された .I sed スクリプトの一貫性のサポートはしますが、このセマンティックスを私がいつ 変更するかわからないので、自らの責任で使って下さい。 全く使わない方が良いでしょう。 .Ip "grep(EXPR,LIST)" 8 4 LIST の各要素に対して (ローカルには各要素を $_ にセット) 、EXPR を 評価して、式が真であると評価された要素だけからなる配列を返します。 スカラのコンテキストでは、式が真になった回数を数値で返します。 .nf @foo = grep(!/^#/, @bar); # コメントを除きます .fi $_ は配列値への参照なので、配列の要素を変更する場合に使えることを 覚えておきましょう。 これは便利ですが、LIST が名前のついた配列でないと、おかしな結果を 引き起こすことになります。 .Ip "hex(EXPR)" 8 4 .Ip "hex EXPR" 8 10 進値 EXPR を 16 進文字列にして返します。 (0 または 0x で始まる文字列を解釈するなら、oct() を参照して下さい。) EXPR を省略すると $_ を使います。 .Ip "index(STR,SUBSTR,POSITION)" 8 4 .Ip "index(STR,SUBSTR)" 8 4 STR の中で、POSITION かそれ以降に最初に SUBSTR が現れる位置を返します。 POSITION を省略すると、文字列の先頭から検索します。 戻り値は、0 か $[ 変数に設定されたものがベースになります。 SUBSTR がみつからないと、ベースから 1 を引いた値を返し、通常 \-1 に なります。 .Ip "int(EXPR)" 8 4 .Ip "int EXPR" 8 EXPR の整数部を返します。 EXPR が省略されると、$_ を使います。 .Ip "ioctl(FILEHANDLE,FUNCTION,SCALAR)" 8 4 これは、ioctl(2) 関数を実装しています。 正しい関数定義を得るには、多分始めの方で .nf require "ioctl.ph"; # 多分 /usr/local/lib/perl/ioctl.ph .fi と書かなければならないでしょう。 ioctl.ph が存在しないか、または正しく定義されていない場合、 のような C のヘッダファイルから自分自身でなんとかしな ければなりません。 (perl キットにある h2ph というスクリプトがこの助けになるでしょう。) SCALAR は、FUNCTIONに依存して、参照または書き込みがされます。 FUNCTION \*(--SCALAR の文字列値へのポインタは、実際の ioctl 呼び出しの 第 3 引数に渡されます。 (SCALAR が文字列値でなく数値であった場合、文字列値へのポインタでなく 数値そのものが渡されます。これが真であることを保証するには、このスカラを 使う前に 0 を加えて下さい。) ioctl() に使われる構造体の値を扱うには、pack() 関数と unpack() 関数が 便利です。 次の例は、DEL に erase 文字をセットします。 .nf .ne 9 require 'ioctl.ph'; $sgttyb_t = "ccccs"; # chars 4 個と short 1 個 if (ioctl(STDIN,$TIOCGETP,$sgttyb)) { @ary = unpack($sgttyb_t,$sgttyb); $ary[2] = 127; $sgttyb = pack($sgttyb_t,@ary); ioctl(STDIN,$TIOCSETP,$sgttyb) || die "Can't ioctl: $!"; } .fi ioctl (と fcntl) の戻り値は以下の通りです: .nf .ne 4 OS の戻り値:\h'|3i'perlの戻り値: -1\h'|3i' undefined 値 0\h'|3i' 文字列 "0 but true" それ以外\h'|3i' その数 .fi このように、perl は成功時に真を、失敗時に偽を返しますが、 オペレーティングシステムから返される実際の値も簡単に判定することができます: .nf ($retval = ioctl(...)) || ($retval = -1); printf "System returned %d\en", $retval; .fi .Ip "join(EXPR,LIST)" 8 8 .Ip "join(EXPR,ARRAY)" 8 分割されている LIST や ARRAY の文字列を、フィールドセパレータとして 値 EXPR をはさんだ一つの文字列につなげて、その文字列を返します。 例: .nf .ie t \{\ $_ = join(\|\':\', $login,$passwd,$uid,$gid,$gcos,$home,$shell); 'br\} .el \{\ $_ = join(\|\':\', $login,$passwd,$uid,$gid,$gcos,$home,$shell); 'br\} .fi .IR split を参照して下さい。 .Ip "keys(ASSOC_ARRAY)" 8 6 .Ip "keys ASSOC_ARRAY" 8 名前のついた連想配列のすべてのキーからなる普通の配列を返します。 キーは、見かけ上ランダムな順で返されますが、values() 関数や each() 関数 (これによって連想配列は変更されません) が生成するものと同じ順になります。 以下は、環境変数を表示する別の方法です: .nf .ne 5 @keys = keys %ENV; @values = values %ENV; while ($#keys >= 0) { print pop(@keys), \'=\', pop(@values), "\en"; } キーでソートすると: .ne 3 foreach $key (sort(keys %ENV)) { print $key, \'=\', $ENV{$key}, "\en"; } .fi .Ip "kill(LIST)" 8 8 .Ip "kill LIST" 8 2 プロセスのリストにシグナルを送ります。 リストの最初の要素は、送られるシグナルでなければなりません。 シグナル送信に成功したプロセスの数を返します。 .nf $cnt = kill 1, $child1, $child2; kill 9, @goners; .fi シグナルが負の場合、プロセスの代わりにプロセスグループを kill します。 (System Vでは、負の \fIプロセス\fR 番号はプロセスグループも kill しますが、互換性はありません。) クォートでくくられたシグナル名も使えます。 .Ip "last LABEL" 8 8 .Ip "last" 8 .I last コマンドは、(ループ内で使われるような) C の .I break 文に似ていて、該当するループを直ちに終了します。 LABEL が省略されると、このコマンドは最も内側のループを抜けます。 .I continue ブロックがあったとしても、実行されません: .nf .ne 4 line: while () { last line if /\|^$/; # ヘッダが終ったら抜けます .\|.\|. } .fi .Ip "length(EXPR)" 8 4 .Ip "length EXPR" 8 EXPR の値の文字列長を返します。 EXPR を省略すると、$_ の長さを返します。 .Ip "link(OLDFILE,NEWFILE)" 8 2 OLDFILE にリンクされた NEWFILE を作成します。 成功すると 1 を、失敗すると 0 を返します。 .Ip "listen(SOCKET,QUEUESIZE)" 8 2 listen システムコールと同じことを行ないます。 成功すると真を、失敗すると偽を返します。 プロセス間通信のセクションの例を参照して下さい。 .Ip "local(LIST)" 8 4 閉じたブロック、サブルーチン、eval 、\*(L"do\*(R" に局所的な 変数リストを宣言します。 リストされたすべての要素は左辺値として妥当なものでなければなりません。 この演算子は、LIST 内のその時点での変数を隠れたスタックに保存し、 ブロックやサブルーチンや eval を抜けるときに戻すように動作します。 これは、呼ばれたサブルーチンもグローバル変数でなく、ローカル変数を 参照することを意味します。 そうしたければ、LIST に代入してローカル変数を初期化してもかまいません。 (初期値が特定の値として与えられていなければ、undefined 値として 生成されます。) 普通、これはサブルーチンのパラメータに名前をつけるのに使われます。 例: .nf .ne 13 sub RANGEVAL { local($min, $max, $thunk) = @_; local($result) = \'\'; local($i); # 多分 $thunk は $i を参照しています for ($i = $min; $i < $max; $i++) { $result .= eval $thunk; } $result; } .ne 6 if ($sw eq \'-v\') { # グローバルな配列でローカルな配列を初期化します local(@ARGV) = @ARGV; unshift(@ARGV,\'echo\'); system @ARGV; } # @ARGV が元に戻されます .ne 6 # 一時的に digits という連想配列に追加をしています。 if ($base12) { # (注意: これが効率的と言いたいわけではありません) local(%digits) = (%digits,'t',10,'e',11); do parse_num(); } .fi local() は実行時のコマンドで、ループ終了時に全部を一度に開放するまでは、 ループを通るたびに実行され、毎回スタックを消費していきます。 .Ip "localtime(EXPR)" 8 4 .Ip "localtime EXPR" 8 time 関数に返された時刻を、ローカルタイムゾーンとして解析された 9 要素の 配列に変換します。 通常次のように使われます: .nf .ne 3 .ie t \{\ ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); 'br\} .el \{\ ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); 'br\} .fi すべての配列要素は数字で、構造体 tm から直接得られたものです。 これにより $mon は 0.\|.11 の範囲で $wday は 0.\|.6 の範囲であることに なります。 EXPR を省略すると、localtime(time) を実行します。 .Ip "log(EXPR)" 8 4 .Ip "log EXPR" 8 EXPR の (底が .IR e の) 対数を返します。 EXPR を省略すると、$_ の log を返します。 .Ip "lstat(FILEHANDLE)" 8 6 .Ip "lstat FILEHANDLE" 8 .Ip "lstat(EXPR)" 8 .Ip "lstat SCALARVARIABLE" 8 stat() 関数と同じことを実行しますが、シンボリックリンクでは指している 先のファイルの代わりにシンボリックリンク自身の状態を返します。 シンボリックリンクが実装されていないシステムでは、通常の stat を 実行します。 .Ip "m/PATTERN/gio" 8 4 .Ip "/PATTERN/gio" 8 パターンマッチに合う文字列を検索し、真 (1) か偽 (\'\') を 返します。 =~ や !~ を介した文字列の指定がなければ、文字列 $_ が検索されます。 (=~ で指定された文字列は、左辺値である必要はありません。 式の評価結果でもかまいませんが、=~ はどちらかというと優先度が高いことを 覚えておいて下さい。) 正規表現のセクションを参照して下さい。 .Sp / が区切り文字である場合、始めの \*(L'm\*(R' は省略可能です。\*(L'm\*(R' が あると、英数字以外のどの文字でも区切りにできます。 これは、特に \*(L'/\*(R' を含む UNIX のパス名へのマッチに便利です。 最後の区切りの後にオプション文字 \*(L'i\*(R' が続くと、マッチングが 大文字小文字の区別なく行なわれます。 PATTERN は、スカラ変数への参照を含んでいてもよく、それはパターン検索 が評価される毎に挿入されます (パターンはリコンパイルされます) 。 ( $) と $| は文字列終端のテストに見えるため、挿入は行なわれません。) パターンを一度だけコンパイルさせたい場合は、後ろの区切り文字 の後に \*(L"o\*(R" を加えて下さい。 これにより、余分な実行時再コンパイルを避けられるので、挿入したい値が スクリプトの動いている間中、変わらないときには便利です。 PATTERN がヌル文字に評価されたときは、最後に成功した正規表現が代わりに 使われます。 .Sp 配列値が必要なコンテキストで使われると、パターンマッチはパターンの中で マッチした subexpression を括弧でくくったものすなわち、 ($1, $2, $3.\|.\|.) からなる配列を返します。 この場合、実際には $1, $2 等をセットは*せず*、 $+, $`, $&, $' もセットしません。 マッチが失敗すると、ヌル配列が返ります。 マッチが成功しても括弧がないと、配列値 (1) が返ります。 .Sp 例: .nf .ne 4 open(tty, \'/dev/tty\'); \|=~ \|/\|^y\|/i \|&& \|do foo(\|); # y なら foo を実行 if (/Version: \|*\|([0\-9.]*\|)\|/\|) { $version = $1; } next if m#^/usr/spool/uucp#; .ne 5 # 恵まれない人の grep $arg = shift; while (<>) { print if /$arg/o; # 一度だけコンパイル } if (($F1, $F2, $Etc) = ($foo =~ /^(\eS+)\es+(\eS+)\es*(.*)/)) .fi この最後の例は、$foo を最初の二語と残りに split し、三つのフィールド を $F1 、$F2 、$Etc に代入します。 どれかの変数が代入された場合、すなわちパターンがマッチした場合、 この条件は真となります。 .Sp \*(L"g\*(R" 修飾子は、グローバルパターンマッチの指定です\*(--つまり、 文字列の中でできるだけ多くのマッチを行ないます。 どのように振舞うかは、コンテキストに依存します。 配列のコンテキストでは、正規表現の中ですべての括弧にマッチした文字列の リストを返します。括弧がなければ、パターン全体を囲む括弧があるか のようにマッチした文字列すべてのリストを返します。 スカラのコンテキストでは、文字列を通してマッチする毎に*真*を返し、 マッチしなかったとき*偽*を返します。 (言いかえると、最後にテストした 場所を覚えていて、そこから再び検索を始めるということです。) 最後のマッチから文字列が変更されていないことを仮定しています。 マッチとマッチの間で文字列を変更することは、未定義な動作を引き起こす かもしれません。 (実際には substr()を使って、全文字列の長さを変えずにその場で変更する なら、できます。しかし、一般にはそういう変更は s///g を使うべきです。) 例: .nf # 配列のコンテキスト ($one,$five,$fifteen) = (\`uptime\` =~ /(\ed+\e.\ed+)/g); # スカラのコンテキスト $/ = ""; $* = 1; while ($paragraph = <>) { while ($paragraph =~ /[a-z][\'")]*[.!?]+[\'")]*\es/g) { $sentences++; } } print "$sentences\en"; .fi .Ip "mkdir(FILENAME,MODE)" 8 3 FILENAME で指定されたディレクトリを、(umask で修飾された) MODE で指定 されたパーミッションで作成します。 成功すると 1 を、失敗すると 0 を返し、$! (errno) をセットします。 .Ip "msgctl(ID,CMD,ARG)" 8 4 System V IPC 関数の msgctl を呼びます。 CMD が &IPC_STAT なら、ARG は 返された msqid_ds 構造を保持する変数でなければなりません。 ioctl のように、エラーのときは undefined 値を、0 のとき には "0 but true" を、でなければ実際の戻り値を返します。 .Ip "msgget(KEY,FLAGS)" 8 4 System V IPC 関数の msgget を呼びます。成功時はメッセージキュー ID を、 エラーが起これば undefined value を返します。 .Ip "msgsnd(ID,MSG,FLAGS)" 8 4 System V IPC 関数の msgsnd を呼び、メッセージ MSGS をメッセージキュー ID に送信します。 MSG は、pack("L", $type) で作られる long integer のメッセージ型で始めなければなりません。成功すれば真を、エラーが起こる と偽を返します。 .Ip "msgrcv(ID,VAR,SIZE,TYPE,FLAGS)" 8 4 System V IPC 関数 msgrcv を呼び、 メッセージキュー ID からメッセージを受け取り、 最大メッセージサイズ SIZE で変数 VAR に格納します。 メッセージを受け取ると、VAR に最初に格納されたものがメッセージ型 となり、VAR の最大長は、SIZE にメッセージ型のサイズを加えたものに なることに注意して下さい。 成功すると真を、エラーでは偽を返します。 .Ip "next LABEL" 8 8 .Ip "next" 8 .I next コマンドは、C の .I continue 文と同様に、ループの次の繰り返しを始めます。 .nf .ne 4 line: while () { next line if /\|^#/; # コメントを捨てます .\|.\|. } .fi 上の例で .I continue ブロックがあると、行が捨てられた場合でも実行されることを覚えておいて 下さい。 LABEL が省略されると、このコマンドは最も内側のループを続けます。 .Ip "oct(EXPR)" 8 4 .Ip "oct EXPR" 8 10 進数 EXPR を、8 進文字列にして返します。 (EXPRが 0x で始まる文字列なら、10 進の代わりに 16 進として変換します。) 以下は、10 進、8 進、16 進の標準的な記法を扱います。 .nf $val = oct($val) if $val =~ /^0/; .fi EXPR が省略されると、$_ を使います。 .Ip "open(FILEHANDLE,EXPR)" 8 8 .Ip "open(FILEHANDLE)" 8 .Ip "open FILEHANDLE" 8 EXPR で与えられたファイル名のファイルをオープンし、FILEHANDLE に結び つけます。 FILEHANDLE が式の場合、その値を実際にファイルハンドルが求める名前 として使います。 EXPR が省略されると、FILEHANDLE と同名のスカラ変数が保持する値が ファイル名となります。 ファイル名の前に \*(L"<\*(R" を付けるか、何も付けない場合、ファイルは 入力用にオープンされます。 ファイル名が \*(L">\*(R" で始まると、ファイルは出力用にオープンされます。 ファイル名が \*(L">>\*(R" で始まると、ファイルは追加書き込み用に オープンされます。 (\'>\' や \'<\' の前に \'+\' を付けると、ファイルを読み書き両用に できます。) ファイル名が \*(L"|\*(R" で始まると、ファイル名は出力がパイプされる コマンドと解釈され、ファイル名が \*(L"|\*(R" で終ると、入力が パイプされるコマンドと解釈されます。 (入出力共パイプするコマンドは必要がないでしょう。) \'\-\' をオープンすると .I STDIN を、\'>\-\' をオープンすると .IR STDOUT をオープンします。 open は成功したとき、0 でない値を、失敗したとき undefined 値を 返します。 open がパイプを含む場合、戻り値はサブプロセスの pid となります。 例: .nf .ne 3 $article = 100; open article || die "Can't find article $article: $!\en"; while (
) {\|.\|.\|. .ie t \{\ open(LOG, \'>>/usr/spool/news/twitlog\'\|); # (ログ保存) 'br\} .el \{\ open(LOG, \'>>/usr/spool/news/twitlog\'\|); # (ログ保存) 'br\} .ie t \{\ open(article, "caesar <$article |"\|); # 記事を decrypt 'br\} .el \{\ open(article, "caesar <$article |"\|); # 記事を decrypt 'br\} .ie t \{\ open(extract, "|sort >/tmp/Tmp$$"\|); # $$ は現在のプロセス 'br\} .el \{\ open(extract, "|sort >/tmp/Tmp$$"\|); # $$ は現在のプロセス 'br\} .ne 7 # 引数リストのファイルを、それがインクルードするものも # 含めて処理します foreach $file (@ARGV) { do process($file, \'fh00\'); # no pun intended } sub process { local($filename, $input) = @_; $input++; # 文字列インクリメント unless (open($input, $filename)) { print STDERR "Can't open $filename: $!\en"; return; } .ie t \{\ while (<$input>) { # 間接指定に注意 'br\} .el \{\ while (<$input>) { # 間接指定に注意 'br\} if (/^#include "(.*)"/) { do process($1, $input); next; } .\|.\|. # 続く } } .fi Bourne shell の慣習により、EXPR は \*(L">&\*(R" で始めるような指定も できます。その場合、文字列の残りはファイルハンドル (数字なら ファイルディスクリプタ) の名前と解釈され、dup して open します。 >>, <, +>, +>>, +< の後に & を使ってもかまいません。 指定するモードは、元のファイルハンドルのモードと一致していなくては なりません。 以下は、 .I STDOUT と .IR STDERR を保存し、リダイレクトを行なって、その後で書き戻します: .nf .ne 21 #!/usr/bin/perl open(SAVEOUT, ">&STDOUT"); open(SAVEERR, ">&STDERR"); open(STDOUT, ">foo.out") || die "Can't redirect stdout"; open(STDERR, ">&STDOUT") || die "Can't dup stdout"; select(STDERR); $| = 1; # バッファリングしません select(STDOUT); $| = 1; # バッファリングしません print STDOUT "stdout 1\en"; # これもサブプロセスで print STDERR "stderr 1\en"; # 動作します close(STDOUT); close(STDERR); open(STDOUT, ">&SAVEOUT"); open(STDERR, ">&SAVEERR"); print STDOUT "stdout 2\en"; print STDERR "stderr 2\en"; .fi コマンド \*(L"\-\*(R" でパイプをオープンする、すなわち \*(L"|\-\*(R" や \*(L"\-|\*(R" をオープンすると、暗黙のうちに fork され、open の 戻り値として親プロセスには、子プロセスの pid が返され、子プロセスには 0 が返されます。 (open が成功したかどうかは、defined($pid) を使って判断して下さい。) ファイルハンドルは、親にとって普通の挙動をしますが、子には .IR STDOUT / STDIN にパイプされたファイルハンドルの i/o となります。 子プロセスでファイルハンドルがオープンされず、\*(--新しく ファイルハンドルは、新しい .I STDIN から .IR STDOUT へのパイプとなります。 よく使われるのは、普通のパイプのオープンと同様、パイプコマンドの 実行状態をコントロールしたいとき、setuid されたプログラムを走らせるとき、 シェルコマンドでメタキャラクタのチェックをする必要がないときです。 次の二つは、それぞれある程度同等です: .nf .ne 5 open(FOO, "|tr \'[a\-z]\' \'[A\-Z]\'"); open(FOO, "|\-") || exec \'tr\', \'[a\-z]\', \'[A\-Z]\'; open(FOO, "cat \-n '$file'|"); open(FOO, "\-|") || exec \'cat\', \'\-n\', $file; .fi パイプされたファイルハンドルを明示的に close すると、親プロセスは 子プロセスが終了するのを待つことになり、$? に状態を返します。 fork を行う操作では、両方のプロセスでフラッシュされないバッファが そのまま残ることに注意して下さい。これは、二重出力を避けるために $| を セットした方が良いことを意味します。 .Sp open に渡されたファイル名は、前後の空白が除かれます。 意図的に変な文字を含むファイル名を持つファイルをオープンしたいときは、 前後の空白もこのように守ってやる必要があります: .nf .ne 2 $file =~ s#^(\es)#./$1#; open(FOO, "< $file\e0"); .fi .Ip "opendir(DIRHANDLE,EXPR)" 8 3 EXPR という名前のディレクトリを readdir(), telldir(), seekdir(), rewinddir(), closedir() で処理できるようにオープンします。 成功すると真を返します。 DIRHANDLE は、FILEHANDLE とは別個のそれ自身の名前空間を持ちます。 .Ip "ord(EXPR)" 8 4 .Ip "ord EXPR" 8 EXPR の最初の文字のアスキー値を数値で返します。 EXPR が省略されると、$_ を使います。 ''' Comments on f & d by gnb@melba.bby.oz.au 22/11/89 .Ip "pack(TEMPLATE,LIST)" 8 4 配列または値のリストを引数に取り、バイナリ構造体にパックし、 構造体を含む文字列を返します。 TEMPLATE は値の順序と型を与える文字のシークエンスで、以下のように なります: .nf A アスキー文字列(スペースが padding される) a アスキー文字列(ヌルが padding される) c signed char C unsigned char s signed short S unsigned short i signed integer I unsigned integer l signed long L unsigned long n short (\*(L"network\*(R" order) N long (\*(L"network\*(R" order) f 単精度浮動小数点 (native format) d 倍精度浮動小数点 (native format) p 文字列へのポインタ v short (\*(L"VAX\*(R" (little-endian) order) V long (\*(L"VAX\*(R" (little-endian) order) x null byte X Back up a byte @ 絶対位置にまでヌルで埋める u uuencode された文字列 b ビット文字列 (vec()のような昇順). B ビット文字列 (降順). h 16 進文字列 (低 nybble が先). H 16 進文字列 (高 nybble が先). .fi どの文字も繰り返し回数を表す数を続けることができます。 "a", "A", "b", "B", "h", "H" 以外の型では、pack 関数は LIST から回数を指定された数だけ値を取ります。 繰り返し数として * を使うと、残りすべての分だけ繰り返します。 "a" と "A" の型は値一つしか取りませんが、繰り返し指定を文字列長 として pack するので、ヌルや空白での padding が必要になります。 (unpack するときは、"A" は、後に続く空白を削りますが、"a" はしません。) 同様に、"b" と "B" フィールドは、指定したビット長を pack します。 "h" と "H" フィールドは、指定した長さの nybbles をパックします。 実数 (float と double) は、そのマシンの機械語フォーマットのみです。 浮動小数点フォーマット関係の多様性と標準の \*(L"network\*(R" 表現が 無いことから、交換することはできません。これは、 あるマシンで pack された浮動小数点データは、他のマシンでは、 たとえ両方が IEEE 浮動小数点数演算を行っていても (メモリ表現の endian は IEEE の仕様には無いから)、 読めないかもしれないということを意味します。 perl は、すべての数値計算を内部的には double を用い、 double -> float -> double という変換は精度を失うだろうということに 注意して下さい (すなわち、unpack("f",pack("f", $foo)) は一般に $foo にはなりません) 。 .br 例: .nf $foo = pack("cccc",65,66,67,68); # foo は "ABCD" $foo = pack("c4",65,66,67,68); # 上と同じ $foo = pack("ccxxcc",65,66,67,68); # foo は "AB\e0\e0CD" $foo = pack("s2",1,2); # little-endian の "\e1\e0\e2\e0" # big-endian の "\e0\e1\e0\e2" $foo = pack("a4","abcd","x","y","z"); # "abcd" $foo = pack("aaaa","abcd","x","y","z"); # "axyz" $foo = pack("a14","abcdefg"); # "abcdefg\e0\e0\e0\e0\e0\e0\e0" $foo = pack("i9pl", gmtime); # 実際の tm 構造体 (少なくとも私のシステムでは) sub bintodec { unpack("N", pack("B32", substr("0" x 32 . shift, -32))); } .fi 一般に unpack 関数でも同じテンプレートが使われます。 .Ip "pipe(READHANDLE,WRITEHANDLE)" 8 3 相当するシステムコールのように一対の接続されたパイプをオープンします。 パイプでつながったプロセスのループを設定するときは、注意深くしないと デッドロックを起こすことがあることに気をつけて下さい。 それに加えて、perl のパイプは標準入力のバッファリングを使うので、 アプリケーションに依っては、$| をセットして コマンド毎に WRITEHANDLE をフラッシュする必要があるかもしれません。 [perl バージョン 3.0 パッチレベル 9 以上が必要] .Ip "pop(ARRAY)" 8 .Ip "pop ARRAY" 8 6 配列の最後の値を取り出し、配列の長さを 1 だけ短くします。 .nf $tmp = $ARRAY[$#ARRAY\-\|\-]; .fi 同じ結果となります。 配列に要素がない場合は、undefined 値を返します。 .Ip "print(FILEHANDLE LIST)" 8 10 .Ip "print(LIST)" 8 .Ip "print FILEHANDLE LIST" 8 .Ip "print LIST" 8 .Ip "print" 8 文字列または、カンマ区切りの文字列のリストを表示します。 成功すると、0 以外を返します。 FILEHANDLE は、ファイルハンドルの名前を保持したスカラ変数名でも かまいません。これにより 1 レベルの間接指定ができます。 (注意: FILEHANDLE が変数で次のトークンが項の場合、+ を挿入するか 引数に括弧を付けないと、演算子として解釈の間違いをするかもしれません。) FILEHANDLE が省略されると、デフォルトで標準出力 (または最後に select された出力チャンネル\*(-- select()を参照して下さい) に出力します。 LIST が省略されると、$_ を .IR STDOUT に出力します。 デフォルト出力チャンネルを .I STDOUT 以外に設定するには、select 演算子を使って下さい。 print は LIST を取るので、LIST の中のものは何でも配列のコンテキストで 評価され、サブルーチン呼び出しなら配列のコンテキストで評価された式を 持つことになるのを覚えておきましょう。 また、print キーワードの後に左括弧を置くときは、対応する右括弧が print の引数の終りを示す \*(--すなわち + を挿入するか、括弧をすべての引数に付ける のでなければ、左括弧を置いてはいけません。 .Ip "printf(FILEHANDLE LIST)" 8 10 .Ip "printf(LIST)" 8 .Ip "printf FILEHANDLE LIST" 8 .Ip "printf LIST" 8 \*(L"print FILEHANDLE sprintf(LIST)\*(R" と同等です。 .Ip "push(ARRAY,LIST)" 8 7 ARRAY (@ は省略可能) をスタックとして扱い、LIST の値を ARRAY の終りに 追加します。 ARRAY の長さは、LIST の長さだけ増えます。 これは、以下と同じことになります。 .nf for $value (LIST) { $ARRAY[++$#ARRAY] = $value; } .fi が、より効率的です。 .Ip "q/STRING/" 8 5 .Ip "qq/STRING/" 8 .Ip "qx/STRING/" 8 これは、実際には関数ではありませんが、クォートされた文字列に バックスラッシュをたくさん置き過ぎるのを避けるための、単なる 簡略記法です。 q 演算子はシングルクォートを生成し、qq 演算子はダブルクォートを 生成します。 qx 演算子は、バッククォートを生成します。 英数字でない文字なら、改行を含めて何でも、/ の代わりに区切り文字 にできます。 区切りが ( か { なら、終了の区切りは、対応する ) か } になります。 (埋め込み文字としての } には通常通り \ が必要になります。) 例: .nf .ne 5 $foo = q!I said, "You said, \'She said it.\'"!; $bar = q(\'This is it.\'); $today = qx{ date }; $_ .= qq *** The previous line contains the naughty word "$&".\en if /(ibm|apple|awk)/; # :-) .fi .Ip "rand(EXPR)" 8 8 .Ip "rand EXPR" 8 .Ip "rand" 8 ランダムな 0 から EXPR までの小数点数を返します。 (EXPR は正でなければなりません。) EXPR が省略されると、0 から 1 の範囲の値が返されます。 srand() を参照して下さい。 .Ip "read(FILEHANDLE,SCALAR,LENGTH,OFFSET)" 8 5 .Ip "read(FILEHANDLE,SCALAR,LENGTH)" 8 5 指定された FILEHANDLE から、LENGTH バイトのデータを読み込み、変数 SCALAR に格納します。 実際に読み込めたバイト数を返し、エラーの場合は undef を返します。 SCALAR は実際に読み込まれた長さに合わせて、伸縮します。 読んだデータを文字列の始めでなく、他の場所に格納するために、OFFSET を 指定することもできます。 これは、実際には stdio の fread コールで実装されています。 本当の read システムコールを使うには、sysread を参照して下さい。 .Ip "readdir(DIRHANDLE)" 8 3 .Ip "readdir DIRHANDLE" 8 opendir() にオープンされたディレクトリ内の、次のディレクトリエントリを 返します。 配列のコンテキストの中で使うと、残りすべてのディレクトリエントリを 返します。 エントリが残っていない場合、スカラのコンテキストでは undefined が、 配列のコンテキストではヌルリストを返します。 .Ip "readlink(EXPR)" 8 6 .Ip "readlink EXPR" 8 シンボリックリンクが実装されていれば、シンボリックリンクの値を返します。 実装されていなければ、致命的エラーを返します。 システムエラーが起こったときは、undefined 値を返し、$! (errno) を セットします。 EXPR を省略すると、$_ を使います。 .Ip "recv(SOCKET,SCALAR,LEN,FLAGS)" 8 4 ソケットからメッセージを受け取ります。指定した SOCKET ファイルハンドル から、LENGTH バイトのデータを受け取り、変数 SCALAR に格納します。 sender のアドレスを返し、エラーの場合は undefined 値を返します。 SCALAR は、実際に読み込まれた長さに合わせて、伸縮します。 同名のシステムコールと同じフラグを用います。 .Ip "redo LABEL" 8 8 .Ip "redo" 8 .I redo コマンドは、条件を再評価することなしに、ループブロックのコマンドを 再開します。 .I continue ブロックがあっても実行されません。 LABEL が省略されると、最も内側のループを参照します。 通常このコマンドは、入力された内容について、自分自身をだますような プログラムで使われます: .nf .ne 16 # 単純化した Pascal のコメント除去 # (警告: 文字列中には { や } はないものと仮定しています) line: while () { while (s|\|({.*}.*\|){.*}|$1 \||) {} s|{.*}| \||; if (s|{.*| \||) { $front = $_; while () { if (\|/\|}/\|) { # コメント終了? s|^|$front{|; redo line; } } } print; } .fi .Ip "rename(OLDNAME,NEWNAME)" 8 2 ファイル名を変更します。 成功すると 1 を、失敗すると 0 を返します。 ファイルシステムの境界を越えては働きません。 .Ip "require(EXPR)" 8 6 .Ip "require EXPR" 8 .Ip "require" 8 EXPR か EXPR が与えられなければ $_ で指定された、ライブラリファイルを インクルードします。 以下のようなサブルーチンと同じ意味になります: .nf sub require { local($filename) = @_; return 1 if $INC{$filename}; local($realfilename,$result); ITER: { foreach $prefix (@INC) { $realfilename = "$prefix/$filename"; if (-f $realfilename) { $result = do $realfilename; last ITER; } } die "Can't find $filename in \e@INC"; } die $@ if $@; die "$filename did not return true value" unless $result; $INC{$filename} = $realfilename; $result; } .fi 同じ名前で指定されたファイルは、二度はインクルードされないことに 注意して下さい。 どの初期化コードの起動も成功したこと示すため、ファイルの最後の文で、 真を返さなければなりません。だから、慣習的にそういうファイルは、 必ず真を返すということが確かでなければ、\*(L"1;\*(R" で 終るようにします。 .Ip "reset(EXPR)" 8 6 .Ip "reset EXPR" 8 .Ip "reset" 8 一般にループの終りで変数をクリアするのに .I continue ブロックの中で使われ、再びそれが働くように ?? 検索をリセットします。 式は 1 文字ずつ分けてリストしたもの (ハイフンで範囲指定) として解釈されます。 それらの文字の一つで始まる変数や配列はみな初期状態にリセットされます。 式を省略すると、一度だけマッチする検索 (?pattern?) をリセットし、 再びマッチするようにします。 現パッケージ内の変数と検索のみをリセットします。 常に 1 を返します。 例: .nf .ne 3 reset \'X\'; \h'|2i'# すべての X 変数をリセットします reset \'a\-z\';\h'|2i'# 小文字の変数すべてをリセットします。 reset; \h'|2i'# ?? 検索をリセットします。 .fi 注意: ARGV や ENV を消してしまうため、\*(L"A\-Z\*(R" をリセットする のは勧められません。 .Sp dbm 連想配列に reset を使っても、dbm ファイルを変更しません。 (しかし、perl がキャッシュしたエントリは皆フラッシュするので、 dbm ファイルを共有している場合は、便利です。便利でないかもしれませんが。) .Ip "return LIST" 8 3 指定した値で、サブルーチンから返ります。 (サブルーチンは、自動的に最後に評価された式の値を返すことに 注意して下さい。 これは、好まれる方法です\*(--明示的な .I return の使用で、やや遅くなります。) .Ip "reverse(LIST)" 8 4 .Ip "reverse LIST" 8 配列のコンテキストでは、LIST の要素を逆順に並べた配列を返します。 スカラのコンテキストでは、LIST の最初の要素のバイト列を逆順にした 文字列を返します。 .Ip "rewinddir(DIRHANDLE)" 8 5 .Ip "rewinddir DIRHANDLE" 8 DIRHANDLE に関し、readdir() で読み始める現在位置を、 ディレクトリの先頭にセットします。 .Ip "rindex(STR,SUBSTR,POSITION)" 8 6 .Ip "rindex(STR,SUBSTR)" 8 4 STR 内で、SUBSTR が最後に現れる位置を返す他は、index と全く同じに 動作します。 POSITION が指定されると、その位置の前で最後に現れた位置を返します。 .Ip "rmdir(FILENAME)" 8 4 .Ip "rmdir FILENAME" 8 FILENAME で指定されたディレクトリが空なら消去します。 成功すると 1 を、失敗すると 0 を返し、$! (errno) をセットします。 FILENAME が省略されると、$_ を使います。 .Ip "s/PATTERN/REPLACEMENT/gieo" 8 3 パターンに合う文字列を検索し、見つかると置換テキストに置き換えて、 置換が行なわれた数を返します。 でなければ、偽 (0) を返します。 \*(L"g\*(R" はオプションです。もしあれば、マッチしたパターンはすべて 置換されることを意味します。 \*(L"i\*(R" もオプションです。もしあれば、マッチングは大文字小文字の 区別なく行なわれることを意味します。 \*(L"e\*(R" もオプションです。もしあれば、置換文字列は ダブルクォートで囲まれた文字列のようにというより、 式として評価されなければならないことを意味します。 英数字でない文字ならなんでも、/ に置き換えて区切り文字にできます。 シングルクォートが使われると、置換文字列の中で変数の挿入が 行なわれません (e 修飾子はこれに優先します)。 バッククォート ` が使われると、置換文字列はコマンドとして実行され、 その出力が実際の置換テキストとして使われることになります。 PATTERN が <>, () で区切られると、REPLACEMENT は、それ自身のクォートを 持ち、それは <>, () であっても、そうでなくても良いことになります。 例えば、s(foo)(bar) や s/bar/ のように。 =~ や !~ 演算子を介する文字列指定がされなかったときは、$_ 文字列が 検索、置換されます。 (=~ で指定された文字列は、スカラ変数、配列の要素、それらへの代入等で なくてはなりません。すなわち左辺値ということです。) パターンが、文字列の終りをテストする $ でなく、変数に見える $ を含む 場合は、その変数が実行時にパターンに挿入されます。 初回だけ変数が挿入されてコンパイルされるパターンを使いたいなら、 終りに \*(L"o\*(R" を付けて下さい。 PATTERN がヌル文字列に評価されたときは、代わりに最後に成功した正規表現 が使われます。 正規表現のセクションを参照して下さい。 例: .nf s/\|\e\|bgreen\e\|b/mauve/g; # wintergreen を変更しません $path \|=~ \|s|\|/usr/bin|\|/usr/local/bin|; s/Login: $foo/Login: $bar/; # 実行時パターン ($foo = $bar) =~ s/bar/foo/; $_ = \'abc123xyz\'; s/\ed+/$&*2/e; # \*(L'abc246xyz\*(R' になる s/\ed+/sprintf("%5d",$&)/e; # \*(L'abc 246xyz\*(R' になる s/\ew/$& x 2/eg; # \*(L'aabbcc 224466xxyyzz\*(R' になる s/\|([^ \|]*\|) *\|([^ \|]*\|)\|/\|$2 $1/; # 始めの2フィールドを交換 .fi (最後の例では \|\e\| の代わりに $ を使っていることに注意。 正規表現のセクションを参照して下さい。) .Ip "scalar(EXPR)" 8 3 EXPR を強制的にスカラのコンテキストで解釈させて、EXPR の値を返します。 .Ip "seek(FILEHANDLE,POSITION,WHENCE)" 8 3 FILEHANDLE のポインタを、丁度 stdio の fseek() のように任意の 位置にします。 FILEHANDLE は、ファイルハンドルの名前を与える式でもかまいません。 成功すると 1 を、失敗すると 0 を返します。 .Ip "seekdir(DIRHANDLE,POS)" 8 3 DIRHANDLE について readdir() の読む現在位置をセットします。 POS は、telldir() の返す値でなければなりません。 相当するシステムライブラリルーチン同様、directory compaction について は同じ注意が必要です。 .Ip "select(FILEHANDLE)" 8 3 .Ip "select" 8 3 現在 select されたファイルハンドルを返します。 FILEHANDLE を与えられると、出力用の現在のデフォルトファイルハンドルを セットします。 これには二つの効果があります。一つは、ファイルハンドルの無い .I write や .I print が、デフォルトでこの FILEHANDLE に行なわれるということです。 二つ目は、出力に関連する変数参照が、この出力チャンネルを参照する ということです。 例えば、form フォーマットの先頭を、一つ以上の出力チャンネルに セットしなければならないとき、次のようにすると良いでしょう: .nf .ne 4 select(REPORT1); $^ = \'report1_top\'; select(REPORT2); $^ = \'report2_top\'; .fi FILEHANDLE は、実際のファイルハンドルの名前を与える式でもかまいません。 このように: .nf $oldfh = select(STDERR); $| = 1; select($oldfh); .fi .Ip "select(RBITS,WBITS,EBITS,TIMEOUT)" 8 3 これは、ビットマスクを指定して select システムコールを呼び出しします。 ビットマスクは、以下のように fileno() や vec() を使って作成されます。 .nf $rin = $win = $ein = ''; vec($rin,fileno(STDIN),1) = 1; vec($win,fileno(STDOUT),1) = 1; $ein = $rin | $win; .fi たくさんのファイルハンドルを select したいときは、サブルーチンを書いた 方が良いかもしれません。 .nf sub fhbits { local(@fhlist) = split(' ',$_[0]); local($bits); for (@fhlist) { vec($bits,fileno($_),1) = 1; } $bits; } $rin = &fhbits('STDIN TTY SOCK'); .fi 通常の使い方は、 .nf ($nfound,$timeleft) = select($rout=$rin, $wout=$win, $eout=$ein, $timeout); また、何かが ready となるまでブロックしておくには、こうなります。 .ie t \{\ $nfound = select($rout=$rin, $wout=$win, $eout=$ein, undef); 'br\} .el \{\ $nfound = select($rout=$rin, $wout=$win, $eout=$ein, undef); 'br\} .fi ビットマスクはどれも undef にもできます。 TIMEOUT は秒で指定され、小数点数でもかまいません。 注意: すべての実装で $timeleft を返せるわけではありません。 できない場合、常に与えられた $timeout に等しい値の $timeleft を 返します。 .Ip "semctl(ID,SEMNUM,CMD,ARG)" 8 4 System V IPC 関数の semctl を呼び出します。 CMD が &IPC_STAT か &GETALL なら、ARG は返って来た semid_ds 構造体か、セマフォ値配列を 保持する変数でなければなりません。 ioctl 同様、エラーの場合 undefined 値が、0 の場合 "0 but true" が、 それ以外の場合実際の戻り値が返されます。 .Ip "semget(KEY,NSEMS,SIZE,FLAGS)" 8 4 System V IPC 関数 semget を呼び出します。セマフォ id を返し、エラーの 場合は undefined 値を返します。 .Ip "semop(KEY,OPSTRING)" 8 4 シグナルや wait のようなセマフォ操作を実行する System V IPC 関数 semop を呼び出します。 OPSTRING は、semop 構造体に pack された配列でなければなりません。 各 semop 構造体は \&'pack("sss", $semnum, $semop, $semflag)' で 生成できます。セマフォ操作の数は、OPSTRING の長さによります。 成功すると真を、エラーでは偽を返します。例として、以下のコードでは セマフォ id $semid のセマフォ $semnum を待ちます。 .nf $semop = pack("sss", $semnum, -1, 0); die "Semaphore trouble: $!\en" unless semop($semid, $semop); .fi セマフォにシグナルを送るには、"-1" を "1" にします。 .Ip "send(SOCKET,MSG,FLAGS,TO)" 8 4 .Ip "send(SOCKET,MSG,FLAGS)" 8 ソケットにメッセージを送ります。 同名のシステムコールと同じフラグを用います。 接続されていないソケットでは、送り先を TO として指定しなければ なりません。送った文字数を返します。エラーの場合は undefined 値を 返します。 .Ip "setpgrp(PID,PGRP)" 8 4 指定した PID のカレントプロセスグループをセットします。 PID は、 カレントプロセスでは 0 です。 setpgrp(2) が実装されていないマシンでは、致命的エラーとなります。 .Ip "setpriority(WHICH,WHO,PRIORITY)" 8 4 プロセス、プロセスグループ、ユーザのカレントプライオリティを セットします。 (setpriority(2) を参照して下さい。) setpriority(2) が実装されていないマシンでは、致命的エラーになります。 .Ip "setsockopt(SOCKET,LEVEL,OPTNAME,OPTVAL)" 8 3 リクエストされたソケットオプションをセットします。 エラーでは undefined を返します。 引数を渡したいので無ければ、OPTVAL は undef 値を指定しても かまいません。 .Ip "shift(ARRAY)" 8 6 .Ip "shift ARRAY" 8 .Ip "shift" 8 配列の最初の要素を配列から除き、その要素を返します。 配列は 1 だけ短くなり、他のすべての要素はずれます。 配列に要素がないときは、undefined 値を返します。 ARRAY を省略すると、メインプログラムでは @ARGV 配列を shift し、 サブルーチンでは @_ 配列を shift します。 (これは、辞書的に決められています) unshift(), push(), pop() を参照して下さい。 shift() と unshift() は、push() と pop() が配列の右端に行なうのと 同じことを、配列の左端で行ないます。 .Ip "shmctl(ID,CMD,ARG)" 8 4 System V IPC 関数 shmctl を呼び出します。 CMD が &IPC_STAT のとき、 ARG は、返された shmid_ds 構造体を保持する変数でなくてはなりません。 ioctl 同様の戻り値を返します。エラーでは undefined 値を、0 では "0 but true" を、それ以外では実際の値を返します。 .Ip "shmget(KEY,SIZE,FLAGS)" 8 4 System V IPC 関数 shmget を呼び出します。 共有メモリのセグメント id を返します。エラーでは、undefined 値を 返します。 .Ip "shmread(ID,VAR,POS,SIZE)" 8 4 .Ip "shmwrite(ID,STRING,POS,SIZE)" 8 Syste V の共有メモリセグメント ID を、位置 POS から始まる サイズ SIZE にて attach し、copy in/out し、detach することで、読み込み と書き込みを行ないます。 読み込み時、VAR は読まれたデータを保持する変数でなければ なりません。書き込み時に、STRING が長過ぎると、SIZE バイトだけが 使われます。STRING が短過ぎると、SIZE バイトを埋めるのにヌルが 書き込まれます。成功すると真を、エラーでは偽を返します。 .Ip "shutdown(SOCKET,HOW)" 8 3 ソケット接続を HOW で指示された流儀に従ってシャットダウンします。 同名のシステムコールと同様に HOW を解釈します。 .Ip "sin(EXPR)" 8 4 .Ip "sin EXPR" 8 EXPR (ラジアンで表現) のサインを返します。 EXPR を省略すると $_ のサインを取ります。 .Ip "sleep(EXPR)" 8 6 .Ip "sleep EXPR" 8 .Ip "sleep" 8 EXPR 秒間スクリプトを止めます。 EXPR がなければ永久に止めます。 プロセスに SIGALRM を送ることで、割り込まれます。 実際に sleep した秒数を返します。 sleep() は、しばしば alarm() を使って実装されているので、おそらく alarm() と sleep() は 混在させることはできないでしょう。 .Ip "socket(SOCKET,DOMAIN,TYPE,PROTOCOL)" 8 3 指定された種類のソケットをオープンして、ファイルハンドル SOCKET に 結びつけます。 DOMAIN, TYPE, PROTOCOL は、同名のシステムコールと同様に指定します。 perl ライブラリファイルから簡単に適当な値を得るには、h2ph を sys/soket.h に対して実行する必要があるかもしれません。 成功すると真を返します。 プロセス間通信のセクションの例を参照して下さい。 .Ip "socketpair(SOCKET1,SOCKET2,DOMAIN,TYPE,PROTOCOL)" 8 3 指定されたドメインの指定された型で、無名のソケットペアを生成します。 DOMAIN, TYPE, PROTOCOL は、同名のシステムコールと同じように指定します。 実装されていない場合は、致命的エラーとなります。 成功すると真を返します。 .Ip "sort(SUBROUTINE LIST)" 8 9 .Ip "sort(LIST)" 8 .Ip "sort SUBROUTINE LIST" 8 .Ip "sort BLOCK LIST" 8 .Ip "sort LIST" 8 LIST をソートし、ソート済みの配列値を返します。 存在しない配列値は、削られます。 SUBROUTINE や BLOCK が省略されると、標準的な文字の比較による順でソート します。 0 より小さい整数、0 、0 より大きい整数を返すような SUBROUTINE の名前 を指定すると、配列の要素の並べ方に従って順に並べ直します。 (<=> と cmp 演算子は、このようなルーチンでは非常に便利です) SUBROUTINE は、スカラ変数名でもかまいません。その値として使用する サブルーチンの名前が入っていれば良いのです。 SUBROUTINE 名の代わりに、BLOCK を指定して、 無名のインラインソートサブルーチンとして用いることもできます。 .Sp 効率を良くするため、通常のサブルーチン呼び出しコードをバイパスしています。 そのため、次のような影響があります。 サブルーチンは再帰的であってはならず、 比較される 2 要素は @_ を介してではなく、$a と $b を介して サブルーチンに渡されます。 (以下の例を参照して下さい。) これらは参照渡しなので、$a や $b を変更してはいけません。 .Sp 例: .nf .ne 2 # 辞書順のソート @articles = sort @files; .ne 2 # 同じものだが、明示的なソートルーチン @articles = sort {$a cmp $b} @files; .ne 2 # 同じものだが逆順 @articles = sort {$b cmp $a} @files; .ne 2 # 数値的に昇順でソート @articles = sort {$a <=> $b} @files; .ne 2 # 数値的に降順でソート @articles = sort {$b <=> $a} @files; .ne 5 # 明示的にサブルーチン名を使ったソート sub byage { $age{$a} <=> $age{$b}; # 整数と仮定 } @sortedclass = sort byage @class; .ne 9 sub reverse { $b cmp $a; } @harry = (\'dog\',\'cat\',\'x\',\'Cain\',\'Abel\'); @george = (\'gone\',\'chased\',\'yz\',\'Punished\',\'Axed\'); print sort @harry; # AbelCaincatdogx と出力 print sort reverse @harry; # xdogcatCainAbel と出力 print sort @george, \'to\', @harry; # AbelAxedCainPunishedcatchaseddoggonetoxyz と出力 .fi .Ip "splice(ARRAY,OFFSET,LENGTH,LIST)" 8 8 .Ip "splice(ARRAY,OFFSET,LENGTH)" 8 .Ip "splice(ARRAY,OFFSET)" 8 配列から OFFSET と LENGTH で指定された要素を除き、LIST の要素と 入れ替えます。 配列から除かれた要素を返します。 配列は必要に応じて伸縮されます。 LENGTH を省略すると、OFFSET から先はすべて除かれます。 以下は皆同等となります。 ($[ == 0 であると仮定した場合) .nf push(@a,$x,$y)\h'|3.5i'splice(@a,$#a+1,0,$x,$y) pop(@a)\h'|3.5i'splice(@a,-1) shift(@a)\h'|3.5i'splice(@a,0,1) unshift(@a,$x,$y)\h'|3.5i'splice(@a,0,0,$x,$y) $a[$x] = $y\h'|3.5i'splice(@a,$x,1,$y); 次の例では、配列長は配列の前に渡されると仮定しています: sub aeq { # compare two array values local(@a) = splice(@_,0,shift); local(@b) = splice(@_,0,shift); return 0 unless @a == @b; # 同じ長さ? while (@a) { return 0 if pop(@a) ne pop(@b); } return 1; } if (&aeq($len,@foo[1..$len],0+@bar,@bar)) { ... } .fi .Ip "split(/PATTERN/,EXPR,LIMIT)" 8 8 .Ip "split(/PATTERN/,EXPR)" 8 8 .Ip "split(/PATTERN/)" 8 .Ip "split" 8 文字列を文字列の配列に分けて、その配列を返します。 (配列のコンテキストではない場合、見つかったフィールドの数を返し、 split したものは @_ 配列に入れます。 (配列のコンテキストでは、パターン区切りとして ?? を使うことで強制的に @_ に split させられますが、それでも配列値を返します。)) EXPR を省略すると、$_ 文字列を split します。 PATTERN も省略すると、空白文字 (/[\ \et\en]+/) で split します。 PATTERN にマッチするものは何でもフィールドを分ける区切りと解釈されます。 (区切りは 1 文字より長くてもよいことに注意して下さい。) LIMIT が指定されると、それを越えない数に split されます (少ない場合も あります) 。 LIMIT が指定されないと、後に続くヌルフィールドは除かれます (pop()を使う人は良く覚えておいた方がよいでしょう) 。 ヌル文字にマッチするパターン (ヌルパターン // と混同しないで下さい。 // はヌル文字にマッチするパターンの一つにすぎません。) は、 マッチするすべての点で EXPR を一文字ずつに split します。 例えば: .nf print join(\':\', split(/ */, \'hi there\')); .fi は、\*(L'h:i:t:h:e:r:e\*(R' を出力します。 .Sp LIMIT パラメータは、行を部分的に split することに使われます。 .nf ($login, $passwd, $remainder) = split(\|/\|:\|/\|, $_, 3); .fi (リストに代入するとき、LIMIT が省略されていると perl は不必要な動作を 避けるためにリストの変数の数より一つ大きい LIMIT を与えます。 上記のリストでは LIMIT はデフォルトで 4 だったはずです。 時間に制限のあるアプリケーションでは、本当に必要な数以上のフィールドに は split しないようにすべきです。) .Sp PATTERN が括弧を含むときは、区切りとしてマッチする文字列により、 更に配列要素が作成されます。 .Sp split(/([,-])/,"1-10,20"); .Sp は以下の配列値を作ります。 .Sp (1,'-',10,',',20) .Sp パターン /PATTERN/ は、実行時に変わるパターンを指定する式で 置き換え可能です。 (実行時コンパイルを一回にしたければ、/$variable/o を使って下さい。) 特別なケースとして空白 (\'\ \') を指定すると、引数無しで split する 場合と同様ですが、先頭に空白があってもヌルフィールドは作られません。 つまり split(\'\ \') は、 .IR awk のデフォルトの動作をエミュレートすることができるわけで、split(/\ /) は先頭に空白があると、最初にその数だけヌルフィールドを作ります。 .Sp 例: .nf .ne 5 open(passwd, \'/etc/passwd\'); while () { .ie t \{\ ($login, $passwd, $uid, $gid, $gcos, $home, $shell) = split(\|/\|:\|/\|); 'br\} .el \{\ ($login, $passwd, $uid, $gid, $gcos, $home, $shell) = split(\|/\|:\|/\|); 'br\} .\|.\|. } .fi (上の例の $shell は改行文字を含みます。 chop() を参照して下さい。) .IR join を参照して下さい。 .Ip "sprintf(FORMAT,LIST)" 8 4 通常の printf 変換でフォーマットされる文字列を返します。 * 文字はサポートされていません。 .Ip "sqrt(EXPR)" 8 4 .Ip "sqrt EXPR" 8 EXPR の平方根を返します。 EXPR を省略すると、$_ の平方根を返します。 .Ip "srand(EXPR)" 8 4 .Ip "srand EXPR" 8 .I rand 演算子のために、乱数用の seed をセットします。 EXPR を省略すると、srand(time) を実行します。 .Ip "stat(FILEHANDLE)" 8 8 .Ip "stat FILEHANDLE" 8 .Ip "stat(EXPR)" 8 .Ip "stat SCALARVARIABLE" 8 EXPR という名前のファイルや FILEHANDLE でオープンされたファイルの 情報を示す 13 要素の配列を返します。 stat が失敗するとヌルリストを返します。 普通次のように使います: .nf .ne 3 ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size, $atime,$mtime,$ctime,$blksize,$blocks) = stat($filename); .fi stat に特殊ファイルハンドル _ を渡すと、stat は実行されず最後に 行なわれた stat やファイルテストで使われた stat 構造体の内容を 返します。 例: .nf .ne 3 if (-x $file && (($d) = stat(_)) && $d < 0) { print "$file is executable NFS file\en"; } .fi (この例は、NFS 下でデバイス番号が負になるマシンでのみ動作します。) .Ip "study(SCALAR)" 8 6 .Ip "study SCALAR" 8 .Ip "study" SCALAR (指定しなければ $_) について、それが次に変更される前に多くの パターンマッチを予想してあらかじめ行います。 検索をするパターンの性質や数、検索される文字列中の文字の出現頻度分布 によっては、時間を節約できるかもしれませんし、できないかもしれません。 \*(--多分これを使った場合と使わない場合で、実行時どちらが速いかを 比べてみたいでしょう。たくさんの短い定数文字列(より複雑なパターンの 定数部を含む)をスキャンするループで最も恩恵にあずかれるでしょう。 一度に一つの study しか効果がありません。\*(--別のスカラを study すると、先に study したものは \*(L"unstudied\*(R" となってしまいます。 (study の動作の仕方は次の通りです: 検索される文字列のすべての文字の リンクリストを作ります。そうすると例えば、どこに \*(L'k\*(R' の文字が あるかがすべてわかるわけです。いくつかの C のプログラムと英文から 作成された統計頻度表に基づき、各検索文字について、最も頻度が少ない 文字を選びます。この \*(L"頻度が少ない\*(R" 文字を調べるのです。) .Sp 次の例は、あるパターンを含むすべての行の前にインデックスを含むエントリを 挿入します: .nf .ne 8 while (<>) { study; print ".IX foo\en" if /\ebfoo\eb/; print ".IX bar\en" if /\ebbar\eb/; print ".IX blurfl\en" if /\ebblurfl\eb/; .\|.\|. print; } .fi /\ebfoo\eb/ を検索するとき、\*(L'f\*(R' は \*(L'o\*(R' よりも頻度が 少ないため、$_ の中で \*(L'f\*(R' を含む位置が探されます。 一般に、病的な場合を除いて、これは非常にうまくいきます。 唯一、最初の時点でリンクリストを作成するためにかかる以上の 時間を節約できるかが問題になります。 .Sp 実行するまで解らない文字列を検索しなければならない場合、全ループを 一つの文字列として解析し eval することで、すべてのパターンを毎回 再コンパイルするのを避けることができることを覚えておきましょう。 それに加えて全ファイルが 1 レコードになるように $/ を undef すると、 大変速くなり、fgrep のように特殊化したプログラムより速くなることも 多いです。 以下の例は、ファイルのリスト (@files) と単語のリスト (@words) を 検索し、マッチするファイル名を出力します: .nf .ne 12 $search = \'while (<>) { study;\'; foreach $word (@words) { $search .= "++\e$seen{\e$ARGV} if /\e\eb$word\e\eb/;\en"; } $search .= "}"; @ARGV = @files; undef $/; eval $search; # これは(メモリ不足で)泣きそう $/ = "\en"; # 普通の入力区切りに戻そう foreach $file (sort keys(%seen)) { print $file, "\en"; } .fi .Ip "substr(EXPR,OFFSET,LEN)" 8 2 .Ip "substr(EXPR,OFFSET)" 8 2 EXPR から部分文字列を取り出し、それを返します。 $[ をセットしない限り、最初の文字はオフセット 0 です。 OFFSET が負だと、文字列の終りから OFFSET だけ離れた位置から始めます。 LEN を省略すると、終端までのすべての文字列を返します。 substr() 関数は左辺値としても使えます。その場合 EXPR は左辺値 でなくてはなりません。 LEN より短いものを代入すると、文字列は短くなり、長いものを代入すると それを含められるように長くなります。 文字列を同じ長さに保つためには、sprintf() を使ってパディングまたは 切り捨てをしなければならないかもしれません。 .Ip "symlink(OLDFILE,NEWFILE)" 8 2 OLDFILE へのシンボリックリンク NEWFILE を作成します。 成功すると 1 を、失敗すると 0 を返します。 シンボリックリンクをサポートしないシステムでは、実行時に致命的エラー となります。 これをチェックするには、eval を使います: .nf $symlink_exists = (eval \'symlink("","");\', $@ eq \'\'); .fi .Ip "syscall(LIST)" 8 6 .Ip "syscall LIST" 8 リストの最初の要素で指定されたものに、残りの要素を引数として付けて、 システムコールを呼び出します。 実装されていないと致命的エラーとなります。 引数は次のように解釈されます: 与えられた引数が数字なら、引数は 整数として渡されます。そうでなければ、文字列へのポインタが渡されます。 結果が受け取れるように、書き込まれるべき文字列を十分長くしておくのは、 あなたの責任です。 数字の引数がリテラルでなく、それまで数字のコンテキストで解釈されて いなかったものなら、強制的に数字に見せるように、 0 を足す必要があるかもしれません。 .nf # h2ph を実行しておく必要があるかもしれません require 'syscall.ph'; syscall(&SYS_write, fileno(STDOUT), "hi there\en", 9); .fi .Ip "sysread(FILEHANDLE,SCALAR,LENGTH,OFFSET)" 8 5 .Ip "sysread(FILEHANDLE,SCALAR,LENGTH)" 8 5 システムコール read(2) を使って、指定した FILEHANDLE から LENGTH バイトのデータを読み込み、変数 SCALAR に格納します。 これは標準入出力を経由しないので、read と混在して使うと、 混乱するかもしれません。 実際に読み込まれたバイト数を返します。エラーの場合は undef を返します。 SCALAR は実際に読み込まれた長さによって伸縮します。 文字列の始めでなく途中にデータを格納するように、OFFSET を指定できます。 .Ip "system(LIST)" 8 6 .Ip "system LIST" 8 \*(L"exec LIST\*(R" と全く同じことを行ないますが、違いは最初に fork が 実行されて、親プロセスは子プロセスが終了するのを待つことです。 引数の処理は、引数の数によって変わることに注意して下さい。 戻り値は、wait() で返るプログラムの終了時ステータスになります。 実際の終了時ステータスを得るには、256 で割って下さい。 .IR exec を参照。 .Ip "syswrite(FILEHANDLE,SCALAR,LENGTH,OFFSET)" 8 5 .Ip "syswrite(FILEHANDLE,SCALAR,LENGTH)" 8 5 システムコール write(2) を使って、指定した FILEHANDLE に 変数 SCALAR から LENGTH バイトのデータを書き込みます。 これは標準入出力を経由しないので、print と混在して使うと、 混乱するかもしれません。 実際に書き込まれたバイト数を返します。エラーの場合は undef を返します。 OFFSET で、文字列の始めでなく途中からデータを読むように指定できます。 .Ip "tell(FILEHANDLE)" 8 6 .Ip "tell FILEHANDLE" 8 6 .Ip "tell" 8 FILEHANDLE の現在のファイル位置を返します。 FILEHANDLE は、実際のファイルハンドルの名前を与える式でもかまいません。 FILEHANDLE を省略すると、最後に読んだファイルを使います。 .Ip "telldir(DIRHANDLE)" 8 5 .Ip "telldir DIRHANDLE" 8 DIRHANDLE について readdir() ルーチンの現在の位置を返します。 この値は、ディレクトリの特定の位置をアクセスするために、seekdir() の 引数に使います。 相当するシステムライブラリルーチン同様、directory compaction について は同じ注意が必要です。 .Ip "time" 8 4 1970 年 1 月 1 日 00:00:00 (UTC) からの通算の秒数(閏秒無し)を返します。 gmtime() や localtime() に使うことができます。 .Ip "times" 8 4 現在のプロセスと子プロセスのユーザ、システム時間(秒)からなる 4 要素の 配列を返します。 .Sp ($user,$system,$cuser,$csystem) = times; .Sp .Ip "tr/SEARCHLIST/REPLACEMENTLIST/cds" 8 5 .Ip "y/SEARCHLIST/REPLACEMENTLIST/cds" 8 SEARCHLIST にある文字が出現したら、すべて REPLACEMENTLIST の相当する 文字に変換します。 変換または削除された文字の数を返します。 =~ や !~ 演算子を介した文字列の指定をしなかった場合、$_ 文字列が 変換されます。 (=~ で指定した文字列は、スカラ変数か配列の要素かそれらへの代入 でなければいけません。つまり、左辺値ということになります。) .I sed 信者のために、 .I tr の別名 .I y が用意されています。 SEARCHLIST が [], <>, () で区切られていると、REPLACEMENTLIST は、 それ自身のクォートを持ち、それは [], <>, () であっても、そうでなくても 良いことになります。例えば、 tr[A-Z][a-z] または tr(+-*/)/ABCD/ のようになります。 .Sp c 修飾子が指定されると、SEARCHLIST の文字セットは補間されます。 d 修飾子が指定されると、SEARCHLIST で指定された文字で REPLACEMENTLIST に対応するものがないものは皆、削除されます。 (これは、SEARCHLIST で見つかったものを何でも削除してしまう ような .I tr プログラムの挙動よりも、やや柔軟です。) s 修飾子が指定されると、変換されて同じ文字が続いたとき、 それを 1 文字に縮めます。 .Sp d 修飾子が使われると、REPLACEMENTLIST は常に指定された通りに 解釈されます。それ以外の場合で、REPLACEMENTLIST が SEARCHLIST より 短いときは、同じ長さになるまで最後の文字が繰り返されます。 REPLACEMENTLIST がヌルだと、SEARCHLIST がコピーされます。 これは、あるクラスに含まれる文字をカウントしたり、あるクラスの文字の 重複を縮めるときに便利です。 .Sp 例: .nf $ARGV[1] \|=~ \|y/A\-Z/a\-z/; \h'|3i'# 小文字に統一します $cnt = tr/*/*/; \h'|3i'# $_ の中の * を数えます $cnt = tr/0\-9//; \h'|3i'# $_ の中の数字を数えます tr/a\-zA\-Z//s; \h'|3i'# bookkeeper \-> bokeper ($HOST = $host) =~ tr/a\-z/A\-Z/; y/a\-zA\-Z/ /cs; \h'|3i'# アルファベット以外を 1 文字の空白にします tr/\e200\-\e377/\e0\-\e177/;\h'|3i'# 8 ビット目を消します .fi .Ip "truncate(FILEHANDLE,LENGTH)" 8 4 .Ip "truncate(EXPR,LENGTH)" 8 FILEHANDLE や EXPR の名前のファイルを指定した長さに切り詰めます。 システムに truncate が実装されていないと、致命的エラーになります。 .Ip "umask(EXPR)" 8 4 .Ip "umask EXPR" 8 .Ip "umask" 8 プロセスに umask をセットし、変更前の値を返します。 EXPR が省略されると、単に現在の umask を返します。 .Ip "undef(EXPR)" 8 6 .Ip "undef EXPR" 8 .Ip "undef" 8 EXPR の値を undefined とします。これは左辺値でなければなりません。 スカラ値、配列全体、サブルーチン名 (& を使う) の場合でのみ使えます。 (undef は、多分ほとんどの予約変数、dbm 配列値では期待する動作となりません。) undef は、常に undefined 値を返します。 EXPR を省略することもできます。その場合は何も undef されませんが、 それでも undefined 値を得ることができます。 例えば、サブルーチンから return するときです。 例: .nf .ne 6 undef $foo; undef $bar{'blurfl'}; undef @ary; undef %assoc; undef &mysub; return (wantarray ? () : undef) if $they_blew_it; .fi .Ip "unlink(LIST)" 8 4 .Ip "unlink LIST" 8 リストに含まれるファイルを削除します。 削除に成功したファイルの数を返します。 .nf .ne 2 $cnt = unlink \'a\', \'b\', \'c\'; unlink @goners; unlink <*.bak>; .fi 注意: unlink は、自分がスーパユーザで .IR perl に .B \-U フラグを付けている場合を除くとディレクトリを消去はしません。 これらの条件がそろったとしても、ディレクトリの unlink は システムにダメージを与えることがあるので、気をつけて下さい。 代わりに rmdir を使って下さい。 .Ip "unpack(TEMPLATE,EXPR)" 8 4 unpack は pack の逆を行ないます: 構造体を示す文字列を引数に取り、 それを配列値に出力し、配列値を返します。 (スカラのコンテキストでは、生成された最初の値のみを返します。) TEMPLATE は、pack 関数と全く同じフォーマットになります。 以下は、substr を実行するサブルーチンです: .nf .ne 4 sub substr { local($what,$where,$howmuch) = @_; unpack("x$where a$howmuch", $what); } .ne 3 そして、 sub ord { unpack("c",$_[0]); } .fi というのもあります。 更に、フィールドの前に %<数字> の添字を付けることにより、 項目そのものの代わりに、項目の<数字>ビットのチェックサムが欲しいと いう指定になります。 デフォルトは、16 ビットのチェックサムです。 次の例で、System V の sum プログラムと同じ数が計算されます: .nf .ne 4 while (<>) { $checksum += unpack("%16C*", $_); } $checksum %= 65536; .fi .Ip "unshift(ARRAY,LIST)" 8 4 視点によって、 .IR shift の逆、または .IR push の逆を行ないます。 LIST を配列の前に付け加え、新しい配列の要素の数を返します。 .nf unshift(ARGV, \'\-e\') unless $ARGV[0] =~ /^\-/; .fi .Ip "utime(LIST)" 8 2 .Ip "utime LIST" 8 2 リストの各ファイルのアクセス時刻と最終変更時刻を変えます。 リストの最初の二つの要素には、*数値*で表されたアクセス時刻と変更時刻が この順で入っていなければなりません。 変更に成功したファイルの数が返ります。 各ファイルの inode 変更時刻には現在時間がセットされます。 以下は、\*(L"touch\*(R" コマンドの例です: .nf .ne 3 #!/usr/bin/perl $now = time; utime $now, $now, @ARGV; .fi .Ip "values(ASSOC_ARRAY)" 8 6 .Ip "values ASSOC_ARRAY" 8 名前付き連想配列のすべての値からなる普通の配列を返します。 値は、見かけ上ランダムな順で返るように見えますが、同じ連想配列に対して、 keys() 関数 や each() 関数が生成するものと同じ順になります。 keys() と each() を参照して下さい。 .Ip "vec(EXPR,OFFSET,BITS)" 8 2 文字列を unsigned integer のベクトルとして扱い、指定した ビットフィールドの値を返します。 代入もできます。 BITSは、2 の累乗で 1 から 32 まででなければなりません。 .Sp vec() に生成されたベクトルは、論理演算子 |, &, ^ で操作することができ、 両方のオペランドが文字列のとき、 ビットベクトル演算をするものとみなされます。 古いプログラムを守るために、プログラム中に少なくとも一つの vec() が ないと、この解釈はなされません。 .Sp ビットベクトルを 0 や 1 の文字列や配列に変換するには、 以下を使って下さい: .nf $bits = unpack("b*", $vector); @bits = split(//, unpack("b*", $vector)); .fi ビットの正確な長さがわかるならば、* の代わりに使うことができます。 .Ip "wait" 8 6 子プロセスが終了するのを待ち、死んだプロセスの pid を返します。 子プロセスがないときは、-1 を返します。 終了時ステータスは $? に返されます。 .Ip "waitpid(PID,FLAGS)" 8 6 特定の子プロセスが終了するのを待ち、死んだプロセスの pid を返します。 そのような子プロセスがなければ、-1 を返します。 終了時ステータスは $? に返されます。 次のように書くと、 .nf require "sys/wait.h"; .\|.\|. waitpid(-1,&WNOHANG); .fi どのプロセスに対しても、non-blocking wait を実行できます。 non-blocking wait は、 .I waitpid (2) か、または .I wait4 (2) システムコールをサポートしているマシンでのみ使えます。 しかし、FLAGS 0 での 特殊な pid の wait はどこでも実装されています。 (perl は、終了したものの perl スクリプトには採り入れられていない プロセスのステータス値を覚えていることでシステムコールをエミュレート します。) .Ip "wantarray" 8 4 現在実行しているサブルーチンのコンテキストが配列値なら真を返します。 スカラのコンテキストに見えれば、偽を返します。 .nf return wantarray ? () : undef; .fi .Ip "warn(LIST)" 8 4 .Ip "warn LIST" 8 \*(L"die\*(R" と同じようなメッセージを標準エラー出力に出しますが、 終了しません。 .Ip "write(FILEHANDLE)" 8 6 .Ip "write(EXPR)" 8 .Ip "write" 8 指定したファイルに、関連付けられたフォーマットを使って、 フォーマットレコード (複数行も可) を書き込みます。 デフォルトで、フォーマットはファイルハンドルと同じ名前を持つものに なりますが、$~ 変数にフォーマットの名前を明示的に割り当てることで、 現在の出力チャンネル ( .IR select を参照して下さい) に対するフォーマットをセットしてもかまいません。 .Sp 最上位の form 生成は自動的に行なわれます: フォーマットされたレコードに対して、現在のページに十分な空きがない 場合、改頁が書き込まれて、次のページに移ります。 新しいページのヘッダには、特別なページ先頭フォーマットが使われ、 その後レコードが書き込まれます。 デフォルトでページ先頭フォーマットは、 ファイルハンドルの名前に \*(L"_TOP\*(R" を付け加えたものになりますが、 ファイルハンドルが select されているときは、$^ 変数に名前を割り当てる ことで、好きなフォーマットを動的にセットしてもかまいません。 現在のページに残っている行数は、変数 $- に保持されていますが、0 を セットすることがで、強制的に新しいページに移ることができます。 .Sp FILEHANDLE が指定されないと、現在のデフォルト出力チャンネルに 出力されます。デフォルト出力は、起動時 .I STDOUT ですが、 .I select 演算子で変更できます。 FILEHANDLE が EXPR のとき、その式が実行時に評価され、結果の文字列が FILEHANDLE の名前として用いられます。 フォーマットについての詳細は、後述のフォーマットのセクションを 参照して下さい。 .Sp write は read の*逆ではない*ことに注意して下さい。 .Sh "優先度" .I perl の演算子は次のような結合規則と優先度を持っています: .nf なし\h'|1i'print printf exec system sort reverse \h'1.5i'chmod chown kill unlink utime die return 左から右\h'|1i', 右から左\h'|1i'= += \-= *= など 右から左\h'|1i'?: なし\h'|1i'.\|. 左から右\h'|1i'|| 左から右\h'|1i'&& 左から右\h'|1i'| ^ 左から右\h'|1i'& なし\h'|1i'== != <=> eq ne cmp なし\h'|1i'< > <= >= lt gt le ge なし\h'|1i'chdir exit eval reset sleep rand umask なし\h'|1i'\-r \-w \-x など 左から右\h'|1i'<< >> 左から右\h'|1i'+ \- 左から右\h'|1i'* / % x 左から右\h'|1i'=~ !~ 右から左\h'|1i'! ~ 単項の- 右から左\h'|1i'** なし\h'|1i'++ \-\|\- 左から右\h'|1i'\*(L'(\*(R' .fi 始めの方で述べたように、リストを引数にする演算子 (print 他) や、 任意の単項演算子 (chdir 他) のすぐ後に同じ行の次のトークンとして 左括弧がある場合、括弧の中の演算子と引数は、丁度通常の ファンクションコールと同様に再優先とみなされます。 例: .nf chdir $foo || die;\h'|3i'# (chdir $foo) || die chdir($foo) || die;\h'|3i'# (chdir $foo) || die chdir ($foo) || die;\h'|3i'# (chdir $foo) || die chdir +($foo) || die;\h'|3i'# (chdir $foo) || die しかし、* は || よりも優先度が高いので: chdir $foo * 20;\h'|3i'# chdir ($foo * 20) chdir($foo) * 20;\h'|3i'# (chdir $foo) * 20 chdir ($foo) * 20;\h'|3i'# (chdir $foo) * 20 chdir +($foo) * 20;\h'|3i'# chdir ($foo * 20) rand 10 * 20;\h'|3i'# rand (10 * 20) rand(10) * 20;\h'|3i'# (rand 10) * 20 rand (10) * 20;\h'|3i'# (rand 10) * 20 rand +(10) * 20;\h'|3i'# rand (10 * 20) .fi 括弧がないと、print, sort, chmod といったリストを引数に持つ演算子は、 演算子の左側を見ているか右側を見ているかによって、非常に高くも 非常に低くもなります。 例えば、次の例で .nf @ary = (1, 3, sort 4, 2); print @ary; # 1324 を出力 .fi sort の右側のコンマは、sort の前に評価されますが、左側のコンマは、 後で評価されます。 言い換えると、リストを引数に取る演算子は、それに続くすべての引数を 拾う傾向にあり、前の式にしたがって単一の命令語のように振舞います。 括弧に注意深くなければいけないことを覚えておいて下さい: .nf .ne 3 # これらを評価すると、print を実行する前に exit します。 print($foo, exit); # 明らかにやりたいこととは違います print $foo, exit; # これもそう .ne 4 # これらは、exit を評価する前に print を実行します。 (print $foo), exit; # これはやりたいことです print($foo), exit; # これもそう print ($foo), exit; # さらにこれも また、これは print ($foo & 255) + 1, "\en"; .fi 多分一目見て期待する動作とは違うことを実行するでしょう。 .Sh "サブルーチン" サブルーチンは次のように宣言されます: .nf sub NAME BLOCK .fi .PP ルーチンに渡されたすべての引数は、配列 @_ に入ります。 これは、($_[0], $_[1], .\|.\|.) です。 配列 @_ はローカル配列ですが、その値は実際のスカラパラメータへの参照 になります。 サブルーチンの戻り値は、最後の式が評価されたときの値で、配列値にも スカラ値にもなり得ます。 また、リターン文は戻り値を指定してサブルーチンを抜けることにも 使われます。 ローカル変数を作成するには、 .I local 演算子を参照して下さい。 .PP サブルーチンは、 .I do 演算子かまたは & 演算子を使って呼ばれます。 .nf .ne 12 例: sub MAX { local($max) = pop(@_); foreach $foo (@_) { $max = $foo \|if \|$max < $foo; } $max; } .\|.\|. $bestday = &MAX($mon,$tue,$wed,$thu,$fri); .ne 21 例: # 行を取得し、空白で始まる行は # 続きの行として結合されます。 sub get_line { $thisline = $lookahead; line: while ($lookahead = ) { if ($lookahead \|=~ \|/\|^[ \^\e\|t]\|/\|) { $thisline \|.= \|$lookahead; } else { last line; } } $thisline; } $lookahead = ; # 最初の行を取得します while ($_ = do get_line(\|)) { .\|.\|. } .fi .nf .ne 6 引数に名前を付けるには、ローカルリストへの配列の代入を使います: sub maybeset { local($key, $value) = @_; $foo{$key} = $value unless $foo{$key}; } .fi 代入は値をコピーするので、これは参照呼び出しを値呼び出しに換える効果も あります。 .Sp サブルーチンは再帰的に呼び出せます。 サブルーチンが & の型を使って呼び出されるとき、引数リストは省略 できます。 省略されると、サブルーチンには @_ 配列がセットされません; その代わり、呼び出し時に @_ 配列は、サブルーチンには可視となります。 .nf do foo(1,2,3); # 三つの引数を渡します &foo(1,2,3); # 上と同じです do foo(); # ヌルリストを渡します &foo(); # 上と同じです &foo; # 引数を渡しません\*(--より効率的 .fi .Sh "参照渡し" サブルーチンへ配列の値を渡すのではなく、その名前を渡して、サブルーチン がローカルなコピーに対してではなくグローバルな配列を変更できるように したいときがあるでしょう。 perl では名前を持つすべてのオブジェクトに対して、その名前の前に * を つけて参照できます: *foo のように。 これが評価されると、ファイルハンドル、フォーマット、サブルーチンを含む、 その名前を持つすべてのオブジェクトを表すスカラ値となります。 local() 演算子に代入されたとき、その名前がそれに代入された * 値を 参照するようになります。 例: .nf sub doubleary { local(*someary) = @_; foreach $elem (@someary) { $elem *= 2; } } do doubleary(*foo); do doubleary(*bar); .fi *name への代入は今のところ local() の中でしか勧められません。 実際には *name への代入はどこででもできますが、それ以前の *name への 参照が永遠に尾を引くかもしれません。 これにより困ったことになるかもしれませんし、ならないかもしれません。 .Sp スカラはすでに参照渡しですが、このメカニズムを用いなくても、 関心のある $_[nnn] への明示的な参照を行うことで、スカラの引数を 変更することができます。 すべての要素をスカラで渡すことで、すべての配列の要素を変更することが できますが、push や pop 、配列のサイズの変更には * メカニズムを 使わなければなりません。 どんな場合でも、* メカニズムは多分、より効率が良いはずです。 .Sp *name 値は表示不能なバイナリデータを含むので、print の引数または printf や sprintf の %s 引数として使われると、表示を綺麗にするため '*name' と いう値になります。 .Sp 通常 LIST メカニズムはすべての配列値をマージしてしまって、個々の配列を 取り出せなくなってしまうので、配列を変更したくないとしても、 このメカニズムは一つの LIST にたくさんの配列を渡すのに便利です。 .Sh "正規表現" パターンマッチで使われるパターンは、バージョン 8 regexp ルーチンで供給 されているものと同じ正規表現です。 (実際、このルーチンは Henry Spencer の自由に再配布可能な再実装 V8 ルーチン から抜き取って使われています。) それに加えて、\ew は英数字 (\*(L"_\*(R" を含む) にマッチし、 \eW は非英数字にマッチします。 単語境界は \eb に、非単語境界は \eB に。 空白文字は \es に、非空白文字は \eS に。 数字は \ed に、非数字は \eD にマッチします。 \ew, \es, \ed はキャラクタクラスでも使えます。 また、\en, \er, \ef, \et, \eNNN は通常と同じ意味となります。 キャラクタクラスの中では、\eb は単語境界ではなく、 バックスペースを表します。 選択候補は、| で区切ります。 括弧構造 \|(\ .\|.\|.\ \|) を使うと、\e<数字> はその数字番目の 部分文字列にマッチします。 (パターンの外では、数字の前に \e の代わりに常に $ を用いなければ なりません。$<数字> (と $\`, $&, $\') の有効範囲は、閉じたブロックの 終りか、eval 文字列か、次のパターンマッチまでとなります。 \e<数字> 記述は、ときに現在のパターンの外に作用しますが、それに頼って はいけません。) 括弧は好きなだけたくさん使ってかまいません。9 個以上の部分文字列が あると、変数 $10, $11, ... が対応する部分文字列を参照します。 後方参照の前に少なくともその数の左括弧があると、パターンの中では、 \e10, \e11 等が部分文字列を後方参照します。 -そうでなければ (下位互換性のために) \e10 は \e010 のバックスペースと +そうでなければ (以前との互換性のために) \e10 は \e010 のバックスペースと 同じ、\e11 は \e011 のタブと同じというようになります。 (\e1 から \e9 は常に後方参照です。) .PP $+ は、最後の括弧でマッチしたものを返します。 $& は、マッチした文字列全体を返します。 ($0 が同じものを返していましたが、今は違います。) $\` はマッチした文字列の前の全文字列を返します。 $\' はマッチした文字列の後の全文字列を返します。 例: .nf s/\|^\|([^ \|]*\|) \|*([^ \|]*\|)\|/\|$2 $1\|/; # 最初の二語を交換 .ne 5 if (/\|Time: \|(.\|.\|):\|(.\|.\|):\|(.\|.\|)\|/\|) { $hours = $1; $minutes = $2; $seconds = $3; } .fi デフォルトで、^ 文字は文字列の先頭に、$ 文字は文字列の最後 (または最後の改行文字の前) にマッチすることが保障されており、 .I perl は文字列が一行しか含んでいないという仮定のもとで、 ある最適化を行なっています。 改行が埋め込まれた場合の ^ や $ の振舞いは、矛盾を生じるでしょう。 しかし、^ が文字列内の任意の改行の後に、$ が改行の前にマッチするよう な、文字列を複数行バッファとして使いたい場合があるかもしれません。 少々のオーバヘッドを覚悟すれば、変数 $* に 1 をセットすることで、 それができます。 $* を 0 に設定し直せば、 .I perl は元の動作に戻ります。 .PP 複数行の置換を用意にするために、. 文字は改行文字にはマッチしません (たとえ $* が 0 であっても) 。 特に次の例では、改行文字が $_ 文字列に残ります: .nf $_ = ; s/.*(some_string).*/$1/; 改行文字が要らないなら、次のどれかを試して下さい。 s/.*(some_string).*\en/$1/; s/.*(some_string)[^\e000]*/$1/; s/.*(some_string)(.|\en)*/$1/; chop; s/.*(some_string).*/$1/; /(some_string)/ && ($_ = $1); .fi 正規表現のどの要素の後でも中括弧で囲んだ数字を {n,m} の形で 置くことができ、n で要素がマッチする最小の回数を、m で最大の回数を 指定します。 {n} の形は、{n,n} と同等で、正確に n 回にマッチします。 {n,} の形は、n 回以上にマッチします。 (中括弧が他のコンテキストの中に出て来た場合は、通常の文字として 扱われます。) * 修飾子は {0,} と、+ 修飾子は {1,} と、? 修飾子は {0,1} と 同等となります。 n と m のサイズには制限がありませんが、大きい数字はより多くのメモリを 消費するでしょう。 .Sp .I perl では、 \eb, \ew, \en のような バックスラッシュのつくメタキャラクタは、すべて英数字であること に気がつかれることでしょう。 他の正規表現言語とは違って、英数字でないバックスラッシュシンボルは ありません。 従って、\e\e, \e(, \e), \e<, \e>, \e{, \e} というようなものは皆、 メタキャラクタではなく、文字そのものとして解釈されます。 これにより、メタキャラクタに含まれるのではないかと心配になるような 文字列をパターンに使って、引用することが容易になります。 英数字でないすべての文字の引用は、このようにします: .nf $pattern =~ s/(\eW)/\e\e$1/g; .fi .Sh "フォーマット" .I write 演算子で使う出力レコードフォーマットは、次のように 宣言します: .nf .ne 3 format NAME = FORMLIST . .fi NAME を省略すると、\*(L"STDOUT\*(R" フォーマットが定義されます。 FORMLIST は複数行から成り、各行は次の三つの型のいずれかとなります: .Ip 1. 4 コメント .Ip 2. 4 一つの出力行のフォーマットを示す \*(L"picture\*(R" 行 .Ip 3. 4 picture 行に値を与える引数行 .PP picture 行は、その中で値が置換される特定のフィールドを除けば、 見た目そのままに出力されます。 各 picture フィールドは、@ か ^ で始まります。 @ フィールド (配列の先頭の @ と混乱しないように) は通常の場合 で、^ フィールドは基本的な複数行テキストブロックを埋めるのに 使われます。 フィールドの長さは、<, >, | の繰り返しで埋めることで指定し、それぞれ 左寄せ、右寄せ、センタリングを意味します。 右寄せの別な形として、# 文字を (それに . を付けても良い) 数字フィールドの指定として使うこともできます。 (@ のかわりに ^ を使うと、undefined なフィールドが空白になります。) これらのフィールドに与えられた値が改行を含むと、改行までのテキスト のみが出力されます。 特殊フィールド @* は複数行の値の出力に使われます。 その行に書かれているのは @* だけでなくてはいけません。 .PP 値は、次の行で指定され、picture フィールドと同じ順となります。 値はカンマで区切られていなければなりません。 .PP @ でなく ^ で始まる picture フィールドは、特別な扱いになります。 指定する値は、テキスト文字列が入っているスカラ変数名でなければ いけません。 .I perl は、フィールドに入れられるだけたくさんのテキストを入れ、変数が次に参照 されるときに続きが出力されるように、文字列の先頭からそのテキストを削ります。 通常、テキストのブロックを出力するには、垂直なスタックの中にフィールド の一続きを入れて使います。 全部を入れるにはテキストが長すぎるとき、そうしたければ 最後のフィールドを .\|.\|. で終らせることもできます。 変数 $: を好きな文字のリストにすることで、テキストを分割する文字を 変えることができます。 .PP ^ フィールドを使うと、可変長のレコードを生成するので、テキストの フォーマットを短くしたいとき、チルダ (~) 文字を行のどこかに入れて 空行を抑制することができます。 (可読性を高めるため、普通はできれば行頭に入れるべきです。) チルダは出力時には空白に変換されます。 一つ目に続けて二つ目のチルダを書くと、行中のすべてのフィールドが なくなるまで、その行を繰り返します。 (いろいろな @ のフィールドを使うとき、与える式はいつも同じ値ではない方が 良いでしょう。) .PP 例: .nf .lg 0 .cs R 25 .ft C .ne 10 # /etc/passwd ファイルの形式 format STDOUT_TOP = \& Passwd File Name Login Office Uid Gid Home ------------------------------------------------------------------ \&. format STDOUT = @<<<<<<<<<<<<<<<<<< @||||||| @<<<<<<@>>>> @>>>> @<<<<<<<<<<<<<<<<< $name, $login, $office,$uid,$gid, $home \&. .ne 29 # バグレポート形式 format STDOUT_TOP = \& Bug Reports @<<<<<<<<<<<<<<<<<<<<<<< @||| @>>>>>>>>>>>>>>>>>>>>>>> $system, $%, $date ------------------------------------------------------------------ \&. format STDOUT = Subject: @<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< \& $subject Index: @<<<<<<<<<<<<<<<<<<<<<<<<<<<< ^<<<<<<<<<<<<<<<<<<<<<<<<<<<< \& $index, $description Priority: @<<<<<<<<<< Date: @<<<<<<< ^<<<<<<<<<<<<<<<<<<<<<<<<<<<< \& $priority, $date, $description From: @<<<<<<<<<<<<<<<<<<<<<<<<<<<<< ^<<<<<<<<<<<<<<<<<<<<<<<<<<<< \& $from, $description Assigned to: @<<<<<<<<<<<<<<<<<<<<<< ^<<<<<<<<<<<<<<<<<<<<<<<<<<<< \& $programmer, $description \&~ ^<<<<<<<<<<<<<<<<<<<<<<<<<<<< \& $description \&~ ^<<<<<<<<<<<<<<<<<<<<<<<<<<<< \& $description \&~ ^<<<<<<<<<<<<<<<<<<<<<<<<<<<< \& $description \&~ ^<<<<<<<<<<<<<<<<<<<<<<<<<<<< \& $description \&~ ^<<<<<<<<<<<<<<<<<<<<<<<... \& $description \&. .ft R .cs R .lg .fi 同じ出力チャンネルに対して、write を使って出力を混ぜることはできます が、$\- (ページの残り行数) を自分でいじらなければなりません。 .PP ほとんどが空白のフィールドがたくさんあるとき、 レコード間で reset 演算子を使うことを考えるべきです。 効率的であるというだけでなく、別のフィールドを加えてしまい、0 に し忘れてしまうというバグを防ぐことができます。 .Sh "プロセス間通信" perl の プロセス間通信(IPC)の能力は Berkeley のソケット機構に 基づいています。 ソケットが無ければ、このセクションは無視できます。 この呼び出しは、同名のシステムコールに相当しますが、 二つの理由で大抵引数は異なります。 一つ目は、perl のファイルハンドルは C ファイルディスクリプタとは 異なる動作をするということです。 二つ目は、perl は文字列の長さを知っているので、その情報を渡さなくても 良いということです。 以下がクライアントのサンプル (未テスト) です: .nf ($them,$port) = @ARGV; $port = 2345 unless $port; $them = 'localhost' unless $them; $SIG{'INT'} = 'dokill'; sub dokill { kill 9,$child if $child; } require 'sys/socket.ph'; $sockaddr = 'S n a4 x8'; chop($hostname = `hostname`); ($name, $aliases, $proto) = getprotobyname('tcp'); ($name, $aliases, $port) = getservbyname($port, 'tcp') unless $port =~ /^\ed+$/; .ie t \{\ ($name, $aliases, $type, $len, $thisaddr) = gethostbyname($hostname); 'br\} .el \{\ ($name, $aliases, $type, $len, $thisaddr) = gethostbyname($hostname); 'br\} ($name, $aliases, $type, $len, $thataddr) = gethostbyname($them); $this = pack($sockaddr, &AF_INET, 0, $thisaddr); $that = pack($sockaddr, &AF_INET, $port, $thataddr); socket(S, &PF_INET, &SOCK_STREAM, $proto) || die "socket: $!"; bind(S, $this) || die "bind: $!"; connect(S, $that) || die "connect: $!"; select(S); $| = 1; select(stdout); if ($child = fork) { while (<>) { print S; } sleep 3; do dokill(); } else { while () { print; } } .fi これがサーバ側です: .nf ($port) = @ARGV; $port = 2345 unless $port; require 'sys/socket.ph'; $sockaddr = 'S n a4 x8'; ($name, $aliases, $proto) = getprotobyname('tcp'); ($name, $aliases, $port) = getservbyname($port, 'tcp') unless $port =~ /^\ed+$/; $this = pack($sockaddr, &AF_INET, $port, "\e0\e0\e0\e0"); select(NS); $| = 1; select(stdout); socket(S, &PF_INET, &SOCK_STREAM, $proto) || die "socket: $!"; bind(S, $this) || die "bind: $!"; listen(S, 5) || die "connect: $!"; select(S); $| = 1; select(stdout); for (;;) { print "Listening again\en"; ($addr = accept(NS,S)) || die $!; print "accept ok\en"; ($af,$port,$inetaddr) = unpack($sockaddr,$addr); @inetaddr = unpack('C4',$inetaddr); print "$af $port @inetaddr\en"; while () { print; print NS; } } .fi .Sh "予約変数" 次の変数名は、 .IR perl にとって特別な意味があります。 これらのうち幾つかはアルファベットのシンボルにもしても良かったのですが、 reset \*(L"a\-zA\-Z\*(R" で予約変数まで消されてしまうようなことに したくなかったのです。 そのため、これらのおかしなシンボル名に悩まされなければならないでしょう。 そのうち多くは筋が通ったニーモニック (記憶方法) で、シェルのものと 類似になっています。 .Ip $_ 8 入力およびパターン検索のデフォルト。 次の組はそれぞれ同等です: .nf .ne 2 while (<>) {\|.\|.\|. # while の中でのみ同等 while ($_ = <>) {\|.\|.\|. .ne 2 /\|^Subject:/ $_ \|=~ \|/\|^Subject:/ .ne 2 y/a\-z/A\-Z/ $_ =~ y/a\-z/A\-Z/ .ne 2 chop chop($_) .fi (覚え方: 下線は実行されるとわかる。) .Ip $. 8 最後に読み込まれたファイルハンドルの現在の行番号。 読み出し専用。 明示的なファイルハンドルの close でのみ行番号がリセットされることを 覚えておいて下さい。 <> は明示的な close を行なわないので、ARGV ファイル全部を通して行番号 が増えていきます (eof の例を参照して下さい) 。 (覚え方: 多くのプログラムは . を現在行番号の意味で使う。) .Ip $/ 8 入力レコードの区切り文字。デフォルトは改行。 ヌル文字列にセットされると空行を区切りとして扱うことも含めて、 .IR awk の RS 変数と同じ働きをします。 複数文字にセットすると複数文字区切りにマッチさせることができます。 ファイルに空行が連続してあるとき、 この変数を "\en\en" にセットすると、"" にセットする場合と 少々異なる意味を持つことに注意して下さい。 "" にセットすると、二つかそれ以上の連続した空行を一つの空行として 扱います。 "\en\en" にセットすると、空行の後にたとえ改行文字が 続いていても、次の段落に含まれているものと盲目的に解釈されます。 (覚え方: / は詩をクォートするとき行境界の区切りとして使える。) .Ip $, 8 print 演算子のための出力フィールド区切り文字。 通常は、print 演算子は単にカンマ区切りで指定したフィールドを 出力します。より .IR awk に似た挙動をさせるためには、フィールド間に出力する文字を 指定する .IR awk の OFS 変数と同じものを、この変数をセットして下さい。 (覚え方: print文に , があるとき出力すべきもの。) .Ip $"" 8 $, と似ていますが、この変数の異なる点は、"" で囲まれた 文字列 (または同様な挿入文字) に挿入される配列値に適用されることです。 デフォルトは空白文字です。 (覚え方: これは明白。) .Ip $\e 8 print 演算子の出力レコードセパレータ文字。 通常 print 演算子は、後に改行やレコードセパレータ文字を続いていないと 推定して、単にカンマ区切りの指定フィールドを出力します。 より .IR awk に似た挙動をさせるためには、print の終りに出力する文字を指定する .IR awk の ORS 変数と同じものをこの変数にセットして下さい。 (覚え方: print の終りに \en を加える代わりに $\e をセット。) / にも似ていますが、 .IR perl から \*(L"得る\*(R" ものです。) .Ip $# 8 数字の出力のための出力フォーマット。 この変数は .IR awk の OFMT 変数を半分だけ受け継いでいます。 しかし .I awk と .I perl では、実際に何が数字であるかという概念の異なることがしばしばあります。 初期値も、%.6g でなく %.20g ですので、 .IR awk の値を得るには、明示的に $# をセットする必要があります。 (覚え方: # は数字の記号。) .Ip $% 8 現在 select されている出力チャンネルの現在のページ番号。 (覚え方: % は nroff におけるページ番号。) .Ip $= 8 現在 select されている出力チャンネルの現在のページ長 (出力可能行) 。 デフォルトは 60 。 (覚え方: = は平行線。) .Ip $\- 8 現在 select されている出力チャンネルのページの残り行数。 (覚え方: 1 ページの行数 \- 出力済み行数) .Ip $~ 8 現在 select されている出力チャンネルの現在のレポートフォーマット名。 デフォルトは、ファイルハンドル名。 (覚え方: $^ の仲間。) .Ip $^ 8 現在 select されている出力チャンネルの現在のページ先頭フォーマット名。 デフォルトは、ファイルハンドル名に \*(L"_TOP\*(R" を加えたもの。 (覚え方: 先頭ページを指す。) .Ip $| 8 0 でない値をセットすると、現在 select されている出力チャンネルに write や print が行なわれる毎にフラッシュします。 デフォルトは 0 。 通常 .I STDOUT は、端末に出力するときは行バッファが使われ、それ以外では ブロックバッファが使われることに注意して下さい。 この変数をセットするのは、 .I perl スクリプトを rsh の基で走らせている時等、 パイプに出力している時に、 出力が起こる度に確認したい場合に便利です。 (覚え方: パイプを常に動かしておきたい。) .Ip $$ 8 .I perl が走らせているスクリプトのプロセス番号。 (覚え方: シェルと同じ。) .Ip $? 8 最後に close したパイプや (\`\`) コマンドや .I system 演算子の戻り値。 これは、wait() システムコールが返すステータスなので、サブプロセスの 終了値は実際は ($? >> 8) です。 プロセスを終了させたシグナルがあった場合、$? & 255 は どのシグナルであるか、dump された core があるかどうかを返します。 (覚え方: sh や ksh と同じ。) .Ip $& 8 4 最後に成功したパターンマッチでマッチした文字列。 (ブロック内や現在のブロックで閉じた eval でのマッチは含まれません。) (覚え方: あるエディタの & と同じ。) .Ip $\` 8 4 最後にパターンマッチに成功したパターンの前にある文字列。 (ブロック内や現在のブロックで閉じた eval でのマッチは含まれません。) (覚え方: \` は大抵クォートされた文字列の前。) .Ip $\' 8 4 最後にパターンマッチに成功したパターンの後ろにある文字列。 (ブロック内や現在のブロックで閉じた eval でのマッチは含まれません。) (覚え方: \' は大抵クォートされた文字列の後。) 例: .nf .ne 3 $_ = \'abcdefghi\'; /def/; print "$\`:$&:$\'\en"; # abc:def:ghi を出力 .fi .Ip $+ 8 4 最後に検索したパターンの最後の括弧にマッチします。 これは、複数候補のパターンマッチでどちらにマッチするかわからない ときに便利です。 例: .nf /Version: \|(.*\|)|Revision: \|(.*\|)\|/ \|&& \|($rev = $+); .fi (覚え方: 正で、前方を見ること。) .Ip $* 8 2 文字列内で、複数行のマッチを行なうとき 1 をセットし、 パターンマッチの最適化の目的で、単一行を含む文字列であると .I perl に決め打ちにさせるときに 0 とします。 $* が 0 のときに複数の改行を含む文字列のパターンマッチをすると、 混乱した結果となります。 デフォルトは 0 。 (覚え方: * は複数のものにマッチする。) この変数は、^ や $ の解釈に影響するだけであるということに 注意して下さい。 改行のリテラルは、when $* == 0 としても検索できます。 .Ip $0 8 .I perl 起動したスクリプトのファイル名を保持しています。 $0 修飾子への代入は、ps(1) プログラムの引数の部分を参照して下さい。 (覚え方: sh や ksh と同じ) .Ip $<数字> 8 最後に行なったパターンマッチで対応する数字番目の括弧のサブパターン。 入れ子になったブロック内で既に終了したパターンマッチの数は含まれません。 (覚え方: \e数字と同じ。) .Ip $[ 8 2 配列中の最初の要素や部分文字列の最初の文字の添字。 デフォルトは 0 ですが、index() や substr() 関数の 添字のつけ方や評価に関して、 .I perl を .I awk (や Fortran) の動作にさせるには、この変数に 1 をセットすることでできます。 (覚え方: [ は添字の始まり。) .Ip $] 8 2 \*(L"perl -v\*(R" で出力される文字列。 これは、perl インタープリタが正しいバージョンの範囲でスクリプトを 実行しているかどうかを決めるために、スクリプトの始めの方で使われます。 数値のコンテキストで使われると、バージョン + パッチレベル / 1000 を 返します。 例: .nf .ne 8 # getcがつかえるかどうかを調べます ($version,$patchlevel) = $] =~ /(\ed+\e.\ed+).*\enPatch level: (\ed+)/; print STDERR "(No filename completion available.)\en" if $version * 1000 + $patchlevel < 2016; また、数値で使われると、 warn "No checksumming!\en" if $] < 3.019; .fi (覚え方: このバージョンの perl は right(正しい、右) 括弧に入ってるか? ) .Ip $; 8 2 多次元配列エミュレーションの際の添字の区切り。 連想配列の要素を次のように参照するとき、 .nf $foo{$a,$b,$c} 実際には $foo{join($;, $a, $b, $c)} を意味しますが、 @foo{$a,$b,$c} # スライス\*(--@ に注意 と書いてはいけません。 ($foo{$a},$foo{$b},$foo{$c}) .fi を意味することになってしまうからです。 デフォルトは "\e034" で、 .IR awk の SUBSEP と同じです。 キーとしてバイナリデータを使うと、$; として安全な値はないだろうという ことに気をつけて下さい。 (覚え方: カンマ (文法上添字の区切り) はセミコロンの半分。 これは、ちょっとひどいね。でも、$, は他のもっと重要なことに 取られているので。) .Ip $! 8 2 数値のコンテキストで使うと、通常の警告の文字列と共に errono の 現在の値を返します。 (これは、システムエラーのような特別なエラーを除くと、$! の値に 依存した動作をさせてはいけないということを意味します。) 文字列のコンテキストで使うと、相当するシステムエラー文字列を返します。 errno をセットするために $! に代入することができます。 例えば、エラー番号 n に対して $! が文字列を返したいときや、 die 演算子に終了値をセットしたいときなどです。 (覚え方: 一体何が爆発したの? ) .Ip $@ 8 2 最後に評価したコマンドからくる perl の文法エラーメッセージ。 ヌルなら、最後の評価が、正常に解析、実行されたことになります (起動された演算は普通の形で失敗したかもしれません) 。 (覚え方: 文法エラーはどこに \*(L"アット (at where)\*(R" ?) .Ip $< 8 2 現在のプロセスの実 uid 。 (覚え方: setuid で走らせているとき、*どこから* きた uid か。) .Ip $> 8 2 現在のプロセスの実効 uid 。 例: .nf .ne 2 $< = $>; # 実効 uid に実 uid をセットします ($<,$>) = ($>,$<); # 実 uid と実効 uid を取り換えます .fi (覚え方: setuid で走らせているとき、*行く先の* uid 。) 注意: $< と $> は setreuid() をサポートしているマシンでだけ 交換できます。 .Ip $( 8 2 現在のプロセスの実 gid 。 同時に複数グループのメンバとなることをサポートしたマシンで、 属しているグループの空白区切りのリストが得られます。 最初の数は getgid() の返すもので、残りが getgroups() の返すものです。 残りの中には最初の数値と同じものも含まれているかもしれません。 (覚え方: 括弧は GROUP に使われる。 setgid スクリプトを走らせているとき、 実 gid は LEFT(残っている、左) のグループ。) .Ip $) 8 2 現在のプロセスの実効 gid 。 同時に複数グループのメンバとなることをサポートしたマシンで、 属しているグループの空白区切りのリストが得られます。 最初の数は getegid() の返すもので、残りが getgroups() の返すものです。 残りの中には最初の数値と同じものも含まれているかもしれません。 (覚え方: 括弧は GROUP に使われる。 setgid スクリプトを走らせているとき、 実効 gid はあなたの RIGHT(正しい、右の)グループ。) .Sp 注意: $<, $>, $(, $) は、相当する set[re][ug]id() ルーチンを サポートしているマシンでだけセットできます。 $( と $) は setregid() をサポートしているマシンでだけ交換できます。 .Ip $: 8 2 format の (^ で始まる) 継続フィールドを埋めるように文字列を分ける 際の直前の文字列セット。 デフォルトは "\ \en-" で、空白やハイフンで分けられます。 (覚え方: 詩では \*(L"コロン\*(R" は行の一部) .Ip $^D 8 2 デバッグフラグの現在の値。 (覚え方: .B \-D スイッチの値。) .Ip $^F 8 2 最大システムファイルディスクリプタ数。通常は 2 。 システムファイルディスクリプタは、子プロセスに渡されますが、 それより数字が上のファイルディスクリプタは渡されません。 open する間は、たとえ open に失敗したとしても、 システムファイルディスクリプタは保存されます。 open が試みられる前に、通常のディスクリプタは close されます。 .Ip $^I 8 2 ファイルをその場で変更する場合の拡張子の値。 その場で変更できないようにするには、この変数を undef します。 (覚え方: .B \-i スイッチの値) .Ip $^L 8 2 改ページするために出力するフォーマット。デフォルトは \ef です。 .Ip $^P 8 2 デバッガが、自分自身をデバッグしないためにクリアする内部フラグ。 これをクリアしておくと、デバッグを不可能にさせられると考えられます。 .Ip $^T 8 2 スクリプトが走り始めた時刻を、epoch からの秒で保持します。 .B \-M , .B \-A , .B \-C ファイルテストで返された値は、この変数の値に基づいています。 .Ip $^W 8 2 警告スイッチの現在の値。 (覚え方: .B \-w スイッチに関係する。) .Ip $^X 8 2 argv[0] から来る、起動された perl 自身の名前。 .Ip $ARGV 8 3 <> から読み込んでいるとき、読み込み中のファイル名を保持します。 .Ip @ARGV 8 3 配列 ARGV は、スクリプトに渡されたコマンドライン引数を保持します。 $ARGV[0] はコマンド名ではなく、最初の引数なので、$#ARGV は一般に 引数の数 -1 です。 コマンド名については、$0 を参照して下さい。 .Ip @INC 8 3 配列 INC は、 .I perl スクリプトが \*(L"do EXPR\*(R" や \*(L"require\*(R" で評価されるときに 探されるべきディレクトリのリストを保持します。 初期値として、 .B \-I コマンドラインスイッチの引数、 これに続きデフォルトの .I perl ライブラリ (おそらく \*(L"/usr/share/perl\*(R")、 これに続きカレントディレクトリを示す \*(L".\*(R" です。 .Ip %INC 8 3 連想配列 INC は、\*(L"do\*(R" や \*(L"require\*(R" を介してインクルー ドされる各ファイル名のためのエントリを含んでいます。 キーは、指定したファイル名で、値は実際にファイルが見つかった 位置の値です。 この配列は、\*(L"require\*(R" コマンドが与えるファイルが既に インクルード済みかどうかを決めるのに使われます。 .Ip $ENV{expr} 8 2 連想配列 ENV は、現在の環境変数を保持しています。 ENV へ値を設定すると、子プロセスの環境が変わります。 .Ip $SIG{expr} 8 2 連想配列 SIG は、各シグナルハンドラをセットするのに使われます。 例: .nf .ne 12 sub handler { # 第一引数はシグナル名 local($sig) = @_; print "Caught a SIG$sig\-\|\-shutting down\en"; close(LOG); exit(0); } $SIG{\'INT\'} = \'handler\'; $SIG{\'QUIT\'} = \'handler\'; .\|.\|. $SIG{\'INT\'} = \'DEFAULT\'; # デフォルト動作に戻す $SIG{\'QUIT\'} = \'IGNORE\'; # SIGQUIT を無視する .fi SIG 配列は、perl スクリプトで実際にシグナル用にセットされた値を 保持しています。 .Sh "パッケージ" perl は、パッケージ間で異なる名前空間持つメカニズムを用意しており、 各々の変数がぶつからないように、パッケージを守っています。 デフォルトで、perl スクリプトはパッケージ \*(L"main\*(R" として コンパイルを始めます。 .I package 宣言を使うことによって、名前空間を切り替えることができます。 パッケージ宣言の有効範囲は、宣言それ自身から、閉じたブロックの終端まで です (local() 演算子と同じ有効範囲) 。 普通 \*(L"require\*(R" 演算子によりインクルードされたファイルの中の 最初の宣言として使われます。 複数箇所で同一パッケージに入ることが出来ます; ブロック中でコンパイラがどのシンボルテーブルを使うかに影響するだけです。 他のパッケージの変数やファイルハンドルは、識別子の前にパッケージ名と シングルクォートを付けることで、参照できます。 パッケージ名がヌルの場合、\*(L"main\*(R" と解釈されます。 .PP 文字で始まる識別子は、パッケージシンボルテーブルに保存されます。 それ以外のすべてのシンボルは、パッケージ \*(L"main\*(R" に保持されます。 更に、識別子 STDIN, STDOUT, STDERR, ARGV, ARGVOUT, ENV, INC, SIG は、 たとえ組み込みの変数、関数と異なる目的で使われたとしても、 強制的にパッケージ \*(L"main\*(R" に属するものとして扱われます。 仮に、\*(L"m\*(R", \*(L"s\*(R", \*(L"y\*(R" と呼ばれるパッケージを 持っていたとすると、パターンマッチ、代入、変換として解釈されるので、 識別子を適した形で使うことができないことに注意しましょう。 .PP eval された文字列は、eval がコンパイルされたパッケージ内で コンパイルされます。 (しかし、$SIG{} への代入は、main パッケージで指定された シグナルハンドラと解釈されます。パッケージ内でシグナルハンドラを 持ちたい場合、シグナルハンドラ名を適切に指定して下さい。) 例えば、perl ライブラリ内の perldb.pl を調べてみましょう。 これは始めに DB パッケージに切り替わり、デバッガがデバッグしようとして いるスクリプト内の変数を変更しないようになっています。 しかし、いろいろな時点で、main パッケージのコンテキストのいろいろな 式を評価するために、これは main パッケージに一時的に戻って来ています。 .PP パッケージのシンボルテーブルは、パッケージ名の前に下線のついた連想配列に 蓄えられることになります。 連想配列の各エントリの値は、*name 表記を使うときに参照しようと しているものになります。 実際、次の例は同じ効果 (もちろん main パッケージの場合) がありますが、 最初のものの方がコンパイル時にシンボルテーブルを見るので、 より効率が良くなります: .nf .ne 2 local(*foo) = *bar; local($_main{'foo'}) = $_main{'bar'}; .fi 例えば、以下によりパッケージ内のすべての変数を出力できます。 これは perl ライブラリの dumpvar.pl から取ってます: .nf .ne 11 package dumpvar; sub main'dumpvar { \& ($package) = @_; \& local(*stab) = eval("*_$package"); \& while (($key,$val) = each(%stab)) { \& { \& local(*entry) = $val; \& if (defined $entry) { \& print "\e$$key = '$entry'\en"; \& } .ne 7 \& if (defined @entry) { \& print "\e@$key = (\en"; \& foreach $num ($[ .. $#entry) { \& print " $num\et'",$entry[$num],"'\en"; \& } \& print ")\en"; \& } .ne 10 \& if ($key ne "_$package" && defined %entry) { \& print "\e%$key = (\en"; \& foreach $key (sort keys(%entry)) { \& print " $key\et'",$entry{$key},"'\en"; \& } \& print ")\en"; \& } \& } \& } } .fi たとえサブルーチンがパッケージ dumpvar でコンパイルされるとしても、 サブルーチン名がパッケージ \*(L"main\*(R" に挿入されるように、 サブルーチン名の前にパッケージ名をつけなければならないことに注意して 下さい。 .Sh "スタイル" 各々のプログラマは、フォーマットに関してもちろん自分自身の好みが あるでしょうが、自分のプログラムを読み易くするための一般的な ガイドラインがあります。 .Ip 1. 4 4 あることを特別な方法で*できる*からといって、そうしなければならない ということはありません。 .I perl は、一つのことをするときに、幾つかの方法があるように設計されている ので、最も読み易いものを選ぶように考えて下さい。 例えば open(FOO,$foo) || die "Can't open $foo: $!"; は、 die "Can't open $foo: $!" unless open(FOO,$foo); よりも良いです。なぜなら、後者の方法は文の主題を修飾子内に隠しているからです。 一方、 print "Starting analysis\en" if $verbose; は $verbose && print "Starting analysis\en"; より良いです。主となるのは、ユーザが -v を打ったかどうかでは ないからです。 .Sp 同様に、演算子がデフォルトの引数を仮定しているからといって、 それはデフォルトを用いなければならないということではありません。 デフォルトというものは、ちょっとしたプログラムを書く、怠け者の システムプログラマのためにあります。 読み易いプログラムをしたければ、引数を付けるようにして下さい。 .Sp 同じようなこととして、 あちこちで括弧を省略 .I できる ということは、以下のように書けということではありません: .nf return print reverse sort num values array; return print(reverse(sort num (values(%array)))); .fi 疑わしいときは、括弧をつけて下さい。 もしかすると、物好きな輩が、vi で % キーを叩くかもしれません。 .Sp たとえ疑わしくなかったとしても、自分の後でそのコードを管理する人間の 精神衛生上好ましいですし、その人が間違ったところに括弧をつける可能性も 大いにあります。 .Ip 2. 4 4 無理にこじつけて、ループの先頭や終わりで終了しようとしないで下さい。 .I perl には、真ん中からでも抜けられるように "last" 演算子が 用意されているのですから。 少々はみ出しても、より見易くなるようにして下さい: .nf .ne 7 line: for (;;) { statements; last line if $foo; next line if /^#/; statements; } .fi .Ip 3. 4 4 ループラベルを使うのを恐がらないで下さい\*(--多重ループの抜けだしがで きるようにするためだけでなく、可読性を高めるためにあるのですから。 最後の例を参照して下さい。 .Ip 4. 4 4 可搬性のため、すべてのマシンには実装されていない機能を使うときは、 失敗しないかどうか、eval の中で構成を確かめてみて下さい。 どのバージョンやパッチレベルで特定の仕様が実装されているかを 知っているなら、$] を調べて、実装されているかどうかを確認できます。 .Ip 5. 4 4 覚え易い識別子を選んで下さい。 .Ip 6. 4 4 一貫性を持たせましょう。 .Sh "デバッグ" .I perl に .B \-d スイッチを付けて起動すると、デバッグモニタの基でスクリプトが走ります。 最初の実行文の前で一時停止し、以下のようなコマンド入力を促します: .Ip "h" 12 4 ヘルプメッセージを出力する。 .Ip "T" 12 4 スタックトレース。 .Ip "s" 12 4 シングルステップ。 次の文の始めに達するまでを実行します。 .Ip "n" 12 4 次。 サブルーチンコール内では止まらずに、次の文に達するまで実行します。 .Ip "f" 12 4 終了。 現在のサブルーチンが終了するまで、文を実行し続けます。 .Ip "c" 12 4 継続。 次のブレークポイントに達するまで実行します。 .Ip "c line" 12 4 指定した行まで実行します。 指定した行に、一回きりのブレークポイントを挿入します。 .Ip "" 12 4 最後に実行した n または s を繰り返します。 .Ip "l min+incr" 12 4 min 行目から incr+1 行を表示します。 min を省略すると、最後に表示した残りから始めます。 incr を省略すると、前回の incr 値が使われます。 .Ip "l min-max" 12 4 指定範囲内の行を表示します。 .Ip "l line" 12 4 指定行を表示します。 .Ip "l" 12 4 次のウィンドウを表示します。 .Ip "-" 12 4 前のウィンドウを表示します。 .Ip "w line" 12 4 その行と前後のウィンドウを表示します。 .Ip "l subname" 12 4 サブルーチンを表示します。 長いサブルーチンの場合は、始めの方だけを表示します。 それ以上表示するには、\*(L"l\*(R" を使って下さい。 .Ip "/pattern/" 12 4 正規表現の前方検索。最後の / は省略可能です。 .Ip "?pattern?" 12 4 正規表現の後方検索。最後の ? は省略可能です。 .Ip "L" 12 4 ブレークポイントまたはアクションの設定された行を表示します。 .Ip "S" 12 4 すべてのサブルーチン名を表示します。 .Ip "t" 12 4 トレースモードを on/off するトグル。 .Ip "b line condition" 12 4 ブレークポイントをセットします。 line を省略すると、実行されようとしている行にセットされます。 condition が指定されると、 ブレークポイントの文に達する毎に condition が評価され、 condition が真のときだけブレークします。 ブレークポイントは実行文の先頭にだけセットできます。 .Ip "b subname condition" 12 4 ブレークポイントをサブルーチンの最初の実行文にセットします。 .Ip "d line" 12 4 ブレークポイントを削除します。 line を省略すると、実行しようとしている行のブレークポイントが 削除されます。 .Ip "D" 12 4 すべてのブレークポイントを削除します。 .Ip "a line command" 12 4 行にアクションをセットします。 バックスラッシュの直後に改行すれば、複数行コマンドも入力できます。 .Ip "A" 12 4 すべての行のアクションを削除します。 .Ip "< command" 12 4 デバッガがプロンプトを出す前に実行するアクションをセットする。 バックスラッシュの直後に改行すれば、複数行コマンドも入力できます。 .Ip "> command" 12 4 コマンドを入力してスクリプト実行に移る時に、 プロンプトの後に実行するアクションをセットします。 バックスラッシュの直後に改行すれば、複数行コマンドも入力できます。 .Ip "V package" 12 4 パッケージ内のすべての変数をリストします。 デフォルトは、メインパッケージです。 .Ip "! number" 12 4 デバッグコマンドの再実行を行ないます。 number が省略されると、直前のコマンドを再実行します。 .Ip "! -number" 12 4 幾つか前のコマンドを再実行します。 .Ip "H -number" 12 4 最後の n 個のコマンドを表示します。 1 文字より長いコマンドをリストします。 number を省略すると、すべてをリストします。 .Ip "q or ^D" 12 4 終了します。 .Ip "command" 12 4 コマンドを perl の文として実行します。 足りないセミコロンは補われます。 .Ip "p expr" 12 4 \*(L"print DB'OUT expr\*(R" と同じことです。 DB'OUT ファイルハンドルは、どこに STDOUT がリダイレクトされているか に関わらず、/dev/tty にオープンされます。 .PP デバッガを変更したいときは、perldb.pl ファイルを perl のライブラリ から、カレントディレクトリにコピーして、必要に応じて修正して下さい。 (コマンドラインに -I. を付けなければならないでしょう。) 初期化コードを含む .perldb ファイルを設定することで、カスタマイズが できます。例えば、以下のようなエイリアスを作ることができます: .nf $DB'alias{'len'} = 's/^len(.*)/p length($1)/'; $DB'alias{'stop'} = 's/^stop (at|in)/b/'; $DB'alias{'.'} = 's/^\e./p "\e$DB\e'sub(\e$DB\e'line):\et",\e$DB\e'line[\e$DB\e'line]/'; .fi .Sh "setuid スクリプト" .I perl は、安全な setuid スクリプトや setgid スクリプトを簡単に書けるように デザインされています。 スクリプトの各行が何回も置換されるシェルとは違って、 .I perl は、隠された \*(L"わけの判らないもの\*(R" を少なくして、より伝統的な 評価機構を使っています。 それに加え、この言語は組み込み機構をより多く備えていて、目的を達成する ために外部の (すなわち信頼できない可能性がある) プログラムに 頼らなければならないことは、ほとんどありません。 .PP パッチが当たっていない 4.2 または 4.3bsd カーネルでは、 setuid スクリプトは本質的に危険をはらんでいますが、このカーネルの 機能は無効にできます。 この場合、 perl スクリプトに (無意味な) setuid/gid ビットが付いていると、 .I perl は setuid と setgid 機構をエミュレートできます。 カーネルの機能が無効でない場合、 .I perl は setuid スクリプトが安全でないことをうるさく訴えるでしょう。 カーネルの setuid スクリプト機能を無効にするか、そうでなければ スクリプトに C のラッパーをかぶせる必要があるでしょう。 .PP perl が setuid スクリプトを実行しているとき、明らかなトラップに はまらないように特別な注意を払います。 (いくつかの点で、perl スクリプトは同等の C プログラムより安全です。) コマンドライン引数と環境変数と入力は、\*(L"汚れ\*(R" とみなされ、 サブシェルを起動するコマンドや、ファイル、ディレクトリ、プロセスを 変更するようなコマンドの中では、直接にも間接的にも使われません。 それ以前に汚れた値を参照したような式の中でセットされた変数も、 また汚れていることなります。 (汚れた値が変数に影響することが、たとえ論理的に不可能だとしても) .br 例えば: .nf .ne 5 $foo = shift; # $foo は汚れています $bar = $foo,\'bar\'; # $bar も汚れています $xxx = <>; # 汚れています $path = $ENV{\'PATH\'}; # 汚れていますが、以下を見て下さい $abc = \'abc\'; # 汚れていません .ne 4 system "echo $foo"; # 危険です system "/bin/echo", $foo; # 安全です (shを使わないので) system "echo $bar"; # 危険です system "echo $abc"; # PATH がセットされるまで、 # 安全ではありません .ne 5 $ENV{\'PATH\'} = \'/bin:/usr/bin\'; $ENV{\'IFS\'} = \'\' if $ENV{\'IFS\'} ne \'\'; $path = $ENV{\'PATH\'}; # 汚れていません system "echo $abc"; # もはや汚れていません! .ne 5 open(FOO,"$foo"); # OK open(FOO,">$foo"); # 駄目です open(FOO,"echo $foo|"); # 駄目だけど.. open(FOO,"-|") || exec \'echo\', $foo; # OK $zzz = `echo $foo`; # 危険。 zzz は汚れてます。 unlink $abc,$foo; # 危険 umask $foo; # 危険 .ne 3 exec "echo $foo"; # 危険 exec "echo", $foo; # 安全 (sh を使いません) exec "sh", \'-c\', $foo; # 安全と見なされてしまう、嗚呼 .fi 汚れは、各スカラ値と関係するので、配列の要素は汚れているものも、 汚れていないものもあります。 .PP 何か安全でないことをしようとすると、 \*(L"Insecure dependency\*(R" とか \*(L"Insecure PATH\*(R" というような 致命的エラーになります。 それでも、危険なシステムコールや exec を書くことができますが、 上記の最後の例のようなことを明示的に行なった場合に限るということを 覚えておいて下さい。 サブパターンを参照することでも、汚れの機構を避けることが できます \*(--\c .I perl は、$1, $2 などを使った部分文字列の参照では、自分のしていることを 知っているはずだと解釈します。 次のようなパターンの場合です: .nf $ARGV[0] =~ /^\-P(\ew+)$/; $printer = $1; # 汚れていません .fi これは、\ew+ がシェルのメタキャラクタにマッチしないので、 まず安全です。 .+ を使うと危険でしょうが、 .I perl はそこまで調べないので、パターン指定には注意を払うべきです。 これは、ファイル操作をしたいときに ($> を $< と同じにしなければ) 、 ユーザが与えるファイル名を汚さないための唯一の機構です。 .PP 汚れた値を使うことを気にしないような他の操作でもトラブルを起こす場合が あります。 ユーザが与えたファイル名を扱うファイルテストは、慎重に使って下さい。 できれば、$> = $< というようにセットした後で open して下さい。 .I perl では、汚れたファイルをオープンして読みだすことが制限されないので、 出力する内容については注意して下さい。 汚れの機構は、ばかな間違いを防ぐように作られているのであって、 考える必要がなくなるようにするためではありません。 .SH 環境 .Ip HOME 12 4 chdir に引数がないときに使われます。 .Ip LOGDIR 12 4 chdir に引数が無く、HOME がセットされていないときに使われます。 .Ip PATH 12 4 サブプロセスを実行するとき、および \-S が使われたときは スクリプトを探す際に使われます。 .Ip PERLLIB 12 4 標準ライブラリやカレントディレクトリを見る前に、perl ライブラリ ファイルを探すディレクトリのコロン区切りのリストです。 .Ip PERLDB 12 4 デバッガコードを得るのに使われるコマンドのことです。セットされて いないと、 .br require 'perldb.pl' を使います。 .PP これらを別にすると、 .I perl は、スクリプト実行時と子プロセスに渡された環境変数しか使いません。 しかし、setuid で走っているスクリプトは、だまされないようにするために 何より先に以下の行を実行しておいた方が良いでしょう: .nf .ne 3 $ENV{\'PATH\'} = \'/bin:/usr/bin\'; # 必要なパスを入れましょう $ENV{\'SHELL\'} = \'/bin/sh\' if $ENV{\'SHELL\'} ne \'\'; $ENV{\'IFS\'} = \'\' if $ENV{\'IFS\'} ne \'\'; .fi .SH 作者 Larry Wall .br MS-DOS への移植 Diomidis Spinellis .SH 関連ファイル /tmp/perl\-eXXXXXX .B \-e コマンドのためのテンポラリファイル .SH 関連項目 a2p awk から perl への変換プログラム .br s2p sed から perl への変換プログラム .SH 診断 コンパイルエラーは、エラーの行番号と次にあるべきトークンか、または 調べられたトークンの型を教えてくれます。 ( .B \-e スイッチで .I perl に渡されたスクリプトの場合、各 .B \-e が一行に数えられます。) .PP setuid スクリプトには、更に \*(L"Insecure dependency\*(R" のような エラーメッセージを生じるという制約があります。 setuid スクリプトのセクションを参照して下さい。 .SH トラップ .IR awk に慣れたユーザは、以下のことに特に注意を払わなければなりません: .Ip * 4 2 .I perl では、(ブロックの終わりを除く) すべての単文の後にセミコロンが必要です。 改行は文の区切りではありません。 .Ip * 4 2 if や while には、中括弧 {} が必要です。 .Ip * 4 2 .IR perl では、変数は $ か @ で始まります。 .Ip * 4 2 配列の添字は、$[ をセットしなければ 0 で始まります。 substr() と index() の文字位置も同様です。 .Ip * 4 2 配列の添字が数字であるか文字列であるかを決めなければなりません。 .Ip * 4 2 連想配列は、参照するだけでは存在することになりません。 .Ip * 4 2 比較の際には、文字列比較か、数値比較かを決めなければなりません。 .Ip * 4 2 入力行を読み込んだだけでは、split は行なわれません。自分で split して、 配列に入れなければなりません。 そして、 .I split 演算子は、異なる引数を取ります。 .Ip * 4 2 現在の入力行は、通常 $0 ではなく $_ です。 一般に改行コードは除かれません。 ($0 は実行されたプログラム名です。) .Ip * 4 2 $<数字> は、フィールドの参照ではありません\*(--最後にマッチした パターンの部分文字列を参照します。 .Ip * 4 2 .I print 文は $, と $\e を設定しなければ、フィールド区切りやレコード区切りを 出力しません。 .Ip * 4 2 ファイルに出力する前には、オープンしなければなりません。 .Ip * 4 2 範囲演算子は \*(L".\|.\*(R" であって、コンマではありません。 (コンマ演算子は、C と同じ動作です。) .Ip * 4 2 マッチ演算子は、\*(L"~\*(R" でなく \*(L"=~\*(R" です。 (\*(L"~\*(R" は C と同じく補数の演算子です。) .Ip * 4 2 指数演算子は、\*(L"^\*(R" でなく \*(L"**\*(R" 演算子です。 (\*(L"^\*(R" は、C と同じく XOR 演算子です。) .Ip * 4 2 結合演算子は \*(L".\*(R" であり、ヌル文字列ではありません。 (ヌル文字列を使うと 3 番目の / が除算演算子と解釈されるため、 \*(L"/pat/ /pat/\*(R" が解析不能になります。\*(--トークン解析は、実際 のところ /, ?, < のような演算子ではコンテキストにやや敏感です。 そして、実は、. 自身は数字の始めになり得ます。) .Ip * 4 2 .IR next , .IR exit, .I continue の動作は異なります。 .Ip * 4 2 次の変数の動作は異なります。 .nf Awk \h'|2.5i'Perl ARGC \h'|2.5i'$#ARGV ARGV[0] \h'|2.5i'$0 FILENAME\h'|2.5i'$ARGV FNR \h'|2.5i'$. \- 何か FS \h'|2.5i'(何でもよい) NF \h'|2.5i'$#Fld かそのようなもの NR \h'|2.5i'$. OFMT \h'|2.5i'$# OFS \h'|2.5i'$, ORS \h'|2.5i'$\e RLENGTH \h'|2.5i'length($&) RS \h'|2.5i'$/ RSTART \h'|2.5i'length($\`) SUBSEP \h'|2.5i'$; .fi .Ip * 4 2 疑わしいときは、 .I awk のプログラムを a2p に通して、出て来たもの見て下さい。 .PP C に洗脳されたプログラマは、次のことを特に心に留めておかなければなりま せん: .Ip * 4 2 if や while には、中括弧 {} が必要です。 .Ip * 4 2 \*(L"else if\*(R" でなく、\*(L"elsif\*(R" を使わなければなりません。 .Ip * 4 2 .I break や .I continue は、それぞれ .I last や .IR next になります。 .Ip * 4 2 switch 文はありません。 .Ip * 4 2 .IR perl では、 変数は $ か @ で始まります。 .Ip * 4 2 printf には * は実装されていません。 .Ip * 4 2 コメントは、/* でなく # で始まります。 .Ip * 4 2 何者のアドレスを得ることもできません。 .Ip * 4 2 ARGV は大文字でなければなりません。 .Ip * 4 2 link, unlink, rename 等のシステムコールは、成功時に 0 でな く、非 0 を返します。 .Ip * 4 2 シグナルハンドラは、数字ではなくシグナル名を扱います。 .PP 経験豊かな .I sed プログラマは、次のことを心に留めておかなければなりません: .Ip * 4 2 置換の後方参照では、\e でなく $ を使います。 .Ip * 4 2 パターンマッチメタキャラクタ (, ), | の前にはバックスラッシュをつけません。 .Ip * 4 2 範囲演算子は、コンマでなく .\|. です。 .PP 鋭い shell プログラマは、次のことを心に留めておかなければなりません: .Ip * 4 2 `` 演算子のコマンド内では、'' にくくられていないと変数置換が行なわれます。 .Ip * 4 2 `` 演算子は csh と違って、戻り値の変換をしません。 .Ip * 4 2 シェル (特に csh) は、各コマンド行で複数レベルの置換を行ないます。 .I perl は、"", ``, <>, // のような決まった構造においてのみ、置換が行なわれます。 .Ip * 4 2 シェルは、スクリプトを一度に少しだけ解釈します。 .I perl は、すべてのプログラムを実行前にコンパイルします。 .Ip * 4 2 引数は、$1, $2,.. ではなく、@ARGV を介して利用できます。 .Ip * 4 2 環境は、変数として自動的に利用可能とはなりません。 .SH 訂正と追加 perl の本、 .I Programming\0Perl には以下のような省略と抜けがあります。 .PP 5 ページの例 .nf eval "/usr/bin/perl は、以下でなければいけません。 eval "exec /usr/bin/perl .fi .PP 195 ページの System V の sum 相当のプログラムは、極めて小さなファイル でしか動作しません。大きなファイルでは、以下を使って下さい。 .nf undef $/; $checksum = unpack("%32C*",<>) % 32767; .fi .PP alarm と sleep に関する記述は、シグナル SIGALARM と言っていますが、 SIGALRM でなければなりません。 .PP $/ の初期値をセットする .B \-0 スイッチは、この本が出版後に perl に追加されました。 .PP .B \-l スイッチでは、自動行末処理を行なうようになっています。 .PP qx// 構造は バックスラッシュ `` と同義です。 .PP $0 は、 .I ps (1) の引数表示を変更するために、代入可能となりました。 .PP 新しい @###.## フォーマットは、フォーマットの記述から 偶然省略されました。 .PP s///ee が置換式の多重評価を生じることが、出版時に 知られていませんでした。これは、仕様と解釈されるべきです。 .PP (LIST) x $count は、配列の繰り返しを実行します。 .PP 正規表現には、括弧の数に制限がなくなっています。 .PP ダブルクォート "" のコンテキストでは、更に以下のエスケープがサポート されています: \ee, \ea, \ex1b, \ec[, \el, \eL, \eu, \eU, \eE 最後の 5 つの制御コードは、大文字小文字の変換です。 .PP .B $/ 変数には、複数の区切り文字をセットできます。 .PP 通常のパターンマッチに g 修飾子が使えます。 これにより、文字列から複数のマッチを検索することで、 パターンマッチを繰り返します。 .PP $^T を除いて、すべての $^X 変数が増えてます。 .PP FILEHANDLE に対するデフォルトのページ先頭フォーマットは、top でなく FILEHANDLE_TOP になっています。 .PP eval {} と sort {} 構造は、version 4.018 で追加されました。 .PP pack と unpack の v と V (リトルエンディアン) テンプレートオプションは、 vertion 4.019 で追加されました。 .SH バグ .PP .I perl 型のキャスト、atof() 、sprintf() のようないろいろな操作は、 マシンの定義に左右されます。 .PP あるストリームで、stdio が各 read や write の間に seek や eof を 必要とする場合、 .IR perl はそのようにします。 (これは、sysread() と syswrite() には適用されません。) .PP どの組み込みデータタイプも勝手なサイズ制限は持っていません (メモリサイズは別です) が、それでもいくらかは限界はあります: 識別子は 255 文字以上にはできませんし、 \-S を使うとき、PATH の要素は 255 を超えてはいけません。 正規表現は、内部的に 32767 バイトを超えられません。 .PP .I perl は、実は 病理学的折衷主義のがらくたリスター (Pathologically Eclectic Rubbish Lister) なんですが、私がそう言ったとは誰にも話さないで下さい。 .rn }` '' diff --git a/ja_JP.eucJP/man/man1/pkg_create.1 b/ja_JP.eucJP/man/man1/pkg_create.1 index 77e212c0b7..7782f490c8 100644 --- a/ja_JP.eucJP/man/man1/pkg_create.1 +++ b/ja_JP.eucJP/man/man1/pkg_create.1 @@ -1,404 +1,404 @@ .\" .\" FreeBSD install - a package for the installation and maintainance .\" 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_create.1 .\" jpman %Id: pkg_create.1,v 1.3 1997/06/09 10:11:56 jsakai Stab % .\" %Id: pkg_create.1,v 1.16.2.7 1998/03/09 12:31:13 jkh Exp % .\" .\" hacked up by John Kohl for NetBSD--fixed a few bugs, extended keywords, .\" added dependency tracking, etc. .\" .\" [jkh] Took John's changes back and made some additional extensions for .\" better integration with FreeBSD's new ports collection. .\" .Dd April 21, 1995 .Dt pkg_create 1 .Os FreeBSD .Sh 名称 .Nm pkg_create .Nd ソフトウェア配布パッケージを作成するプログラム .Sh 書式 .Nm .Op Fl YNOhv .Op Fl P Ar pkgs .Op Fl p Ar prefix .Op Fl f Ar contents .Op Fl i Ar iscript .Op Fl k Ar dscript .Op Fl r Ar rscript .Op Fl t Ar template .Op Fl X Ar excludefile .Op Fl D Ar displayfile .Op Fl m Ar mtreefile .Fl c Ar comment .Fl d Ar description .Fl f Ar packlist .Ar pkg-name .Sh 解説 この .Nm コマンドは、パッケージ展開/情報プログラムに渡されるパッケージを 作成します。 パッケージ作成のために入力する説明とコマンドライン引数 は本来人間が生成することを意図していませんが、 そうすることも簡単にできます。 自力でどうにかすることも可能ですが、作成にはフロントエンドツールを 用いた方がいいでしょう。 とはいうものの、入力書式の概略はこの文書に含まれています。 .Sh オプション 以下のコマンドラインオプションが提供されています: .Bl -tag -width indent .It Fl f Ar packinglist ファイル .Ar packinglist から、もしくは .Ar packinglist が .Cm - (ダッシュ)であれば .Cm stdin から、パッケージ用の ``packing list'' を取得します。 .It Fl c Ar [-]desc ファイル .Ar desc から、もしくは先頭が .Cm - で始まっていれば引数自身から、パッケージの ``一行説明'' を取得します。 この文字列は、パッケージが提供するもののバージョンを知る 手がかりとなるべきです。 .It Fl d Ar [-]desc ファイル .Ar desc から、もしくは先頭が .Cm - で始まっていれば引数自身から、パッケージの長い説明を取得します。 .It Fl Y 質問に対してのデフォルトの解答を `Yes' とします。 .It Fl N 質問に対してのデフォルトの解答を `No' とします。 .It Fl O `packing list Only' モードに移行します。 これは .Em "FreeBSD Ports Collection" のための特別な修正であり、port がインストールされる時の `fake pkg_add' を行うために用いられます。 このような場合には、調整された最終的な packing list が どのようなものになるかを知る必要があるのです。 .It Fl v 饒舌な出力に切り替えます。 .It Fl h tar がシンボリックリンクをたどるようにします。 この結果、リンク自身ではなくリンク先のファイルが出力されます。 .It Fl i Ar iscript パッケージのインストール手続きとして .Ar iscript を用います。 これは実行可能なプログラム (もしくはシェルスクリプト) なら なんでも構いません。 これはパッケージがインストールされる時に自動的に起動されます。 .It Fl P Ar pkgs 初期のパッケージ依存リストとして .Ar pkgs を用います。 これはホワイトスペースで区切られたパッケージの名前となります。 また、packing list (後述の「PACKING LIST 詳細」セクションを参照) 内の複数の .Cm @pkgdep ディレクティブを指定する手っ取り早い方法でもあります。 .It Fl p Ar prefix パッケージのファイルを選択する際に基準となる初期ディレクトリとして .Ar prefix を用います。 .It Fl k Ar dscript パッケージのアンインストール手続きとして .Ar dscript を用います。 これは実行可能なプログラム (もしくはシェルスクリプト) なら なんでも構いません。 これはパッケージがアンインストールされる時に自動的に起動されます。 .It Fl r Ar rscript パッケージの ``requirements'' 手続きとして .Ar rscript を用います。 これは実行可能なプログラム (もしくはシェルスクリプト) なら なんでも構いません。 これはインストール時、アンインストール時に自動的に起動され、 インストール、アンインストールを継続するべきかどうかを決定するのに 用いられます。 .It Fl t Ar template .Xr mktemp 3 への入力として .Ar template を用います。 これはデフォルトでは .Pa /tmp/instmp.XXXXXX という文字列ですが、 .Pa /tmp ディレクトリの容量が制限されているような状況では 変更する必要があるかもしれません。 .Xr mktemp 3 が一意の ID を用いるために必要な `X' の文字をいくつか残しておく ことを忘れないでください。 .It Fl X Ar excludefile 最終的にパッケージを作成する際に、 .Ar excludefile を .Cm tar に .Fl exclude-from 引数として渡します。 このオプションを使うにあたっての詳しい情報は、 .Cm tar のマニュアルページ (もしくは .Fl -help 引数を付けて .Cm tar を実行) を参照してください。 .It Fl D Ar displayfile パッケージをインストールした後にファイルを ( .Xr more 1 を用いて) 表示します。 「ほとんど free なソフトウェア」などにおいて、 法的な通知のようなものなどに便利でしょう。 .It Fl m Ar mtreefile パッケージがインストールされる前に、mtreefile を入力として .Xr mtree 8 を実行します。mtree は .Cm mtree .Fl u .Fl f .Ar mtreefile .Fl d .Fl e .Fl p .Pa prefix として起動されます (ただし .Pa prefix は .Cm @cwd ディレクティブにより名付けられた最初のディレクトリの名前)。 .El .Pp .Sh PACKING LIST 詳細 ``packing list'' の書式 ( .Fl f を参照) は単純で、パッケージに含めるファイル名を一行につきひとつずつ 並べたものにすぎません。 どこにインストールされるかわからないパッケージに対して絶対パスを 用いるのは一般的に悪い方法なので、 どこにインストールされることを想定しているのか、 そしてどんな ownership と mode を伴ってインストールされるべきなのか (こちらはオプション) を指定する方法が用意されています。 これは packing list 内に一連の特殊コマンドを 埋め込むことで実現されています。以下に簡単に示します: .Bl -tag -width indent -compact .It Cm @cwd Ar directory 内部のディレクトリポインタが .Ar directory を指すようにします。以降のファイル名はこのディレクトリへの相対パス であるとみなされます。 .Cm @cd はこのコマンドの別名です。 .It Cm @srcdir Ar directory 「作成時のみ」の内部ディレクトリポインタを .Ar directory に設定します。 パッケージ作成時に .Cm @cwd に優先すると言えますが、展開時にはこれはあてはまりません。 .It Cm @exec Ar command 展開処理の一環として .Ar command を実行します。 .Ar command が以下の文字列を含んでいた場合、その場で置換されます。 以下の例では .Cm @cwd が .Pa /usr/local と設定されていて、最後に展開されたファイルが .Pa bin/emacs だったとしています。 .Bl -tag -width indent -compact .It Cm "%F" 最後に展開されたファイル名に置換されます。この例では .Pa bin/emacs となります。 .It Cm "%D" .Cm @cwd -で設定されたカレントディレクトリプレフィクスに置換されます。 +で設定されたカレントディレクトリプレフィックスに置換されます。 この例では .Pa /usr/local になります。 .It Cm "%B" 完全な(フルパスの)ファイル名の ``basename'' へ置換されます。 -これはカレントディレクトリプレフィクスに最後の filespec を +これはカレントディレクトリプレフィックスに最後の filespec を 加え、末尾のファイル名部分を除いたものです。 この例では、 .Pa /usr/local/bin になります。 .It Cm "%f" 完全な (フルパスを含む) ファイル名の ``filename'' 部分へ置換されます。 .Cm %B と対応していて、この例では .Pa emacs となります。 .El .It Cm @unexec Ar command アンインストール処理の一環として .Ar command を実行します。特別な .Cm % 文字列の置換は .Cm @exec と同様です。 このコマンドは .Cm @exec のようにパッケージを加える際に実行されるのではなく、パッケージが 削除されるときに実行されます。 これは、パッケージを加えるときに作られたリンクや他の 付随ファイル (パッケージの内容一覧に記されているファイルは自動的に 削除されるので除く) を削除するのに便利です。 アンインストールスクリプトよりも .Cm @unexec を用いる方が有利な点は、どこにインストールされているかわからない ( .Fl p を参照) ファイルの場所を得るのに ``特殊文字列置換'' を用いることが 可能なことです。 .It Cm @mode Ar mode この後で展開されるすべてのファイルのデフォルトの許可属性を .Ar mode に設定します。 書式は .Cm chmod コマンドで用いられているものと同じです (というよりも、そのまま 渡されています)。 引数無しで用いると、デフォルトの(展開)許可属性に戻します。 .It Cm @option Ar option 内部用パッケージオプションを設定します。 現在二つのオプションのみがサポートされています。 ひとつは .Ar extract-in-place で、これは pkg_add コマンドにパッケージの tarball を staging area に展開せずに、目的の階層に直接展開するよう指示します (これは主に配布物や他の特殊なパッケージなどに用いられます)。 もうひとつは .Ar preserve で、存在するファイルを別の所に保存しておくよう pkg_add に指示します (これらは pkg_delete の時に復活しますが、自分の責任で行ってください)。 .It Cm @owner Ar user この後で展開されるすべてのファイルのデフォルトの ownership を .Ar user に設定します。 引数無しで用いると、デフォルトの(展開) ownership に戻します。 .It Cm @group Ar group この後で展開されるすべてのファイルのデフォルトの group ownership を .Ar group に設定します。 引数無しで用いると、デフォルトの(展開) group ownership に戻します。 .It Cm @comment Ar string packing list 内にコメントを埋め込みます。 誰かが後で間違えてしまうかもしれない特に厄介な部分を説明しようとする 場合に便利です。 .It Cm @ignore 特殊な目的に使われるファイルなどのため、展開時に次のファイルを 無視する (どこにもコピーしない) ように、内部で用いられます。 .It Cm @ignore_inst .Cm @ignore と同様ですが、次のファイルを無視するのは一評価サイクルだけ 遅らせられます。 このおかげでこのディレクティブを .Ar packinglist ファイル内で用いることが可能になるので、インストーラが 無視するような、インストールスクリプトなどのための特殊な データファイルを、配布物内に入れることができるようになります。 .It Cm @name Ar name パッケージの名前を設定します。 これは必須項目であり、通常先頭に置かれます。 この名前はパッケージが提供するファイルの名前とは異なる可能性があり、 後でアンインストールする時のために パッケージの記録を残しておくのに使われます。 名前が指定されなかった場合には、 .Nm はパッケージ名から推定し、自動的に設定することに注意してください。 .It Cm @dirrm Ar name ディレクトリ .Pa name がアンインストール時に削除されるよう宣言します。デフォルトでは、 パッケージのインストール時に作成されたディレクトリは アンインストール時には削除されませんが、このディレクティブは明示的な ディレクトリ削除方法を提供します。 このディレクティブはパッケージリストの最後で用いるようにしてください。 一つ以上の .Cm @dirrm ディレクティブが指定された場合、指定された順番に削除されます。 .Pa name は空きディレクトリでなければ削除されません。 .It Cm @mtree Ar name .Pa name を、インストール時に用いられる .Xr mtree 8 への入力ファイルとして宣言します (上述の .Fl m を参照)。最初にひとつだけ .Cm @mtree ディレクティブを指定することが推奨されます。 .It Cm @display Ar name .Pa name を、インストール時に表示されるファイルとして宣言します (上述の .Fl D を参照)。 .It Cm @pkgdep Ar pkgname パッケージ .Ar pkgname に依存することを宣言します。 パッケージ .Ar pkgname はこのパッケージがインストールされる前にインストールされていなければ ならず、またこのパッケージはパッケージ .Ar pkgname がアンインストールされる前にアンインストールされなければなりません。 パッケージが複数のパッケージに依存する場合には、複数の .Cm @pkgdep ディレクティブが用いられます。 .El .Sh 関連項目 .Xr pkg_add 1 , .Xr pkg_delete 1 , .Xr pkg_info 1 , .Xr sysconf 3 . .Sh 歴史 .Nm コマンドは FreeBSD で最初に登場しました。 .Sh 作者 .Bl -tag -width indent -compact .It "Jordan Hubbard" ほとんどの仕事 .It "John Kohl" NetBSD 向け修正 .El .Sh バグ パッケージが展開される際にハードリンクを保存しておくために、 配布物のファイル間でのハードリンクは .Cm @cwd ディレクティブで括られていなければなりません。 その上、実行時の引数の長さの制限 (これは .Fn sysconf _SC_ARG_MAX により返される値に依存します) のために、それらのハードリンクは単一の .Cm tar 実行内で行われなければなりません。 .Pp バグは他にもあるはずです。 diff --git a/ja_JP.eucJP/man/man1/printf.1 b/ja_JP.eucJP/man/man1/printf.1 index 120169ea9c..313661aed6 100644 --- a/ja_JP.eucJP/man/man1/printf.1 +++ b/ja_JP.eucJP/man/man1/printf.1 @@ -1,259 +1,259 @@ .\" Copyright (c) 1989, 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. .\" .\" @(#)printf.1 8.1 (Berkeley) 6/6/93 .\" jpman %Id: printf.1,v 1.2 1997/05/20 01:08:19 mutoh Stab % .\" .Dd June 6, 1993 .Dt PRINTF 1 .Os .Sh 名称 .Nm printf .Nd formatted output .Sh 書式 .Nm .Ar format Op Ar arguments ... .Sh 解説 .Nm は第一引数より後の引数をフォーマットに合わせて出力します。 .Ar format は 3 種類のオブジェクトを含む文字列です。 一つは通常の文字列で、単純に標準出力にコピーされます。 一つはエスケープシーケンスで、変換されてから標準出力にコピーされます。 もう一つはフォーマット記述で、これらはそれぞれ、後に続く .Ar arguments を表示します。 .Pp 第一引数より後の .Ar arguments は対応するフォーマットが .Cm c か .Cm s の場合は文字列として扱われ、それ以外は以下のような拡張部分と 合わせて C の定数として評価されます。 .Pp .Bl -bullet -offset indent -compact .It 先頭に ``+'' や ``-'' の符号をつけることができます。 .It もし先頭がシングルクォートやダブルクォートで始まっているか、数字、プラ ス/マイナス記号で始まっているのでなければ、その値は次の文字の .Tn ASCII コードになります。 .El .Pp フォーマット文字列は .Ar arguments を変換するために何度も 再利用されます。余分なフォーマット記述は 0 やヌル文字列に 評価されます。 .Pp キャラクタエスケープシーケンスは .Tn ANSI C 規格 .Tn X3J11 で立案された定義で、バックスラッシュによる表記です。文字キャラクタとそ の意味は以下のようになります。 .Bl -tag -width Ds -offset indent .It Cm \ea <ベル> キャラクタを書きます。 .It Cm \eb <バックスペース> キャラクタを書きます。 .It Cm \ef <フォームフィード> キャラクタを書きます。 .It Cm \en <改行> キャラクタを書きます。 .It Cm \er -<キャリッジリターン> キャラクタを書きます。 +<復帰> キャラクタを書きます。 .It Cm \et <タブ> キャラクタを書きます。 .It Cm \ev <垂直タブ> キャラクタを書きます。 .It Cm \e\' <シングルクォート> キャラクタを書きます。 .It Cm \e\e <バックスラッシュ>キャラクタを書きます。 .It Cm \e Ns Ar num 1 から 3 桁の 8 進数 .Ar num で表される .Tn ASCII コードの 8 ビット文字を書きます。 .El .Pp 各フォーマットの指定はパーセント文字(``%'')から始まります。 フォーマットの他の部分は、以下の順番で続きます: .Bl -tag -width Ds .It "以下のフラグが 0 個以上つきます:" .Bl -tag -width Ds .It Cm # `#' キャラクタは数値を ``別形式'' で表示させるという指定です。 .Cm c , .Cm d , .Cm s フォーマットではこのオプションは無効です。 .Cm o フォーマットでは出力文字列の先頭に 0 をつけるため、 その値の精度が上がります。 .Cm x .Pq Cm X フォーマットでは、0 以外の値なら出力される文字列の先頭に .Li 0x .Pq Li 0X がつきます。 .Cm e , .Cm E , .Cm f , .Cm g , .Cm G のフォーマットでは、たとえ小数点以下の値がなくても常に小数点がつきます (通常のフォーマットでは、小数点以下の値がある時のみ結果に小数点が含ま れます)。 .Cm g と .Cm G のフォーマットでは、結果の終わりに付く 0 は通常のフォーマットと違って 省略されません。 .It Cm \&\- 指定したフィールド幅で .Em 左詰め で出力します。 .It Cm \&+ 符号つきのフォーマットの時に、数字の前に常に符号がつくように なります。 .It Sq \&\ \& 符号つきのフォーマットで正の値を表示する時に先頭に空白が一つ挿入されま す。 `+' と空白の両方が指定された場合、`+' が空白に優先されます。 .It Cm \&0 `0' は空白でパディングする代りに `0' でパディングを行ないます。 `\-' と `0' の両方が指定された場合、`\-' が優先されます。 .El .It "フィールド幅:" .Em field width ; .Em フィールド幅 を指定するためにオプションとしてつける数値です。 出力する文字列がこのフィールド幅よりも短い場合、フィールド幅を埋めるよ うに左側が(左詰めの指示があれば、右側が)空白でパディングされます。 (先頭につく 0 はフラグですが、埋め込まれた 0 はフィールド幅の一部であ ることに注意) .It 精度: オプションでつけるピリオド .Sq Cm \&.\& , には、 .Em 精度 を表わす数のオプションが続きます。この数は .Cm e と .Cm f フォーマットの場合に小数点以下の値を表示する桁数を指定し ます。 .Cm e , .Cm f 以外では、文字列から表示される文字の最大数になります。もし精度を表す数 がなければ、精度は 0 とされます。 .It Format: フォーマットの型を表す文字です( .Cm diouxXfwEgGbcs のうちのいずれか)。 .El .Pp フィールド幅や精度は数字の代りに .Sq Cm \&* も使えます。この場合、フィールド幅や精度は .Ar argument で与えます。 .Pp フォーマットキャラクタとその意味は以下のようになります: .Bl -tag -width Fl .It Cm diouXx .Ar argument はそれぞれ符号つき 10 進数(d または i)、符号なし 8 進数(o)、 符号なし 10 進数(u)、符号なし 16 進数(X または x)で表示されます。 .It Cm f .Ar argument が `[\-]ddd.ddd' のスタイルで表示され、引数の精度で指定した数だけ小数 点以下の d が続きます。精度の指定がなければ 6 文字になります。もし精度 が明示的に 0 と指定された場合は小数点とそれ以下の値は表示されません。 .It Cm eE .Ar argument が .Sm off .Pf [\-]d Cm \&. No ddd Cm e No \\*(Pmdd .Sm on のように、小数点の前に数字が一つで、後には引数の精度で指定した数だけ数 字が続きます。精度の指定がなければ 6 文字になります。 .Sq Cm \&E フォーマットが使われます。 .It Cm gG .Ar argument が、最小の長さで最大の精度が得られるように、 .Cm f または、 .Cm e .Pq Cm E で表示されます。 .It Cm c .Ar argument の最初の文字が表示されます。 .It Cm s .Ar argument が終わりまでか、または精度で指定された文字数だけ表示されます。 精度が 0 かもしくは指定されていない場合は文字列全てが表示されます。 .It Cm \&% `%' を表示します。引数はつきません。 .El .Pp 存在しないフィールド、もしくは小さなフィールド幅指定でフィールドが切り 詰められることはありません。指定されたフィールドが実際の幅を越えた時は、 パディングが起こります。 .Sh 戻り値 .Nm は成功時には 0 を返し、失敗時には 1 を返します。 .Sh 関連項目 .Xr printf 3 .Sh 歴史 .Nm は、 .Bx 4.3 Reno で追加され、標準ライブラリ関数 .Xr printf 3 に基いています。 .Sh バグ 浮動小数点数は .Tn ASCII から浮動小数に変換されてまた戻るので、浮動小数の精度が失われます。 .Pp .Tn ANSI 16 進文字定数はわざと用意されていません。 diff --git a/ja_JP.eucJP/man/man1/rcp.1 b/ja_JP.eucJP/man/man1/rcp.1 index 13cb86fa42..2db3f2eb07 100644 --- a/ja_JP.eucJP/man/man1/rcp.1 +++ b/ja_JP.eucJP/man/man1/rcp.1 @@ -1,145 +1,145 @@ .\" Copyright (c) 1983, 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. .\" .\" @(#)rcp.1 8.1 (Berkeley) 5/31/93 .\" jpman %Id: rcp.1,v 1.2 1997/05/20 01:30:55 mutoh Stab % .\" %Id: rcp.1,v 1.2.8.1 1997/02/28 07:54:41 mpp Exp % .\" .Dd May 31, 1993 .Dt RCP 1 .Os BSD 4.3r .Sh 名称 .Nm rcp .Nd リモートファイルのコピー .Sh 書式 .Nm rcp .Op Fl Kpx .Op Fl k Ar realm .Ar file1 file2 .Nm rcp .Op Fl Kprx .Op Fl k Ar realm .Ar file ... .Ar directory .Sh 解説 .Nm rcp は、ネットワークでつながれた複数のマシンの間でコピーをするプログラムです。 .Ar file および .Ar directory として ``rname@rhost:path'' の形式で指定する ことにより、それがリモートマシン上のファイルであるとみなされます。 ファイル指定に ``:'' が含まれていないか、含まれていても``/''のあとにある 場合は、ローカルマシンのファイルとみなされます。 .Pp .Bl -tag -width flag .It Fl K .Fl K オプションは全ての Kerberos による認証を無効にします。 .It Fl k .Xr krb_realmofhost 3 で決定されるリモートホストの realm のかわりに、 .Ar realm で指定したリモートホストの チケットを得るようにします。 .It Fl p .Ar umask を無視し、転送元のファイルの修正日付とアクセスモードを維持したままコピー します。デフォルトでは、転送先に同じファイル名のファイルがすでに -存在していれば、そのファイルのモードとオーナが引き継がれ、もしファイルが +存在していれば、そのファイルのモードと所有者が引き継がれ、もしファイルが 存在していなければ、転送元のファイルのモードに転送先のマシンで使われている .Xr umask 2 のマスクを施したアクセスモードになります。 .It Fl r 転送元としてディレクトリが指定された場合、ディレクトリ下の各ファイルも 再帰的にコピーします。この場合、転送先にはディレクトリを指定しなければ なりません。 .It Fl x .Nm rcp で送るすべてのデータを .Tn DES 暗号化します。これによりレスポンスタイムと .Tn CPU の利用率に影響が生じますが、セキュリティは向上します。 .El .Pp .Ar file がフルパスでなかった場合は、リモートマシン .Ar rhost 上のユーザ .Ar ruser のログインディレクトリ (リモートユーザー名が指定されていなければ、現在のユーザー名の ログインディレクトリ)からの相対パスと解釈します。 リモートマシン上のファイル指定にワイルドカードなどのメタキャラクタを 含める場合は、ローカルマシンのシェルによりワイルドカードが 展開されないよう \e、" または \(aa でクォートする必要があります。 .Pp .Nm rcp では .Xr rsh 1 を使用するため同様のユーザーの認証が必要とされ、パスワードを要求する プロンプトを出しません。 .Pp .Nm rcp では転送元、転送先ともにリモートマシンを指定し、第3者によるリモートマシン間での ファイルのコピーを行うこともできます。 .Sh 関連項目 .Xr cp 1 , .Xr ftp 1 , .Xr rlogin 1 , .Xr rsh 1 .Sh 歴史 .Nm rcp コマンドは .Bx 4.2 から登場しました。 このバージョンの .Nm rcp は、 .Bx 4.3 Reno において Kerberos を組み込んで再インプリメントされました。 .Sh バグ ディレクトリが指定されるべき場所にファイルが指定されている場合を検出で きるとは限りません。 .Pp リモートホストの .Pa \&.login , .Pa \&.profile または .Pa \&.cshrc 内のコマンドの出力によって混乱することがあります。 .Pp 転送先のマシンにバージョン .Bx 4.2 の .Nm rcp が動作している場合、``rhost.rname''のように転送先のユーザー名とホスト 名を指定しなければなりません。 diff --git a/ja_JP.eucJP/man/man1/rdist.1 b/ja_JP.eucJP/man/man1/rdist.1 index 43a9e8dc84..8b2afdb87c 100644 --- a/ja_JP.eucJP/man/man1/rdist.1 +++ b/ja_JP.eucJP/man/man1/rdist.1 @@ -1,442 +1,442 @@ .\" 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. .\" .\" @(#)rdist.1 8.3 (Berkeley) 3/17/94 .\" jpman %Id: rdist.1,v 1.2 1997/06/05 02:50:01 yugawa Stab % .\" Original revision: 1.3.2.5 .\" .Dd March 17, 1994 .Dt RDIST 1 .Os BSD 4.3 .Sh 名称 .Nm rdist .Nd リモートファイル配布プログラム .Sh 書式 .Nm rdist .Op Fl nqbRhivwy .Op Fl P Ar rshcmd .Op Fl f Ar distfile .Op Fl d Ar var=value .Op Fl m Ar host .Op Ar name ... .Nm rdist .Op Fl nqbRhivwy .Op Fl P Ar rshcmd .Fl c .Ar name ... .Oo login@ Oc Ns Ar host Ns Op :dest .Sh 解説 .Nm は、複数のホストに対し、ファイルの内容を同一に維持するためのプログラムです。 -本プログラムによるファイルコピーでは、可能な限りオーナ、グループ、アクセスモー -ド、そして更新時刻を保存しようとします。そして、現在実行中のプログラム -の更新も可能です。 +本プログラムによるファイルコピーでは、可能な限り所有者、グループ、 +アクセスモード、そして更新時刻を保存しようとします。 +そして、現在実行中のプログラムの更新も可能です。 .Nm は、コマンドを .Ar distfile から読み出し、その内容に従ってファイルやディレクトリの更新を制御します。 .Pp 第 1 の書式特有のオプション: .Pp .Bl -tag -width indent .It Fl .Ar distfile に .Sq Fl を指定した場合、標準入力からデータを入力します。 .It Fl f Ar distfile 指定した .Ar distfile を使用します。 .El .Pp .Fl f オプションも .Sq Fl オプションも指定されない場合には、本プログラムは最初に .Dq Pa distfile を、次に .Dq Pa Distfile を探し、入力として使用します。 コマンド行にて何の指定も与えられない場合には、 .Nm は、 .Ar distfile に記述されたすべてのファイルとディレクトリを更新します。 それ以外の場合では、引数は、更新対象となるファイル名あるいは 実行されるコマンドのラベルと解釈されます。 ラベルやファイル名が衝突する場合には、すべてラベルとして取り扱います。 これらの名前は、指定したコマンドを用いて指定したファイルを更新するのに 用いられます。 .Pp 第 2 の書式特有のオプション: .Pp .Bl -tag -width Fl c .It Fl c .Nm に、残りの引数を小規模の .Ar distfile として解釈するように指示します。 .Pp このオプションを使用した場合と等価な distfile は、以下のようになります。 .Pp .Bd -filled -offset indent -compact .Pq Ar name ... .Li -> .Op Ar login@ .Ar host .Bd -filled -offset indent -compact .Li install .Op Ar dest ; .Ed .Ed .El .Pp 両方の書式に共通のオプション: .Pp .Bl -tag -width Ic .It Fl P Ar rshcmd .Xr rsh 1 と同様な機能を持つ他のプログラムをリモートサーバへの転送に使用します。 指定したプログラムはリモートサーバへバイナリ透過な経路を使用できる必要が あり、コマンド引数の書式が .Xr rsh 1 と互換でなければなりません。 .It Fl d Ar var=value .Ar var に対して .Ar value を代入することを定義します。 .Fl d オプションは、変数を定義したり、 .Ar distfile 中の変数を変更したりするのに用いられます。 .Ar value には、空白文字列、名前、もしくは括弧で囲まれて、タブやスペースで区切ら れた名前の列挙が指定可能です。 .It Fl h シンボリックリンクを追いかけます。リンクしてあるファイルの場合、リンクファ イルそのものでなく、リンク先にある実体をコピーします。 .It Fl i 解決できないリンクを無視します。 .Nm は、通常はリンクファイルについてもコピーを行ない、リンクが解決出来ない場合 には、その旨をユーザに通知します。 .It Fl m Ar host ファイルを更新するホストを制限します。 複数の .Fl m 引数を指定する事で、 .Ar distfile に記述のあるホスト名の中から複数のホスト名を選択して与えることが可能です。 .It Fl n 実行しないで、コマンド自身を表示します。本オプションは .Ar distfile のデバッグに有効です。 .It Fl q QUIETモードに入ります。更新されるファイルについては、通常は標準出力に 表示されますが、 .Fl q オプションはこの出力を抑制します。 .It Fl R 無関係なファイルを削除します。ディレクトリを更新する場合に、 リモートホスト上に存在するファイルが、配布元のディレクトリ中に存在しないなら、 該当するファイルを削除します。本オプションは、配布元と配布先で完全にディ レクトリ配下の内容を一致させたい場合に有効です。 .It Fl v すべてのホストのファイルが最新の物であるかの確認を行ないます。すべての 古いファイルについては一覧が表示されますが、そのファイルが変更されたり、 そのファイルに関してシステムからメールが届いたりすることはありません。 .It Fl w WHOLE モードを有効にします。指定されたファイル名全体が、配布先ディレクトリ名の 後に付加されます。通常は、ファイル名からディレクトリ名を取り除いた 最後の部分のみがファイル名を変更する時に使われます。 本オプションは、ディレクトリ構造をフラットにせず、配布元のディレクトリ 構造をそのまま配布先に持っていきたい場合に用いられます。例えば、 ( dir1/f1 dir2/f2 )のように表されるファイルを、dir3 というディレクトリに 配布した場合、配布先では dir3/f1 や dir3/f2 ではなく、 dir3/dir1/f1 や dir3/dir2/f2 が作成されます。 .It Fl y YOUNGERモードを有効にします。通常、ファイルの更新は、 .Ar mtime と .Ar size ( .Xr stat 2 参照) が一致しない場合に行なわれます。しかし、 .Fl y オプションが有効になっている場合には、 .Nm は、配布元のファイルより新しいファイルは更新しません。 通常本オプションは、他のホストに存在する、より新しいファイルを置き換えない 目的で用いられます。 配布元より新しいファイルが配布先にあった場合には、その旨を通知するメッセー ジが表示されます。 .El .Pp .Ar distfile は、コピーされるファイル、配布先ホスト、そして更新のための手順を指定 するエントリを含みます。各エントリは、以下の形式のいずれかに分類され ます。 .Pp .Bd -literal -offset indent -compact `=' [label:] `\->' [label:] `::' .Ed .Pp 一番目の形式は、値を定義するのに用いられます。 二番目の形式は、他のホストへファイルを配布するのに用いられます。 三番目の形式は、指定した日付以降に更新されたファイルの一覧を作成するのに 用いられます。 .Ar source list は、配布元のファイルやディレクトリの一覧を指定します。 .Ar destination list は、ファイルの配布先のホスト一覧です。配布元ファイルリスト (source list) 中の各ファイルが、更新を行なおうとしているホストにおいて古いもの である(二番目の形式)か、または、指定のファイルのタイムスタンプより新し い場合(三番目の形式)には、変更対象リストに追加されます。 .Pp ラベルの使用は、任意です。ラベルについては、部分的な変更を行なう場合 に、コマンドを識別するために用いられます。 .Pp 改行、タブ、そして空白は、セパレータとしてのみ用いられ、それ以外の場で 用いられた場合には無視されます。コメントは、`#' で始まり改行で終ります。 .Pp `$' で始まり、1文字もしくは `{''}' でくくられた名前の変数については、処理中に その値に置き換えられます(最後に出てくる例を参照して下さい)。 .Pp 配布元ファイルリストと配布先ホストリストの一覧は、以下の形式を取ります。 .Bd -literal -offset indent <名前> .Ed または .Bd -literal -offset indent -compact `(' <空白で区切られた 0 個以上の名前> `)' .Ed .Pp シェルのメタ文字であるところの `[', `]', `{', `}', `*', そして `?' は、(配布元のホスト上でのみ) .Xr csh 1 同様に解釈され、展開されます。 これは、バックスラッシュを用いて回避する事が出来ます。 `~' 文字もまた、 .Xr csh 1 同様に展開されますが、配布元と配布先のホストで別々に展開されます。 .Fl w オプションが `~' ではじまるファイル名とともに用いられた場合、ホームディ レクトリを除くすべてのファイル/ディレクトリ名が配布先の名前に加えられます。 `/' や `~' 以外の文字ではじまるファイル名は、配布先のユーザのホームディ レクトリをルートディレクトリとみなして、指定されたファイルの名前を 追加して配布先でのファイル名を作成します。 .Pp コマンドリストは、以下の形式に従った、0 個以上のコマンドからなります。 .Bd -ragged -offset indent -compact .Bl -column except_patx pattern\ listx .It `install' opt_dest_name `;' .It `notify' `;' .It `except' `;' .It `except_pat' `;' .It `special' string `;' .El .Ed .Pp .Ic install コマンドは、古いファイルやディレクトリをコピーするのに用いられます。 各配布元のファイルは、配布先ホストリスト中の各ホストへコピーさ れます。ディレクトリも同様にして、再帰的にコピーされます。 .Ar Opt_dest_name は、ファイル名を変更するための任意的なパラメータです。 .Ic install コマンドがコマンドリストに存在しない場合や、配布先での ファイル名が指定されていない場合、配布元のファイル名がそ のまま配布先でのファイル名として採用されます。 パス名に含まれるディレクトリが配布先のホスト上に存在しない 場合には、そのディレクトリを作成します。 不慮の事故を回避するために、配布先のホスト上に空でないディレクトリがあっ ても、通常のファイルやシンボリックリンクに置き換えたりはしません。 しかし、`\-R'オプションを付加して実行した場合には、配布元のディレクト リに当該ファイルが存在しなければ、空でないディレクトリでも削除されます。 .Ar option には、`\-R', `\-h', `\-i', `\-v', `\-w', `\-y', `\-b' があり、それらが配布元ファイルリストに記述されたファイルに対 してのみ適用される事を除いて、コマンドライン中に指定した事と同じ意味と なります。 配布先ホストにおけるログイン名は、配布元でのログイン名と同じですが、配 布先のログイン名が ``login@host" という形式で指定されている場合にはこの 限りではありません。 .Pp .Ic notify コマンドは、更新されたファイル一覧(および、発生した何らかのエラー)をメール によって通知する場合に用いられます。 指定のメールアドレス中に `@' がない場合には、配布先のホスト名がメールア ドレスに付加されます(例: name1@host, name2@host, ...)。 .Pp .Ic except コマンドは、 .Ar name list に列挙されているファイルを除き、配布元ファイルリストに記述されているすべての ファイルを更新するのに用いられます。 本コマンドは、特定ファイルを除くすべてのファイルをコピーするのに用い られます。 .Pp .Ic except_pat コマンドは、 .Ic except コマンドと似てますが、 .Ar pattern list として正規表現を用いたリストを指定できるところが異なります (詳細については、 .Xr re_format 7 を参照して下さい)。 ファイル名に含まれる文字列が、正規表現のパターンに一致すると、そのファ イルは無視されます。 `\e' が文字をクオートする事に注意して下さい。正規表現に含めるためには、 2 個続ける必要があります。 .Ar pattern list の中の変数は展開されますが、シェルのファイルパターンマッチ方法とは異なります。 `$' を含めるためには、`\e' を用いてエスケープする必要があります。 .Pp .Ic special コマンドは、 .Ar name list にて指定されたファイルを更新、または、コピーした後に、配布先の ホスト上で実行される .Xr sh 1 コマンドを指定するのに用いられます。 .Ar name list が省略された場合には、シェルコマンドは各ファイルの更新が終了する度に 実行されます。シェル変数 `FILE' には、 文字列 .Ar string で指定したコマンドを実行する前に、直前に処理したファイル名が格納されます。 文字列 .Ar string を、`"'で囲む事で、 .Ar distfile において複数行にわたって記述する事が出来ます。 シェルに対する複数の実行コマンドは、`;'で区切られる必要があります。 指定されたコマンドは、ファイルの更新を行なおうとしている配布先ホストの 当該ユーザのホームディレクトリで実行されます。 .Ar special コマンドは、プログラムがファイルを更新した後にプライベートデータベース を再構築する用途をはじめとして、いろいろな場面で用いる事が出来ます。 .Pp 以下に示す例は簡単な一例です。 .Bd -literal -offset indent HOSTS = ( matisse root@arpa ) FILES = ( /bin /lib /usr/bin /usr/games \t/usr/include/{*.h,{stand,sys,vax*,pascal,machine}/*.h} \t/usr/lib /usr/man/man? /usr/ucb /usr/local/rdist ) EXLIB = ( Mail.rc aliases aliases.dir aliases.pag crontab dshrc \tsendmail.cf sendmail.fc sendmail.hf sendmail.st uucp vfont ) ${FILES} -> ${HOSTS} \tinstall -R ; \texcept /usr/lib/${EXLIB} ; \texcept /usr/games/lib ; \tspecial /usr/lib/sendmail "/usr/lib/sendmail -bz" ; srcs: /usr/src/bin -> arpa \texcept_pat ( \e\e.o\e$ /SCCS\e$ ) ; IMAGEN = (ips dviimp catdvi) imagen: /usr/local/${IMAGEN} -> arpa \tinstall /usr/local/lib ; \tnotify ralph ; ${FILES} :: stamp.cory \tnotify root@cory ; .Ed .Sh 関連ファイル .Bl -tag -width /tmp/rdist* -compact .It Pa distfile 入力コマンドファイル .It Pa /tmp/rdist* 更新リストのために用いられる一時ファイル .El .Sh 関連項目 .Xr csh 1 , .Xr sh 1 , .Xr stat 2 , .Xr re_format 7 .Sh 歴史 .Nm コマンドは、 .Bx 4.3 から登場しました。 .Sh 診断 .Nm のバージョン不一致についての通知は、実際にはシェルを起動する際の 何らかの問題に起因して発生します。例えば、ユーザの所属グループがあまり 多すぎるなどが挙げられます。 .Pp .Nm は、 .Xr rcmd 3 タイプのリモートサービス実行が、静かに成功することに依存します。 よくある誤りとしては、非対話の初期化スクリプト、例えば .Pa .cshrc が出力を行なってしまうことがあります (出力を行う他のプログラムを実行するものの、 そのプログラムが端末に接続されていないということもあります -- よくある原因が .Xr stty 1 です)。 このような余計な出力のために、 .Nm が失敗して次のようなエラーメッセージが表示されます: .Pp .Dl rdist: connection failed: version numbers don't match .Sh バグ 配布元ファイルは、 .Nm コマンドが起動される配布元ホストに存在しなければなりません。 .Pp ディレクトリ配下のすべてのファイルが更新された後に特定のコマンドを実行 するのは困難です。 .Pp 変数の置換は、name list に対してのみ働きます。より一般的なマクロ の機能があるべきでしょう。 .Pp .Nm は、負 (1970 年 1 月 1 日以前の日付)の mtime を持つファイルに対してのアクセスを 行なうと異常終了します。 .Pp 空でないディレクトリを通常ファイルやシンボリックリンクで置換できる、 `force' オプションがあるべきでしょう。内容自体は一致しているファイルのモード やオーナを更新する方法も必要でしょう。 diff --git a/ja_JP.eucJP/man/man1/sdiff.1 b/ja_JP.eucJP/man/man1/sdiff.1 index 3249bd8484..752df76749 100644 --- a/ja_JP.eucJP/man/man1/sdiff.1 +++ b/ja_JP.eucJP/man/man1/sdiff.1 @@ -1,201 +1,201 @@ .\" jpman %Id: sdiff.1,v 1.3 1997/06/18 16:52:25 horikawa Stab % .TH SDIFF 1 "22sep1993" "GNU Tools" "GNU Tools" .SH 名称 sdiff \- 2 つのファイルの違いを調べ、インタラクティブにマージを行なう .SH 書式 .B sdiff .B -o outfile [options] from-file to-file .SH 解説 .I sdiff は、2 つのファイルつを読み込んでマージし、 結果を対話的に .IR outfile に出力します。 もし、 .I from-file としてディレクトリを指定し、 .I to-file がディレクトリでなかった場合、 .I sdiff は、 .I to-file で指定したファイル名と同じ名前のファイルを .I from-file のディレクトリから捜して、そのファイルとの間で比較を行ないます。 その逆も同じです。 .I from-file と .I to-file の両方にディレクトリを指定することはできません。 .I sdiff のオプションは .B \- から始まりますので、通常 .I from-file や .I to-file に .B \- から始まるものを指定できません。しかし、引数に .B \-\- を指定することにより、残りの引数がたとえ .B \- で始まっていたとしてもファイル名として扱わせます。 .B \- を入力ファイルとして使用することは出来ません。 .B \-o (や .BR \-\-output ) 無しで .I sdiff を使用すると、左右に差分を表示します。この使い方は廃れています; .B "diff \-\-side\-by\-side" として使って下さい。 .SS オプション 以下は GNU .I sdiff が受け付けるオプションのまとめです。 どのオプションも 2 つの等価な名前を持ちます。 一つは一文字で前に .BR \- が付き、もう一つは長い名前で前に .BR \-\- が付きます。 一文字のオプション(引数を取らない場合に限ります)は、 まとめて一つのコマンドライン引数に出来ます。 長い名前のオプションは識別できる限りにおいて短縮できます。 .TP .B \-a テキストに見えないとしても、 全てのファイルをテキストとして扱い、行毎に比較します。 .TP .B \-b 空白の量の違いを無視します。 .TP .B \-B 空白行の増減を無視します。 .TP .B \-d より小さい違いを見付けるかも知れないアルゴリズムに変更します。 .I sdiff は遅く(あるときには過度に遅く)なります。 .TP .B \-H 多くの小さな違いを持つ 大きなファイルを高速に扱うヒューリスティクスを使用します。 .TP .B \-\-expand\-tabs 出力においてタブを空白に展開し、 -入力ファイルのタブのアラインメントを保存します。 +入力ファイルのタブの境界条件を保存します。 .TP .B \-i 大文字小文字の違いを無視します; 大文字と小文字とを同一視します。 .TP .BI "\-I " regexp .I regexp にマッチする行の挿入および削除を無視します。 .TP .B \-\-ignore\-all\-space 行を比較している時に、空白を無視します。 .TP .B \-\-ignore\-blank\-lines 空行の挿入削除を無視します。 .TP .B \-\-ignore\-case 大文字小文字の違いを無視します; 大文字と小文字とを同一視します。 .TP .BI \-\-ignore\-matching\-lines= regexp .I regexp にマッチする行の挿入および削除を無視します。 .TP .B \-\-ignore\-space\-change 空白の量に関する違いを無視します。 .TP .B \-l .br .ns .TP .B \-\-left\-column 共通の行に関しては左のカラムだけを表示します。 .TP .B \-\-minimal より小さい違いを見付けるかもしれないアルゴリズムに変更します。 .I sdiff は遅く(あるときには過度に遅く)なります。 .TP .BI "\-o " file .br .ns .TP .BI \-\-output= file マージした出力を .I file に出力します。 マージ時にはこのオプションが必要です。 .TP .B \-s .br .ns .TP .B \-\-suppress\-common\-lines 共通行を表示しません。 .TP .B \-\-speed\-large\-files 多くの小さな違いを持つ 大きなファイルを高速に扱うヒューリスティクスを使用します。 .TP .B \-t 出力においてタブを空白に展開し、 -入力ファイルのタブのアラインメントを保存します。 +入力ファイルのタブの境界条件を保存します。 .TP .B \-\-text テキストに見えないとしても、 全てのファイルをテキストとして扱い、行毎に比較します。 .TP .B \-v .br .ns .TP .B \-\-version .I sdiff のバージョンを表示します。 .TP .BI "\-w " columns .br .ns .TP .BI \-\-width= columns 出力の幅を .I columns にします。 歴史的な理由で、 .I diff では .B \-W に、 .I sdiff では .B \-w になっています。 .TP .B \-W 行を比較する時に水平空白を無視します。 歴史的な理由で .I diff では .B \-w に、 .I sdiff では .B \-W になっています。 .SH 関連項目 cmp(1), comm(1), diff(1), diff3(1) .SH 診断 比較結果として、違いが無かった場合は、0 を、違いが発見された場合は 1 を、何かエラーがおきた場合は、2 を返します。 diff --git a/ja_JP.eucJP/man/man1/sh.1 b/ja_JP.eucJP/man/man1/sh.1 index af683ecaee..f84e99a603 100644 --- a/ja_JP.eucJP/man/man1/sh.1 +++ b/ja_JP.eucJP/man/man1/sh.1 @@ -1,1192 +1,1192 @@ .\" 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 .\" %Id: sh.1,v 1.9.2.8 1998/02/15 11:32:26 jkh Exp % .\" jpman %Id: sh.1,v 1.2 1997/05/31 16:40:31 jsakai Stab % .\" 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 /+abCEefIimnpsuVvx .Op Fl /+o Ar longname .Op Fl c Ar string .Op Ar arg ... .Sh 解説 .Nm sh はシステムの標準コマンドインタープリタです。 現在 .Nm は .St -p1003.2 のシェル規約に対応する途上にあります。 本バージョンのシェルは、見方によっては Korn shell と同様に 見える機能を多数持っていますが、 Korn shell のクローンではありません(もし Korn shell クローンを望むなら、 Gnu の bash を使いましょう)。 このシェルには、POSIX で規定された仕様といくつかの Berkeley 拡張のみが 取り入れられています。 本マニュアルは、shell のチュートリアルでは ありませんし、仕様を完全に記述するものでもありません。 .Ss 概要 シェルは、ファイルまたは端末から 1 行ずつ読み込み、それを解釈し、 コマンドを実行します。シェルはユーザがシステムにログインしたときに起動 されるプログラムです(ただし、ユーザは chsh(1) コマンドによって他のシェルを選択することもできます)。 シェルは、制御構文を持つ言語であり、 データ記憶をはじめとして多様な機能を提供するマクロ機能、 ヒストリ、行編集機能も内蔵しています。 このシェルは対話的に使うときに便利な機能を多くとり入れており、 対話的に用いるときも非対話的に (シェルスクリプトとして) 用いるときも、 共通のインタプリタ言語を用いることができる利点があります。 すなわち、コマンド名をシェルに直接タイプする ことも、コマンド名をファイルに書いておいてそのファイルをシェルに 実行させることもできます。 .Ss 起動 引数が与えられず、かつシェルの標準入力が端末の場合 (または -i フラグが指定 された場合)、シェルは対話的に動作します。対話的シェルは、通常、コマンド 入力時にプロンプトを表示し、文法的なエラーとコマンドエラーを 異なった方法で処理します (後述します)。 起動時に、シェルは 0 番目の引数を検査します。もしそれが ダッシュ `-' で始まっているなら、シェルはログインシェルとして 動作します。ユーザがシステムにログインした場合は自動的にこの状況に なります。ログインシェルは、まず (以下の各ファイルが存在する場合)、 .Pa /etc/profile と .Pa .profile ファイルからコマンドを読み込みます。 シェル起動時に、もしくはログインシェルで .Pa .profile を実行中に環境変数 .Ev ENV が設定されているなら、シェルは、その次に環境変数 .Ev ENV で示されたファイルからコマンドを読み込みます。 つまり、ユーザはログイン時にのみ実行したいコマンドを .Pa .profile に書き、シェルが起動されるたびに実行したいコマンドを環境変数 .Ev ENV で示すファイルに書くことになります。 環境変数 .Ev ENV を設定するには、ユーザのホームディレクトリ下のファイル .Pa .profile に以下のように記述します。 .sp .Dl ENV=$HOME/.shinit; export ENV .sp ここで、 .Pa .shinit のかわりに好きな名前を指定することができます。 オプション以外にコマンドライン引数が指定された場合、シェルは最初の引数 を、コマンドを読み込むべきファイル (シェルスクリプト) の名前であると解釈し、 それ以後の引数はシェルの位置パラメータ ($1, $2, ...) に設定します。 それ以外の場合、シェルはコマンドを標準入力から読み込みます。 .Pp 古いバージョンの .Nm とは異なり、環境変数 .Ev ENV で指定したスクリプトが実行されるのは、対話的シェルの呼び出し時のみです。 これにより、いい加減に書かれた .Ev ENV スクリプトに起因する、簡単に食いものにされることが多い有名な セキュリティホールがふさがれたことになります。 .Ss 引数リスト処理 .Nm の 1 文字からなるオプションはそれぞれ対応する名前を持っており、 .Xr set 1 組み込みコマンド (後述) の引数として用いることができます。 これらの名前は、以下の説明で 1 文字オプションのすぐあとに書いてあります。 マイナス記号 .Dq - でオプションを指定することは、そのオプションを有効にすることを意味し、 プラス記号 .Dq + でオプションを指定することは、そのオプションを無効にすることを意味します。 .Bl -tag -width Ds .It Fl a Li allexport 値が代入された変数の全てをエクスポートします(未実装です)。 .It Fl b Li notify バックグラウンドジョブ実行の完了を、コマンドが実行中でも即座に報告しま す(未実装です)。 .It Fl C Li noclobber すでに存在するファイルに対して .Dq > リダイレクトにより上書きしません (未実装です)。 .It Fl E Li emacs 組込みの .Xr emacs 1 風のコマンド行編集機能を有効にします (それ以前に -V オプションが指定 された場合、それを無効にします)。 .It Fl e Li errexit 非対話的シェルで、テスト状態にないコマンドの実行に失敗した場合、 直ちにシェルを終了します。 コマンドは、if, elif, while, until 構文を 制御するのに用いられている場合に、テスト状態であるとみなされます。 また、 .Dq && や .Dq || の左辺値として用いられているコマンドも、テスト状態とみなされます。 .It Fl f Li noglob パス名展開を行ないません。 .It Fl I Li ignoreeof 対話的シェルの場合、入力の 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 コマンドを標準入力から読み込みます (引数でファイル名が指定されていない 場合には、このオプションが自動的に設定されます)。 シェルが実行されてから本オプションを( .Xr set 1 などによって)設定しても効果はありません。 .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 各コマンドを実行する前に、そのコマンドを標準エラー出力に (各コマンドの 前に `+' を付加して) 書き出します。デバッグのときに便利です。 .It Fl c Ar string 文字列引数 string はシェルに渡され、入力として解釈されます。このオプショ ンは引数として文字列を一つだけ受け取ることに注意して下さい。ですから、複 数の単語からなる文字列は引用符で囲う必要があります。 .El .Ss 構文構造 シェルは、ファイルを行単位で読み込み、空白文字 (ブランクおよびタブ) や シェルにとって特別な意味を持つ特定の文字列 ( .Dq 演算子 と呼ばれるもので す) を区切りとして、複数の単語に分割します。演算子には、制御演算子とリ ダイレクト演算子の 2 種類があります (これらの意味については後述します)。 以下に、それらの一覧を示します。 .Bl -tag -width Ds .It No 制御演算子: & && ( ) ; ;; | || .No \en .It No リダイレクト演算子: < > >| << >> <& >& <<- <> .El .Ss 引用(クォート) 引用は、特殊な意味を持つ文字や単語 (演算子、空白、キーワードなど) の意味 を打ち消すために用います。引用には、シングルクォート文字のペアを使う方法、 ダブルクォート文字のペアを使う方法、バックスラッシュ文字を使う方法 の 3 種類があります。 .Bl -tag -width Ds .It シングルクォート文字 シングルクォートのペアで囲まれた文字は、すべてその文字そのまま(リテラ ル)として扱われます (ただしシングルクォートは別です。シングルクォート で囲った文字列の中にシングルクォートを含めることはできません)。 .It ダブルクォート文字 ダブルクォートのペアで囲まれた文字は、ドル記号文字($)、バッククォート 文字(`)、バックスラッシュ文字(\\) を除き、すべてリテラルとして扱われま す。ダブルクォート文字による引用の中にあるバックスラッシュ文字は、歴史 的経緯によりすこし変わった扱いを受けます。つまり、直後に $, `, ", \\, 改行文字 が来るときにのみ、それらの文字がリテラルとして扱われます。そ れ以外の文字が来る場合、バックスラッシュ文字自体がリテラルとして扱われ ます。 .It バックスラッシュ バックスラッシュは、その後ろの 1 文字を、リテラルとして扱うように指示 します。ただし改行文字は別です。改行文字の直前のバックスラッシュは、行 の継続であるとみなされます。 .El .Ss 予約語 予約語はシェルにとって特別な意味を持つ単語で、行の先頭または制御演算子 の直後でのみ予約語として認識されます。以下に予約語の一覧を挙げます。 .Bd -literal -offset indent ! { } case do done elif else esac fi for if then until while .Ed .Ss エイリアス エイリアスは、名前とそれと対応する値が対になったもので、 組込みコマンド .Xr alias 1 によって定義されます。 シェルは、予約語が現れる可能性がある場所(上記を参照)で、 ある単語に対して、それが予約語かどうかの検査を済ませたのち、 それがエイリアスに一致するかどうかを検査します。 もし一致したならば、入力行の中で、その単語をエイリアスの値に置き換えます。 たとえば、``lf'' という名前で ``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 単語の前にある ``name=value'' の形式の単語を取り除き、 単純コマンドの環境に代入します。 リダイレクト演算子とその引数 (後述) を取り除き、 あとで処理できるように保存します。 .It 残った単語を、「展開」の節で説明する方法で展開します。 展開後の最初の単語をコマンド名とみなし、コマンドの位置を探索します。 残りの単語はコマンドへの引数とみなされます。 処理の結果、コマンド名が残らなかった場合、手順 1) で 取り出した ``name=value'' の変数代入を、現在のシェルの環境に反映します。 .It 次節で説明する方法で、リダイレクトを行ないます。 .El .Ss リダイレクト リダイレクトは、コマンドがどこから入力するか、どこへ出力するかを 変更するときに用います。 一般には、リダイレクトでは、ファイルのオープン、クローズ、または ファイルへの参照の複写 (duplicate) を行います。 リダイレクトで用いられる全般的な形式は、以下のとおりです。 .sp .Dl [n] redir-op file .sp ここで、redir-op は前述したリダイレクト演算子のいずれかです。 これらの演算子をどのように利用するかの例をいくつか以下に挙げます。 .Bl -tag -width "1234567890" -offset indent .It [n]> file 標準出力 (またはファイル記述子 n への出力) をファイル file に書き出します。 .It [n]>| file 上と同様。ただし、-C オプションの効果を打ち消します。 .It [n]>> file 標準出力 (またはファイル記述子 n への出力) をファイル file に追加します。 .It [n]< file 標準入力 (またはファイル記述子 n からの入力) をファイル file から取ります。 .It [n1]<&n2 ファイル記述子 n2 を標準入力 (またはファイル記述子 n1) に複写します。 .It [n]<&- 標準入力 (またはファイル記述子 n) をクローズします。 .It [n1]>&n2 ファイル記述子 n2 を標準出力 (またはファイル記述子 n1) に複写します。 .It [n]>&- 標準出力 (またはファイル記述子 n) をクローズします。 .It [n]<> file 標準入力 (あるいはファイル記述子 n) により、ファイル file を 読み書きするようにします。 .El .Pp 以下のリダイレクトは、しばしば``ヒア・ドキュメント(here-document)''と 呼ばれます。 .Bd -literal -offset indent [n]<< delimiter here-doc-text... delimiter .Ed .Pp シェルは、delimiter までの行を保存し、コマンドへの標準入力またはファイ ル記述子 n にリダイレクトします。最初の行の delimiter が引用 (クォー ト) されていた場合、here-doc-text の内容をリテラルとして扱います。そ うでない場合、パラメータ展開、コマンド置換、数値演算 (「展開」の節で説 明します) を適用します。演算子が (``<<'' でなく) ``<<-'' の場合は、 here-doc-text の各行の行頭のタブを取り除きます。 .Ss コマンド検索と実行 コマンドには、シェル関数、組込みコマンド、通常プログラムの 3 種類があり、 コマンドを検索する際には、シェルは名前の検索をこの順序で行います。 それぞれのコマンドは異なる方法で実行されます。 .Pp シェル関数を実行するとき、$0 を除くすべての位置パラメータ ($1, $2,..) をシェル関数への引数として設定します。$0 は変更されません。シェル関数 の環境として指定された変数 (関数名の直前に ``name=value'' を置いて指定 されたもの) は、その関数に局所的な変数となり、指定された初期値が設定さ れます。そして、シェルは関数定義で与えられたコマンドを実行します。コマ ンドの実行が完了すると、位置パラメータを元の値に戻します。これは全て現 在のシェルの中で処理されます。 .Pp 組込みコマンドは、新たなプロセスを作成せずにシェル内部で実行されます。 .Pp コマンドが関数でも組込みコマンドでもない場合は、通常のプログラムとみなし (次節で説明するとおり) ファイルシステムの中でそのコマンドを検索します。 通常のプログラムを実行する場合、シェルは引数と 環境をプログラムに渡して、そのプログラムを実行します。 プログラムが通常の実行ファイル形式ではない場合 (つまり、 .Tn ASCII 表現で "#!" となる「マジックナンバ」でファイルが始まっておらず、 .Fn execve 2 が .Er ENOEXEC を返す場合)、 サブシェルの中でそのプログラムを解釈実行します。この場合、あたかも新た にシェルが起動されたかのような効果を得るために、子シェルは自分自身を再 初期化します。ただし、子プロセスは、親シェル中のハッシュされたコマンド 位置情報を憶えており、これは再初期化されません。 .Pp 本ドキュメントの古いバージョンや古いソースコードでは、ときおり、マジッ クナンバのないシェルスクリプトのことを「シェルプロシージャ」と呼んでい て、まぎらわしい場合がありますので注意して下さい。 .Ss パス検索 コマンドを検索するとき、シェルは、まず、その名前のシェル関数があるかどうかを 調べます。次に、その名前の組込みコマンドがあるかどうかを調べます。 組み込みコマンドでもない場合、以下のいずれかの処理が行われます: .Bl -enum .It コマンド名にスラッシュが含まれていれば、検索は行わず、 単にそのコマンドが実行されます。 .It 変数 .Ev PATH に含まれる各エントリに対して、順にそのコマンドを検索します。 変数 .Ev PATH の値はコロン(``:'')で区切られたエントリの列でなければなりません。 各エントリは、それぞれディレクトリ名一つに対応します。 カレントディレクトリは、 空のディレクトリ名を指定することで暗黙的に、 あるいは 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 パイプラインの形式は次のとおりです。 .Bd -literal -offset indent [!] command1 [ | command2 ...] .Ed .Pp command1 の標準出力は command2 の標準入力に接続されます。コマンドの標 準入出力がパイプラインによって割り当てられるのは、各コマンドに属するリ ダイレクト演算子で指定されたリダイレクトを処理する前のことだと考えて下 さい。 .Pp パイプラインがバックグラウンド (後述) でなければ、シェルはすべての コマンドが終了するのを待ちます。 .Pp パイプラインの直前に予約語 `!' が置かれなかった場合、終了ステータスは パイプラインの最後のコマンドの終了ステータスとなります。 `!' が前置された場合、終了ステータスはパイプラインの最後のコマンドの 終了ステータスの論理否定を取った値となります。 すなわち、最後のコマンドが 0 を返した場合、パイプラインの 終了ステータスは 1 に、最後のコマンドが 0 より大きな値を返した場合、 終了ステータスは 0 になります。 .Pp パイプラインによる標準入出力の接続はリダイレクトに先立って行われるため、 パイプラインの接続をリダイレクトによって修正することができます。たとえば、 .Bd -literal -offset indent $ command1 2>&1 | command2 .Ed .Pp は、command1 の標準出力と標準エラー出力の両方を command2 の標準入力に 接続します。 .Pp \&; または改行文字を終端として用いることにより、直前の AND-OR リスト (後述) を 順次実行します。& は、直前の AND-OR リストを非同期に実行します。 .Pp 注: 他のいくつかのシェルと異なり、パイプラインの各プロセスは 起動したシェルの子プロセスとなります (シェルの組み込みコマンドである ときは別です。その場合は現在のシェルで実行されます --- ただし 環境に対して行った操作は取り消されます)。 .Ss バックグラウンドコマンド -- & コマンドが制御演算子 & で終了している場合、シェルはそのコマンドを 非同期に実行します。すなわち、シェルはそのコマンドの終了を待たずに、 次のコマンドの実行を開始します。 .Pp コマンドをバックグラウンドで実行させるための形式は以下のとおりです。 .Bd -literal -offset indent command1 & [command2 & ...] .Ed .Pp シェルが対話的でない場合、非同期コマンドの標準入力には /dev/null が 接続されます。 .Ss リスト -- 一般的な話 リストは 0 個またはそれ以上のコマンドを改行文字、セミコロン文字、アン パーサント文字 (&) で区切った列です。リストは、これら 3 つの記号のいず れかで終了させることもできます。リスト中のコマンドは並べられた順に実行 されます。もし、コマンドに続けてアンパーサント文字が置かれている場合、 シェルはそのコマンドを起動したあと、すぐに次のコマンドの処理を開始しま す。その他の場合、そのコマンドの終了を待ってから次のコマンドの処理を開 始します。 .Ss 短絡リスト演算子(Short-Circuit List Operators) ``&&'' と ``||'' は AND-OR リスト演算子です。 ``&&'' は最初のコマンド を実行し、もし最初のコマンドの終了ステータスが 0 ならば次のコマンドを 実行します。 ``||'' も同様ですが、最初のコマンドの終了ステータスが 0 でない場合に、次のコマンドを実行します。 ``&&'' と ``||'' の優先順位は 同じです。 .Ss 制御構造 -- if, while, for, case if コマンドの文法は以下のとおりです。 .Bd -literal -offset indent if list then list [ elif list then list ] ... [ else list ] fi .Ed .Pp while コマンドの文法は以下のとおりです。 .Bd -literal -offset indent while list do list done .Ed .Pp 最初のリストの終了ステータスが 0 であるかぎり、2 つのリストを繰り返し 実行します。until コマンドも同様に実行しますが、 単語 while の代わりに単語 until を使うことと、 最初のリストの終了ステータスが 0 になるまで、 2 つのリストを繰り返し実行することが異なります。 .Pp for コマンドの文法は以下のとおりです。 .Bd -literal -offset indent for variable in word... do list done .Ed .Pp 各 word は展開され、変数 variable に word を順に設定しながらリストを 繰り返し実行します。do と done は ``{'' と ``}'' で置き換えることができます。 .Pp break と continue コマンドの文法は以下のとおりです。 .Bd -literal -offset indent break [ num ] continue [ num ] .Ed .Pp break は内側から num 個の for ループまたは while ループを終了します。 continue は、 num 個目のループの次の繰り返しに制御を移します。 .\" 上の文、原文では以下のようになっているが、the *num* innermost loop が .\" 正しいと思われる。実際の sh の動作もそうなっているようだ。 .\" --- 97/05/31 sakai@jp.freebsd.org ↓ .\" Continue continues with the next iteration of the innermost loop. これらのコマンドは組込みコマンドとして実装されています。 .Pp case コマンドの文法は以下のとおりです。 .Bd -literal -offset indent case word in pattern) list ;; ... esac .Ed .Pp pattern は、1 つあるいは複数のパターン (後述の「シェルパターン」を参照 のこと) を ``|'' で接続したものです。 .Ss 複数のコマンドのグループ化 コマンドは、以下のいずれかの方法によりグループ化することができます .Bd -literal -offset indent (list) .Ed .Pp または、 .Bd -literal -offset indent { list; } .Ed .Pp 最初の形式では、コマンドはサブシェル上で実行されます。 (list) のなかの組込みコマンドは、現在のシェルには影響を与えません。 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 は 通常、``{'' と ``}'' で囲まれたリストです。 .Pp local コマンドを用いて関数に局所的な変数を宣言することができます。 これは関数定義中の最初の文で行わなければなりません。構文は次のとおりです。 .Bd -literal -offset indent local [ variable | - ] ... .Ed .Pp local コマンドは、組込みコマンドとして実装されています。 .Pp 変数を局所変数にする場合、関数を呼び出した環境に同じ名前の変数があれば、 新しい局所変数は値と export、readonly フラグを引き継ぎます。もし同じ名 前の変数がなければ、局所変数は初期値を持ちません。シェルは動的スコープ を用います。すなわち、関数 f に局所的な変数 x を作成し、関数 f から関 数 g を呼び出した場合、関数 g 内部での変数 x に対する操作は大域変数 x ではなく、関数 f で宣言された変数 x への操作となります。 .Pp 特殊パラメータのうち局所宣言できるのは ``-'' だけです。 ``-'' を 局所宣言すると、関数内で set コマンドを用いてシェルオプションを 変更しても、関数が終了するとそれらのオプションは元の値に戻ります。 .Pp return コマンドの文法は以下のとおりです。 .Bd -literal -offset indent return [ exitstatus ] .Ed .Pp return は現在実行中の関数を終了させます。return は組込みコマンドとして 実装されています。 .Ss 変数とパラメータ シェルはパラメータの集合を管理しています。名前を持つパラメータを 変数と呼びます。シェルは、起動時にすべての環境変数をシェル変数に取り込みます。 新たな変数は、次の形式によって設定できます。 .Bd -literal -offset indent name=value .Ed .Pp ユーザが設定する変数は、アルファベット、数字、アンダースコア (_) のみ からなる名前を持つ必要があります。また、最初の文字が数字であっては いけません。 パラメータは、以下に示す数字または特殊記号により参照することもできます。 .Ss 位置パラメータ 位置パラメータは、数字 (n > 0) によって参照されるパラメータです。シェルは 位置パラメータの初期値としてシェルスクリプト名に続く引数を設定します。 組込みコマンド .Xr set 1 により再設定や消去ができます。 .Ss 特殊パラメータ 特殊パラメータは、以下に挙げる特殊文字のいずれかにより参照される パラメータです。各パラメータの値の説明を各文字の後ろに示します。 .Bl -hang .It * 位置パラメータ 1,2,... に展開されます。ダブルクォート文字列内部で展開 される場合、展開結果は各位置パラメータの間を変数 IFS の先頭の文字 (IFS が設定されていない場合は空白文字) で区切った単一の文字列になります。 .It @ 位置パラメータ 1,2,... に展開されます。ダブルクォート引用の内部で展開 される場合、各位置パラメータは別々の引数となります。 もし、位置パラメータが設定されていない場合には、 @ の展開結果は 0 個の引数となります (ダブルクォート引用の内部であっても)。 すなわち、$1 が ``abc''、$2 が ``def ghi'' であっ た場合、"$@" は次の 2 つの引数に展開されます。 .Bd -literal -offset indent "abc" "def ghi" .Ed .It # 位置パラメータの数に展開されます。 .It ? 最後に実行したパイプラインの終了ステータスに展開されます。 .It - (ハイフン) 現在のオプションフラグ (1文字オプション名をつないだ文字列) に展開されます。起動時に指定されたもの、組込みコマンド set で指定した もの、シェルが暗黙に設定したもののすべてを含みます。 .It $ 起動されたシェルのプロセス ID に展開されます。 サブシェルも親シェルと同じ値を持ちます。 .It ! 現在のシェルが最後にバックグラウンドで実行したコマンドのプロセス ID に 展開されます。パイプラインの場合、パイプラインの最後のコマンドの プロセス ID になります。 .It 0 (ゼロ) シェルの名前またはシェルスクリプト名に展開されます。 .El .Ss 単語展開 本節では、単語に対して適用されるさまざまな展開について説明します。あとで 述べるように、すべての展開がすべての単語に対して適用されるわけではありません。 .Pp 単一の単語に対して適用されたチルダ展開、パラメータ展開、コマンド置換、 数式展開、クォート削除の結果は単一のフィールドになります。単一の単語が 複数のフィールドに分割される可能性があるのは、フィールド分割または パス名展開の場合だけです。この規則の唯一の例外は、ダブルクォート中の パラメータ @ の展開です (前述)。 .Pp 単語展開の順序は以下のとおりです。 .Bl -enum .It チルダ展開、パラメータ展開、コマンド置換、数式展開 (これらはすべて 同時に行われます) .It 変数 IFS の値が空でなければ、(1) の結果の各フィールドに対して フィールド分割が行われる .It パス名展開 (-f オプションが無効の場合) .It クォート削除 .El .Pp 文字 $ はパラメータ展開、コマンド置換、数式評価を行うきっかけになります。 .Ss チルダ展開 (ユーザのホームディレクトリ名への置換) 引用されていないチルダ文字 (~) で始まる単語は、チルダ展開の対象になります。 チルダ文字からスラッシュ文字または単語の終端までのすべての文字がユーザ名 とみなされ、そのユーザのホームディレクトリに置換されます。もしユーザ名が 省略された場合(たとえば ~/foobar)、チルダ文字は変数 HOME の値(現在のユーザ のホームディレクトリ)に置換されます。 .Ss パラメータ展開 パラメータ展開の形式は以下のとおりです。 .Bd -literal -offset indent ${expression} .Ed .Pp ここで、expression は対応した `}' までのすべての文字です。対応する`}' を調べる際に、バックスラッシュ文字によりエスケープされたり、クォート文字に 狭まれた `}' や、数式展開に埋め込まれている文字や、コマンド置換や変数展開中に ある文字は調べる対象になりません。 .Pp パラメータ展開の形式のうちもっとも単純なものは以下のとおりです。 .Bd -literal -offset indent ${parameter} .Ed .Pp そのパラメータに値が存在する場合、その値に置き換えられます。 .Pp パラメータ名やシンボルを中括弧({})で囲んでも構いません。この中括弧は、 数字 2 文字以上からなる位置パラメータの場合や、パラメータ名の直後に パラメータ名の一部であるとみなし得る文字が続く場合を除き、 省略可能です。ダブルクォート引用中のパラメータ展開は以下 のようになります。 .Bl -enum .It パラメータ展開を行った結果の単語に対しては、パス名展開は適用されません。 .It パラメータが @ の場合を除き、フィールド分割は適用されません。 .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 通りのパラメータ展開は部分文字列切り出し処理を行います。各場合 において、パターンは正規表現ではなく、パターンマッチ記法 (シェルパターン の項を参照) が用いられます。パラメータが` * 'または` @ 'の場合、展開の結果 がどうなるかは規定しません (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 が標準出力 に出力したものから最後の改行文字を削除した結果で置換します (最後以外の 改行は削除しません。ただし、フィールド分割の際に、IFS の値や引用のされかたに よっては、ここで残った改行文字が結局は空白に置換されることもあります)。 .Ss 数式展開 数式展開とは、数式を評価し、その値に置換する仕組みです。数式展開の形式は以下 のとおりです。 .Bd -literal -offset indent $((expression)) .Ed .Pp 数式 expression は、その中のダブルクォート文字が特別扱いを受けないという 点を除いては、ダブルクォート文字で囲まれている文字列と同様に扱われます。 シェルは expression 中のすべてのトークンにパラメータ展開、コマンド置換、 クォート削除を適用します。 .Pp 次にシェルはその結果を数式として扱い、その値に置換します。 .Ss 空白文字による分割 (フィールド分割) パラメータ展開、コマンド置換、数式展開のあと、シェルは展開結果を調べて、 ダブルクォートの外にある部分に対してフィールド分割を適用します。 その結果、複数のフィールドになる場合もあります。 .Pp シェルは、変数 IFS に設定されている文字それぞれ区切り文字とみなし、 パラメータ展開の結果、およびコマンド置換の結果をフィールドに分割します。 .Ss パス名展開 (ファイル名生成) -f フラグが設定されていなければ、フィールド分割が行われたあと、ファイル名生成 が行われます。各単語は、スラッシュで区切られたパターンの列であるとみなさ れます。パス名展開処理において、単語は、条件を満たすファイル すべてのファイル名の列で置換されます。この各ファイル名は、単語の 各パターン部分を、そのパターンに一致する文字列に置換することで 生成されるものです。 これには 2 つの制限があります: まず、パターンはスラッシュを含む文字列には 一致しません。次に、パターンは、そのパターンがピリオドで始まらないかぎり、 ピリオドで始まる文字列に一致しません。 次節では、パス名展開と .Xr case 1 コマンドで用いられるパターンについて説明します。 .Ss シェルパターン パターンは、通常の文字とメタキャラクタからなります。通常の文字は、 その文字そのものに一致します。 メタキャラクタは ``!''、 ``*''、 ``?''、 ``['' です。これらの文字を引用 すると、各々の特殊な意味を失います。コマンド置換や変数置換において、 ドル記号やバッククォート文字がダブルクォート文字の中にない場合には、 変数の値やコマンドの出力の中に、これらの特殊な文字が存在するかどうかが 調べられ、それらがあれば、メタキャラクタとして扱われます。 .Pp アスタリスク文字 (``*'') は、どのような文字列とも一致します。 クエスチョンマーク文字 (``?'') は、任意の文字 1 文字と一致します。 左大括弧 (``['') は文字クラスを開始します。 文字クラスの最後は右大括弧 (``]'') です。``]'' がない場合 は、``['' は文字そのものに一致し、文字クラスの開始とは見なされません。文字 クラスは大括弧内に出現するすべての文字に一致します。 マイナス記号を用いれば、文字の範囲を指定することができます。 文字クラスの最初にエクスクラメーションマーク (``!'') を置くことで、 文字クラスの意味を反転させることができます。 .Pp 文字クラスに文字 ``]'' を含めるには、 ``]'' を文字クラスの最初 (``!'' を 置く場合はそのあと) に置きます。 文字クラスにマイナス記号を含めるときも同様で、 リストの最初もしくは最後に置きます。 .Ss 組込みコマンド 本節では、別プロセスでは実行できない処理を行なうために組み込まれている コマンドを列挙します。 さらに、効率を上げるために組込みされているコマンド (例えば test(1) .Xr printf 1 , .Xr echo 1 , .Xr test 1 , 等) もあわせて列挙します。 .Bl -tag -width Ds .It : 終了ステータス 0 (真) を返すヌルコマンドです。 .It \&. file 指定されたファイル file に記述されたコマンドがシェルに読み込まれ、 実行されます。 .Ar file に .Ql / 文字を含む場合、その通りに扱われます。 そうでなければ、シェルは .Ev PATH を使用して、ファイルを検索します。 .Ev PATH を使用しても見付からない場合、カレントディレクトリを検索します。 .It alias [ name[=string] ... ] name=string が指定されている場合、シェルは名前 ``name'' を持つ値 ``value'' のエイリアスを定義します。単に ``name'' だけが指定された場合、 エイリアス ``name'' の値が表示されます。引数が指定されない場合、定義さ れているすべてのエイリアスの名前と値を表示します (unalias も参照)。 .It bg [ job ] ... 指定されたジョブ (指定されなかった場合は現在のジョブ) を、 続けてバックグラウンドで実行させます。 .It command command arg ... 指定された組込みコマンドを実行します (組込みコマンドと同じ名前のシェル関数 がある場合に使います)。 .It cd [ directory ] 指定されたディレクトリに移動します (directory 無指定時は $HOME に移動します)。 cd コマンドの 環境に CDPATH 変数があるか、シェル変数 CDPATH が設定されていて、かつ 指定されたディレクトリ directory がスラッシュ文字から始まっていないなら、 CDPATH に列挙されたディレクトリ以下に 指定されたディレクトリ directory がないか検索されます。 CDPATH の形式は PATH と同様です。対話的シェルでは、ユーザ が指定したディレクトリと異なる場所に移動した場合、移動先のディレクトリ名 を表示します。これは、CDPATH の機構が動作した場合と、シンボリックリンクを 辿った場合に発生します。 .It eval string ... 指定されたすべての引数を空白で結合し、その結果を解析し直してから コマンドとして実行します。 .It exec [ command arg ... ] コマンドが省略されない場合、そのシェルプロセスは指定されたプログラムに 置き換えられます (command は、シェル組込みコマンドや関数ではない、本物の プログラムでなければなりません)。exec コマンドにおけるリダイレクトは、 永久性を持つと見なされ、 exec コマンド完了後にも引き続き効力を持ちます。 .It exit [ exitstatus ] シェルを終了します。指定された exitstatus は、シェルの終了ステータスに なります。exitstatus が省略された場合、直前に実行したコマンドの 終了ステータスがシェルの終了ステータスとなります。 .It export name ... それ以後にシェルから実行されるコマンドの環境に、指定された名前の変数が 含まれるようにします (変数のエクスポート)。 変数のエクスポートを取り消す唯一の方法は、変数を unset することです。 以下のように記述することで、エクスポートすると 同時に変数の値を設定することができます。 .Bd -literal -offset indent export name=value .Ed .Pp 引数を指定しない場合、すべてのエクスポートされている名前と値が表示されます。 .It fc [-e editor] [first [last]] .It fc -l [-nr] [first [last]] .It fc -s [old=new] [first] fc は、対話的シェルにそれ以前に入力されたコマンドの内容を 表示、編集、再実行します。 .Bl -tag -width Ds .It -e editor 編集に際し、指定されたエディタ editor を使用します。 editor は変数 PATH を通して検索できるコマンド名です。 -e が指定されなかった場合は、変数 FCEDIT の値が 用いられます。FCEDIT が設定されていないか空に設定されている場合は EDITOR の値が用いられ、それも設定されていないか空ならば .Xr ed 1 が用いられます。 .It -l (ell) (小文字のエル) エディタを起動せずに、コマンド履歴の内容を一覧出力します。 パラメータ first と last で指定した範囲のコマンドが順に (出力の順番は -r オプションの影響を受けます)出力されます。 各コマンドの出力の際にはコマンド番号が付加されます。 .It -n -l で一覧出力する際にコマンド番号を付加しません。 .It -r -l オプションでの一覧や、 編集時 (-l も -s も指定されなかった場合) の順序を反転します。 .It -s エディタを起動せずにコマンドを再実行します。 .It first .It last 一覧出力や編集の対象となるコマンドを選択します。アクセス可能なコマンド の数は変数 HISTSIZE の値で決まります。 first、last の値は以下のいずれかの形式で指定します。 .It [+]number 正の数で、コマンド番号を指定します。コマンド番号は -l オプションで表示させて 調べることができます。 .It -number 負の数で、指定された数だけ現在から遡ったコマンドを指定します。たとえば、 -1 は直前に実行されたコマンドを指定します。 .It string 文字列 string は、過去に実行されたコマンドのうち、 その文字列から始まる最新のものを指定します。 もし -s オプションが指定されて ``old=new'' が指定されていなければ、 最初のオペランドにイコール記号(``='')を含めることはできません。 .El .\" 次の行の .Pp はもともとコメントアウトされていた .Pp fc コマンドの実行にあたり、以下の環境変数の影響を受けます。 .Bl -tag -width Ds .It Va FCEDIT 使用するエディタ名 .It Va HISTSIZE アクセス可能なコマンド数 .El .It fg [ job ] 指定されたジョブまたは現在のジョブをフォアグラウンドに移動します。 .It getopts optstring var POSIX に準拠した getopts コマンドです。 この getopts コマンドにより、以前の getopt コマンドの必要性は減少しました。 最初の引数は文字の列です。各文字の後ろにはコロンをつけることができ、 そのオプションが引数をとることを指示します。 指定された変数に、解析され見つかったオプションが設定されます。 -見つかったオプションの次の引数のインデクスはシェル変数 OPTIND に格納されます。 +見つかったオプションの次の引数のインデックスはシェル変数 OPTIND に格納されます。 あるオプションが引数をとる場合、その引数はシェル変数 OPTARG に置かれます。 有効でないオプションに出くわすと、変数 var には `?' がセットされます。 getopts はオプション群の末尾に到達すると偽の値 (1) を返します。 .It hash -rv command ... シェルは、コマンドの位置を保持するハッシュテーブルを維持管理しています。 hash コマンドに引数が指定されなかった場合、このテーブルの内容が出力されます。 最後に cd コマンドが実行されてから参照されていない項目には アスタリスク文字 (``*'') が表示されます。 この項目は無効になっているかもしれません。 .Pp 引数を指定した場合、hash コマンドは指定したコマンドをハッシュテーブル から削除し (command が関数ではない場合)、その後でそのコマンドを検索します。 -v オプションを指定した場合、発見したコマンドの位置を表示します。-r オ プションを指定した場合、関数以外のすべてのエントリをハッシュテーブルから 削除します。 .It jobid [ job ] ジョブ job 中の各プロセスのプロセス ID を表示します。引数 job が 省略された場合、現在のジョブに対して処理を行います。 .It jobs バックグラウンドで走行中の、現在のシェルプロセスの子プロセスの 一覧を出力します。 .It pwd カレントディレクトリを表示します。組込みコマンドの pwd は カレントディレクトリ名を覚えており、表示するときに再計算しないので、 組込みコマンドの pwd は同名のプログラムとは異なった表示をする場合があります。 このため処理は高速ですが、カレントディレクトリ の名前を変更した場合でも、以前のディレクトリ名を表示し続けます。 .It Li "read [ -p prompt ] [ -e ] variable ... -p オプションが指定され、かつ標準入力が端末の場合、 prompt をプロンプトとして表示します。 そして標準入力から 1 行入力します。行端の改行文字を削除し、行を前述の 単語分割の方法に従って分割し、各単語を、valiable... で指定する各変数に 順に代入します。 もし、指定された変数の数より分割された単語の数が多ければ、最後の変数に 残りの単語すべて (IFS の文字を区切りにしてそれらも一緒に) が代入されます。 分割された単語の数より多くの変数が指定されていたなら、 余った変数には空文字列が設定されます。 .Pp -t オプションが指定され、かつ入力がなされる前にタイムアウトすると、 read コマンドは値を割当てずに戻ります。 タイムアウト値の後にはオプションで 's', 'm', 'h' のいずれかの一文字 を付けることが出来、それぞれ秒, 分, 時間を陽に指定します。 どれも指定しない場合には 's' であるものとします。 .Pp -e オプションを指定すると、入力中のバックスラッシュ文字を特別扱いします。 バックスラッシュ文字が改行文字の直前にある場合、 バックスラッシュ文字と改行文字は削除されます。 その他の文字の直前にバックスラッシュがある場合、バックスラッシュは削除され、 文字が IFS に含まれていても、IFS の文字でないかのように扱われます。 .It readonly name ... 指定された名前の変数を読み出し専用とし、あとで値を変更したり unset した りすることができないようにします。以下のように記述することで、 変数を読み出し専用と宣言するのと同時に値を設定することも可能です。 .Bd -literal -offset indent readonly name=value .Ed .Pp 引数が指定されない場合、読み出し専用になっている変数の名前の一覧が表示され ます。 .It Li "set [ { -options | +options | -- } ] arg ... set コマンドは 3 通りの異なった機能を持ちます。 .Bl -item .It 引数を指定しなかった場合、すべてのシェル変数の名前と値の一覧を表示します。 .It options が指定された場合、「引数リスト処理」の節で説明した方法で、 指定されたオプションフラグを設定あるいは解除します。 .It 第 3 の用法は、シェルの位置パラメータを変更する際に使用します。オプションの 設定を変更せずに位置パラメータのみを変更したい場合は set コマンドへの最初 の引数として ``--'' を指定します。arg が指定されない場合、 すべての位置パラメータはクリアされます (``shift $#'' を実行することと 等価です)。 .El .Pp .It setvar variable value 変数に値を代入します。(一般に、setvar を使うよりも variable=value と書くほう が望ましいといえます。setvar は、関数内で、パラメータとして渡された名前を持つ 変数に値を代入するためのものです。) .It shift [ n ] 位置パラメータを n 回シフトします。1 回のシフトにより、$2 の値が $1 に、$3 の 値が $2 に代入されます (以下同様)。また、$# の値は 1 減少します。 位置パラメータがない場合、shift は何もしません。 .It trap [ action ] signal ... シェルが指定されたシグナル signal を受けとったときに、action を解析し実行する ように設定します。シグナルはシグナル番号で指定します。action は空文字列に したり、省略したりすることができます。空文字列の場合、指定されたシグナルは 無視され、省略した場合は、指定したシグナルを受けとったときデフォルトの処理を 行ないます。シェルがサブシェルを起動するとき、trap で指定された (かつ 無視するように設定されていない) シグナルの動作をデフォルトの処理に戻します。 シェルが起動したときにすでに無視されるように設定されていたシグナルに対して trap コマンドを使用しても効果はありません。 .It type [name] ... 各 name をコマンドとして解釈し、コマンド検索の結果を出力します。出力さ れる結果は以下のものがあります。シェルのキーワード、エイリアス、シェル の組込みコマンド、コマンド、痕跡つきエイリアス(tracked alias)、最後に not found (見つからず)があります。エイリアスについては、エイリアス展開 の結果が出力されます。コマンドと痕跡つきエイリアスについては、そのコマ ンドの完全なパス名が印刷されます。 .It ulimit [ -HSacdflmnust ] [ limit ] リソースのリミット値 (リミット値については .Xr getrlimit 2 参照) を設定あるいは表示します。 ``limit'' が指定されている場合、指定されたリソースが設定されます。 それ以外の場合、現在のリソース設定値が表示されます。 .Pp ``-H'' が指定された場合、ハードリミットが設定ないし表示されます。 ハードリミット値を下げることは誰にでもできますが、 それを増やすことができるのはスーパユーザだけです。 オプション ``-S'' を指定した場合はソフトリミットになります。 リミット値を表示する場合、``-S'' か ``-H'' のいずれか一方だけしか 指定できません。 デフォルトでは、表示はソフトリミット、設定はハード/ソフトリミット両方です。 .Pp オプション ``-a'' を指定すると全リソースの設定値が表示されます。 この場合、パラメータ ``limit'' は指定できません。 .Pp この他のオプションは、表示あるいは設定するリソースの種類を指定するものです。 これらは互いに排他的です。 .Bl -tag -width Ds .It -c coredumpsize コアダンプファイルの最大サイズ。512 バイトのブロック単位。 .It -d datasize プロセスのデータセグメントの最大サイズ。キロバイト単位。 .It -f filesize ファイルの最大サイズ。512 バイトブロック単位。これがデフォルトです。 .It -l lockedmem プロセスがロックできるメモリサイズの最大値。キロバイト単位。 .It -m memoryuse プロセスの常駐セットサイズの最大値。キロバイト単位。 .It -n nofiles あるプロセスがオープンできるファイル記述子の最大数。 .It -s stacksize スタックセグメントサイズの最大値。キロバイト単位。 .It -t time 各プロセスで消費できる CPU 時間の最大値。秒単位。 .It -u userproc このユーザ ID で同時に走らせうる最大プロセス数。 .El .It umask [ mask ] umask の値 ( .Xr umask 2 を参照) を、指定された 8 進数の値に設定します。引数が 省略された場合、現在の umask の値が表示されます。 .It unalias [-a] [name] ``name'' が指定された場合、指定された名前のエイリアスを削除します。 ``-a'' オプションが指定された場合、すべてのエイリアスを削除します。 .It unset name ... 指定された変数または関数を unset し、エクスポートされていない状態にします。 指定された名前の変数も関数も存在する場合、変数と関数の両方が unset されます。 .It wait [ job ] 指定されたジョブ job が終了するのを待ち、ジョブ内の最後のプロセスの 終了ステータスを返します。引数が省略された場合、すべてのジョブが終了する まで待ち、終了ステータス 0 を返します。 .El .Ss コマンド行編集 .Nm が端末から対話的に実行されている場合、現在入力中のコマンドおよび コマンド履歴 (組込みコマンド fc 参照) を vi モードのコマンド行編集機能 により編集することができます。 このモードでは、vi のマニュアルに示されているコマンドのサブセットを用います。 コマンド `set -o vi' により vi モードが開始され、vi の挿入モードに移行します。 vi モード中では、 挿入モードとコマンドモードの両方を自由に切り替えることが可能です。 vi モードは vi と同様であり、 キー によりコマンドモードに移行し、コマンドモードで キーを叩くことで、 行の内容がシェルに渡されます。 .Pp 同様に、コマンド `set -o emacs' により emacs 風のコマンド行編集機能の サブセットを使うことができるようになります。 .Sh 歴史 .Nm コマンドは、 .At V.1 で登場しました。 .\" -Amended by N.Kumagai 97.12.30 diff --git a/ja_JP.eucJP/man/man1/systat.1 b/ja_JP.eucJP/man/man1/systat.1 index 1540298f6f..9190589b1b 100644 --- a/ja_JP.eucJP/man/man1/systat.1 +++ b/ja_JP.eucJP/man/man1/systat.1 @@ -1,399 +1,399 @@ .\" 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. .\" .\" @(#)systat.1 8.2 (Berkeley) 12/30/93 .\" jpman %Id: systat.1,v 1.3 1997/10/05 12:58:19 horikawa Stab % .\" .Dd December 30, 1993 .Dt SYSTAT 1 .Os BSD 4.3 .Sh 名称 .Nm systat .Nd システムの統計情報を CRT に表示します .Sh 書式 .Nm systat .Op Fl display .Op Ar refresh-interval .Sh 解説 .Nm systat はシステムの各種統計情報をスクリーン指向な方法で .Xr curses 3 の curses スクリーンディスプレイライブラリを用いて表示します。 .Pp .Nm systat の走行中はスクリーンが通常 2 つのウィンドウに分割されます (例外は vmstat を表示する場合で この時はスクリーン全体を使います)。 上のウィンドウはその時のシステムのロードアベレージを表示します。 下のウィンドウに表示される情報は、ユーザのコマンドに応じて 変化するかもしれません。スクリーンの最終行はユーザの入力と エラーメッセージのために予約されています。 .Pp デフォルトでは .Nm systat はプロセッサ使用率が最大のプロセスを下のウィンドウに表示します。 他にはスワップ領域の使用状況、ディスク .Tn I/O の統計情報 ( .Xr iostat 8 式に)、仮想記憶の統計情報 ( .Xr vmstat 8 式に)、ネットワークの ``mbuf'' 利用率、ネットワークコネクション ( .Xr netstat 1 式に) を表示します。 .Pp 入力は 2 つの異なるレベルで解釈されます。 ``グローバル'' なコマンドインタプリタがすべてのキーボード入力を 処理します。もしこのコマンドインタプリタがコマンドを認識できないと、 入力行は表示する種類毎のコマンドインタプリタに渡されます。 これによって各表示内容に応じたコマンドを持つ事が可能になります。 .Pp コマンド行のオプション: .Bl -tag -width "refresh_interval" .It Fl Ns Ar display .Fl に続けて .Ar display として以下のいずれか一つを指定します: .Ic pigs , .Ic iostat , .Ic swap , .Ic mbufs , .Ic vmstat , .Ic netstat 。これらの表示内容は対話的にも ( .Dq Fl 無しに) 指定でき、そして詳細は以下の説明にあります。 .It Ar refresh-interval .Ar refresh-value にスクリーンの更新間隔を秒数で指定します。 .El .Pp いくつかの文字は .Nm systat を即座に反応させます。 そういった文字には以下の物があります .Bl -tag -width Fl .It Ic \&^L スクリーンを更新します。 .It Ic \&^G その時点で下のウィンドウに表示されている ``表示内容'' の名称と 更新間隔を表示します。 .It Ic \&^Z .Nm systat を停止します。 .It Ic \&: カーソルをコマンドラインに移動して打ち込まれた入力行を コマンドとして解釈します。コマンドの入力中は 現位置文字消去、単語消去、行取消の各編集機能が使えます。 .El .Pp 以下のコマンドは ``グローバル'' なコマンドインタプリタによって 解釈されます。 .Bl -tag -width Fl .It Ic help 指定可能な表示内容をコマンドラインに表示します。 .It Ic load 過去 1、5、15分間のロードアベレージをコマンドラインに表示します。 .It Ic stop スクリーンの更新を止めます。 .It Xo .Op Ic start .Op Ar number .Xc スクリーンの更新を開始 (継続) します。もし数値で秒数指定の 引数が与えられると更新間隔 (の秒数) として解釈されます。 数値のみを与えると更新間隔がその値にセットされます。 .It Ic quit .Nm systat を終了します。 (これは .Ic q と省略できます。) .El .Pp 指定可能な表示内容には以下があります: .Bl -tag -width Ic .It Ic pigs 下のウィンドウに、主記憶を占めプロセッサ利用率が最大のプロセスを 表示します (デフォルトの表示内容です)。 ユーザプロセスへのプロセッサの割当が 100% 未満の時は、 残りは ``idle'' プロセスに割り当てられているものと扱います。 .It Ic iostat 下のウィンドウに、プロセッサ利用率とディスクのスループットの 統計情報を表示します。プロセッサ利用率の統計情報は ユーザモード (``user'')、低いプライオリティで実行された ユーザモードのプロセス (``nice'')、システムモード (``system'')、 割り込みモード (``interrupt'')、アイドル (``idle'') での総実行時間 の棒グラフとして表示されます。 ディスクのスループットの統計情報としては、各ドライブについて、 転送データのキロバイト数、実行されたディスクトランザクション数、 平均シーク時間 (単位はミリ秒) が表示されます。 この情報は棒グラフまたは下へスクロールする数値の列で表示されます。 棒グラフでの表示がデフォルトです; .Pp 以下のコマンドは表示内容が .Ic iostat の場合に特有です; 先頭からの一意に識別可能な文字数だけで指定可能です。 .Pp .Bl -tag -width Fl -compact .It Cm numbers ディスク .Tn I/O の統計情報を数値形式で表示します。値は下へスクロールする 数値の列として表示されます。 .It Cm bars ディスク .Tn I/O の統計情報を棒グラフ形式で表示します (デフォルト)。 .It Cm msps 平均シーク時間の表示を切替えます (デフォルトではシーク時間は 表示されません)。 .El .It Ic swap カーネルに組み込まれている全スワップ領域について 利用状況に関する情報を表示します。 最初の列はパーティションのデバイス名です。 次の列はパーティションの総容量です。 .Ar Used の列は それまでに使われた総ブロックを示します; グラフは各パーティションで使用中の部分の割合を示します。 2つ以上の使用中のスワップパーティションがある場合は、 合計の行も表示されます。 カーネルに組み込まれているものの、使われていない物は 使用不可として表示されます。 .It Ic mbufs 下のウィンドウに、何らかの用途、すなわち、データ、ソケット構造体等々に 確保された mbuf の個数を表示します。 .It Ic vmstat 画面全体を使って、 仮想記憶の利用状況、プロセススケジューリング、 デバイスからの割り込み、システムの名前変換キャッシュ、 ディスク .Tn I/O 等々に関する (やや込み入った) 統計情報の要約を表示します。 .Pp 画面の左上の領域にはログインしているユーザ数と過去 1、5、15分間の ロードアベレージが表示されます。 この行の下はメモリ利用率の統計情報です。 この表の 1行目はアクティブなプロセス、つまり過去 20秒以内に 走行状態だったことのあるプロセスのみのメモリ利用率を報告します。 2番目の行は全プロセスのメモリ利用状況を報告しています。 1番目の列はプロセスによって要求された物理ページ数を表示します。 2番目の列は読みだし専用のテキストページに当てられた 物理ページ数を表示します。 3番目と 4番目の列は同じ物に関して仮想ページの情報を表示します。 これは全プロセスが全ページを持つとした時に必要となるページ数を表します。 最後に、最終列はフリーリスト上の物理ページ数を示します。 .Pp メモリ情報の下は平均プロセス数のリスト (1更新期間前からのもの) で、 走行可能 (`r')、ページ待ち中 (`p')、 ページング以外のディスク待ち中 (`d')、 スリープ状態 (`s')、スワップアウトされているが実行されるのを 待っている状態 (`w') です。このキューの長さのリストの下は 時間の総計をシステム (`=' で示されます)、割り込み (`+' で示されます)、 ユーザ (`>' で示されます)、ナイス (`-' で示されます)、 アイドル (` ' で示されます) について数値のリストと棒グラフで 表した物です。 .Pp .\" この文は原文では もっと後ろにあったが、画面構成が変わっているようなので .\" 移動した (訳注) 平均プロセス数の右にコンテキストスイッチ (`Csw')、 トラップ (`Trp'; ページフォルトを含む)、 システムコール (`Sys')、割り込み (`Int')、 ネットワークソフトウェア割り込み (`Sof')、 ページフォルト (`Flt') の 1更新間隔での秒あたりの平均回数を報告します。 .Pp プロセス情報の下はファイル名変換の統計情報です。 これは前の更新期間中に行われたファイル名から iノード番号への変換の 回数、システム全体で共通の変換キャッシュで処理された物の回数と 割合、プロセス毎の変換キャッシュで処理された物の回数と割合を 表示しています。 .Pp 左下はディスクアクセス状況です。 ここでは 1更新間隔 (デフォルトでは 5秒) のシーク回数、転送回数、 平均転送量をキロバイト/秒で報告します。 ディスクによっては平均シーク時間をミリ秒単位で報告します。 システムは最大で 8台 (これは /sys/dkstat.h の定数 DK_NDRIVE で 決まるカーネルのコンパイル時定数です) のディスクまでしか 統計情報を管理しないことに注意して下さい。 .Pp 右上の日時の下はページングとスワップの稼働状況です。 最初の 2列は、1更新間隔の間にページフォルトとページデーモンによって、 読み込まれたページ数と掃き出されたページ数の 1秒あたりの平均を報告します。 3番目と 4番目の列は、1更新間隔の間にスケジューラによって発行された スワップ要求により 読み込まれたページ数と掃き出されたページ数の 1秒あたりの平均を報告します。 この情報の 1行目は 1更新間隔での秒あたりの平均ディスク転送回数を 示します; この情報の 2行目は 1更新間隔での秒あたりの平均転送ページ数を 示します。 .Pp .\" この文は原文が VAX 4.3BSD のままのようだったので直した (訳注) ページングの統計情報の下は copy-on-writes が行われたページ数 (`cow')、 要求時 0クリアが行われたページ数 (`zfod')、 I/O等のためにページング対象から外され、固定されているページ数 (`wire')、 最近参照されたページ数 (`act')、 ページングの候補になっているページ数 (`inact')、 クリーンな状態のキャッシュページ数 (`cache')、 フリーページ数 (`free')、 -デーモンがフリーしたページ数 (`daefr')、 -プロセスが終了した事によってフリーされたページ数 (`prcfr')、 +デーモンが解放したページ数 (`daefr')、 +プロセスが終了した事によって解放されたページ数 (`prcfr')、 フリーリストから最近参照されたか、 またはページングの候補になったページ数 (`react')、 デーモンが起こされた回数 (`pdwak')、 デーモンが調べたページ数 (`pdpgs')、 フォルトしたページが読み込み途中だった回数 (`intrn')、 キロバイト単位のバッファキャッシュのサイズ (`buf') の 1更新間隔での秒あたりの平均値です。 .Pp 画面の右下はシステムによって処理された割り込みの詳細です。 リストのトップは更新期間中の秒あたりの総割り込み数です。 列の残りの部分は総割り込み数のデバイス毎の詳細です。 ブートしてから少なくとも 1回は割り込みを発生したデバイスについてのみ 表示されます。 .Pp 以下のコマンドは表示内容が .Ic vmstat の場合に特有です; 先頭からの一意に識別可能な文字数だけで指定可能です。 .Pp .Bl -tag -width Ar -compact .It Cm boot システムがブートしてからの累積の統計情報を表示します。 .It Cm run このコマンドが与えられてからの走行中のトータルとして統計情報を表示します。 .It Cm time 更新期間の平均で統計情報を表示します (デフォルト)。 .It Cm zero 走行中の統計情報を 0 にリセットします。 .El .It Ic netstat 下のウィンドウにネットワーク接続状況を表示します。デフォルトでは、 リクエストを待っているネットワークサーバは表示されません。 各アドレスは ``host.port'' のフォーマットで、可能であれば シンボルで表示されます。アドレスを数字で表示することや、 ポート、ホスト、プロトコルの表示を制限することが可能です。 (先頭からの一意に識別可能な文字数だけで指定可能です): .Pp .Bl -tag -width Ar -compact .It Cm all リクエストを待っているサーバプロセスの表示を切り替えます (これは .Xr netstat 1 の .Fl a フラグと等価です)。 .It Cm numbers ネットワークアドレスを数字で表示します。 .It Cm names ネットワークアドレスをシンボルで表示します。 .It Ar protocol 指定されたプロトコルを使っているネットワークコネクションのみを 表示します (現在の所 ``tcp'' か ``udp'' のいずれかです)。 .It Cm ignore Op Ar items 指定されたホストまたはポートとの接続に関する情報を表示しません。 ホストとポートは名前 (``vangogh'' や ``ftp'')、または数字で 指定できます。ホストのアドレスはインターネットのドット表記を 使用します (``128.32.0.9'')。空白で区切って 1つのコマンドに 複数の指定が可能です。 .It Cm display Op Ar items 指定されたホストまたはポートとの接続に関する情報を表示します。 .Ar ignore と同様に、 .Op Ar items は名前または数字が使用可能です。 .It Cm show Op Ar ports\&|hosts コマンドラインに、その時点で選択されているプロトコル、 ホスト、ポートを表示します。無視されるホストとポートには `!' を前置します。もし .Ar ports か .Ar hosts が .Cm show の引数として与えられると、 指定された情報だけが表示されます。 .It Cm reset ポート、ホスト、プロトコルの選択メカニズムをデフォルト (あらゆるプロトコル、ポート、ホスト)の状態にリセットします。 .El .El .Pp 表示内容の切り替えコマンドは先頭からの一意に識別可能な 文字数に短縮できます; 例えば ``iostat'' は ``io'' と省略できます。 画面サイズが表示内容に不十分な時は情報が捨てられる可能性があります。 例えば、10台のドライブがあるマシンでは .Ic iostat の棒グラフは 24行の端末では 3ドライブ分しか表示しません。 棒グラフが割り当てられた画面のスペースに収まらない時は 切り詰められて実際の値は棒の ``先端部分'' に表示されます。 .Pp 以下のコマンドはディスクドライブに関する情報を表示する物に 共通です。これらのコマンドは、あなたのシステムに、通常 画面に表示しきれない数のドライブがある場合に、情報を表示する ドライブのセットを選択するために使うためのものです。 .Pp .Bl -tag -width Tx -compact .It Cm ignore Op Ar drives 指定されたドライブに関する情報を表示しません。複数のドライブを 空白で区切って指定できます。 .It Cm display Op Ar drives 指定されたドライブに関する情報を表示します。複数のドライブを 空白で区切って指定できます。 .El .Sh 関連ファイル .Bl -tag -width /etc/networks -compact .It Pa /kernel ネームリストを読み出します。 .It Pa /dev/kmem 主記憶の情報を取ります。 .It Pa /dev/drum スワップアウトされたプロセスの情報のために使います。 .It Pa /etc/hosts ホスト名をひきます。 .It Pa /etc/networks ネットワーク名をひきます。 .It Pa /etc/services ポート名をひきます。 .El .Sh 歴史 .Nm systat プログラムは .Bx 4.3 に初めて登場しました。 .Sh バグ CPU の 2-10 パーセントを消費します。 表示内容によっては 1行に最低で 80文字が表示できる事を想定しています。 .Ic vmstat は表示領域が足りないようです。なぜなら (訳注: 原文が切れています) (新規のプログラムとしてではなく独立した表示画面として追加されました)。 .Sh 日本語訳 野首 寛高(h-nokubi@nmit.tmg.nec.co.jp): FreeBSD 用に翻訳 diff --git a/ja_JP.eucJP/man/man1/tar.1 b/ja_JP.eucJP/man/man1/tar.1 index 67849b7e75..660181412d 100644 --- a/ja_JP.eucJP/man/man1/tar.1 +++ b/ja_JP.eucJP/man/man1/tar.1 @@ -1,483 +1,483 @@ .\" Copyright (c) 1991, 1992, 1993 Free Software Foundation -*- nroff -*- .\" See /usr/src/gnu/COPYING for conditions of redistribution .\" .\" Written by John F. Woods .\" Updated by Robert Eckardt .\" .\" %Id: tar.1,v 1.6.2.3 1998/02/15 17:05:30 steve Exp % .\" jpman %Id: tar.1,v 1.2 1997/06/24 07:09:44 bobson Stab % .\" .Dd 25 August 1997 .Os FreeBSD .Dt TAR 1 .Sh 名称 .Nm tar .Nd テープアーカイバ; "tar" アーカイブファイルの操作 .Sh 書式 .Nm tar .Op [-] Ns Ar bundled-options .Op Ar gnu-style-flags .Op Ar tarfile .Op Ar blocksize .Op Ar exclude-file .Op Ar filenames .Op Fl C Ar directory-name .Sh 解説 .Nm は、歴史的な理由により .Dq tape archiver を省略して名付けられました。 .Nm プログラムは、 .Ar tarfile と呼ばれる .Dq tar フォーマットのアーカイブファイルを作成し、アーカイブにファイルを追加したり、 またアーカイブからファイルを抽出したりします。 tarfile は通常磁気テープを指しますが、フロッピディスケットや 通常のファイルでも構いません。 .Pp 通常、 .Nm コマンドラインの最初の引数は、機能文字および機能変更文字からなる単語であり、 その前に ダッシュ(-)をつけてもつけなくてもいいようになっています。 単語には、次の機能文字のうちちょうど 1 つを含んでいなければなりません: .Cm A , .Cm c , .Cm d , .Cm r , .Cm t , .Cm u , .Cm x , これらはそれぞれ 追加 (append) 、作成 (create) 、差分 (difference) 、 置換 (replace) 、リスト表示 (table of contents) 、更新 (update) 、 そして抽出 (extract) を意味しています (下記に詳細があります) 。 これらの他に、以下に詳細を述べる機能変更文字を、コマンド単語に 含めることができます。それらのいくつかは、コマンド単語内と同じ順で コマンドライン引数を要求します (使用例の節を参照) 。 機能文字と機能変更文字は、GNU 形式の引数で指定することもできます (2 つのダッシュを最初につけ、1 つのコマンド単語ごとに機能文字か 機能変更文字を 1 つだけ指定する) 。 アーカイブへの追加、アーカイブからの抽出、そしてリスト表示のために コマンドライン指定するファイル名には、 シェルのパターンマッチ文字列を使用することができます。 .Sh 機能 以下の機能のいずれか1つだけを必ず指定しなければなりません。 .Pp .Bl -tag -width "--concatenate" -compact .It Fl A .It Fl -catenate .It Fl "-concatenate" 指定された(tar アーカイブ形式の)ファイルを tar アーカイブの末尾 に追加します。(追加する前の古い end-of-archive ブロックは削除さ れます。) これは、指定されたファイルがアーカイブの中の1ファイルとなるので はなく、指定したファイルの中に含まれているファイルを、最初に指定 したアーカイブに追加するという効果を持ちます。 .Em 注: このオプションは tarfile を再書き込みする必要があるため、1/4 インチカートリッジテープでは動作しません。 .It Fl c .It Fl -create 新しいアーカイブを作成して (もしくは古い内容を切り捨てて)、指定 されたファイルをアーカイブに書き込みます。 .It Fl d .It Fl -diff .It Fl -compare アーカイブの中のファイルと、それに相当するファイルシステム内の ファイルとの違いを調査します。 .It Fl -delete 指定されたファイルをアーカイブから削除します。(1/4 インチテープ では動作しません。) .It Fl r .It Fl -append アーカイブの末尾にファイルを追加します。(1/4 インチテープでは 動作しません。) .It Fl t .It Fl -list アーカイブ内容のリスト表示をします。もし引数としてファイル名が 指定されていれば、そのファイルだけがリスト表示されます。そうでなけ れば、アーカイブに含まれるすべてのファイルリストが表示されます。 .It Fl u .It Fl -update 指定したファイルのうち、アーカイブ内のファイルよりもディスク上の ファイルの変更時刻が新しいものだけを追加します。1/4 インチテープ では動作しません。 .It Fl x .It Fl -extract .It Fl -get -アーカイブからファイルを抽出します。可能ならば、オーナ、 +アーカイブからファイルを抽出します。可能ならば、所有者、 変更時刻、ファイル属性はリストアされます。もし .Ar file 引数が指定されていなければ、アーカイブ内の全ファイルが抽出されます。 もし .Ar filename 引数がテープ上のディレクトリ名にマッチしていれば、そのディレクトリと ディレクトリ内のファイルが抽出されます。(ディレクトリ内のす べてのディレクトリについても同様に抽出されます。) もしアーカイブ内に、相当する同じファイルが複数含まれていれば(上記の .Fl -append コマンドを参照)、最後に含まれているものが他のすべてのファイルを 上書きする形で抽出されます。 .Sh オプション .Nm の他のオプションは、組み合わせて使用することができます。 1文字オプションは、コマンド単語の中で指定することができます。 引数を与えるべきオプションの場合、オプションに続けて引数を指定し ます。1文字オプションであれば、これに続くコマンドライン引数を 使用します (以下の .Sx 使用例 を参照してください。) .Pp .Bl -tag -width "--preserve-permissions" -compact .It Fl -help .Nm のすべてのコマンドオプションについて一覧と解説を表示します。 .It Fl -atime-preserve テープに書かれている、ファイルのアクセス時刻をリストアします。 (inodeの変更時刻が変更されることに注意してください!) .It Fl b .It Fl -block-size Ar number 読み書きするブロックサイズを .Ar number * 512-byte ブロック に設定します。 .It Fl B .It Fl -read-full-blocks 短い読みだしブロックを、完全なブロックに再組み立てします。 (4.2BSD パイプの読み込み用。) .It Fl C Ar directory .It Fl -directory Ar directory 抽出時に .Ar directory へ移動します。 .It Fl -checkpoint アーカイブを読み書きする間に読み書きしたバッファの数を表示します。 .It Fl f Ar [hostname:]file .It Fl -file Ar [hostname:]file 指定された .Ar file (デフォルトは /dev/rst0) を読み書きします。 もし .Ar hostname が指定されていれば、 .Nm は .Xr rmt 8 を使って、リモートマシン上の .Ar file を読み書きします。"-" はファイルネームとして使用されることもありますが、 これは標準入力から読み出したり、標準出力へ書き出したりするために使用されます。 .It Fl -force-local コロンがある時でさえ、アーカイブファイルはローカルのものとします。 .It Fl F Ar file .It Fl -info-script Ar file .It Fl -new-volume-script Ar file それぞれのアーカイブが終ると、スクリプトを実行します (暗黙の .Fl M 指定が行なわれます。) .It Fl -fast-read ワイルドカードで指定されていないすべての抽出ターゲットが アーカイブ内に見つかったら、その時点で終了します。 .It Fl G .It Fl -incremental 古い GNU-format インクリメンタルバックアップファイルを作成/リスト/ 抽出します。 .It Fl g Ar file .It Fl -listed-incremental Ar file 新しい GNU-format インクリメンタルバックアップファイルを作成/リスト/ 抽出します。 .It Fl h .It Fl -dereference シンボリックリンクをシンボリックのまま書き込みません。シンボリックリンクが 指しているデータを書き込みます。 .It Fl i .It Fl -ignore-zeros アーカイブの中のゼロブロック(通常、End-Of-File を意味する)を無視します。 .It Fl -ignore-failed-read ファイルが読めなくても、非 0 のステータスで exit しません。 .It Fl k .It Fl -keep-old-files ディスク上に既にあるファイルを保持します。つまり、アーカイブから 抽出するファイルは、ディスク上のファイルへ上書きしません。 .It Fl K Ar file .It Fl -starting-file Ar file アーカイブの中の .Ar file から(抽出、リストなどを)始めます。 .It Fl l .It Fl -one-file-system あるファイルシステム内にあるファイルだけでアーカイブを作成します。 (他ファイルシステムへのマウントポイントを跨ぎません。) .It Fl L Ar number .It Fl -tape-length Ar number .Ar number * 1024 バイト書き込んだ後でテープの交換を要求します。 .It Fl m .It Fl -modification-time ファイルの変更時刻を抽出しません。 .It Fl M .It Fl -multi-volume マルチボリュームアーカイブを作成/リスト/抽出します。 .It Fl n .It Fl -norecurse 作成時に再帰的にサブディレクトリを走査しません。 .It Fl -volno-file Ar file ボリューム番号付きのファイル名です。 .It Fl N Ar date .It Fl -after-date Ar date .It Fl -newer Ar date 作成時間が .Ar date より新しいファイルだけを抽出します。 .It Fl -newer-mtime Ar date 変更時間が .Ar date より新しいファイルだけを抽出します。 .It Fl o .It Fl -old-archive .It Fl -portability POSIX フォーマットではなく、V7 フォーマットのアーカイブを作成します。 .It Fl O .It Fl -to-stdout ファイルを標準出力に抽出します。 .It Fl p .It Fl -same-permissions .It Fl -preserve-permissions 保護情報を完全に抽出します。 .It Fl -preserve .Fl p s の指定と同じ効果を持ちます。 .It Fl P .It Fl -absolute-paths ファイル名から先頭の `/' をとりません。 .It Fl R .It Fl -record-number メッセージ中にアーカイブ内のレコード番号を埋め込み表示します。 .It Fl -remove-files アーカイブに追加したファイルを、追加後に削除します。 .It Fl s .It Fl -same-order .It Fl -preserve-order アーカイブ内から抽出するファイルを、指定された順のままにします。 .It Fl -show-omitted-dirs アーカイブ作成中に除外されたディレクトリを表示します。 .It Fl S .It Fl -sparse 「少ない」ファイルを効率的に扱うようにします。 .It Fl T Ar file .It Fl -files-from Ar file .Ar file から抽出もしくは作成するファイル名を得ます。(1行1ファイル名。) .It Fl -null nullで終わっている名前を考慮し、 .Fl T の振舞を変更します。 これは .Fl C 指定を無効にします。 .It Fl -totals .Fl -create によって書かれたトータルバイト数を表示します。 .It Fl v .It Fl -verbose .Fl -create でアーカイブに書くファイルや .Fl -extract でアーカイブから 取り出すファイル名をリスト表示します。 ファイルの保護情報をファイル名とともに表示させるには、 .Fl -list を使います。 .It Fl V Ar volume-name .It Fl -label Ar volume-name 指定された .Ar volume-name を持ったアーカイブを作成します。 .It Fl -version .Nm プログラムのバージョン番号を表示します。 .It Fl w .It Fl -interactive .It Fl -confirmation すべての動作に対して、確認を求めるようになります。 .It Fl W .It Fl -verify アーカイブを書き込んだ後、ベリファイを試みます。 .It Fl -exclude Ar pattern .Ar pattern にマッチするファイルを除外します。 (抽出しません。追加しません。リスト表示しません。) .It Fl X Ar file .It Fl -exclude-from Ar file .Ar file に一覧されているファイルを除外します。 .It Fl Z .It Fl -compress .It Fl -uncompress アーカイブを .Xr compress 1 でフィルタリングします。 .It Fl z .It Fl -gzip .It Fl -gunzip アーカイブを .Xr gzip 1 でフィルタリングします。 .It Fl -use-compress-program Ar program アーカイブを .Ar program でフィルタリングします。 (これは、 .Fl d が指定されたときは ``decompress'' を意味しなければなりません。) .It Fl -block-compress テープもしくはフロッピのために、圧縮プログラムの出力をブロック 化します。(そうしないと、ブロック長がおかしくなり、デバイスドライバは そのブロックを拒絶するでしょう。) .It Fl [0-7][lmh] テープドライブと密度を指定します。 .It Fl -unlink ファイルを作成する前に、いったん削除します。 .El .Sh 使用例 "bert" と "ernie" というファイルを含む、 ブロックサイズが 20 ブロックのアーカイブを、 テープドライブ /dev/rst0 に作るには、 .Pp .Dl tar cfb /dev/rst0 20 bert ernie .Pp もしくは .Pp .Dl tar\ --create\ --file\ /dev/rst0\ --block-size\ 20\ bert\ ernie .Pp と入力します。 .Fl f および .Fl b フラグは両方とも引数を必要としていることに注意してください。 この引数は、コマンド単語に書かれているのと同じ順序でコマンドラインから 取得されます。 .Pp /dev/rst0 はデフォルトのデバイスであり、20 はデフォルトのブロック サイズですので、上記の例は次のように単純化できます。 .Pp .Dl tar c bert ernie .Pp "backup.tar" というアーカイブから、すべての C ソース及びヘッダを 抽出するには、次のようにタイプします。 .Pp .Dl tar xf backup.tar '*.[ch]' .Pp シェルがカレントディレクトリ内のファイル名に展開しないよう、パタ ーンをクォートしなければならないことに注意してください。(当然、 シェルはアーカイブ内のファイル一覧にアクセスすることはできません。) .Pp ファイルを階層構造ごとコピーするには、このようにコマンドを使用してください: .Bd -literal tar cf - -C srcdir . | tar xpf - -C destdir .Ed .Pp ディスケットに、gzip を使った圧縮アーカイブを作成するには、次の ようなコマンドラインを使うといいでしょう。 .Pp .Dl tar --block-compress -z -c -v -f /dev/rfd1a -b 36 tar/ .Pp まとめ指定フラグと --スタイルのフラグを混在させることができない ことに注意してください。次のようにタイプしなければならないわけで はなく、上記のような書き方で1文字フラグを使うことができます。 .Pp .Dl tar --block-compress --gzip --verbose --file /dev/rfd1a --block-size 20 tar / .Pp 上のようにして作成したディスクの内容は、次のようにすればリスト表 示できます。 .Pp .Dl tar tvfbz /dev/rfd1a 36 .Pp 2 つの tar アーカイブを 1 つのアーカイブにまとめるには、 .Pp .Dl tar Af archive1.tar archive2.tar .Pp を使います。こうすると、archive2.tar に含まれているファイルが archive1.tar の末尾に追加されます。(単純に .Pp .Dl cat archive2.tar >> archive1.tar .Pp とタイプしてもうまくいかないことに注意してください。なぜなら、 tar アーカイブの末尾には end-of-file ブロックがあるからです。) .Pp srcdir ディレクトリから 1997 年 2 月 9 日 13:00 以降に変更をされた 全てのファイルをアーカイブするためには、以下の形式を使って下さい。 .Dl tar\ -c\ -f\ backup.tar\ --newer-mtime\ 'Feb\ 9\ 13:15\ 1997'\ srcdir/ .Pp 他の時間指定形式としては、'02/09/97 13:15', \&'1997-02-09 13:15', '13:15 9 Feb 1997', '9 Feb 1997 13:15', \&'Feb. 9, 1997 1:15pm', '09-Feb', '3 weeks ago', 'May first Sunday' があります。 正しいタイムゾーンを指定するためには、 `13:15 CEST' や `13:15+200' を使用して下さい。 .Sh 環境変数 .Nm プログラムは、以下の環境変数を参照します。 .Bl -tag -width "POSIXLY-CORRECT" .It POSIXLY-CORRECT 通常、 .Nm はファイル指定の中に混ざったフラグを処理します。 この環境変数を設定すると、 .Nm は最初のフラグ以外の引数を見つける とそれ以降の引数に対してフラグ処理を行なわないという、POSIX 仕様 に合わせた動作を行なうようになります。 .It SHELL インタラクティブモードにおいて、サブシェルの起動が要求されたとき、 SHELL 変数が設定されていればそれが、設定されていなければ "/bin/sh" が使用されます。 .It TAPE tar のデフォルトのテープドライブを変更します。(これは、さらに .Fl f フラグによって変更することができます。) .El .Sh 関連ファイル .Bl -tag -width "/dev/rst0" .It Pa /dev/rst0 デフォルトのテープドライブ .El .\" This next request is for sections 1, 6, 7 & 8 only .\" (command return values (to shell) and fprintf/stderr type diagnostics) .\" .Sh 診断 .Sh 関連項目 .Xr compress 1 , .Xr gzip 1 , .Xr pax 1 , .Xr ft 8 , .Xr rmt 8 .\" .Sh 規格 .Sh 歴史 .Nm フォーマットは立派な歴史を持っていて、Sixth Edition UNIX に 原点があります。 この .Nm の実装は GNU 実装であり、John Gilmore によって書かれた パブリックドメイン tar が元になっています。 .Sh 作者 次の人を含む、大変多くの人々。[ソースの中の ChangeLog ファイルに記 述されている人々] John Gilmore (オリジナルのパブリックドメイン版の 作者), Fenlason (最初の GNU 作者), Joy Kendall, Jim Kingdon, David J. MacKenzie, Michael I Bushnell, Noah Friedman, そして バグフィックスや追加を貢献してくれた無数の人々。 このマニュアルページは NetBSD 1.0 release から、FreeBSD グループが 取り込んだものです。 .Sh バグ 特徴的な .Fl C オプションは、これまでの tar プログラムのようには動作しないため、 おそらく信頼できません。 .Pp -A コマンドは、任意の数の tar アーカイブを結合するよう動くべきで すが、そうは動作しません。2 番目やそれ以降のアーカイブの end-of-archive ブロックを取り除くことを試みます。 diff --git a/ja_JP.eucJP/man/man1/uustat.1 b/ja_JP.eucJP/man/man1/uustat.1 index 9820922806..90b9e96521 100644 --- a/ja_JP.eucJP/man/man1/uustat.1 +++ b/ja_JP.eucJP/man/man1/uustat.1 @@ -1,555 +1,555 @@ ''' %Id: uustat.1,v 1.6 1996/02/02 00:26:06 mpp Exp % .\" jpman %Id: uustat.1,v 1.2 1997/03/29 11:58:00 horikawa Stab % .TH uustat 1 "Taylor UUCP 1.06" .SH 名称 uustat \- UUCP システム状態のチェックや制御を行なう .SH 書式 .B uustat \-a .PP .B uustat \-\-all .PP .B uustat [ .B \-eKRiMNQ ] [ .B \-sS system ] [ .B \-uU user ] [ .B \-cC command ] [ .B \-oy hours ] [ .B \-B lines ] [ .B \-\-executions ] [ .B \-\-kill-all ] [ .B \-\-rejuvenate-all ] [ .B \-\-prompt ] [ .B \-\-mail ] [ .B \-\-notify ] [ .B \-\-no-list ] [ .B \-\-system system ] [ .B \-\-not-system system ] [ .B \-\-user user ] [ .B \-\-not-user user ] [ .B \-\-command command ] [ .B \-\-not-command command ] [ .B \-\-older-than hours ] [ .B \-\-younger-than hours ] [ .B \-\-mail-lines lines ] .PP .B uustat [ .B \-kr jobid ] [ .B \-\-kill jobid ] [ .B \-\-rejuvenate jobid ] .PP .B uustat \-q [ .B \-sS system ] [ .B \-oy hours ] [ .B \-\-system system ] [ .B \-\-not-system system ] [ .B \-\-older-than hours ] [ .B \-\-younger-than hours ] .PP .B uustat \-\-list [ .B \-sS system ] [ .B \-oy hours ] [ .B \-\-system system ] [ .B \-\-not-system system ] [ .B \-\-older-than hours ] [ .B \-\-younger-than hours ] .PP .B uustat \-m .PP .B uustat \-\-status .PP .B uustat \-p .PP .B uustat \-\-ps .SH 解説 .I uustat コマンドは、UUCPシステムに関するいろんな情報を表示します。また、 本コマンドを用いることで、 .I uucp (1) や .I uux (1)で作成されたジョブを取り消したり、ジョブのタイムスタンプの若返りを行なったりすることが 出来ます。 デフォルトでは、 .I uustat は、コマンド を起動したユーザが要求したジョブをすべて表示します。これは、 .B \-\-user オプションで自分を指定した場合の動作と同じです。 .B \-a, .B \-\-all, .B \-e, .B \-\-executions, .B \-s, .B \-\-system, .B \-S, .B \-\-not-system, .B \-u, .B \-\-user, .B \-U, .B \-\-not-user, .B \-c, .B \-\-command, .B \-C, .B \-\-not-command, .B \-o, .B \-\-older-than, .B \-y, .B \-\-younger-than のいずれかのオプションが指定されると、指定条件の組合せに合致するすべてのジョブを 表示します。 .B \-K または .B \-\-kill-all オプションは、要求してから7日間経過した全てのジョブのような、選択したグルー プのジョブを削除出来ます。 .SH オプション .I uustat では、以下のオプションが使用可能です。 .TP 5 .B \-a, \-\-all キューイングされたすべてのファイル転送要求を表示します。 .TP 5 .B \-e, \-\-executions ファイル転送要求ではなく、 コマンド実行要求を表示します。キューイングされた コマンド実行要求は、 .I uucico (8) ではなく .I uuxqt (8) にて処理されます。 キューイング中のコマンド実行要求には、リモートシステムから転送される ファイルを待っているものもあります。これらの要求は、 .I uux (1)を起動することで作成されます。 .TP 5 .B \-s system, \-\-system system 指定したシステムに対するジョブをすべて表示します。本オプションは、 1回のコマンド起動時に複数指定することが可能です。 この場合、指定したシステムに対応するジョブが全て表示されます。 .B \-\-list オプションと共に指定したときは、指定したシステムのジョブだけが表示されます。 .TP 5 .B \-S system, \-\-not-system system 指定したシステム向け以外のジョブをすべて表示します。本オプションは、 1回のコマンド起動時に複数指定することが可能です。 この場合、指定しなかったシステムのジョブが全て表示されます。 .B \-\-list オプションと共に指定したときは、指定しなかったシステムのジョブだけが表示されます。 なお、本オプションは、 .B \-s や .B \-\-system とは同時に指定してはいけません。 .TP 5 .B \-u user, \-\-user user 指定したユーザのジョブをすべて表示します。本オプションは、 1回のコマンド起動時に複数指定することが可能です。 この場合、指定したユーザのジョブが全て表示されます。 .TP 5 .B \-U user, \-\-not-user user 指定したユーザのジョブを除くジョブをすべて表示します。本オプションは、 1回のコマンド起動時に複数指定することが可能です。 この場合、指定しなかったユーザのジョブが全て表示されます。 なお、本オプションは、 .B \-u や .B \-\-user とは同時に指定してはいけません。 .TP 5 .B \-c command, \-\-command command 指定したコマンドの実行を要求するジョブをすべて表示します。 .B command を .I ALL と指定した場合、すべての(単なる .I uucp ファイル転送ではない)コマンドの実行を要求するジョブ を表示します。本オプションは、1回のコマンド起動時に複数指定することが 可能です。 この場合、指定したコマンドの実行を要求するジョブが全て表示されます。 .TP 5 .B \-C command, \-\-not-command command 指定したコマンド以外の実行を要求するジョブをすべて表示します。 .B command が .I ALL と指定した場合、 単なる .I uucp ファイル転送要求がすべて表示されます。 本オプションは、1回のコマンド起動時に複数指定することが 可能です。 この場合、指定したコマンドの実行を要求しないジョブが全て表示されます。 なお、本オプションは、 .B \-c や .B \-\-command と同時に指定してはいけません。 .TP 5 .B \-o hours, \-\-older-than hours キューイングされてから指定した時間(単位:時間)以上超過した ジョブを全て表示します。 .B \-\-list オプションと共に指定した場合は、 そのシステムに関するもっとも古いジョブが、指定した時間より 古いという条件を満たすシステムの名前だけを表示します。 .TP 5 .B \-y hours, \-\-younger-than hours キューイングされてから経過した時間が指定した時間(単位:時間)を 超過していないジョブを全て表示します。 .B \-\-list オプションと共に指定した場合は、 そのシステムに関するもっとも古いジョブが指定した時間より 新しいという条件を満たすシステムの名前だけを表示します。 .TP 5 .B \-k jobid, \-\-kill jobid 指定したジョブを削除します。jobidは、デフォルトの出力結果から取得可能 です。また、 .I uucp (1) や .I uux (1)にて .B \-j や .B \-\-jobid オプションを付加して実行することで、当該ジョブのジョブidを取得する ことも出来ます。 ジョブの削除を行なうことが出来るのは、ジョブを要求したユーザ、UUCP システム管理者、もしくはスーパーユーザです。 .B \-k や .B \-\-kill オプションは、1回のコマンド実行で複数回指定することが可能です。 .TP 5 .B \-r jobid, \-\-rejuvenate jobid 指定したジョブのジョブ時刻を、本コマンドを起動した時刻に変更します。 このことにより、 .B \-o, .B \-\-older-than, .B \-y, .B \-\-younger-than の各オプションの出力結果に影響が出ます。 このオプションの使用により、 クリーンアップデーモンにより削除されるのを免れることができます。 jobidは、デフォルトの出力結果から取得可能 です。また、 .I uucp (1) や .I uux (1)にて .B \-j や .B \-\-jobid オプションを付加して実行することで、当該ジョブのジョブidを取得する ことも出来ます。 本操作を行なうことが出来るのは、ジョブを要求したユーザ、UUCPシステム管 理者、もしくはスーパーユーザです。 .B \-r や .B \-\-rejuvenate オプションは、1回のコマンド実行で複数回指定することが可能です。 .TP 5 .B \-q, \-\-list 要求がキューイングされている全てのリモートシステムに対する要求の ステータス、そして対話のステータスを表示します。 .B \-s, .B \-\-system, .B \-S, .B \-\-not-system, .B \-o, .B \-\-older-than, .B \-y, .B \-\-younger-than の各オプションはシステムの表示を制限するために用います。要求がキューイングさ れていないシステムは表示されません。 .TP 5 .B \-m, \-\-status すべてのリモートシステムとの対話のステータスを表示します。 .TP 5 .B \-p, \-\-ps UUCPロックまたはポートを保持するすべての処理のステータスを表示します。 .TP 5 .B \-i, \-\-prompt 各ジョブについて、削除するかどうかを問い合わせるよう指示します。その 問い合わせに対してユーザが .I y もしくは .I Y を先頭に含む文字列を入力した場合(y もしくは Y だけでも)、そのジョブ は削除されます。 .TP 5 .B \-K, \-\-kill-all 各ジョブを自動的に削除します。本機能は、 .B \-\-mail や .B \-\-notify オプションと組み合わせて使用することで、自動メンテナンスを行なう スクリプトを作成するのに役立ちます。 .TP 5 .B \-R, \-\-rejuvenate-all 指定したジョブを自動的に若返らせます。本オプションは .B \-\-kill-all と同時に指定できません。 .TP 5 .B \-M, \-\-mail 各ジョブについて、UUCPシステム管理者に対してメールを送ります。もし ジョブが( .B \-\-kill-all や .B \-\-prompt を用いることで)削除された場合、その旨がメールに明記されます。 .B \-\-comment オプションで指定したコメントについても、そのメールの中に含まれます。 ジョブが実行された場合、標準入力から入力された最初の部分がメールの メッセージに含まれます。 メールに含まれる行数は、 .B \-\-mail-lines オプションで設定可能です(デフォルトでは100行です)。 標準入力からの入力データがNULLキャラクタを含む場合、そのファイルはバイナリ ファイルであるとみなされ、メールには含まれません。 .TP 5 .B \-N, \-\-notify 各ジョブについて、要求を行なったユーザに対してメールを送ります。メール の内容については、 .B \-M や .B \-\-mail オプションで説明したものと同一です。 .TP 5 .B \-W comment, \-\-comment comment .B \-M, .B \-\-mail, .B \-N, .B \-\-notify の各オプションでメールを送る際に、そのメールに含めるコメントを指定します。 .TP 5 .B \-B lines, \-\-mail-lines lines .B \-M, .B \-\-mail, .B \-N, .B \-\-notify のいずれかのオプションで、 標準入力を用いるコマンドを実行するジョブの結果をメールで送るように 指定している場合、メールに含める標準入力の行数を指定します。 デフォルトは 100行です。 .TP 5 .B \-Q, \-\-no-list .B \-i, .B \-\-prompt, .B \-K, .B \-\-kill-all, .B \-M, .B \-\-mail, .B \-N .B \-\-notify オプションと同時に使用します。ジョブの表示を行なわず、 指定した動作のみ行います。 .TP 5 .B \-x type, \-\-debug type 特定のデバッグタイプを指定します。タイプとしては、abnormal, chat, handshake, uucp-proto, proto, port, config, spooldir, execute, incoming, outgoing がありますが、 .I uustat では、abnormal, config, spooldir ,execute のみが意味を持ちます。 本オプションでは、コンマで区切ることで複数のデバッグタイプが指定可能です。そして、 .B \-\-debug オプションは、1回のコマンド起動で複数回指定可能です。 また、タイプとして数字を指定することも可能です。例えば、 .B \-\-debug 2 という指定は、 .B \-\-debug abnormal,chat と同じ意味です。 .TP 5 .B \-I file, \-\-config file -使用するコンフィギュレーションファイルの指定を行ないます。ただし、本 +使用する設定ファイルの指定を行ないます。ただし、本 オプションは、本コマンドの コンパイル条件によっては使用できないことがあります。 .TP 5 .B \-v, \-\-version バージョン情報を表示します。実行は行ないません。 .TP 5 .B \-\-help ヘルプメッセージを表示します。実行は行ないません。 .SH 使用例 .br .nf uustat --all .fi 全てのジョブのステータスを表示します。出力例を以下に示します。 .br .in +0.5i .nf bugsA027h bugs ian 04-01 13:50 Executing rmail ian@airs.com (sending 1283 bytes) .fi .in -0.5i フォーマットは、以下の通りです。 .br .in +0.5i .nf jobid system user queue-date command (size) .fi .in -0.5i jobid は、 .B \-\-kill もしくは .B \-\-rejuvenate オプションで主に使用します。 size は、リモートシステムにどれだけのデータが転送されるかを示します。 また、ファイル受信要求の場合は表示されません。 .B \-\-system, .B \-\-not-system, .B \-\-user, .B \-\-not-user, .B \-\-command, .B \-\-not-command, .B \-\-older-than, .B \-\-younger-than オプションは、ジョブの表示制御のために用いられます。 .br .nf uustat --executions .fi キューイングされたコマンド実行ジョブのステータスを表示します。出力 例を以下に示します。 .br .in +0.5i .nf bugs bugs!ian 05-20 12:51 rmail ian .fi .in -0.5i フォーマットは以下の通りです。 .br .in +0.5i .nf system requestor queue-date command .fi .in -0.5i .B \-\-system, .B \-\-not-system, .B \-\-user, .B \-\-not-user, .B \-\-command, .B \-\-not-command, .B \-\-older-than, .B \-\-younger-than オプションは、ジョブの表示制御のために用いられます。 .br .nf uustat --list .fi 全てのシステムについてキューイングされたコマンドのステータスを表示します。以 下に出力例を示します。 .br .in +0.5i .nf bugs 4C (1 hour) 0X (0 secs) 04-01 14:45 Dial failed .fi .in -0.5i システム、キューイングされたコマンド数、 もっとも古いコマンドがキューイングされてからの時間、 キューイングされたローカル実行数と もっとも古いコマンドがローカル実行キューイングされてからの時間、 最後の対話の日時とステータスが表示されています。 .br .nf uustat --status .fi 全てのリモートシステムについて対話のステータスを表示します。出力例を以下に示 します。 .br .in +0.5i .nf bugs 04-01 15:51 Conversation complete .fi .in -0.5i システム、最後の対話の日時とステータスが示されています。最後の対話が失敗した 場合、 .I uustat はシステムを呼び出そうとした回数を表示します。 次のリトライ間隔までシステムを呼び出せないときには .I uustat は次にコールできる時刻を表示します。 .br .nf uustat --ps .fi UUCPロックしている全てのプロセスのステータスを表示します。 .I uustat は単にロックしている各プロセス上で .I ps (1) を起動するだけなので、出力書式はシステムにより異なります。 .br .in +0.5i .nf uustat --command rmail --older-than 168 --kill-all --no-list --mail --notify --comment "Queued for over 1 week" .fi .in -0.5i これは一週間(168 時間)以上配送待ちになっているキューイングされている全ての .I rmail コマンドの実行を取り止めます。各コマンドに対し、UUCP 管理者と rmail の実行を 要求したユーザの双方にメールが送られます。メールには .B \-\-comment オプションで指定した文字列が含まれています。 .B \-\-no-list オプションはジョブの出力を端末に出力しません。このときプログラムから出力される のはエラーメッセージだけです。 .SH 関連ファイル 関連ファイル名は、コンパイル時の指定により変化します。以下に挙げるものは、 一例です。 .br /usr/lib/uucp/config - 初期化ファイル .br /usr/spool/uucp - UUCP スプールディレクトリ .SH 関連項目 ps(1), rmail(8), uucp(1), uux(1), uucico(8), uuxqt(8) .SH 作者 Ian Lance Taylor (ian@airs.com) diff --git a/ja_JP.eucJP/man/man1/window.1 b/ja_JP.eucJP/man/man1/window.1 index 911439bc69..b6eb76df5c 100644 --- a/ja_JP.eucJP/man/man1/window.1 +++ b/ja_JP.eucJP/man/man1/window.1 @@ -1,887 +1,887 @@ .\" Copyright (c) 1985, 1990, 1993 .\" The Regents of the University of California. All rights reserved. .\" .\" This code is derived from software contributed to Berkeley by .\" Edward Wang at The University of California, Berkeley. .\" .\" 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. .\" .\" @(#)window.1 8.2 (Berkeley) 12/30/93 .\" jpman %Id: window.1,v 1.3 1997/08/31 14:19:38 horikawa Stab % .\" .Dd December 30, 1993 .Dt WINDOW 1 .Os BSD 4.3 .Sh 名称 .Nm window .Nd ウインドウ環境を実現します .Sh 書式 .Nm window .Op Fl t .Op Fl f .Op Fl d .Op Fl e Ar escape-char .Op Fl c Ar command .Sh 解説 .Nm window は、 .Tn ASCII 端末上でウインドウ環境を実装します。 .Pp ウインドウとは物理的な端末スクリーンの中の部分的な長方形部分を指し、 ここをプロセスの集合が利用します。その大きさと位置はユーザがいつでも 変更できます。プロセスは 標準入力、標準出力、標準エラー出力を通して端末と通信する通常の方法と 同じ方法で、そのウインドウと通信します。 ウインドウプログラムはそのウインドウに対する入力と出力のリダイレクトに関する 細かい処理を行います。どんな時でも、 1 つのウインドウだけがキーボードからの 入力を受けることが出来ますが、全てのウインドウが同時にディスプレイへの出力を 送ることが可能です。 .Pp .Nm window が立ち上がった時、ユーザのホームディレクトリにある .Pa .windowrc 内のコマンドが実行されます。もしこのファイルが存在しない時は、 デフォルトとして同じ大きさのウインドウが 2 つ作成されます。 .Pp コマンドラインオプションには以下のものがあります。 .Bl -tag -width Fl .It Fl t terse モードをオンにします (以下の .Ic terse コマンドを参照)。 .It Fl f 高速モードです。スタートアップ動作は何もしません。 .It Fl d .Pa .windowrc を無視する代わりに 2 つのデフォルトウインドウを作成します。 .It Fl e Ar escape-char エスケープ文字を .Ar escape-char にします。 .Ar escape-char は文字 1 つか、もしくは .Ic ^X .Ns ( No control\- Ns Ar X ) のような形式です .Ns ( Ar X はどんな文字でも構いません)。 .It Fl c Ar command .Ar command をロングコマンド(以下参照)として最初に実行します。 .El .Pp ウインドウはオーバラップ可能で、枠が必要です。 各ウインドウには、``1'' から ``9'' の数字のうちの一つの名前が 付いています。この一文字の識別子は、ユーザが定義できるラベル文字と 同じように、ウインドウのフレームの上の辺に表示されます。 ウインドウは .Ar フォアグラウンド にあるように設計されています。フォアグランドウインドウは、 普通の他のフォアグラウンドではないウインドウよりもつねに上にあります。 このウインドウより上になるのは、他のフォアグランドウインドウだけです。 ウインドウは、端末画面の辺内に完全に入っている必要はありません。 したがって、(画面よりも大きくても良い)大きいウインドウは、その全画面の 一部分だけが表示されるでしょう。 .Pp 各ウインドウは、カーソルと制御機能を持っています。最も知的な端末操作、 すなわち行や文字消去や挿入が提供されています。下線を引いたり反転表示等の ディスプレイモードは、端末によって提供されている場合には、利用可能です。 更に、複数ページ分のメモリがある端末と同じように、各ウインドウは ウインドウ画面に表示されるよりも多くの行を保持できるテキストバッファを 持っています。 .Ss プロセス環境 新しく作成されたウインドウでは、 呼び出されたウインドウからプロセス環境を引き継いで、 シェルプログラムが実行されます。 標準入力・出力・エラー出力は、仮想端末 ( .Xr pty 4 参照) または、 .Ux ドメインのソケット ( .Xr socketpair 2 参照)と結びつけられます。 仮想端末が使われている場合、特別な文字やモード( .Xr stty 1 参照)は、物理端末から複製されます。 このウインドウに対する .Xr termcap 5 のエントリが作成されて、環境として( .Xr environ 7 参照)変数 .Ev TERMCAP に渡されます。 termcap エントリには、下線・反転表示・その他の表示モード・ 可能であれば端末のファンクションキーによって生み出されるコード等の 物理端末からの情報と同じように、ウインドウの大きさや特徴が含まれています。 更に、仮想端末のウインドウサイズ属性は、ウインドウの大きさを反映するように 設定され、その大きさが変更された場合はその情報が更新されます。 特に、エディタ .Xr vi 1 は、この情報を画面を再表示するために利用します。 .Ss 操作 普通の実行中には、 .Nm window は、二つの状態の内の一つの状態にあります。 この二つの状態は、会話モードとコマンドモードです。 会話モードでは、端末の実際のカーソルは、特定のウインドウのカーソル位置 に位置します。この特定のウインドウはカレントウインドウと呼ばれます。 そして、キーボードからの入力は、そのウインドウにあるプロセスに 送られます。カレントウインドウは、他のウインドウがフォアグランドに ある時を除いて、いつも他のウインドウよりも上にあります。 更に、その識別子とラベルは反転表示で強調されています。 .Pp .Nm window のエスケープ文字 (通常は、 .Ic ^P です) を入力することで、会話モードからコマンドモードへ移行します。 コマンドモードでは、端末画面の一番上の行は コマンドプロンプトウインドウに変わり、 .Nm window はキーボードからの入力をウインドウを操作するコマンドであると解釈します。 .Pp 二つの種類のコマンドがあります。短いコマンドは普通 1文字ないし 2文字 から構成されます。長いコマンドはコマンドウインドウ (以下の .Dq Ic \&: コマンドを参照) で入力される文字列もしくは、ファイル (以下の .Ic source 参照) から読み込まれます。 .Ss 短いコマンド 以下では、 .Ar \&# は、ウインドウ 1 から 9 に結びつけられた、 数字の ``1'' から ``9'' のひとつを表現します。 .Ic ^X は、 .No control\- Ns Ar X を意味します。ここで、 .Ar X は任意の文字です。 特に、 .Ic ^^ は、 .Li control\-^ です。 .Ar escape はエスケープキーもしくは、 .Ic ^\&[ です。 .Bl -tag -width Ds .It Ar # ウインドウ .Ar # をカレントウインドウとして選択し、会話モードに戻ります。 .It Ic \&% Ns Ar # ウインドウ .Ar # を選択しますが、コマンドモードのままです。 .It Ic ^^ 一つ前のウインドウを選択し、会話モードに戻ります。 これは、二つのウインドウの間を交互に移動する時に便利です。 .It Ic escape 会話モードに戻ります。 .It Ic ^P 会話モードに戻り、現在のウインドウに .Ic ^P を書き込みます。したがって、会話モード中で二つの .Ic ^P を入力することで、一つを現在のウインドウに送ることができます。 .Nm window のエスケープを別の文字に変更している場合には、その文字がここでいう .Ic ^P と同じ動作をします。 .It Ic ? コマンドの短いまとめを表示します。 .It Ic ^L 画面を再描画します。 .It Ic q .Nm window を終了します。 確認が行われます。 .It Ic ^Z .Nm window を中断します。 .It Ic w 新しいウインドウを作成します。ユーザはウインドウの左上の場所と 右下の場所を指定します。カーソルが画面上に表示され、 ``h'', ``j'', ``k'', ``l'' キーでカーソルをそれぞれ 左 , 下 , 上 , 右 に移動します。 ``H'', ``J'', ``K'', ``L'' キーでは、カーソルはそれぞれの方向の 画面の限界まで移動します。移動キーの前に数字を入力することで、 移動を数字の回数だけ繰り返します。リターンでカーソル位置をウインドウの 左上の位置として入力します。右下の角も同じような方法で入力します。 この手続き中には、新しいウインドウの位置は画面に表示される長方形の 箱として示されます。この枠が、新しいウインドウが表示される枠です。 エスケープキーを入力することで、どの時点でも、このコマンドを キャンセルします。 .Pp このウインドウはカレントウインドウになります。そして、最初に利用可能な ID が与えられます。また、デフォルトのバッファサイズが使われます (以下の .Ar default_nline コマンドを参照) 。 .Pp 完全に見ることのできるウインドウだけがこの方法で作成できます。 .It Ic c Ns Ar # ウインドウ .Ar # を閉じます。 -ウインドウ中のプロセスには、ハングアップシグナル ( +ウインドウ中のプロセスには、回線切断シグナル ( .Xr kill 1 参照) が送られます。 .Xr csh 1 は、このシグナルを正しく扱うべきで、そうであれば問題は起こりません。 .It Ic m Ns Ar # ウインドウ .Ar # を別の位置に移動します。 ウインドウの形をした箱が新しい位置を示すために画面に表示され、 .Ic w コマンドで使われたのと同じようなキーで箱の位置を指定できます。 ウインドウは一部が画面の外にでても構いません。 .It Ic M Ns Ar # ウインドウ .Ar # を以前の位置に動かします。 .It Ic s Ns Ar # ウインドウ .Ar # の大きさを変更します。 ウインドウの新しい右下の角を指定する必要があります。 新しいウインドウの大きさを示すために、箱が書かれます。 .Ic w や .Ic m コマンドで使われたのと同じキーが位置を入力するために使われます。 .It Ic S Ns Ar # ウインドウ .Ar # を以前の大きさに変更します。 .It Ic ^Y カレントウインドウを一行上にスクロールします。 .It Ic ^E カレントウインドウを一行下にスクロールします。 .It Ic ^U カレントウインドウを画面の半分上にスクロールします。 .It Ic ^D カレントウインドウを画面の半分下にスクロールします。 .It Ic ^B カレントウインドウを一画面分、上にスクロールします。 .It Ic ^F カレントウインドウを一画面分、下にスクロールします。 .It Ic h カレントウインドウのカーソルを一カラム左に動かします。 .It Ic j カレントウインドウのカーソルを一行下に動かします。 .It Ic k カレントウインドウのカーソルを一行上に動かします。 .It Ic l カレントウインドウのカーソルを一カラム右に動かします。 .It Ic y ヤンクします。ユーザはカレントウインドウの 2点を指定します。 この 2点で示される内容がヤンクバッファに保存されます。 .It Ic p プットです。ヤンクバッファの内容を、現在のウインドウに入力として 書き込みます。 .It Ic ^S カレントウインドウの出力を停止します。 .It Ic ^Q カレントウインドウの出力を開始します。 .It Ic : 長いコマンドとして実行する行を入力します。 通常の行編集文字 (エスケープ文字、単語の消去、行の消去) が提供されます。 .El .Ss 長いコマンド ロングコマンドはプログラム言語の様に解釈される文の列です。 この文法は C 言語に似ています。数字や文字列の表現や変数が、 条件分岐と同じように提供されています。 .Pp 二つのデータ型があります。文字列と数字です。 文字列は、文字で始まる文字や数字の列です。 ``_'' と ``.'' は文字と 考えられます。別の方法として、アルファベットや数字に含まれない文字を ``"''で括るか、``\\''でエスケープすることで、文字列に含めることもできます。 更に、 C言語で提供されている ``\\'' シーケンスがクオートの内外で 利用可能です (例えば、 ``\\n'' は改行を、``\\r'' はキャリッジリターンを表現します)。 以下の例は規則にあった文字列です。 abcde01234, "&#$^*&#", ab"$#"cd, ab\\$\\#cd, "/usr/ucb/window" .Pp 数字は、以下の3つの形式のうちの一つの整数値です。 10進数・``0'' に続いて表現される 8 進数・``0x'' もしくは ``0X'' に続いて 表現される 16 進数です。機械にとって自然な整数サイズが使われます (つまり、 Cコンパイラの符号付き整数型です)。 C 言語と同じように、 非ゼロの表現が論理的な真をあらわします。 .Pp 文字 ``#'' は、行末までのコメントの始まりを表現します。 .Pp 文は条件式もしくは式です。式文は改行 もしくは ``;'' で終りになります。式を次の行に継続するためには、 最初の行を ``\\'' で終らせます。 .Ss 条件文 .Nm window は、単一の制御構造を持ちます: それは完全にまとめられた if 文で、以下の形式です .Pp .Bd -literal -offset indent -compact if then \t \t... elsif then \t \t... else \t \t... endif .Ed .Pp .Ic else や .Ic elsif 部分はオプションです。 .Ic elsif は、必要なだけ繰り返して利用することができます。 は数値である必要が有ります。 .Ss 式 .Nm window における式は、 C 言語中のものと似ており、ほとんどの C の演算子が 数値オペランドとして提供されています。更に、いくつかの演算子は、 文字列を操作するために拡張されています。 .Pp ある式が文として使われている時、その値は評価の後で 捨てられます。したがって、(代入や関数呼び出しの様な) 副作用を持った式のみが文として有用です。 .Pp (配列でない) 一つの値の変数が、数値と文字列に対して提供されています。 いくつかの変数は、あらかじめ定義されています。 これらは後でに示してあります。 .Pp 優先順序が増加していくように、演算子を以下に示します。 .Bl -tag -width Fl .It Xo .Aq Va expr1 .Ic = .Aq Va expr2 .Xc 代入です。名前が .Aq Va expr1 で文字列を値として持つ変数に、 .Aq Va expr2 の結果が代入されます。 .Aq Va expr2 の値を返します。 .It Xo .Aq Va expr1 .Ic ? .Aq Va expr2 .Ic : .Aq Va expr3 .Xc .Aq Va expr1 の評価値が真 (非 0 数値) である時、 .Aq Va expr2 の値を返します。そうでない場合は、 .Aq Va expr3 の値を返します。 .Aq Va expr2 と .Aq Va expr3 のどちらか一方だけが、評価されます。 .Aq Va expr1 は数値表現でなくてはなりません。 .It Xo .Aq Va expr1 .Ic \&|\&| .Aq Va expr2 .Xc 論理的和 (or) です。数値だけが使えます。短絡評価が提供されています (つまり、 .Aq Va expr1 が評価されて真である場合は、 .Aq Va expr2 は評価されません) 。 .It Xo .Aq Va expr1 .Ic \&&\&& .Aq Va expr2 .Xc 短絡評価付きの論理的積 (and) です。数値だけが使えます。 .It Xo .Aq Va expr1 .Ic \&| .Aq Va expr2 .Xc ビット毎の論理和 (or) です。数値だけが使えます。 .It Xo .Aq Va expr1 .Ic ^ .Aq Va expr2 .Xc ビット毎の排他的論理和 (xor) です。数値だけが使えます。 .It Xo .Aq Va expr1 .Ic \&& .Aq Va expr2 .Xc ビット毎の論理積 (and) です。数値だけが使えます。 .It Xo .Aq Va expr1 .Ic == .Aq Va expr2 , .Aq Va expr1 .Ic != .Aq expr2 .Xc (それぞれ、等価と非等価の) 比較です。ブール値の結果 (1 か 0 のどちらか) が比較の結果として返されます。 オペランドは、数値もしくは文字列です。片一方が文字列の場合、 他のオペランドも必要であれば変換されます。 .It Xo .Aq Va expr1 .Ic < .Aq Va expr2 , .Aq Va expr1 .Ic > .Aq Va expr2 , .Aq Va expr1 .Ic <= .Aq Va expr2 , .Aq Va expr1 .Ic >= .Aq Va expr2 .\" >= を補足 .\" Aug 31 1997 .Xc それぞれ、より小さい・より大きい・以下・以上をあらわします。 数値と文字列の両方が利用可能です。 上で述べたように、自動的な変換が行われます。 .It Xo .Aq Va expr1 .Ic << .Aq Va expr2 , .Aq Va expr1 .Ic >> .Aq Va expr2 .Xc 両方のオペランドが数値である場合、 .Aq Va expr1 は、左 (もしくは、右) に .Aq Va expr2 ビットシフトされます。 .Aq Va expr1 が文字列で、最初 (もしくは、最後) の .Aq Va expr2 文字が返されます( .Aq Va expr2 も文字列の場合、その長さがその値として利用されます)。 .It Xo .Aq Va expr1 .Ic + .Aq Va expr2 , .Aq Va expr1 .Ic - .Aq Va expr2 .Xc 数値においては、加算と減算です。 ``+'' に対して、片方が文字列の場合、他方は文字列に変換され、 結果は二つの文字列の結合となります。 .It Xo .Aq Va expr1 .Ic \&* .Aq Va expr2 , .Aq Va expr1 .Ic \&/ .Aq Va expr2 , .Aq Va expr1 .Ic \&% .Aq Va expr2 .Xc かけ算・割算・モジュロ演算 (余りの計算) です。 数字だけが利用可能です。 .\".(訳注)モジュロ演算の後ろのカッコは訳で付け加えました。 .\" 2.2.1R 対象(1997/06/02) Takeshi MUTOH .It Xo .Ic \- Ns Aq Va expr , .Ic ~ Ns Aq Va expr , .Ic \&! Ns Aq Va expr , .Ic \&$ Ns Aq Va expr , .Ic \&$? Ns Aq Va expr .Xc 最初の 3つは、単項演算子のマイナス・ビット毎の補をとる (ビットの反転) ・論理的な否定であり、数値だけを取ります。 演算子 ``$'' は .Aq Va expr を取り、その名前の変数の値を返します。 .Aq Va expr が値 .Ar n を持った数値で、それが (後述の) 別名マクロ中に現れた場合、 別名呼び出しの n 番目の引数を参照します。 ``$?'' は変数 .Aq Va expr の存在を調べ、存在する場合は 1 を、それ以外では 0 を返します。 .It Xo .Ao Va expr Ac Ns Pq Aq Ar arglist .Xc 関数呼び出しです。 .Aq Va expr は文字列でなくてはならず、 .Nm window の組み込み関数名の区別できる範囲でのプレフィックスであるか、 ユーザ定義の別名マクロの完全な名前でなくてはなりません。 組み込み関数の場合、 .Aq Ar arglist は以下の 2つの形式のどちらか一方です。 .Bd -literal -offset indent , , ... argname1 = , argname2 = , ... .Ed .Pp 実際、両方の形式はお互い混ぜて使うことができますが、その結果は 予想できません。ほとんどの引数は省略可能です。デフォルトの値が それらに対しては適用されます。 .Ar argnames は、引数名を区別できる範囲でのプレフィックスとすることができます。 引数を分離するコンマは、曖昧さを避けるためだけに用いられ、 通常は省略できます。 .Pp 最初の引数の形式は、ユーザ定義別名のために有効です。別名は、 .Ic alias 組み込み関数を使うことで定義されます(以下参照)。 引数は、変数機能の変種を使ってアクセスされます (前述の ``$'' 演算子を参照) 。 .Pp ほとんどの関数は値を返しますが、いくつかは副作用のためだけに 使われるため文として使われなければなりません。 関数や別名が文として使われた時、引数リストを囲むカッコは 省略可能です。別名は値を返しません。 .El .Ss 組み込み関数 引数は自然な順番で名前で並べられます。 オプション引数は、四角カッコ .Sq Op で囲みます。名前の無い引数は、角カッコ .Sq <> 内に書きます。 ブール値のフラグを意味する引数 (しばしば .Ar flag という名前を付けられます) は、意味が明らかである .Ar on , .Ar off , .Ar yes , .Ar no , .Ar true , .Ar false , の内の一つの値をもつか、数値表現においては非ゼロの値が真となります。 .Bl -tag -width Fl .It Xo .Ic alias Ns ( Bq Aq Ar string , .Bq Aq Ar string\-list ) .Xc .\" マクロが誤っているので修正 .\" Aug 31 1997 引数が与えられない場合は、全ての現在定義されている別名マクロが 表示されます。そうでない場合、 .Aq Ar string が表現 .Aq Ar string\-list の別名として定義されます。もし存在すれば、以前の .Aq Ar string の定義が返されます。デフォルトでは、 .Aq Ar string\-list は変更されません。 .It Ic close Ns Pq Aq Ar window\-list .Aq Ar window\-list で指定されたウインドウを閉じます。 .Aq Ar window\-list が単語 .Ar all の場合、全てのウインドウが閉じられます。値は返しません。 .It Ic cursormodes Ns Pq Bq Ar modes ウインドウカーソルを .Ar modes に設定します。 .Ar modes は、変数 .Ar m_ul (下線)・ .Ar m_rev (反転表示)・ .Ar m_blk (点滅)・ .Ar m_grp (グラフィック、端末依存です。)で示される モードビットのビット毎の論理和です。 以前のモードの値が返されます。引数に何も指定しないと変更を行いません。 例えば、 .Li cursor($m_rev$m_blk) は、ウインドウカーソルを点滅する反転表示に設定します。 .It Ic default_nline Ns Pq Bq Ar nline デフォルトバッファサイズを .Ar nline に設定します。 初期設定では、 48 行になっています。古いデフォルトバッファサイズが 返されます。引数に何も指定しないと変更は行いません。とても大きなバッファを 使うと、プログラムの速度が低下します。 .It Ic default_shell Ns Pq Bq Aq Ar string\-list デフォルトのウインドウシェルプログラムを .Aq Ar string\-list に設定します。 最初の文字列として古いシェル設定が返されます。 引数に何も指定しないと変更を行いません。 初期設定では、デフォルトシェルは環境変数 .Ev SHELL から取られます。 .It Ic default_smooth Ns Pq Bq Ar flag コマンド .Nm window (以下参照)への .Ar smooth 引数のデフォルトの値を設定します。 引数はブール値フラグ (上記の .Ar on , .Ar off , .Ar yes , .Ar no , .Ar true , .Ar false または数字のうちの一つ) です。引数に何も指定しないと変更を行いません。 古い値が (数字として) 返されます。 初期値は 1 (true) です。 .It Xo .Ic echo Ns ( Op Ar window , .Bq Aq Ar string\-list ) .Xc 文字列のリスト .Aq Ar string-list を、空白で分割し最後に改行を付けて .Nm window へ書き出します。 文字列はウインドウにだけ表示され、ウインドウ中のプロセスには 影響を与えません (以下の .Ic write を参照) 。 値は返されません。デフォルトはカレントウインドウです。 .It Ic escape Ns Pq Bq Ar escapec エスケープ文字を .Ar escape-char に設定します。古いエスケープ文字を一文字の文字列として返します。 引数に何も指定しないと変更を行いません。 .Ar escapec は、一文字の文字列か、 .No control\- Ns Ar X を意味する .Fl ^X という形式です。 .It Xo .Ic foreground Ns ( Bq Ar window , .Bq Ar flag ) .Xc .Nm window をフォアグラウンドに動かしたり、フォアグラウンドから外したりします。 .Ar flag はブール値です。古いフォアグランドフラグが返されます。 .Nm window に対するデフォルトはカレントウインドウで、 .Ar flag に対するデフォルトは無変更です。 .It Xo .Ic label Ns ( Bq Ar window , .Bq Ar label ) .Xc .Nm window のラベルを .Ar label に設定します。 古いラベル文字列が返されます。 .Nm window に対するデフォルトはカレントウインドウで、 .Ar label に対するデフォルトは無変更です。ラベルを無くすためには、 空文字列 ("") を設定します。 .It Ic list Ns Pq 引数はありません。 全てのウインドウの ID と ラベルが表示されます。 値は返されません。 .It Ic select Ns Pq Bq Ar window .Nm window をカレントウインドウとします。以前のカレントウインドウが返されます。 引数を指定しないと変更を行いません。 .It Ic source Ns Pq Ar filename .Ar filename 内の長いコマンドを読み込み、実行します。 ファイルが読み込めない場合には -1 を返し、それ以外では 0 を返します。 .It Ic terse Ns Pq Bq flag 簡素 (terse) モードを .Ar flag に設定します。簡素モードでは、コマンドウインドウはコマンドモード中 でさえ隠されたままで、エラーは端末のベルをならすことで報告されます。 .Ar flag は、上記の .Ar foreground 中の値と同じです。 古い簡素フラグが返されます。 引数を指定しないと変更は行いません。 .It Ic unalias Ns Pq Ar alias 別名定義 .Ar alias を消去します。 別名がない場合には -1 を返します。それ以外の場合は 0 を返します。 .It Ic unset Ns Pq Ar variable .Ar variable 変数の定義を消去します。 .Ar variable が存在しない場合には -1 を返します。それ以外の場合は 0 を返します。 .It Ic variables Ns Pq 引数はありません。全ての変数を表示します。値は返されません。 .It Xo .Ic window Ns ( Bq Ar row , .Bq Ar column , .Bq Ar nrow , .Bq Ar ncol , .Bq Ar nline , .Bq Ar label , .Bq Ar pty , .Bq Ar frame , .Bq Ar mapnl , .Bq Ar keepopen , .Bq Ar smooth , .Bq Ar shell ) . .Xc 左上の角が .Ar row , .Ar column で、大きさが .Ar nrow , .Ar ncol のウインドウを開きます。 .Ar nline が指定された場合、テキストバッファにその行が割り当てられます。 そうでない場合は、デフォルトのバッファサイズが使われます。 .Ar row , .Ar column , .Ar nrow , .Ar ncol に対するデフォルトの値は、それぞれ画面の一番上, 一番左, 一番下, 一番右 になります。 .Ar label は、ウインドウのラベル文字列です。 .Ar frame , .Ar pty , .Ar mapnl は、 (上記の) .Ar foreground への引数と同じ方法で解釈されるフラグの値です。 これはそれぞれ、このウインドウの周りに枠を付けるか (デフォルトでは真)、 ウインドウのためにソケットペアではなく仮想端末を割り当てるか (デフォルトでは真)、改行文字をこのウインドウでは 復帰と行送りに マップするか (デフォルトではソケットペアの場合は真、それ以外は偽) です。 一般に、ウインドウは、プロセスが終了した時に、自動的に閉じられます。 .Ar keepopen を真に設定する (デフォルトでは偽) ことでこの動作は妨げられます。 .Ar smooth が真である時、より端末らしい振舞いを実現するために、 画面は (このウインドウに対して) より頻繁に更新されます。 .Ar smooth のデフォルトの値は、 (上記) .Ar default_smooth コマンドで設定します。 .Ar shell は、このウインドウ内でシェルプログラムとして使われる文字列のリストです (デフォルトは、上記 .Ar default_shell で指定されたプログラムです)。 作成されたウインドウの ID が数字で 返されます。 .It Xo .Ic write Ns ( Bq Ar window , .Bq Aq Ar string\-list ) .Xc .Nm window に空白で分割されているが最後に改行の無い文字列リスト .Aq Ar string-list を送ります。 文字列は、実際にウインドウの入力として使われます。 値は返しません。 デフォルトはカレントウインドウです。 .El .Ss 定義済み変数 これらの変数は、情報のためだけにあります。これらを再定義しても、 .Nm window の内部操作には影響ありません。 .Bl -tag -width modes .It Ar baud 50 から 38400の間のボーレートです。 .It Ar modes 物理端末で提供されている(反転表示・下線・点滅・グラフィック等の) 表示モードです。 .Ar modes の値は、1 ビット値 .Ar m_blk , .Ar m_grp , .Ar m_rev , .Ar m_ul (以下参照)のビット毎の論理和になっています。 これらの値は、ウインドウのカーソルモードを設定する時に便利です (上の .Ar cursormodes 参照) 。 .It Ar m_blk 点滅モードのビットです。 .It Ar m_grp グラフィックモードのビットです (それほど有用ではありません)。 .It Ar m_rev 反転表示モードのビットです。 .It Ar m_ul 下線モードのビットです。 .It Ar ncol 物理端末の列数です。 .It Ar nrow 物理端末の行数です。 .It Ar term 端末の形式です。 端末の .Ev TERMCAP エントリの 2番目のフィールドに書かれている標準名が使われます。 .Sh 環境変数 .Nm window は、以下のような環境変数を利用します。 .Ev HOME , .Ev SHELL , .Ev TERM , .Ev TERMCAP , .Ev WINDOW_ID .Sh 関連ファイル .Bl -tag -width /dev/[pt]ty[pq]? -compact .It Pa ~/.windowrc スタートアップコマンドファイル .It Pa /dev/[pt]ty[pq]? 仮想端末デバイス .El .Sh 歴史 .Nm window コマンドは、 .Bx 4.3 から導入されました。 .Sh 診断 自己説明的な診断メッセージになっています。 diff --git a/ja_JP.eucJP/man/man8/IPXrouted.8 b/ja_JP.eucJP/man/man8/IPXrouted.8 index a87c8fe8ca..59f00bb84b 100644 --- a/ja_JP.eucJP/man/man8/IPXrouted.8 +++ b/ja_JP.eucJP/man/man8/IPXrouted.8 @@ -1,177 +1,177 @@ .\" Copyright (c) 1986, 1991, 1993 .\" The Regents of the University of California. All rights reserved. .\" .\" Copyright (c) 1995 John Hay. 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. .\" jpman %Id: IPXrouted.8,v 1.3 1997/07/27 13:00:54 horikawa Stab % .\" .Dd Oct 11, 1995 .Dt IPXROUTED 8 .Os FreeBSD .Sh 名称 .Nm IPXrouted .Nd IPX Routing Information Protocol デーモン .Sh 書式 .Nm IPXrouted .Op Fl q .Op Fl s .Op Fl S .Op Fl t .Op Ar logfile .Sh 解説 .Nm は IPX 経路テーブルを扱うために、ブート時に起動されます。 IPX 経路デーモンは、カーネルの経路テーブルエントリを最新に 保つために Novell の IPX Routing Information Protocol を用います。 .Pp 使用可能なオプション: .Bl -tag -width logfile .It Fl q (下記の .Fl s オプションとは反対に) 経路情報を提供しません。 .It Fl s ネットワークをつなぐルータであるないにかかわらず、 .Nm が強制的に経路情報を提供するようにします。 .It Fl S Service Advertizing Protocol .Nm (SAP) 情報を提供しません。デフォルトでは .Nm SAP 情報を提供します。 .It Fl t 送信・受信されたすべてのパケットを標準出力に表示します。 加えて、 .Nm -はコントロールターミナルから切り離されないので、キーボードからの +は制御端末から切り離されないので、キーボードからの 割り込みはプロセスを kill することになります。 .It Ar logfile .Nm IPXrouted の 行動が記録されるファイル名を指定します。 このログには、経路テーブルのすべての変更についての情報や、 経路の変更に関わる最近の送受信メッセージの履歴が記録されます。 .El .Pp 通常、 .Nm は経路情報パケットを listen します。 ホストが複数の IPX ネットワークに接続されている場合には、 直接接続されているホストやネットワークすべてに経路テーブルの コピーを定期的に提供します。 .Pp .Nm が起動されると、 .Dv SIOCGIFCONF .Xr ioctl 2 を用いて、システムに組み込まれ、 .Dq up となっているインタフェースを探します (ソフトウェアループバックインタフェースは無視されます)。 インタフェースが複数ある場合には、そのホストがネットワーク間で パケットを転送するとみなします。 そして .Nm は各インタフェースに .Em リクエスト パケットを送信し(インタフェースがサポートしていれば ブロードキャストパケットを用います)、他のホストから .Em リクエスト と .Em レスポンス のパケットが来るのを listen し続けます。 .Pp .Em リクエスト パケットを受け取ると、内部のテーブルに基づく情報から返答パケットを 作成します。 作成された .Em レスポンス パケットは既知の経路の一覧を含み、各々は .Dq hop count metric を持っています(16 以上の count は .Dq 無限大 (到達不可能) を示します)。 返答された各々の経路に関する metric は、送信元からの .Em "相対的な" metric を提供します。 .Pp 以下の条件を一つでも満たす場合、 .Nm が受け取った .Em レスポンス パケットは経路テーブルの更新に使われます: .Bl -bullet .It 宛先となるネットワークやホストへの経路テーブルエントリが 存在せず、 metric が宛先が到達可能であるとしている (hop count が無限大でない)とき。 .It パケットの送信元ホストが、保持している経路テーブルエントリ内の ルータと同じであるとき。 すなわち更新された情報が、 宛先へのパケットが経由するネットワーク間ルータからもたらされたとき。 .It 経路テーブル内に存在するエントリがしばらくの間(定義では 90 秒) 更新されず、その経路が現在の経路と少なくとも同じ程度効率的であるとき。 .It 現在経路テーブル内に保持しているものよりも、新しい経路のほうが短いとき。 この判断にはテーブル内の経路の metric と新しい経路の metric が 比較されます。 .El .Pp 更新が受け入れられた場合、 .Nm は変更を内部テーブルに記録し、 .Em レスポンス パケットをすべての直接つながったホストとネットワークに流します。 .Xr routed 8 は、カーネルの経路テーブルを更新する前に、不安定な状態から 抜け出せるようにするために、しばらくの間(30 秒以内)待ちます。 .Pp .Nm は入ってくるパケットを処理するだけではなく、経路テーブル エントリを定期的にチェックします。 エントリが 3 分間更新されなかった場合、エントリの metric は 無限大に設定され、削除予定の印がつけられます。 実際の削除は、エントリの無効化が他のルータに伝わるのを確実に するために、さらに 60 秒後に行われます。 .Pp ネットワークをつなぐルータとなっているホストは、 30 秒ごとに 直接つながったすべてのホストとネットワークに自分の 経路テーブルを提供します。 .Pp .Nm が SIGINFO シグナルを受け取った場合、RIP と SAP テーブルの 現在の内容がファイル /tmp/ipxrouted.dmp に追加されます。 .Sh 関連項目 .Xr ipx 3 .Sh 歴史 diff --git a/ja_JP.eucJP/man/man8/adduser.8 b/ja_JP.eucJP/man/man8/adduser.8 index a5da6e90d3..c58f38965d 100644 --- a/ja_JP.eucJP/man/man8/adduser.8 +++ b/ja_JP.eucJP/man/man8/adduser.8 @@ -1,295 +1,295 @@ .\" Copyright (c) 1995-1996 Wolfram Schneider . Berlin. .\" 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. .\" .\" %Id: adduser.8,v 1.12.2.8 1998/03/18 16:14:48 hoek Exp % .\" jpman %Id: adduser.8,v 1.4 1997/08/07 17:53:51 ken Stab % .\" .Dd January 9, 1995 .Dt ADDUSER 8 .Os FreeBSD 2.1 .Sh 名称 .Nm adduser .Nd 新しいユーザを加えるためのコマンド .Sh 解説 .Nm adduser .Oo .Fl batch Ar username .Op Ar group Ns , Ns Op Ar group,... .Op Ar class .Op Ar fullname .Op Ar password .Oc .br .Op Fl check_only .br .Op Fl class Ar login_class .br .Op Fl config_create .br .Op Fl dotdir Ar dotdir .br .Op Fl group Ar login_group .br .Op Fl h | help .br .Op Fl home Ar home .br .Op Fl message Ar message_file .br .Op Fl noconfig .br .Op Fl shell Ar shell .br .Op Fl s | silent | q | quiet .br .Op Fl uid Ar uid_start .br .Op Fl v | verbose .Sh 解説 .Nm は新しいユーザを加えるための簡単なプログラムです。 .Nm はパスワード, グループ, シェル等のデータベースをチェックし、 passwd/group の登録を行い、 .Ev HOME ディレクトリとドットファイルを作成し、 新しいユーザに歓迎メッセージを送ります。 .Sh 制限事項 .Bl -tag -width Ds -compact .It Sy username ログイン名は、小文字もしくは数字だけからなる最大 8 文字の文字列でな ければなりません ( .Xr setlogin 2 のバグの章を参照してください)。この制限の理由は、 ``歴史的な'' 物で す。美的な理由からこの制限を破りたいとする人々はいつもいましたが、 UNIX における基本的なパラメータを変更するほどの重要な理由ではありま せんでした。 .Pa /usr/include/utmp.h ファイル内の .Dv UT_NAMESIZE パラメータを変更し、全てを再コンパイルすることで、変更できますが、コ ンパイル済みのプログラムや名前の8文字制限を前提としたソースコード、 そして NIS については、問題が起こるでしょう。 NIS のプロトコルは、ユー ザ名を 8 文字と定めています。電子メールアドレスとして、もっと長いロ グイン名を必要とする場合には、別名を .Pa /etc/aliases ファイルに定義することができます。 .It Sy fullname 姓と名です。 .Ql Pa \: (コロン) は、使えません。 .It Sy shell シェルデータベースに定義されている有効なシェル、もしくは、 sliplogin と pppd だけが有効です。 .It Sy uid 自動生成されますが、自分で指定することもできます。ただし、 32000 よ りも小さい数字でなければなりません。 .It Sy gid/login group あなたが指定したものです。さもなければ、自動的に生成されます。 .It Sy password 定義した時には、パスワードは .Xr crypt 3 を利用して暗号化されます。 .El .Sh 一意なグループ ひょっとして、あなたは、この方法ではできても他のほとんどの方法ではう まく行かないことがあるのを見逃しているかもしれません。個々のユーザを そのユーザ独自のグループに入れることで、 umask を 002 としておいても 安全になり、ホームディレクトリにファイルを作っても、他の人にファイル を読まれる心配がなくなります。 .Pp 共有場所を作るためには、 (freefall における cvs や ncvs のように) uid/gid を別に設けて、ユーザを個別にその新しいグループに入れることで、 その場所へのアクセスを可能とすべきです。 .Pp この uid/gid の管理モデルは、たくさんのユーザをグループにまとめるよ り柔軟性があり、共有場所で仕事をする時に umask をいじり回さずにすみ ます。 .Pp この方法をほぼ 10 年間使っていますが、ほとんどの場合に使えることがわ かり、じゃまになったことはありませんでした。 (Rod Grimes) .Sh 設定 .Bl -enum .It 内部変数を読込みます。 .It 設定ファイル (/etc/adduser.conf) を読込みます。 .It コマンドラインオプションを解析します。 .El .Sh オプション .Bl -tag -width Ds .It Sy -batch username [group[,group]...] [class] [fullname] [password] バッチモードです。 列挙されるグループは、ユーザがメンバとなる二番目のグループであり、 デフォルトのログイングループ以外のものを書きます。 ヌル文字列の引数を埋め草として使用することができ、 この場合デフォルト値の動作となります。 .It Sy -check_only /etc/passwd, /etc/group, /etc/shells をチェックし、終了します。 .It Sy -class Ar login_class デフォルトのログインクラスを設定します。 .It Sy -config_create 新しい設定を設定ファイルに書込み、メッセージファイルを作成して、 終了します。 .It Sy -dotdir Ar directory ファイルを .Ar directory から、新しいユーザの .Ev HOME ディレクトリへコピーします。 .Ql Pa dot.foo というファイルは、 .Ql Pa .foo という名前に変更されます。 .Ar directory として .Ar no が指定された場合には、コピーを行いません。セキュリティ的な理由から全 -てのファイルはオーナに対して読み書き可能となり、グループや他の人達に -対しては書込み可能にはなりません。また、以下のファイルは、オーナに +てのファイルは所有者に対して読み書き可能となり、グループや他の人達に +対しては書込み可能にはなりません。また、以下のファイルは、所有者に 対してのみ読み書き実行可能となります。 .Pa .rhost , .Pa .Xauthority , .Pa .kermrc , .Pa .netrc , .Pa Mail , .Pa prv , .Pa iscreen , .Pa term .It Sy -group Ar login_group ログイングループの指定です。 .Ar USER はユーザ名がログイングループとして使用されることを意味します。 .It Sy -help,-h,-? オプションの要約を表示して、終了します。 .It Sy -home Ar partition 全てのユーザがホームディレクトリを持つデフォルトのディレクトリ (home partition) を指定します。 .It Sy -message Ar file 新しいユーザに .Ar file の歓迎メッセージを送ります。 .Ar file が .Ar no であった時にはメッセージは送りません。 .It Sy -noconfig デフォルトの設定ファイルを読みません。 .It Sy -shell Ar shell 新しいユーザに対するデフォルトのシェルを指定します。 .It Sy -silent,-s,-quiet,-q 警告や質問、バグの報告を少ししか行いません。 .It Sy -uid Ar uid ユーザ id を .Ar uid かそれ以上にします。 .It Sy -verbose,-v 警告と質問をたくさん行います。初心者ユーザにはおすすめです。 .Sh フォーマット .Bl -tag -width Ds -compact .Ql Pa # はコメントです。 .It Sy 設定ファイル .Nm はこのファイルを読み書きします。 より詳しくは、 .Pa /etc/adduser.conf を見てください。 .It Sy メッセージファイル このファイル内では変数は評価されます。 より詳しくは、 .Pa /etc/adduser.message を見てください。 .El .Sh 使用例 .Pp $ adduser .Pp adduser を会話モードで動かします。 .Pp $ adduser -batch baerenkl guest,staff,baer '' 'Teddy II' qwerty7 .Pp ユーザ名 'baerenkl' ログイングループ名 'baerenkl' のユーザを作成 します。このユーザは、 guest, staff, baer グループにも入っています。 デフォルトのログインクラスを用います。 このユーザーの本名 (氏名) は 'Teddy II' であり、パスワードは 'qwerty7' です (が、こんなパスワードを使ってはいけません !)。 .Ev HOME ディレクトリは、 .Pa /home/baerenkl に作られ、全てのファイルやディレクトリが、 .Pa /usr/share/skel から、 .Pa /home/baerenkl にコピーされます。ユーザ 'baerenklau' に対して、歓迎メッセージが送ら れます。 .Pp $ adduser -uid 5000 -group guest -message no -batch vehlefan .Pp ユーザ 'vehlefan' を作成します。ログイングループは guest で ユーザ id は 5000 以上で利用可能な最小のもの (例えば、5007など) となります。 他に入っているグループはなく、本名もパスワードもありません。歓迎 メッセージも送られません。 .Sh 関連ファイル .Bl -tag -width /etc/master.passwdxx -compact .It Pa /etc/master.passwd ユーザのデータベース .It Pa /etc/group グループのデータベース .It Pa /etc/shells シェルデータベース .It Pa /etc/login.conf ログインクラスデータベース .It Pa /etc/adduser.conf adduser 用の設定ファイル .It Pa /etc/adduser.message adduser 用のメッセージファイル .It Pa /usr/share/skel ログインディレクトリの雛型 .It Pa /var/log/adduser adduser の ログ記録ファイル .El .Sh 関連項目 .Xr chpass 1 , .Xr finger 1 , .Xr passwd 1 , .Xr setlogin 2 , .Xr yp 4 , .Xr aliases 5 , .Xr group 5 , .Xr login.conf 5 , .Xr passwd 5 , .Xr shells 5 , .Xr addgroup 8 , .Xr pwd_mkdb 8 , .Xr rmgroup 8 , .Xr rmuser 8 , .Xr vipw 8 .\" .Sh バグ .Sh 歴史 .Nm コマンドは .Fx 2.1 から導入されました. diff --git a/ja_JP.eucJP/man/man8/apmconf.8 b/ja_JP.eucJP/man/man8/apmconf.8 index 7651ff6b2a..ef25955fc5 100644 --- a/ja_JP.eucJP/man/man8/apmconf.8 +++ b/ja_JP.eucJP/man/man8/apmconf.8 @@ -1,64 +1,64 @@ .\" LP (Laptop Package) .\" .\" Copyright (c) 1994 by HOSOKAWA, Tatsumi .\" .\" This software may be used, modified, copied, and distributed, in .\" both source and binary form provided that the above copyright and .\" these terms are retained. Under no circumstances is the author .\" responsible for the proper functioning of this software, nor does .\" the author assume any responsibility for damages incurred with its .\" use. .\" jpman %Id: apmconf.8,v 1.3 1997/06/28 09:27:16 jsakai Stab % .Dd November 1, 1994 .Dt APMCONF 8 .Os .Sh 名称 .Nm apmconf .Nd APM BIOS ドライバの設定を行う .Sh 書式 .Nm apmconf .Op Fl e .Op Fl d .Op Fl h .Op Fl t .Sh 解説 .Nm apmconf は、ラップトップ PC 上の APM (Advanced Power Management) BIOS ドライバ .Xr apm 4 の設定のために使われます。 .Pp 以下のオプションが利用可能です。 .Bl -tag -width indent .It Fl e パワー管理を有効にします。 .It Fl d パワー管理を無効にします。 .El .Pp これらのオプションは、 .Xr apm 4 によって提供されるパワー管理機能を有効もしくは無効とします。 .Bl -tag -width indent .It Fl h -カーネルのコンテクストスイッチルーチン内の HLT 命令を有効とします。 +カーネルのコンテキストスイッチルーチン内の HLT 命令を有効とします。 .It Fl t -カーネルのコンテクストスイッチルーチン内の HLT 命令を無効とします。 +カーネルのコンテキストスイッチルーチン内の HLT 命令を無効とします。 .El .Pp これらのオプションは、ほとんど全ての APM の実装においては必要では ありませんが、 .Dq Pa Idle CPU 呼び出しが CPU クロックの減速と HLT 命令を同時に実行する場合は、 そのピーク性能の減少からシステムをまもるために .Fl t オプションが必要です。 詳細については、 .Xr apm 4 を参照してください。 .Sh 関連項目 .Xr apm 4 , .Xr apm 8 , .Xr zzz 8 .Sh 作者 細川 達己 ( 慶応大学, 日本 ) diff --git a/ja_JP.eucJP/man/man8/bootpd.8 b/ja_JP.eucJP/man/man8/bootpd.8 index b9bb53cfd9..7ff92ced50 100644 --- a/ja_JP.eucJP/man/man8/bootpd.8 +++ b/ja_JP.eucJP/man/man8/bootpd.8 @@ -1,315 +1,313 @@ .\" Copyright (c) 1988, 1989, 1991 Carnegie Mellon University .\" .\" %Header: /home/ncvs/src/libexec/bootpd/bootpd.8,v 1.4.2.5 1998/02/18 05:55:24 jkh Exp % .\" jpman %Id: bootpd.8,v 1.4 1997/10/11 07:39:12 horikawa Stab % .\" .TH BOOTPD 8 "November 06, 1993" "Carnegie Mellon University" .SH 名称 bootpd, bootpgw \- インターネットブートプロトコルサーバ/ゲートウェイ .SH 書式 .B bootpd [ .B \-i .B \-s .B \-t timeout .B \-d level .B \-c chdir\-path ] [ .I bootptab [ .I dumpfile ] ] .br .B bootpgw [ .B \-i .B \-s .B \-t timeout .B \-d level ] server .SH 解説 .I bootpd は RFC951, RFC1532, RFC1533 で定義された インターネットブートプロトコル (BOOTP) サーバを実装したものです。 .I bootpgw は、要求と応答を、あるサブネット上のクライアントと、 別のサブネット上の BOOTP サーバ (すなわち .IR bootpd ) との間で転送するのに使われる、単純な BOOTP ゲートウェイを実装しています。 .I bootpd または .I bootpgw は BOOTREPLY パケットを転送しますが、 .I bootpgw だけが BOOTREQUEST パケットを転送します。 .PP 各々のネットワークセグメントにつき、通常一つのホストで、 以下の行のどれかをファイル .IR /etc/inetd.conf に含めることにより、 .I bootpd あるいは .I bootpgw が .I inetd から起動されるように設定されます: .IP bootps dgram udp wait root /usr/libexec/bootpd bootpd /etc/bootptab .br bootps dgram udp wait root /usr/libexec/bootpgw bootpgw server .PP この動作モードは「inetd モード」と呼ばれ、 ブート要求が到着した時にだけ .I bootpd (あるいは .IR bootpgw ) を開始します。 もし最後にパケットを受信してから 15 分以内に別のパケットを受信しないのなら、 システムの資源を浪費しないように終了します。 .B \-t オプションがこのタイムアウト時間を制御します (オプション参照)。 .PP 他の通常のコマンドのように単にシェルから起動することで、 .I bootpd (あるいは .IR bootpgw ) を「スタンドアローンモード」( .IR inetd なし) で実行することも可能です。 .I bootpd が大きなコンフィギュレーションデータベースのもとで使われる時には、 inetd モードでの起動時の遅延が クライアントの要求に対する素早い応答を妨げるので、 スタンドアローンモードは特に役に立ちます。 (例えば .IR /etc/rc.local から .I bootpd を呼びだすことによって、 スタンドアローンモードで自動的に起動することができます) .I bootpgw -はコンフィギュレーションファイルを読まないので、 +は設定ファイルを読まないので、 起動時の遅延はかなり小さく、 スタンドアローンモードはあまり役に立ちません。 .PP どちらのプログラムも、inetd から呼び出されたかシェルから呼び出されたかを 自動的に検出し、自動的に適当なモードを選択します。 .B \-s と .B \-i オプションは各々、スタンドアローンモードと inetd モードを強制するのに 使います (オプション参照) .SH オプション .TP .BI \-t \ timeout .I bootpd あるいは .I bootpgw プロセスが終了する前に BOOTP パケットを待つ .I timeout 値 (分単位) を指定します。 もし .I timeout 分内にパケットを受信しなければ、プログラムは終了します。 timeout の値が 0 の場合は「永遠に実行する」という意味です。 スタンドアローンモードでは、このオプションは 0 に強制されます。 .TP .BI \-d \ debug\-level 生成されるデバッグメッセージの量を制御する変数 .I debug\-level を設定します。 例えば、-d4 あるいは -d 4 では、デバッグレベルが 4 に設定されます。 古いバージョンの .IR bootpd との互換性のため、数字のパラメータを省略 (つまり、-d だけ) すると 単にデバッグレベルを一つだけ増加させます。 .TP .BI \-c \ chdir\-path クライアントのブートファイルの存在とサイズを検査する間に .I bootpd で使われるカレントディレクトリを設定します。 クライアントのブートファイルが相対パス名で指定されていて、 .I bootpd が TFTP サーバと同じカレントディレクトリ (典型的には /tftpboot) を必要とするときに有用です。 このオプションは .IR bootpgw によっては認識されません。 .TP .B \-i 強制的に inetd モードにします。 このオプションは時代遅れですが、古いバージョンの .IR bootpd との互換性のために残してあります。 .TP .B \-s 強制的にスタンドアローンモードにします。 このオプションは時代遅れですが、 古いバージョンの .IR bootpd との互換性のために残してあります。 .TP .I bootptab .I bootpd がロードする -コンフィギュレーションファイルの名前を指定します ( +設定ファイルの名前を指定します ( .RI bootpd のみ)。 これはあらかじめ知っているクライアントと そのクライアントのオプションに関するデータベースです。 .TP .I dumpfile .I bootpd が、SIGUSR1 シグナルを受信したときに 内部データベースをダンプするファイルの名前を指定します ( .RI bootpd のみ)。 このオプションは .I bootpd が -DDEBUG フラグ付きでコンパイルされたときだけ認識されます。 .TP .I server .I bootpgw が受信した全ての BOOTREQUEST パケットを転送する、 BOOTP サーバの名前を指定します ( .RI bootpgw のみ)。 .SH 操作 .PP .I bootps ポートに送られたどんなパケットも取り込んで どんな BOOTREPLY パケットも単純に転送するという点で .I bootpd と .I bootpgw の双方が似た動きをします。 BOOTREQUEST の扱いは違います。 .PP .I bootpgw は動作開始時に、コマンド行パラメタとして名前を与えられた BOOTP サーバのアドレスを決めます。 .I bootpgw が BOOTREQUEST パケットを受信したとき、 パケットの「ゲートウェイアドレス」と「ホップ数」フィールドを設定し、 パケットを前に決めたアドレスの BOOT サーバへ転送します。 要求パケットは、 クライアントが少くとも 3 秒は待っているとパケットが示している時にだけ 転送されます。 .PP .I bootpd -は動作開始時にコンフィギュレーションファイル (通常 +は動作開始時に設定ファイル (通常 .IR /etc/bootptab ) を読みこみます。 これで、あらかじめ知っているクライアントと クライアントのオプションに関する内部データベースを初期化します。 この内部データベースは、 .I bootpd -がハングアップシグナル (SIGHUP) を受信したとき、 -またはコンフィギュレーションファイルが変更されたことを +が回線切断シグナル (SIGHUP) を受信したとき、 +または設定ファイルが変更されたことを 発見したときに、再読み込みが行なわれます。 .PP .I bootpd が BOOTREQUEST パケットを受信したとき、 -.\" コンフィギュレーションファイルの変更時刻を検査し、 -.\" 必要ならデータベースの再読み込みをします。それから、 クライアントの要求に一致するデータベースエントリを探します。 もしそのクライアントをあらかじめ知っていれば .I bootpd は前に見付けたデータベースエントリを使って BOOTREPLY パケットを構成し、 (ひょっとしたらゲートウェイを使って) クライアントに返答を送ります。 もしクライアントが未知ならば、(debug > 0 のときは注意を出して) 要求は捨てられます。 .PP .I bootpd が -DDEBUG オプションでコンパイルされていれば、 SIGUSR1 シグナルを送ると内部データベースをファイル .I /tmp/bootpd.dump か、コマンド行パラメータで指定されたダンプファイルに にダンプします。 .PP 初期化の時どちらのプログラムも、 (普通は .IR /etc/services を使う) .I getservbyname を呼ぶことで UDP ポート番号を決定します。 二つのサービス名 (とポート番号) が使われます: .IP bootps \- BOOTP サーバ待機ポート .br bootpc \- BOOTP クライアント届け先ポート .LP もしポート番号が .I getservbyname を使って決定できないときには、 デフォルト値は bootps=67 と bootpc=68 です。 .SH 関連ファイル .TP 20 /etc/bootptab .IR bootpd によって読み込まれるデータベースファイル。 .TP /tmp/bootpd.dump .IR bootpd によって生成されるデバッグダンプファイル。 .TP /etc/services インターネットサービス番号。 .TP /tftpboot TFTP サーバと .IR bootpd で使われる典型的カレントディレクトリ。 .SH バグ 各々のホストエントリは 1024 文字を越えてはいけません。 .SH 功労者 .PP この配布版は現在、 Walter L. Wimer によって 保守されています。 .PP オリジナルの BOOTP サーバは スタンフォード大学の Bill Croft によって 1986 年 1 月に作成されました。 .PP 現在のバージョンの .I bootpd は第一に、Carnegie Mellon University の David Kovar, Drew D. Perkins, Walter L. Wimer の仕事にるものです。 .TP 機能拡張とバグフィクスは以下の方の貢献によります: (アルファベット順) .br Danny Backx .br John Brezak .br Frank da Cruz .br David R. Linn .br Jim McKim .br Gordon W. Ross .br Jason Zions .SH 関連項目 .LP bootptab(5), inetd(8), tftpd(8) .LP DARPA Internet Request For Comments: .TP 10 RFC951 Bootstrap Protocol .TP 10 RFC1532 Clarifications and Extensions for the Bootstrap Protocol .TP 10 RFC1533 DHCP Options and BOOTP Vendor Extensions diff --git a/ja_JP.eucJP/man/man8/bootpef.8 b/ja_JP.eucJP/man/man8/bootpef.8 index d2653697b0..547569dc31 100644 --- a/ja_JP.eucJP/man/man8/bootpef.8 +++ b/ja_JP.eucJP/man/man8/bootpef.8 @@ -1,49 +1,49 @@ .\" bootpef.8 .\" jpman %Id: bootpef.8,v 1.2 1997/05/17 16:59:57 horikawa Stab % .TH BOOTPEF 8 "4 Dec 1993" "MAINTENANCE COMMANDS" .SH 名称 bootpef \- BOOTP エクステンションファイルコンパイラ .SH 書式 .LP .B bootpef .RI [ "-c chdir" ] .RI [ "-d debug-level" ] .RI [ "-f config-file" ] .RI [ client-name " [...]]" .SH 解説 .B bootpef は、RFC 1497 (tag 18) で示されている .I エクステンションパス ファイルを作成します。 .I client-name が指定されていれば、 .I bootpef はそれらのクライアントのためだけのエクステンションファイルを コンパイルします。 .SH オプション .TP .BI \-c \ chdir\-path .I bootpef がエクステンションファイルを作るカレントディレクトリを指定します。 これは、エクステンションファイル名が相対パスで指定され、 .I bootpef が TFTP サーバと同じカレントディレクトリ (一般には /tftpboot) を使う 必要がある場合に有効です。 .TP .BI \-d \ debug\-level 生成されるデバッグメッセージの量を制御する変数 .I debug\-level を設定します。たとえば、-d4 や -d 4 はデバッグレベルを 4 にセットします。 .TP .BI \-f \ config\-file 各クライアントに送られるオプションデータを指示する -コンフィギュレーションファイルの名前を設定します。 +設定ファイルの名前を設定します。 .SH 関連項目 bootpd(8), tftpd(8) .SH リファレンス .TP RFC951 BOOTSTRAP PROTOCOL (BOOTP) .TP RFC1497 BOOTP Vendor Information Extensions diff --git a/ja_JP.eucJP/man/man8/chat.8 b/ja_JP.eucJP/man/man8/chat.8 index 4edcb84467..ad34f8ec8b 100644 --- a/ja_JP.eucJP/man/man8/chat.8 +++ b/ja_JP.eucJP/man/man8/chat.8 @@ -1,502 +1,502 @@ .\" -*- nroff -*- .\" manual page [] for chat 1.8 .\" %Id: chat.8,v 1.4.2.2 1997/09/14 20:39:29 jkh Exp % .\" jpman %Id: chat.8,v 1.3 1997/08/31 14:02:42 horikawa Stab % .\" SH section heading .\" SS subsection heading .\" LP paragraph .\" IP indented paragraph .\" TP hanging label .TH CHAT 8 "5 May 1995" "Chat Version 1.9" .SH 名称 chat \- モデム接続の確立を自動化するスクリプト言語 .SH 書式 .B chat [ .I options ] .I script .SH 解説 .LP \fIchat\fR プログラムはコンピュータとモデムの間のメッセージ交換を制御します。 このコマンドの主な目的は、Point-to-Point Protocol デーモン (\fIpppd\fR) と リモートの \fIpppd\fR プロセスの間の接続を確立することです。 .SH オプション .TP .B -f \fI チャットスクリプトを \fIchat file\fR から読み込みます。このオプションと script パラメータとは、互いに排他の関係にあります。 chat コマンドを実行するユーザは、このファイルのリードアクセス権を 持っていなければなりません。このファイルの中では、文字列の区切りとして スペースとタブを使うことができます。 .TP .B -t \fI 文字列の受信待ちのタイムアウトを指定します。もし、タイムリミットまでに 指定された文字列を受信できなかった場合には、応答文字列の送信をおこないません。 この時、かわりの応答文字列が指定されていれば それが送信され、 指定されていなければ スクリプトの実行が失敗します。 スクリプトの実行が失敗すると、\fIchat\fR プログラムは 0 以外のエラーコードを返して終了します。 .TP .B -r \fI レポート文字列を出力するファイルを指定します。 キーワード \fIREPORT\fR を用いると、結果の文字列がこのファイルに 出力されます。このオプションを指定せずに \fIREPORT\fR キーワードを 使用すると、レポート文字列は \fIstderr\fR に出力されます。 .TP .B -e エコーオプションを有効にして開始します。 \fIchat\fR スクリプトの特定の場所において \fIECHO\fR キーワードにて エコーの有効および無効を切り替えることができます。 エコーが有効にされると、モデムからの出力は全て \fIstderr\fR へエコーされます。 .TP .B -v \fIchat\fR スクリプトを冗長モードで実行します。 これを指定すると、\fIchat\fR プログラムはモデムから受信したすべてのテキストと .IR syslogd (8) に送られる出力のログをとります。 冗長トレースのログとりは \fIlocal2\fR ファシリティのレベル \fIinfo\fR でおこなわれ、エラーについてはレベル \fIerr\fR が使われます。 .TP .B -V \fIchat\fR スクリプトを stderr 冗長モードにて実行するように要求します。 \fIchat\fR プログラムは、 モデムから受信する全てのテキストおよび stderr デバイスへ送出する出力文字列をログします。 chat もしくは pppd プログラムを動作させている場所では、 このデバイスは通常ローカルのコンソールです。 stderr が /dev/null にリダイレクトされている場合には、 このオプションはうまく働きません。 pppd が `デタッチ' モードで動作している時がその場合です。 この場合、`-v' オプションを使用して、 セッションを SYSLOG デバイスへ記録してください。 .TP .B script \fI-f\fR オプションのファイルでスクリプトが指定されていなければ、 \fIchat\fR プログラムに対するパラメータ文字列が スクリプトとして読み込まれます。 .SH チャットスクリプト .LP \fIchat\fR スクリプトには通信の手順を定義します。 .LP スクリプトは一つまたはそれ以上の「受信待ち-送信」文字列の組からなり、 それぞれは空白で区切られています。 オプションとして「副受信待ち-副送信」文字列の組を追加することもでき、 その場合には以下の例のようにダッシュで区切ります: .IP ogin:-BREAK-ogin: ppp ssword: hello2u2 .LP これにより、\fIchat\fR プログラムは文字列 "ogin:" の受信待ちをおこないます。 もしもタイムアウトする前にログインプロンプトを受信できなければ、 リモートホストにブレーク信号を送信し、それから文字列 "ogin:" を受信待ちします。 もしも最初の "ogin:" が受信できていれば、ブレーク信号は送信されません。 .LP 一旦ログインプロンプトを受信すると、\fIchat\fR プログラムは文字列 ppp を 送信して、プロンプト "ssword:" の受信を待ちます。 パスワードプロンプトを 受信すると、chat プログラムはパスワード hello2u2 を送信します。 .LP 応答文字列に続いて、通常はキャリッジリターン文字が送られます。 「受信待ち」文字列中では、\\r 文字シーケンスで明示的に指定しないかぎり、 キャリッジリターンは文字列に含まれません。 .LP 目的の文字列を識別するのに必要な部分だけを受信待ち文字列に 指定するようにするべきです。 なぜなら、受信待ち文字列は通常ディスクファイルに記録されるため、 動的に変化する情報を含むことができないからです。 一般には、時刻を表す文字列やネットワーク ID 文字列その他の 変化するデータの塊を受信待ちさせることはできません。 .LP 通信の初期段階では、文字が化けて受信される場合があります。 この場合にも正しく認識ができるように、 文字列 "login:" ではなく "ogin:" を待つようにします。 仮に最初の "l" という文字が化けて受信されたとしますと、 リモートシステムが "login:" を送信したとしても、 その文字列は認識されないことになります。 このため、スクリプトでは "login:" ではなく "ogin:" を、 "password:" ではなく "ssword:" を待つようにします。 .LP 非常に単純なスクリプトは、以下のようになるでしょう: .IP ogin: ppp ssword: hello2u2 .LP 言いかえると、....ogin: を受信待ちして ppp を送信し、...ssword: を 受信待ちして hello2u2 を送信するということになります。 .LP 現実問題としては、単純なスクリプトが使われることはほとんどないでしょう。 少なくとも、最初の受信待ち文字列が受信できなかった場合に、 副受信待ち文字列を実行するようにするべきでしょう。 たとえば、以下のスクリプトを考えてみます: .IP ogin:--ogin: ppp ssword: hello2u2 .LP これは以前に使った単純なものよりも良いスクリプトでしょう。 以前のものと同様に login: プロンプトを待ちますが、もし受信できなかった場合には リターンを一つ送ってから再び login: が送られてくるのを待ちます。 最初のログインプロンプトがラインノイズによって化けたとしても、 空行が送られることで、通常はもう一度ログインプロンプトが送信されます。 .SH コメント コメントを chat スクリプト中に埋め込むことが可能です。 コメントは \fB#\fR (ハッシュ) 文字をカラム 1 から開始する行です。 このようなコメント行は chat プログラムは単に無視します。 「受信待ち」文字列の最初の文字が `#' 文字の場合、 「受信待ち」文字列をクォートする必要があります。 文字 # (ハッシュ)から始まるプロンプトを待ちたい場合には、 以下のように書かねばならないでしょう: .IP # Now wait for the prompt and send logout string .br \'# ' logout .LP .SH 中断文字列 多くのモデムはダイアルの結果を文字列としてレポートします。 これらの文字列は \fBCONNECTED\fR だったり、\fBNO CARRIER\fR や \fBBUSY\fR だったりするでしょう。 モデムが相手との接続に失敗した場合には、スクリプトを終了させたいと 思うことがよくあるでしょう。 問題は、どの文字列を次に受信するかということを、 スクリプトが正確に知ることはできないということです。 ある時には \fBBUSY\fR を受信するかもしれませんが、 次には \fBNO CARRIER\fR を受信するかもしれません。 .LP これらの「中断」文字列は、\fIABORT\fR シーケンスにより スクリプト中に指定することができます。 それは、以下の例のようにスクリプトに指定します: .IP ABORT BUSY ABORT 'NO CARRIER' '' ATZ OK ATDT5551212 CONNECT .LP このシーケンスは受信待ちをおこないません。それから文字列 ATZ を送信します。 受信待ち文字列は \fIOK\fR です。 \fIOK\fR を受信すると、電話をかけるために文字列 ATDT5551212 を送信します。 受信待ち文字列は \fICONNECT\fR です。 文字列 \fICONNECT\fR を受信すると、スクリプトの残りが実行されます。 一方、モデムが話中を検出すると、文字列 \fIBUSY\fR が送られて 中断文字列への一致が起こります。 この一致が起きたことにより、スクリプトは失敗します。 もしも文字列 \fINO CARRIER\fR を受信すると、それは同じ理由で中断されます。 どちらの文字列が受信されても、\fIchat\fR スクリプトは終了します。 .SH CLR_ABORT 文字列 このシーケンスは以前に設定した \fBABORT\fR 文字列をクリアします。 \fBABORT\fR 文字列は規定サイズ(コンパイル時に決定)の配列に保持されます; \fBCLR_ABORT\fR はクリアされたエントリの領域を再要求し、 新たな文字列をそこに格納できるようにします。 .SH SAY 文字列 \fBSAY\fR ディレクティブにて、 script が標準エラー出力を介してユーザ端末ヘ文字列を送ることができます。 \fBchat\fR が pppd から起動される場合、 pppd はデーモンとして実行され(制御端末から切離され)、 標準エラー出力は通常 /etc/ppp/connect-errors へとリダイレクトされます。 .LP \fBSAY\fR 文字列は、シングルクォートもしくはダブルクォートにて 括る必要があります。 出力中にキャリッジリターンおよびラインフィードが必要な場合、 明示的に文字列中に含める必要があります。 .LP SAY 文字列を使用して script の進捗状況メッセージを表示することで、'ECHO OFF' しつつもユーザになにが起っているのか示すことが可能です。 例を示します: .IP ABORT BUSY .br ECHO OFF .br SAY "Dialling your ISP...\\n" .br \'' ATDT5551212 .br TIMEOUT 120 .br SAY "Waiting up to 2 minutes for connection ... " .br CONNECT '' .br SAY "Connected, now logging in ...\n" .br ogin: account .br ssword: pass .br $ \c SAY "Logged in OK ...\n" \fIetc ...\fR .LP このシーケンスは SAY 文字列のみユーザに示し、script の詳細は隠します。 例えば、上記 script を実行した場合、ユーザが見るのは以下です: .IP Dialling your ISP... .br Waiting up to 2 minutes for connection ... Connected, now logging in ... .br Logged in OK ... .LP .SH レポート文字列 \fBレポート\fR 文字列は ABORT 文字列に似ています。 違うのは、その文字列自身とキャリッジリターン等の 次の制御文字までの すべての文字がレポートファイルに書かれるということです。 .LP レポート文字列はモデムのコネクト文字列の転送レートと chat ユーザへのリターン値を切りわけるために使えます。 レポート文字列ロジックの分析は、受信待ち文字列の検索などの 他の文字列処理と同時におこなわれます。 レポート文字列と中断文字列に同じ文字列を使用することも可能ですが、 おそらくあまり使い道がないでしょう。 .LP レポート文字列はプログラムの終了コードに影響を及ぼしません。 .LP これらの「レポート」文字列は、\fIREPORT\fR シーケンスにより スクリプト中に指定することができます。 それは、以下の例のようにスクリプトに指定します: .IP REPORT CONNECT ABORT BUSY '' ATDT5551212 CONNECT '' ogin: account .LP このシーケンスは受信待ちをおこなわず、文字列 ATDT5551212 を送信して 電話をかけます。受信待ち文字列は \fICONNECT\fR です。 文字列 \fICONNECT\fR を受信すると、スクリプトの残りが実行されます。 さらに、文字列 "CONNECT" と、それに続く接続レートなどの 任意の文字がレポートファイルに記録されます。 .\" 原文では expect-file となっているが、report-file の間違いと思われる。 .\" send-pr する予定。 .\" 2.2.2R 対象(1997/06/04) Saeki Takashi .SH CLR_REPORT 文字列 このシーケンスを使用して、以前に設定した \fBREPORT\fR 文字列をクリア できます。 \fBREPORT\fR 文字列は規定サイズ(コンパイル時に決定)の配列に保持されます; \fBCLR_REPORT\fR はクリアされたエントリの領域を再要求し、 新たな文字列をそこに格納できるようにします。 .SH エコー エコーオプションはモデムからの出力を \fIstderr\fR へエコーするか否か を制御します。 このオプションを \fI-e\fR オプションにて設定することができますし、 \fIECHO\fR キーワードにて制御することもできます。 「受信待ち-送信」文字列の組 \fIECHO\fR \fION\fR はエコーを有効にし、 \fIECHO\fR \fIOFF\fR は無効にします。 このキーワードを使用してどの会話を見せるかを選択可能です。 例えば以下の script では: .IP ABORT 'BUSY' .br ABORT 'NO CARRIER' .br '' ATZ .br OK\\r\\n ATD1234567 .br \\r\\n \\c .br ECHO ON .br CONNECT \\c .br ogin: account .LP モデム設定結果およびダイヤル結果は見せませんが、 \fICONNECT\fR (もしくは \fIBUSY\fR) メッセージ語は全てをエコーします。 -.SH ハングアップ -HANGUP オプションはモデムハングアップをエラーと扱うか否かを制御します。 +.SH 回線切断 +HANGUP オプションはモデムの回線切断をエラーと扱うか否かを制御します。 このオプションは、 -システムにダイヤル後にハングアップしコールバックする script 中で有効です。 +システムにダイヤル後に回線切断しコールバックする script 中で有効です。 HANGUP オプションは \fBON\fR もしくは \fBOFF\fR にできます。 .br -HANGUP を OFF に設定しモデムをハングアップ +HANGUP を OFF に設定しモデムを回線切断 (つまりコールバックシステムへの最初のログイン)すると、\fBchat\fR は script の実行を続けます (つまり呼び出しと二度目のログインプロンプトを待ちます)。 呼び出しにて接続後すぐに、\fBHANGUP ON\fR ディレクティブを使用して -通常のハングアップシグナルの動作を戻す必要があります。 +通常の回線切断シグナルの動作を戻す必要があります。 (簡単な) script 例を示します: .IP ABORT 'BUSY' .br '' ATZ .br OK\\r\\n ATD1234567 .br \\r\\n \\c .br CONNECT \\c .br \'Callback login:' call_back_ID .br HANGUP OFF .br ABORT "Bad Login" .br \'Callback Password:' Call_back_password .br TIMEOUT 120 .br CONNECT \\c .br HANGUP ON .br ABORT "NO CARRIER" .br ogin:--BREAK--ogin: real_account .br \fIetc ...\fR .LP .SH タイムアウト タイムアウトの初期値は 45 秒です。これは \fB-t\fR パラメータにより 変更することができます。 .LP 次に受信待ちする文字列のタイムアウト値を変更するには、以下のようにします: .IP ATZ OK ATDT5551212 CONNECT TIMEOUT 10 ogin:--ogin: TIMEOUT 5 assword: hello2u2 .LP これは login: プロンプトを受信待ちする際のタイムアウトを 10 秒に変更します。 さらに password プロンプトを受信待ちする際にはタイムアウトを 5 秒に変更します。 .LP 一旦タイムアウト値が変更されると、次に変更されるまでは そのままになります。 .SH EOT の送信 チャットプログラムは特殊な応答文字列 \fIEOT\fR により、 リモート側へ EOT 文字を送信します。 通常、これはファイル終了を表す文字です。 EOT に続けてリターン文字が送られることはありません。 .PR \fI^D\fR シーケンスを使って EOT を送信文字列に埋め込むことができます。 .SH ブレークの生成 特殊な応答文字列 \fIBREAK\fR により、ブレーク信号が送られます。 ブレークは送信側では特殊な信号として扱われます。 受信側では通常、転送レートの変更要求として処理されます。 これにより、正常に login プロンプトを受信できるまで ブレーク信号を送ることで、リモート側がサポートしている転送レートを 順次切替えさせることができます。 .PR \fI\\K\fR シーケンスを使ってブレーク信号を送信文字列に埋め込むことができます。 .SH エスケープシーケンス 受信待ち文字列と応答文字列には、エスケープシーケンスを指定することができます。 応答文字列では、すべてのエスケープシーケンスが使えます。 受信待ち文字列では、ほとんどのエスケープシーケンスが使えます。 受信待ち文字列では使えないエスケープシーケンスについては、 説明文中にそのことが書かれています。 .TP .B '' 空文字列を受信待ちしたり、送信したりします。 もし、空文字列を送信しようとすると、それはリターン文字を送ることになります。 このシーケンスはアポストロフィ文字またはクォート文字のペアの どちらでもかまいません。 .TP .B \\\\b バックスペース文字を表します。 .TP .B \\\\c 応答文字列の末尾の改行を抑制します。 これは末尾に改行文字のつかない文字列を送る唯一の方法です。 これは送信文字列の最後に置かれなければいけません。 たとえば、文字列 hello\\c は単に h, e, l, l, o という文字だけを送ります。 .I (受信待ち文字列では使えません) .TP .B \\\\d 1 秒のディレイです。プログラムは 1 秒のディレイのために sleep(1) を使います。 .I (受信待ち文字列では使えません) .TP .B \\\\K ブレーク信号を挿入します。 .I (受信待ち文字列では使えません) .TP .B \\\\n 改行文字を送信します。 .TP .B \\\\N 空 (null) 文字を送信します。\\0 でも同じシーケンスを表すことができます。 .I (受信待ち文字列では使えません) .TP .B \\\\p 1 秒以下のポーズです。ディレイ時間は 1/10 秒です。 .I (受信待ち文字列では使えません) .TP .B \\\\q .IR syslogd (8) への文字列出力を抑止します。 かわりに文字列 ?????? がログに出力されます。 .I (受信待ち文字列では使えません) .TP .B \\\\r キャリッジリターン文字を送信または受信待ちします。 .TP .B \\\\s 文字列中のスペース文字を表します。 これはスペースを含む文字列をクォートしたくない場合に使います。 シーケンス 'HI TIM' と HI\\sTIM は等価です。 .TP .B \\\\t タブ文字を送信または受信待ちします。 .TP .B \\\\\\\\ バックスラッシュ文字を送信または受信待ちします。 .TP .B \\\\ddd 8 進数 (ddd) を一つの ASCII 文字に変換し、その文字を送信します。 .I (受信待ち文字列では使えない文字がいくつかあります) .TP .B \^^C C で表現される制御文字に置きかえられます。 例えば、文字 DC1 (17) は \^^Q で表されます。 .I (受信待ち文字列では使えない文字がいくつかあります) .SH 終了コード \fIchat\fR プログラムは以下の終了コードを返します。 .TP .B 0 プログラムは正常終了しました。これは、スクリプトがエラーを起こさずに 実行されて、正常に終了したことを示します。 .TP .B 1 一つまたはそれ以上のパラメータが不正であるか、受信待ち文字列が 内部バッファよりも大きすぎます。これはプログラムが正しく 実行されなかったことを示します。 .TP .B 2 プログラムの実行中にエラーが発生しました。これは、何らかの理由で リードまたはライトの操作が失敗したか、chat が SIGINT のような シグナルを受信したためでしょう。 .TP .B 3 「-副送信」文字列のない\fI受信待ち\fR文字列があり、タイムアウトイベントが 発生しました。これは、スクリプトが正しくプログラムされていないか、 予期しないイベントが発生して受信待ち文字列を見つけられなかったためでしょう。 .TP .B 4 \fIABORT\fR 条件としてマークされた 1 番目の文字列を検出しました。 .TP .B 5 \fIABORT\fR 条件としてマークされた 2 番目の文字列を検出しました。 .TP .B 6 \fIABORT\fR 条件としてマークされた 3 番目の文字列を検出しました。 .TP .B 7 \fIABORT\fR 条件としてマークされた 4 番目の文字列を検出しました。 .TP .B ... その他の終了コードも、\fIABORT\fR 条件としてマークされた文字列を 検出したことを示します。 .LP 終了コードを使うと、どのイベントによりスクリプトが終了したのかを 判断することができます。 つまり、"NO DIAL TONE" を受信したのか "BUSY" を受信したのかを 識別することができるということです。 最初のイベント (BUSY) ならばリトライする価値がありますが、 二つ目のイベント (NO DIAL TONE) だと、 おそらくリトライしてもそれがうまくいく可能性は低いでしょう。 .SH 関連項目 UUCP のドキュメントからも、\fIchat\fR スクリプトに関する 追加情報が得られるでしょう。 \fIchat\fR スクリプトは \fIuucico\fR プログラムで使われる スクリプトによって提示されたアイデアを基にしています。 .LP uucico(1), uucp(1) .SH 著作権 \fIchat\fR プログラムは、パブリックドメインのソフトウェアです。 これは GNU のパブリックライセンス(一般公有使用許諾)とは ことなります。 このプログラムを分割する場合には、その両方を管理するようにしてください。 .\" 原文は The \fIchat\fR program is in public domain. This is not .\" the GNU public license. If it breaks then you get to keep both pieces. .\" 最後の文章にはあまり自信がありません。(^_^;; .\" 2.2.2R 対象(1997/06/26) Saeki Takashi diff --git a/ja_JP.eucJP/man/man8/comsat.8 b/ja_JP.eucJP/man/man8/comsat.8 index c98ef8999c..d41e25d30f 100644 --- a/ja_JP.eucJP/man/man8/comsat.8 +++ b/ja_JP.eucJP/man/man8/comsat.8 @@ -1,99 +1,99 @@ .\" 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 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. .\" .\" @(#)comsat.8 8.1 (Berkeley) 6/4/93 .\" %Id: comsat.8,v 1.3 1996/09/22 21:53:05 wosch Exp % .\" jpman %Id: comsat.8,v 1.2 1997/03/31 13:32:20 horikawa Stab % .\" .Dd June 4, 1993 .Dt COMSAT 8 .Os BSD 4.2 .Sh 名称 .Nm comsat .Nd biff サーバ .Sh 書式 .Nm comsat .Sh 解説 .Nm comsat は受信メールのレポートを受け取り、 サービスを要求しているユーザに対して通知を行なうサーバプロセスです。 .Nm comsat は、 .Dq biff サービス仕様 ( .Xr services 5 および .Xr inetd 8 を参照) に関連するデータグラムポートのメッセージを受信します。 1 行メッセージは次の形式です: .Pp .Dl user@mailbox-offset[:mailbox-name] .Pp もし、この .Em user -がシステムにログインしていて、割り当てられた端末のオーナ実行ビットが ( +がシステムにログインしていて、割り当てられた端末の所有者実行ビットが ( .Dq Li biff y によって) ON になっていれば、 .Em offset はメールボックスのシークオフセットとして使用され、 メッセージの先頭 7 行か、もしくは 560 文字がユーザの端末に表示されます。 .Dq From , .Dq \&To , .Dq Date , .Dq Subject 以外のメッセージヘッダの一部とみなされる行は、 表示されるメッセージに含まれません。 .Pp mailbox-name を省略した場合, システム標準のメールボックスを監視します。 .Sh 関連ファイル .Bl -tag -width /var/mail/user -compact .It Pa /var/run/utmp 誰がどの端末でログオンしたかを識別します。 .It Pa /var/mail/user システム標準のメールボックスです。 .El .Sh 関連項目 .Xr biff 1 , .Xr inetd 8 .Sh バグ メッセージヘッダのフィルタリングは誤りがちです。 表示される情報は、最低限のものです。 .Pp 現在ログインしているマシン以外のマシンへのメールの到着は、 ユーザに通知されるべきです。 .Pp スクリーン表示を分かりやすくするために、通知は別のウィンドウに 表示されるべきです。 .Sh 歴史 .Nm コマンドは .Bx 4.2 から登場しました。 diff --git a/ja_JP.eucJP/man/man8/config.8 b/ja_JP.eucJP/man/man8/config.8 index 41fd444ed1..ee8f75f91b 100644 --- a/ja_JP.eucJP/man/man8/config.8 +++ b/ja_JP.eucJP/man/man8/config.8 @@ -1,175 +1,175 @@ .\" Copyright (c) 1980, 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 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. .\" .\" @(#)config.8 8.2 (Berkeley) 4/19/94 .\" jpman %Id: config.8,v 1.2 1997/03/31 13:33:05 horikawa Stab % .\" .Dd April 19, 1994 .Dt CONFIG 8 .Os BSD 4 .Sh 名称 .Nm config .Nd システムを構築するために必要なファイルの作成 .Sh 書式 .Nm config .Op Fl gpn .Ar SYSTEM_NAME .Sh 解説 これは古いバージョンの .Nm プログラムです。 このプログラムは、古いオートコンフィギュレーションスキームを理解します。 このスキームは HP300, i386, DECstation やその派生プラットフォームにて 使用されます。 新しいバージョンの config は SPARC プラットフォームで使用されます。 あなたが使用しているアーキテクチャに適合したバージョンの .Nm のみがあなたのマシンにインストールされているでしょう。 .Pp .Nm -は、システムの構成を記述したコンフィギュレーションファイル +は、システムの構成を記述した設定ファイル .Ar SYSTEM_NAME にもとづいてシステムを構築するために必要なファイルを作成します。 別のファイルが、 .Nm に対し、 システム生成に必要なファイルと、 構成依存ファイルセットにより追加されるファイルとを指示します。 構成依存ファイルセットは、固有マシン用代替ファイルを指定します (以降に示す .Sx 関連ファイル を参照)。 .Pp オプションとオペランドしては以下のものがあります: .Pp .Bl -tag -width SYSTEM_NAME .It Fl g システムのデバッグのための設定をします。 .It Fl p プロファイリングを行うシステムを構築します。プロファイルを行うものは例えば .Xr kgmon 8 や .Xr gprof 1 などです。 .Fl p オプションを 2 度以上指定すると、 .Nm より詳細なプロファイリングを行うシステムを構築します。 .It Fl n 以前のコンパイル用ディレクトリを削除しません(以降参照)。 .It Ar SYSTEM_NAME .Ar SYSTEM_NAME -はシステムコンフィギュレーションファイルの名前であり、システムコンフィギュレーションファイル +はシステム設定ファイルの名前であり、システム設定ファイル にはデバイスの仕様、構築するシステムのオプション、その他のシステムパラメータの記述をします。 .El .Pp .Nm はシステムソースの .Pa conf サブディレクトリで起動します(通常 .Pa /sys/ARCH/conf )。 .Nm は必要により .Pa ../../compile/SYSTEM_NAME ディレクトリを作成し、そこにすべての出力ファイルを置きます。 .Fl n オプションが指定されているか、環境変数 .Ev NO_CONFIG_CLOBBER が設定されていないと、ディレクトリが既に存在する場合にはあらかじめ 削除されます。 .Nm の出力は多くのファイルです; .Tn i386 の場合は次のようなファイルになります: .Pa ioconf.c , システムに接続された I/O デバイスの記述; .Pa vector.h , 割り込み計測関連のマクロ定義; .Pa Makefile , .Xr make 1 がシステム構築に使用する; ヘッダファイル, システムに組み込まれる多くのデバイスに関する定義; -スワップ構成ファイル, +スワップ設定ファイル, スワップ、ルートファイルシステム、引数処理、システムダンプに使用する ディスク領域に関する定義。 .Pp .Nm の実行後は、 .Dq Li make depend を Makefile が作成されたディレクトリで実行する必要があります。 .Nm は正常終了すると、これを促すメッセージ表示を行います。 .Pp .Nm が、これとは異なるエラーメッセージ表示を行った場合には、 -コンフィギュレーションファイルの記述の誤りを修正し、再度 +設定ファイルの記述の誤りを修正し、再度 .Nm を実行する必要があります。 コンフィギュレーションでエラーとなったシステムをコンパイルしようとしても、 おそらく失敗するでしょう。 .Pp -コンフィギュレーションファイル中に +設定ファイル中に オプション "INCLUDE_CONFIG_FILE" を指定した場合、 該ファイル全体が作成されるカーネルに埋め込まれます。 これは、 .Xr strings 1 によって該ファイルをカーネルから引き出す事が出来ることを意味します。 .Pp strings | grep ___ によって構成情報を表示できます。 .Sh 関連ファイル .Bl -tag -width /sys/i386/conf/Makefile.i386 -compact .It Pa /sys/conf/files システム生成に必要な共通のファイルのリスト .It Pa /sys/i386/conf/Makefile.i386 .Tn i386 用の一般的な makefile .It Pa /sys/i386/conf/files.i386 .Tn i386 特有のファイルのリスト .It Pa /sys/i386/conf/devices.i386 .Tn i386 特有の、名前からメジャーデバイスへのマップ .It Pa /sys/i386/conf/files. Ns Em ERNIE .Em ERNIE システム特有のファイルのリスト .El .Sh 関連項目 セクション 4 にある、デバイスのマニュアルの書式の部分。 .Rs .%T "Building 4.3 BSD UNIX System with Config" .Re .Sh バグ エラーメッセージにおいて報告される行番号は1行ずれます。 .Sh 歴史 .Nm コマンドは .Bx 4.1 から登場しました。 diff --git a/ja_JP.eucJP/man/man8/dm.8 b/ja_JP.eucJP/man/man8/dm.8 index 376ec8adbb..7cc0f1ee61 100644 --- a/ja_JP.eucJP/man/man8/dm.8 +++ b/ja_JP.eucJP/man/man8/dm.8 @@ -1,111 +1,111 @@ .\" Copyright (c) 1987, 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 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. .\" .\" @(#)dm.8 8.1 (Berkeley) 5/31/93 .\" jpman %Id: dm.8,v 1.3 1997/09/05 16:44:02 taku Stab % .\" .Dd May 31, 1993 .Dt DM 8 .Os .Sh 名称 .Nm dm .Nd ダンジョンマスタ .Sh 書式 .Nm ln .Fl s Cm dm Ar game .Sh 解説 .Nm dm はゲームプレイを統制するプログラムです。 ユーザは、プレイしたいゲームの名前で .Nm dm を起動することになります。それには、 .Pa /usr/games 中の統制対象となるゲームの名前すべてで .Nm dm へのシンボリックリンクをつくります。 これらのゲームのバイナリ本体は、 .Dq 隠された ディレクトリ .Pa /usr/games/hide に置かなくてはなりません。 このディレクトリは .Nm dm プログラムのみアクセス可能となっているでしょう。 .Nm dm は要求されたゲームを使用可能か判定し、もし使用可能ならば実行します。 ファイル .Pa /etc/dm.conf がどのゲームを実行可能かどうかを制御します。 .Pp ファイル .Pa /etc/nogames を使用すると、ゲームプレイを .Dq 禁止 します。 このファイルが存在すると、ゲームプレイを許しません; ゲームをしようとしたユーザに対して、このファイルの内容を表示します。 .Sh 関連ファイル .Bl -tag -width /var/log/games.log -compact .It Pa /etc/dm.conf -構成ファイル +設定ファイル .It Pa /etc/nogames ゲームプレイを禁止 .It Pa /usr/games/hide ``実際の'' バイナリを保持するディレクトリ .It Pa /var/log/games.log ゲームをログするファイル .El .Sh 関連項目 .Xr dm.conf 5 .Sh バグ .Nm dm が .Dq games に setuid されたゲームを走らせることで、問題が 2 つ出てきます。 第 1 に、 .Tn UNIX コマンドの実行をユーザに許すゲームは、 コマンド実行前に実/実効ユーザ ID 両方を適切に設定しなければならないことです。 おそらくより重要なことは、 .Nm dm を .Dq games 以外に setuid してはならないことです。 これを守っておけば、ゲームとの妥協は、 自己の意志でゲームをプレイする能力のみに帰します。 第 2 は、それまで setuid させて走らせずに済んでいたゲームで、 ユーザファイルにアクセスするものは、 修正しなければならないかもしれないことです。 .Sh 歴史 .Nm dm コマンドは .Bx 4.3 tahoe から登場しました。 diff --git a/ja_JP.eucJP/man/man8/dumpon.8 b/ja_JP.eucJP/man/man8/dumpon.8 index 3c1b445371..322a64f631 100644 --- a/ja_JP.eucJP/man/man8/dumpon.8 +++ b/ja_JP.eucJP/man/man8/dumpon.8 @@ -1,105 +1,105 @@ .\" Copyright (c) 1980, 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 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: @(#)swapon.8 8.1 (Berkeley) 6/5/93 .\" jpman %Id: dumpon.8,v 1.3 1997/08/16 13:12:52 horikawa Stab % .\" %Id: dumpon.8,v 1.3 1996/08/23 00:55:54 mpp Exp % .\" .Dd May 12, 1995 .Dt DUMPON 8 .Os FreeBSD 2.1 .Sh 名称 .Nm dumpon .Nd クラッシュダンプ用デバイスの指定 .Sh 書式 .Nm dumpon .Op Fl v .Ar special_file .Sh 解説 .Nm dumpon は、パニック時にカーネルがクラッシュダンプをセーブするデバイスを 指定するのに用いられます。 安全のため、 .Xr config 8 への入力において .Dq dumps on 記述がされていない限り、 システムはダンプエリアなしで開始します。 -ダンプデバイスは、コンフィギュレーションファイル中で指定された +ダンプデバイスは、設定ファイル中で指定された スワップエリアのひとつでなければならず、 また、少なくとも物理メモリ分のサイズがなければなりません。 普通、 .Nm dumpon は、システムのマルチユーザ初期化ファイル .Pa /etc/rc の中で .Xr savecore 8 の実行前に呼び出されます。 .Fl v オプションを指定すると、 .Nm はその処理に関する詳細情報を出力します。 .Pp .Nm プログラムの動作は、 .Xr sysctl 3 の MIB 変数 .Dq kern.dumpdev に指定された .Ar special_file のデバイス番号を設定するか、 あるいは .Ar special_file が文字列 .Dq Li off の場合は .Dv NODEV (ダンプはとらないことを意味します) を設定する、というものです。 .Sh 関連項目 .Xr sysctl 3 , .Xr init 8 , .Xr rc 8 , .Xr savecore 8 .Sh 関連ファイル .Bl -tag -width /dev/[ws]d?b -compact .It Pa /dev/[ws]d?b 標準のページングデバイス .El .Sh バグ クラッシュダンプをとるときには 既にファイルシステムレイヤは動作していないので、 クラッシュダンプを直接ファイルに落すことはできません。 .Sh 歴史 .Nm コマンドは .Fx 2.1 で登場しました。 diff --git a/ja_JP.eucJP/man/man8/fdcontrol.8 b/ja_JP.eucJP/man/man8/fdcontrol.8 index 4358eefa79..9d93fae0c0 100644 --- a/ja_JP.eucJP/man/man8/fdcontrol.8 +++ b/ja_JP.eucJP/man/man8/fdcontrol.8 @@ -1,104 +1,104 @@ .\" .\" Copyright (C) 1994 by Joerg Wunsch, Dresden .\" 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(S) ``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(S) 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. .\" .\" jpman %Id: fdcontrol.8,v 1.3 1997/08/16 13:14:53 horikawa Stab % .Dd May 22, 1994 .Os .Dt FDCONTROL 8 .Sh 名称 .Nm fdcontrol .Nd フロッピディスクパラメータの変更 .Sh 書式 .Nm fdcontrol .Op Fl d Ar 0|1 .Ar device .Nm fdcontrol .Op Fl s .Ar device .Sh 解説 .Nm fdcontrol は .Ar device で指定したフロッピディスクデバイスの実行時の振る舞いを変更します。 .Ar device はキャラクタデバイスでなければなりません。 .Pp 現在のところ .Nm fdcontrol では、 フロッピディスクドライブのデバイスパラメータの指定 .Po .Fl s , これがデフォルトモードでもあります .Pc や、フロッピドライバが .Em DEBUG オプション付きでカーネルに組み込まれている場合には ドライバのデバッグレベルの変更 .Pq Fl d を行なうことができます。 .Pp これらの操作は他に悪影響を及ぼす可能性があるため、 この中で行なわれる .Xr ioctl 2 コマンドの実行はスーパユーザに限定されています。 .Pp 新しいパラメータ指定を要求すると、 .Nm は調整可能な各パラメータをユーザに問い合わせてきます。 これらは現在使われている値がデフォルト値となっています。 .Sh 診断 内部で呼び出される .Xr ioctl 2 のエラーコードが .Xr perror 3 によって表示されます。 .Sh バグ .Nm コマンドは現在開発途上です。 ユーザインタフェースはややお粗末で、将来は変更される可能性があります。 コマンドラインから何でも変更できるようなオプション整備も必要でしょう。 .Pp 現実のドライバはデバッグレベルとして .Pq 0 and 1 しかサポートしていません。 デバッグレベル 1 にすると非常に多量の出力を生成するので、 -よく注意して使わないと syslog をオーバフローさせかねません。 +よく注意して使わないと syslog をあふれさせかねません。 .Sh 関連項目 .Xr ioctl 2 , .Xr perror 3 , .Xr fdc 4 .Sh 歴史 .Nm fdcontrol は現在開発途上です。 そのユーザインタフェースと全体機能は、 将来改良あるいは変更される可能性があります。 .Sh 作者 本プログラムは .if n Joerg Wunsch, .if t J\(:org Wunsch, Dresden から寄贈されました。 diff --git a/ja_JP.eucJP/man/man8/fdisk.8 b/ja_JP.eucJP/man/man8/fdisk.8 index 00c158a08f..94c1c7ef08 100644 --- a/ja_JP.eucJP/man/man8/fdisk.8 +++ b/ja_JP.eucJP/man/man8/fdisk.8 @@ -1,435 +1,435 @@ .Dd October 4, 1996 .\" jpman %Id: fdisk.8,v 1.4 1997/07/26 21:56:04 horikawa Stab % .Dt FDISK 8 .\".Os BSD 4 .Sh 名称 .Nm fdisk .Nd DOS パーティションのメンテナンスプログラム .Sh 書式 .Nm fdisk .Op Fl i .Op Fl u .Op Fl a .Op Fl 1234 .Op Ar disk .Bl -tag -width time .Nm fdisk .Op Fl f Ar configfile .Op Fl i .Op Fl v .Op Fl t .Op Ar disk .Sh 前置き BIOS がカーネルをブートするために、 一定の約束をちゃんと守らねばなりません。 ディスクのセクタ 0 はブートコード、パーティションテーブル、 マジックナンバを含んでいなければならないのです。 BIOS パーティションはディスクをいくつかの部分に分けるのにも使われます。 BIOS はセクタ 0 を読み込んできて、(本当にそのコードを使うか?) マジックナンバを確かめます。 それから、 セクタ 0 に書き込まれた 4 つの BIOS パーティションを探して、 それらのどれが .Em アクティブ かを決定します。 それから、二次ブートブロックを .Em アクティブ パーティションから読み込み、それを実行します。 DOS では一つの以上のパーティションと一つの .Em アクティブ を持てます。 DOS の .Nm プログラムは、 ディスク空間を一つ以上のパーティションに分割して、一つの .Em アクティブ を設定することができます。 .Sh 解説 .Pp FreeBSD のプログラム .Nm は、DOS のそれと似た目的に役立ちます。 第一の形は、パーティション情報の表示や、 パーティションテーブルの対話的な編集に使われます。 第二の形は、 .Ar configfile を使ってパーティションテーブルを書き込むという使い方であり、 他のスクリプト/プログラムから利用するよう設計されています。 .Pp オプション: .It Fl u ディスクのセクタ 0 を更新 (編集) するのに使われます。 .Fl f があるときには無視されます。 .It Fl i ディスクのセクタ 0 を初期化します。 もし .Fl f がなければ、 .Fl u の意味も含みます。 .It Fl a アクティブパーティションの変更のみを行ないます。 .Fl f があるときには無視されます。 .It Fl 1234 一つの fdisk エントリの操作だけを行ないます。 .Fl f があるときには無視されます。 .It Fl f Ar configfile パーティションの値をファイル .Ar configfile を使って設定します。 .Fl i もあるときには、 .Ar configfile が読み込まれるに先立って、 存在するパーティションは全部消され(つまり「未使用」の印をつけられる) ますが、この場合を除いて、 .Ar configfile はいつも存在するパーティションの変更を行ないます。 .Ar configfile は "-" であってもよく、この場合 .Ar 標準入力 が読まれます。 ファイルの構文は、以降の -.Em コンフィギュレーションファイル +.Em 設定ファイル の節をご覧下さい。 .Pp .Em 警告: .Fl f が使われたときには、 (対話モードで尋ねられるように) 本当にパーティションテーブルを書き込むのかどうかを尋ねられません。 用心して使うこと! .It Fl t テストモード; パーティションテーブル値を書き込みません。一般に .Fl f オプションを付けて、パーティションテーブルに書き込まれるはずのものを 見るのに使われます。 .Fl v の意味を含みます。 .It Fl v 冗長になります。 .Fl f が使われたときには、 .Nm はディスクに書き込まれるパーティションテーブルを表示します。 .El .Pp 最後のディスク名 .Ar disk は、 .Sq 裸の ディスク名だけ、 つまり .Ql sd0 か、あるいは .Pa /dev の下に完全に限定されたデバイスノードで与えることができます。 もし省略された場合、ディスク .Ql wd0 , .Ql sd0 , と .Ql od0 が、一つが応答して見付かるまで この順序で検索されます。 .Pp 引数なしで呼び出されたときには、 セクタ 0 パーティションテーブルを表示します。 例えば: .Bd -literal ******* Working on device /dev/rwd0 ******* parameters extracted from in-core disklabel are: cylinders=769 heads=15 sectors/track=33 (495 blks/cyl) parameters to be used for BIOS calculations are: cylinders=769 heads=15 sectors/track=33 (495 blks/cyl) Warning: BIOS sector numbering starts with sector 1 Information from DOS bootblock is: The data for partition 1 is: sysid 165,(FreeBSD/NetBSD/386BSD) start 495, size 380160 (185 Meg), flag 0 beg: cyl 1/ sector 1/ head 0; end: cyl 768/ sector 33/ head 14 The data for partition 2 is: sysid 164,(unknown) start 378180, size 2475 (1 Meg), flag 0 beg: cyl 764/ sector 1/ head 0; end: cyl 768/ sector 33/ head 14 The data for partition 3 is: The data for partition 4 is: sysid 99,(ISC UNIX, other System V/386, GNU HURD or Mach) start 380656, size 224234 (109 Meg), flag 80 beg: cyl 769/ sector 2/ head 0; end: cyl 197/ sector 33/ head 14 .Ed .Pp このディスクは、たまたまディスク全体を満す 3 つのパーティションに分割されています。 二つ目のパーティションは最初のパーティションの最後に重なっています。 (デバッグ目的に使われます) .Bl -tag -width "cyl, sector と head" .It Em "sysid" パーティションのラベル付に使われます。 FreeBSD ではマジックナンバ 165 (10進) A5 (16進)を予約しています。 .It Em "start と size" パーティションのセクタ単位での 開始アドレスとサイズです。 .It Em "flag 80" これがアクティブパーティションであることを指定します。 .It Em "cyl, sector と head" パーティションの 開始アドレスと終了アドレスを指定するのに使われます。 .It Em "注釈:" これらの数字は、 BIOS の理解するディスクジオメトリを使って計算され、 ブートブロックに保存されます。 .El .Pp フラグ .Fl i または .Fl u は、 もし .Fl f オプションが使われていない限り、 パーティションデータを更新すべきであることを指示します。 もし .Fl f がなければ、 .Nm プログラムは対話モードに入ります。 このモードでは明示的に指示しない限り、どんなデータも変更しないように 設計されています。 .Nm はこのような振舞いを保証するよう、質問のデフォルトを選択しています。 .Pp .Nm は各々のパーティションを表示し、 それを編集したいかどうかを尋ねます。 yes と答えたら、 古い値を表示し、新しい値を尋ねて 各々のフィールドを進みます。 一つのパーティションが終了したら、 .Nm はそれを表示して、それで正しいかどうかを尋ねます。 そして .Nm は次のエントリに進みます。 .Pp .Em cyl, sector, と .Em head のフィールドを正しく得るにはちょっとした芸当が要ります。 そのためデフォルトでは、 .Nm が代わって計算しますが、選択してそれらの値を指定することもできます。 .Pp 全てのパーティションが進行した後、 .Em アクティブ パーティション変更をすることができます。 最後に、 最初のセクタのデータが全部集めれらたときに、 本当にセクタ 0 を書換えても良いか尋ねられます。 yes と答えた場合だけ、データはディスクに書き込まれます。 .Pp .Fl u フラグと .Fl i の間の違いは、 .Fl u フラグはディスク上にあるフィールドの値を編集するだけですが、 一方 .Fl i フラグはセクタ 0 を "初期化" するのに使われます; ディスク全体を FreeBSD 用に使えるように、 最後の BIOS パーティションをセットアップして、それをアクティブにします。 .Sh 注釈 .Pp 開始シリンダ等の自動計算は、 BIOS がそのドライブのジオメトリであると思っている数字をもとに行なわれます。 これらの数字はデフォルトでは、メモリ上のディスクラベルから取りますが、 プログラムの起動時にそれらを変更する機会が与えられます。 このおかげでユーザは、 BIOS がジオメトリ変換を行なうドライブでも動作できるブートブロックを 作ることができます。 .Pp もしディスクのレイアウトを手作業で変更するのなら、 どうか FreeBSD パーティションがシリンダ境界から開始することを確認してください。 その後のたくさんの決定がこのことを仮定しています。 (これは必要ではなかったのかもしれませんが) .Pp すでにあるパーティションを編集すると、 たぶんそのパーティションのデータを失うことになるでしょう。 .Pp このプログラムがどう働くかを調べるために、 一度か二度は対話的に実行するべきです。 これは、最後の質問に否定で答える限り完全に安全です。 このマニュアルでは完全に説明されていませんが、 プログラムが検出する微妙な点があります。 -.Sh コンフィギュレーションファイル +.Sh 設定ファイル .Pp .Fl f オプションが与えられたとき、 .Ar configfile の値を使ってディスクのパーティションテーブルを書換えることができます。 このファイルの構文はたいへん単純です。 各行はコメントか仕様のどちらかで、空白 (改行を除く) は無視されます。 .Bl -tag -width Ds .It Xo .Ic # .No Ar comment ... .Xc "#" で開始している行はコメントで無視されます。 .It Xo .Ic g .No Ar spec1 .No Ar spec2 .No Ar spec3 .Xc パーティション計算で使う BIOS ジオメトリを設定します。 前に文字を伴った数字で、三つの値を指定しなければいけません。 .Bl -tag -width Ds .Sm off .It Cm c No Ar num .Sm on シリンダの数を .Ar num に設定します。 .Sm off .It Cm h No Ar num .Sm on ヘッドの数を .Ar num に指定します。 .Sm off .It Cm s No Ar num .Sm on トラックあたりのセクタの数を .Ar num に設定します。 .El .Pp これらの指定はどんな順序でもよく、先頭の文字がどの値かを決定します; しかし、三つ全てを指定しなければなりません。 .Pp この行はパーティション情報を指定するどんな行よりも前に現れなくてはなりません。 .Pp 次の条件が真でなければ、エラーです: .Pp .nf 1 <= シリンダの数 1 <= ヘッドの数 <= 256 1 <= トラックあたりのセクタの数 < 64 .fi .Pp シリンダの数は 1024 以下でなければなりませんが、 しかしこれは強制されるものではなく、警告が出力されるでしょう。 ブート可能な FreeBSD パーティション ("/" ファイルシステム) は 最初の 1024 シリンダ以内に収まっていなといけません; もしそうでなければ、ブートに失敗するかもしれません。 ブートしないパーティションには、この制限はありません。 .Pp 1019 シリンダ、39 ヘッド、63 セクタのディスクの例 (これらの全てはみな等価): .Pp .nf g c1019 h39 s63 g h39 c1019 s63 g s63 h39 c1019 .fi .It Xo .Ic p .No Ar partition .No Ar type .No Ar start .No Ar length .Xc .Ar partition (1-4) で与えられたパーティションに、タイプ .Ar type 、開始セクタ .Ar start 、長さ (セクタ数) .Ar length を設定します。 .Pp これらの行で明示的に言及されたパーティションだけが変更されます; "p" 行で参照されていないパーティションは変更されません。 しかし、無効なパーティションテーブルがあるか、 .Fl i オプションが指定されているなら、 存在するパーティションエントリは全て取り除かれ (未使用の印がつけられ)、 パーティション情報を明示的に設定するのに、 "p" 行が使われなければなりません。 もし複数のパーティションを設定する必要があるなら、 複数の "p" 行が指定されなければなりません; 一つの行で一つのパーティションを設定します。 .Pp これらのパーティション行は、もしあればジオメトリ指定行の後に現れなければ なりません。 .Pp FreeBSD パーティションの .Ar type は 165 です。0 のパーティションタイプを指定すると、 パーティションを取り除き未使用の印をつけたのと同じことになります; しかし、("0" とかの) ダミーの値が .Ar start と .Ar length に指定されなければなりません。 .Pp 注: パーティションの開始オフセットはヘッド境界まで必要なら繰り上げられ、 終了オフセットはシリンダ境界まで必要なら繰り下げられます。 .Pp 例: パーティション 4 を取り除いて、未使用の印をつける: .Pp .nf p 4 0 0 0 .fi .Pp 例: パーティション 1 を FreeBSD パーティションであって、 セクタ 1 から始まって 2503871 セクタの長さに設定する (注: これらの値は、 対応するヘッドとシリンダ境界に繰り上げ/繰り下げられます): .Pp .nf p 1 165 1 2503871 .fi .It Xo .Ic a .No Ar partition .Xc .Ar partition パーティションをアクティブにします。 -コンフィギュレーションファイルのどこに現われても構いませんが、 +設定ファイルのどこに現われても構いませんが、 一つだけしか現われてはいけません。 .Pp 例: パーティション 1 をアクティブパーティションにします: .Pp .nf a 1 .fi .El .Pp .Sh 関連項目 .Xr disklabel 8 .Sh バグ プログラム全体をよりユーザフレンドリにするべきです。 .Pp このマニュアルを通して使われている術語 .Sq パーティション は、他で使われる術語に一致させるため、 本当は .Sq スライス であるべきです。 .Pp ディスク全体を FreeBSD に捧げるためには、このコマンドは使えません。 これには .Xr disklabel 8 コマンドを使わなればなりません。 diff --git a/ja_JP.eucJP/man/man8/fsdb.8 b/ja_JP.eucJP/man/man8/fsdb.8 index 42b9bf2c41..a3c283274c 100644 --- a/ja_JP.eucJP/man/man8/fsdb.8 +++ b/ja_JP.eucJP/man/man8/fsdb.8 @@ -1,248 +1,248 @@ .\" %NetBSD: fsdb.8,v 1.2 1995/10/08 23:18:08 thorpej Exp % .\" .\" Copyright (c) 1995 John T. Kohl .\" 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. .\" .\" %Id: fsdb.8,v 1.3.2.1 1997/03/03 07:01:25 mpp Exp % .\" jpman %Id: fsdb.8,v 1.3 1997/06/23 15:01:41 horikawa Stab % .\" .Dd September 14, 1995 .Dt FSDB 8 .Os FreeBSD .Sh 名称 .Nm fsdb .Nd FFS デバッグ/編集ツール .Sh 書式 .Nm .Op Fl d .Op Fl f .Ar fsname .Sh 解説 .Nm は .Ar fsname (通常は raw ディスクパーティション) を open し、そのファイルシステムの inode データを操作するためのコマンドを受け付けます。コマンドは .Ic "fsdb (inum X)>" のプロンプトに対して入力します。ここでの .Va X は現在選択されている i-number となります。最初に選択されている inode はファイルシステムのルート (i-number 2) となります。 コマンドプロセッサには .Xr libedit 3 ライブラリを使用しており、コマンド行を編集することによってタイピングの 量を減らすことができます。 コマンドループから抜けて終了する時には、ファイルシステムのスーパブロック が dirty とマークされ、バッファリングされているブロックがあれば ファイルシステムに書き込まれます。 .Pp .Fl d オプションを指定すると、デバッグ情報 (元は .Xr fsck 8 のコードに由来するもの) を出力します。 .Pp .Fl f オプションは歴史的な理由により残されているもので、特に意味は持ちません。 .Sh コマンド 組み込みの .Xr libedit 3 のコマンドの他に .Nm は以下のコマンドをサポートしています: .Pp .Bl -tag -width indent -compact .It Cm help 入力できるコマンドのリストを表示します。 .Pp .It Cm inode Ar i-number 新しい現在の inode として inode .Ar i-number を選択します。 .Pp .It Cm back 以前の inode に戻ります。 .Pp .It Cm clri 現在の inode をクリアします。 .Pp .It Cm lookup Ar name .It Cm cd Ar name .Ar name を現在のディレクトリの中で探し、その inode を現在の inode に設定します。 .Ar name はマルチコンポーネントの名前か、スラッシュで始めて検索をルートの inode から始めることを指定できます。パス名の中のコンポーネントが見 つからない場合、最後に有効であったディレクトリがアクティブな inode と して使われます。 .br このコマンドは開始する inode がディレクトリの場合のみ有効です。 .Pp .It Cm active .It Cm print アクティブな inode を表示します。 .Pp .It Cm uplink アクティブな inode のリンク数をインクリメントします。 .Pp .It Cm downlink アクティブな inode のリンク数をデクリメントします。 .Pp .It Cm linkcount Ar number アクティブな inode のリンク数を .Ar number に設定します。 .Pp .It Cm ls 現在の inode のディレクトリエントリをリストします。このコマンドは現在 の inode がディレクトリである場合のみ有効です。 .Pp .It Cm rm Ar name .It Cm del Ar name 現在のディレクトリ inode からエントリ .Ar name を取り除きます。このコマンドは現在の inode がディレクトリで ある場合のみ有効です。 .Pp .It Cm ln Ar ino Ar name 現在のディレクトリ inode に inode .Ar ino へのリンクを .Ar name の名前で作成します。このコマンドは現在の inode がディレクトリである場 合のみ有効です。 .Pp .It Cm chinum Ar dirslot Ar inum ディレクトリエントリ .Ar dirslot 中の i-number を .Ar inum に変更します。 .Pp .It Cm chname Ar dirslot Ar name ディレクトリエントリ .Ar dirslot 中の名前を .Ar name に変更します。 このコマンドではディレクトリエントリを拡張することはできません。名前が 現在存在するディレクトリスロットに収まる場合にのみ、エントリの名前の変 更が可能です。 .Pp .It Cm chtype Ar type 現在の inode のタイプを .Ar type に変更します。 .Ar type には .Em file , .Em dir , .Em socket , .Em fifo のいずれかが指定できます。 .Pp .It Cm chmod Ar mode 現在の inode のモードビットを .Ar mode に変更します。 このサブコマンドではファイルのタイプを変更することはできません。その場 合は .Ic chtype を使ってください。 .Pp .It Cm chflags Ar flags 現在の inode のファイルフラグを .Ar flags に変更します。 .Pp .It Cm chown Ar uid -現在の inode のオーナを +現在の inode の所有者を .Ar uid に変更します。 .Pp .It Cm chgrp Ar gid 現在の inode のグループを .Ar gid に変更します。 .Pp .It Cm chgen Ar gen 現在の inode の世代番号 (generation number) を .Ar gen に変更します。 .Pp .It Cm mtime Ar time .It Cm ctime Ar time .It Cm atime Ar time それぞれ、現在の inode の修正時間、変更時間、アクセス時間を .Ar time に変更します。 .Ar time は .Em YYYYMMDDHHMMSS[.nsec] の形式でなければなりません。ここで、 .Em nsec はオプションで指定できるナノ秒の値となります。もし、ナノ秒が指定されて いないと、 .Va mtimensec , .Va ctimensec , .Va atimensec のそれぞれのフィールドにはゼロがセットされます。 .Pp .It Cm quit, Cm q, Cm exit, Em プログラムを終了します。 .El .Sh 関連項目 .Xr libedit 3 , .Xr fs 5 , .Xr clri 8 , .Xr fsck 8 .Sh バグ ``short'' のシンボリックリンクの操作は動作しません。(特に、 シンボリックリンクのタイプは変更しないでください。) .br モードはシンボル名ではなく数字で指定してください。 .br 多分 .Nm に実装されていないことで、もっとやりたいことが沢山あるでしょう。 .br .Xr libedit 3 のリファレンスページはまだ書かれていません。 .Sh 歴史 .Nm は .Xr fsck 8 のソースコードを使ってファイルシステムの操作のコードのほとんどを実装し ています。 .Nm の残りの部分は NetBSD において John T. Kohl によって最初に書かれました。 .br FreeBSD へは Peter Wemm によって移植されました。 .Sh 警告 このツールは最大限に注意を払って使って下さい。 .Xr fsck 8 を使っても修復できないほど FFS ファイルシステムを壊す恐れがあります。 diff --git a/ja_JP.eucJP/man/man8/ftpd.8 b/ja_JP.eucJP/man/man8/ftpd.8 index 8505ef13f6..68bf410d0b 100644 --- a/ja_JP.eucJP/man/man8/ftpd.8 +++ b/ja_JP.eucJP/man/man8/ftpd.8 @@ -1,462 +1,462 @@ .\" Copyright (c) 1985, 1988, 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 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. .\" .\" @(#)ftpd.8 8.2 (Berkeley) 4/19/94 .\" %Id: ftpd.8,v 1.9.2.13 1998/03/05 12:24:20 jkh Exp % .\" jpman %Id: ftpd.8,v 1.3 1997/09/08 07:23:46 kuma Stab % .\" .Dd April 19, 1994 .Dt FTPD 8 .Os BSD 4.2 .Sh 名称 .Nm ftpd .Nd インターネットファイル転送プロトコルサーバ .Sh 書式 .Nm ftpd .Op Fl dl .Op Fl D .Op Fl R .Op Fl S .Op Fl U .Op Fl T Ar maxtimeout .Op Fl t Ar timeout .Op Fl a Ar address .Op Fl p Ar file .Sh 解説 .Nm は、インターネットファイル転送プロトコルサーバプロセスです。 このサーバは .Tn TCP プロトコルを用いて、 .Dq ftp サービスに割り当てられたポートを listen() します。 .Dq ftp サービスについては、 .Xr services 5 を参照して下さい。 .Pp 利用可能なオプションは以下の通りです: .Bl -tag -width indent .It Fl d syslog の LOG_FTP のファシリティ (facility) を用いてデバッグ情報を出力します。 .It Fl l .Xr ftp 1 セッションそれぞれの結果を、成功も失敗もともども syslog の LOG_FTP のファシリティを用いて ログに残します。このオプションが 2 回指定されると、 retrieve (get), store (put), append, delete, make directory, remove directory, rename の各操作およびそれらの引数で指定された ファイル名も記録されます。 注意: LOG_FTP メッセージはデフォルトでは .Xr syslogd 8 によって表示されません。場合によっては .Xr syslogd 8 Ns -のコンフィギュレーションファイルでそれを有効にしなければなりません。 +の設定ファイルでそれを有効にしなければなりません。 .It Fl D このオプションがセットされると、 .Nm は制御端末を切り離してデーモンとなり、 FTP ポートへの接続要求を待ち、 子プロセスを生成して接続要求に対応します。 この方式は .Nm を .Xr inetd 8 から起動するよりオーバヘッドが少ないため、 処理量の多いサーバで負荷を低減するのに役立ちます。 .It Fl R このオプションがセットされると、 .Nm は、ユーザ操作のセキュリティチェックや PORT 要求の制限に関して 古き良き時代の振る舞いに戻ります。 現在では、 .Nm はリモートユーザのホストの非特権ポートに向けられた PORT コマンド だけを用います (これは FTP プロトコルの仕様に違反していますが、 いくつかのセキュリティホールを閉じることができます)。 .It Fl S このオプションがセットされると、 .Nm は匿名 (anonymous) による転送の全てについてのログを、ファイル .Pa /var/log/ftpd が存在する場合に限り、このファイルに残します。 .It Fl U 以前のバージョンの .Nm では、パッシブモードのクライアントがサーバにデータ接続を要求すると、 サーバは 1024 〜 4999 の範囲のデータポートを使用していました。 現在のバージョンでは、サーバはデフォルトでは 40000 〜 44999 の範囲の データポートを使用しますが、 このオプションを指定することにより、以前の振る舞いに戻ります。 .It Fl T クライアントは異なったタイムアウト秒数を要求することもできます。 .Fl T オプションにより、 .Ar タイムアウト までの最大待ち時間を設定できます。 デフォルトは 2 時間です。 .It Fl t 何も操作しないで放置した場合のタイムアウト時間を .Ar timeout 秒に設定します (デフォルトは 15 分)。 .It Fl a .Fl D オプションが指定されている場合、 .Ar address で指定されたアドレスに対する接続のみを許可します。 .It Fl p .Fl D オプションが指定されている場合、 デーモンのプロセス ID を .Ar file に書き出します。 .It Fl A 匿名 ftp アクセスのみ許可します。 .El .Pp ファイル .Pa /etc/nologin は、ftp アクセスを拒否するのに使うことができます。 このファイルが存在する場合、 .Nm はそのファイルの内容を表示して終了します。 .Pa /etc/ftpwelcome ファイルが存在する場合、 .Nm は .Dq ready メッセージを表示する前にその内容を表示します。 もし .Pa /etc/ftpmotd ファイルが存在する場合、 ログイン成功後に .Nm はその内容を出力します。 使用される motd ファイルはログイン環境に対して相対であることに 注意してください。 つまり、匿名ユーザの場合には、 .Pa ~ftp/etc に存在することを意味じます。 .Pp この ftp サーバは、現在、以下の ftp リクエストをサポートしています。 リクエストの文字の大文字小文字の区別は無視されます。 .Bl -column "Request" -offset indent .It Sy リクエスト Ta Sy "説明" .It ABOR Ta "abort previous command" .It ACCT Ta "specify account (ignored)" .It ALLO Ta "allocate storage (vacuously)" .It APPE Ta "append to a file" .It CDUP Ta "change to parent of current working directory" .It CWD Ta "change working directory" .It DELE Ta "delete a file" .It HELP Ta "give help information" .It LIST Ta "give list files in a directory" Pq Dq Li "ls -lgA" .It MKD Ta "make a directory" .It MDTM Ta "show last modification time of file" .It MODE Ta "specify data transfer" Em mode .It NLST Ta "give name list of files in directory" .It NOOP Ta "do nothing" .It PASS Ta "specify password" .It PASV Ta "prepare for server-to-server transfer" .It PORT Ta "specify data connection port" .It PWD Ta "print the current working directory" .It QUIT Ta "terminate session" .It REST Ta "restart incomplete transfer" .It RETR Ta "retrieve a file" .It RMD Ta "remove a directory" .It RNFR Ta "specify rename-from file name" .It RNTO Ta "specify rename-to file name" .It SITE Ta "non-standard commands (see next section)" .It SIZE Ta "return size of file" .It STAT Ta "return status of server" .It STOR Ta "store a file" .It STOU Ta "store a file with a unique name" .It STRU Ta "specify data transfer" Em structure .It SYST Ta "show operating system type of server system" .It TYPE Ta "specify data transfer" Em type .It USER Ta "specify user name" .It XCUP Ta "change to parent of current working directory (deprecated)" .It XCWD Ta "change working directory (deprecated)" .It XMKD Ta "make a directory (deprecated)" .It XPWD Ta "print the current working directory (deprecated)" .It XRMD Ta "remove a directory (deprecated)" .El .Pp 以下に示した非標準コマンドあるいは .Tn UNIX に特有のコマンドが、SITE リクエストでサポートされています。 .Pp .Bl -column Request -offset indent .It Sy リクエスト Ta Sy 説明 .It UMASK Ta change umask, e.g. ``SITE UMASK 002'' .It IDLE Ta set idle-timer, e.g. ``SITE IDLE 60'' .It CHMOD Ta change mode of a file, e.g. ``SITE CHMOD 755 filename'' .It HELP Ta give help information. .El .Pp Internet RFC 959 で規定されている ftp リクエストのうちの、これ以外のものは 解釈はされますがインプリメントされていません。 MDTM および SIZE は RFC 959 では規定されていませんが、次に改訂される FTP RFC には登場するでしょう。 .Pp ftp サーバがアクティブなファイル転送を中断するのは、ABOR コマンドの前に、 Telnet "Interrupt Process" (IP) シグナルか Telnet "Synch" シグナルが Telnet ストリーム内にある場合だけです。 これは Internet RFC 959 に記述されています。 もし、データの転送中に STAT コマンドを受けとり、その前に Telnet IP や Synch があった場合、転送ステータスが返されます。 .Pp .Nm は、 .Xr csh 1 で使われているファイル名展開を解釈します。これにより、 ユーザはメタキャラクタ .Dq Li \&*?[]{}~ を利用できます。 .Pp .Nm は、5 つのルールに従ってユーザの認証を行います。 .Pp .Bl -enum -offset indent .It ログイン名はパスワードデータベース になければならず、空のパスワードであってはいけません。 この場合、あらゆるファイルの操作に先だって、クライアント側からパスワードが 提供されていなければなりません。ユーザが S/Key のキーを持っている場合は、 USER コマンドが成功した際の応答には S/Key チャレンジを含めて送られます。 クライアントは、それに対して PASS コマンドを使って応答する際に、 通常のパスワードか S/Key のワンタイムパスワードのどちらをつけて応答 するかを選択できます。サーバはどちらのパスワードを受け取ったかを自動的に 判定し、それに応じて認証を試みます。S/Key の認証に関する詳細は .Xr key 1 を参照して下さい。S/Key は Bellcore 社の商標です。 .It ログイン名はファイル .Pa /etc/ftpusers に載っていてはいけません。 .It ログイン名はファイル .Pa /etc/ftpusers で指定されているグループのメンバであってはいけません。 このファイルでグループ名として解釈されるエントリの先頭には アットマーク .Ql \&@ が付きます。 .It ユーザは .Xr getusershell 3 が返す標準のシェルを持っていなければなりません。 .It ユーザ名がファイル .Pa /etc/ftpchroot に載っているか、そのファイルにあるグループエントリ (つまり .Ql \&@ で始まるエントリ) のメンバである場合、アカウント .Dq anonymous や .Dq ftp と同様、 .Xr chroot 2 によって、 そのセッションのルートディレクトリが ユーザのログインディレクトリに変ります (次の項目を参照して下さい)。 この機能は、 .Xr login.conf 5 でブール型フラグ "ftp-chroot" をオンにしても有効になります。 しかし、ユーザは依然、パスワードを与える必要があります。 この特徴は、完全に匿名 (anonymous) なアカウントと 完全な特権のあるアカウントの間での妥協的な利用のためのものです。 このアカウントは匿名アカウントで設定するのと同様に設定されていなければ なりません。 .It もしユーザ名が .Dq anonymous または .Dq ftp の場合は、匿名の ftp アカウントがパスワードファイル (ユーザ .Dq ftp ) で提供されていなければなりません。 この場合、ユーザはどのようなパスワードでもログインを許可されます (慣習としては ユーザの email アドレスをパスワードとして用いることになっています)。 .Fl S オプションがセットされていると、全ての転送操作も記録されます。 .El .Pp 最後のケースの場合、 .Nm は特別な手段でクライアントのアクセス権を制限します。 サーバは .Dq ftp ユーザのホームディレクトリへ .Xr chroot 2 します。 システムのセキュリティが侵害されないために、 .Dq ftp サブツリーは、以下の規則に従って慎重に構築することを推奨します。 .Bl -tag -width "~ftp/pub" -offset indent .It Pa ~ftp ホームディレクトリは .Dq root の所有とし、誰も書き込みできないようにします。 .It Pa ~ftp/bin このディレクトリは .Dq root の所有とし、誰も書き込みできないようにします (モード 555)。 list コマンドのサポートのため、ここに .Xr ls 1 プログラムを置くことが必要です。 このプログラムのモードは 111 とすべきです。 .It Pa ~ftp/etc このディレクトリは .Dq root の所有とし、誰も書き込みできないようにします (モード 555)。 .Xr ls が所有者を数字でなく名前で表示できるようにするために、 ファイル pwd.db ( .Xr passwd 5 参照) 及び .Xr group 5 が必要です。 ファイル .Xr passwd 中のパスワードは使用されませんので、本当のパスワードを入れてはいけません。 ファイル .Pa ftpmotd が存在すると、ログイン成功後、その内容が表示されます。 このファイルのモードは 444 とすべきです。 .It Pa ~ftp/pub このディレクトリのモードは 777、所有者は .Dq ftp とします。 ゲストユーザは、このディレクトリ中にあって匿名アカウントで アクセス可能なファイルをアクセスします。 .El .Pp システムに複数の IP アドレスがある場合、 .Nm は仮想ホストの概念をサポートします。 仮想ホストは、複数の匿名 ftp 領域それぞれを別々のインターネットアドレス に割り当てる機能を提供します。 ファイル .Pa /etc/ftphosts は各仮想ホストに関連した情報を保持します。 各ホストはそれぞれの行で定義され、 各行は空白で区切ったいくつかのフィールドからなります: .Bl -tag -offset indent -width hostname .It hostname 仮想ホストのホスト名あるいは IP アドレス。 .It user システムのパスワードファイル中のユーザレコードを含みます。 普通の匿名 ftp と同様に、このユーザのアクセス UID, GID および グループによって匿名 ftp 領域のファイルアクセス権が決まります。 匿名 ftp 領域 (ログイン時にユーザが chroot するディレクトリ) は、 そのアカウントに対するホームディレクトリとして決定されます。 他の ftp アカウントのユーザ ID およびグループも、 標準 ftp ユーザと同じであって構いません。 .It statfile 全てのファイル転送のログが記録されるファイル。デフォルトでは .Pa /var/log/ftpd です。 .It welcome サーバがプロンプトを出す前に表示される welcome メッセージ。デフォルトでは .Pa /etc/ftpwelcome です。 .It motd このファイル内容はユーザがログインした後に表示されます。デフォルトでは .Pa /etc/ftpmotd です。 .El .Pp プライマリ IP アドレスあるいはホスト名に対する仮想ホストを定義すると、 そのアドレスへの ftp ログインのデフォルト値が変更されます。 'user', 'statfile', 'welcome', 'motd' の各フィールドは デフォルト値を用いる場合、ブランクのままもしくはハイフン一つ '-' と しても構いません。 .Pp いかなる匿名ログインの設定についても言えることですが、 設定と保守には十分に注意を払い、セキュリティ上の問題をきたさないよう 防御しなければなりません。 .Pp .Em FTPD_INTERNAL_LS オプションをつけてコンパイルすると、 .Nm はリモートからのファイル一覧表示要求に対応するための内部サポートを用意し、 chroot された環境でもそれ以外でも .Pa /bin/ls を実行しなくなります。 この場合、 .Pa ~/bin/ls の実行形式ファイルは chroot されたディレクトリになくてよく、 .Pa ~/bin ディレクトリも存在する必要はありません。 このサポートは、 .Pa /etc/make.conf あるいはシェルの環境で .Em INTERNAL_LS 変数を設定して ftpd を作成することで追加されます。 .Sh 関連ファイル .Bl -tag -width /etc/ftpwelcome -compact .It Pa /etc/ftpusers 歓迎されない/制限を受けるユーザのリスト。 .It Pa /etc/ftpchroot chroot される一般ユーザのリスト。 .It Pa /etc/ftphosts -仮想ホストのための構成ファイル +仮想ホストのための設定ファイル .It Pa /etc/ftpwelcome welcome メッセージ。 .It Pa /etc/ftpmotd login 後の welcome メッセージ。 .It Pa /etc/nologin 内容を表示し、アクセスを拒否します。 .It Pa /var/log/ftpd 匿名による転送のログファイル。 .El .Sh 関連項目 .Xr ftp 1 , .Xr key 1 , .Xr getusershell 3 , .Xr login.conf 5 , .Xr inetd 8 , .Xr syslogd 8 .Sh バグ 特権ポート番号を用いてソケットを作成するために、 ftpd はスーパーユーザの権限で実行させて下さい。 サーバはログインユーザの実効ユーザ ID を保持しておき、 アドレスをソケットにバインドする場合にのみスーパユーザの権限を使います。 考えられるセキュリティホールについてはかなり詳細にわたって調べ込みをおこないましたが、 それでも不完全かもしれません。 .Sh 歴史 .Nm コマンドは .Bx 4.2 から登場しました。 diff --git a/ja_JP.eucJP/man/man8/getty.8 b/ja_JP.eucJP/man/man8/getty.8 index 1c200da850..3226a8087d 100644 --- a/ja_JP.eucJP/man/man8/getty.8 +++ b/ja_JP.eucJP/man/man8/getty.8 @@ -1,125 +1,125 @@ .\" Copyright (c) 1980, 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 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: @(#)getty.8 8.1 (Berkeley) 6/4/93 .\" %Id: getty.8,v 1.4.2.3 1997/12/15 07:10:52 charnier Exp % .\" jpman %Id: getty.8,v 1.3 1997/05/19 17:00:46 horikawa Stab % .\" " .Dd April 25, 1991 .Dt GETTY 8 .Os BSD 4 .Sh 名称 .Nm getty .Nd 端末のモードを設定する .Sh 書式 .Nm getty .Oo .Ar type .Op Ar tty .Oc .Sh 解説 .Nm プログラムは、 .Xr init 8 から呼ばれ、tty回線をオープンしたあと初期化 し、ログイン名を読んで .Xr login 1 を起動します。 .Pp .Ar tty は、端末にどの .Pa /dev のスペシャルデバイスファイルを使うかを指定します(例:``ttyh0'')。 引数がないか .Ql Fl ならば、tty回線はファイルディスクリプタ0としてオープンされます。 .Pp .Ar type は、 .Nm が端末回線を特別に扱うようにするために使われます。 この .Ar type は、 .Xr gettytab 5 のデータベースのインデックスとして使われ、 回線の特徴を決定します。引数が与えられないか、データベースにマッチする テーブルがなければ、 .Em default テーブルが使われます。もし、 .Pa /etc/gettytab ファイルがなければ、システムのデフォルトが使われます。 テーブルにより指示されれば、 .Nm は端末画面をクリアし、 バナーヘッダを表示し、 ログインプロンプトを表示します。通常、このプロンプトのなかに システムのホスト名が含まれます。 .Pp .Nm のデフォルトの行動は、大抵の場合、適当な .Pa gettytab テーブルを作成することによって、回避したり修正したりすることができます。 .Pp .Nm はタイムアウト時間を設定することができます。これによって、 ログイン名がすぐに入力されないような場合に、ダイアル回線を切断 することができます。 .Sh 診断 .Bl -diag .It "ttyxx: No such device or address." .It "ttyxx: No such file or address." .Pp .Pa ttys -ファイルのなかで有効にされていたターミナルがオープンできませんでした。 +ファイルのなかで有効にされていた端末がオープンできませんでした。 必要な回線がシステムに設定されていなかったか、 関係するデバイスがブート時のシステム設定の際に組み込まれなかったか、 もしくは .Pa /dev にスペシャルファイルがありませんでした。 .El .Sh 関連ファイル .Bl -tag -width /etc/gettytab -compact .It Pa /etc/gettytab .It Pa /etc/ttys .El .Sh 関連項目 .Xr login 1 , .Xr ioctl 2 , .Xr tty 4 , .Xr gettytab 5 , .Xr ttys 5 , .Xr init 8 .Sh 歴史 .Nm は .At v6 から登場しました。 diff --git a/ja_JP.eucJP/man/man8/init.8 b/ja_JP.eucJP/man/man8/init.8 index 91641f377c..4ab1b2e881 100644 --- a/ja_JP.eucJP/man/man8/init.8 +++ b/ja_JP.eucJP/man/man8/init.8 @@ -1,303 +1,303 @@ .\" Copyright (c) 1980, 1991, 1993 .\" The Regents of the University of California. All rights reserved. .\" .\" This code is derived from software contributed to Berkeley by .\" Donn Seeley at Berkeley Software Design, 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. .\" .\" @(#)init.8 8.3 (Berkeley) 4/18/94 .\" %Id: init.8,v 1.4.2.3 1997/08/18 03:30:04 davidn Exp % .\" jpman %Id: init.8,v 1.2 1997/05/27 08:12:44 yugawa Stab % .\" .Dd April 18, 1994 .Dt INIT 8 .Os BSD 4 .Sh 名称 .Nm init .Nd プロセス制御の初期化を行う .Sh 書式 .Nm init .Sh 解説 .Nm init はブート処理の最後に起動されます。 .Nm init は通常、 .Xr reboot 8 で説明されている自動リブートシーケンスを実行します。それが成功すると、 システムはマルチユーザモードになります。 リブートスクリプトの実行に失敗すると、 .Nm init はスーパユーザが使うシェルを起動してシングルユーザモードを 開始させます。 .Nm init プログラムは、ブートプログラムからのパラメータの指示を受けて、マルチユー ザモードに移行せず、一般のデーモンを起動することなくシングルユーザモードの シェルを起動させることができます。 その場合、システムはメンテナンスのためのモードになり、 シェルを抜ける (^D を入力する)ことで シングルユーザモードからマルチユーザモードになります。 これによって、 .Nm init は .Pa /etc/rc をファストブートモード(ディスクチェック省略)で実行します。 .Pp もし .Xr ttys 5 ファイルの .Nm console のエントリが ``insecure'' にマークされていた場合には、 .Nm init はシングルユーザモードのシェルを起動する前に、スーパユーザのパスワードを 要求します。 パスワードチェックは、 .Nm console が ``secure'' にマークされていればスキップされます。 .Pp カーネルは 4 種類のセキュリティレベルで走行します。どのスーパーユーザ プロセスもセキュリティレベルを上げることができますが、レベルを下げることが できるのは .Nm init だけです。セキュリティレベルは以下のように定義されます: .Bl -tag -width flag .It Ic -1 常に危険なモード \- システムは常にレベル 0 モードで走行します。 .It Ic 0 危険なモード \- 変更不可(immutable)フラグや追加のみ(append-only)フラグは 無効にされます。 全てのデバイスは、そのパーミッションに従って読み書きされます。 .It Ic 1 安全なモード \- 変更不可フラグや追加のみのフラグは変更されません。 マウントされたファイルシステムのディスクおよび .Pa /dev/mem や .Pa /dev/kmem は read-only となります。 .It Ic 2 安全度の高いモード \- レベル 1 のモードの効果に加え、ディスクは マウントさていようといまいと、( .Xr mount 2 を除き) 常に read-only となります。 このレベルは、ファイルシステムをアンマウントして変更を加えることを不可能に します。また、システムがマルチユーザで走行中に .Xr newfs 8 を実行することも出来なくなります。 .El .Pp 初期のセキュリティレベルが -1 だった場合、 .Nm init はセキュリティレベルを変更しません。 それ以外の場合、シングルユーザモードではレベル 0 で、マルチユーザモードでは レベル 1 で、システムは動作します。マルチユーザモードにおいてレベル 2 で システムを走らせたい場合は、シングルユーザの状態の間に、つまり、 .Pa /etc/rc の中で .Xr sysctl 8 を使って設定します。 .Pp マルチユーザモードの場合、 .Nm init は .Xr ttys 5 -ファイルで指示されたターミナルポートのためのプロセスを管理します。 +ファイルで指示された端末ポートのためのプロセスを管理します。 .Nm init はこのファイルを読み込み、2 番目のフィールドに指示されたコマンドを 実行します。 そのコマンドは通常、 .Xr getty 8 で、 .Nm getty はtty をオープン、初期化し、 .Xr login 1 プログラムを実行します。 .Nm login プログラムは、ユーザがログインするとシェルを起動します。ユーザが ログアウトするか異常終了するなどして、そのシェルが終了すると、 .Nm init プログラムが起こされ、 .Xr utmp 5 ファイルからユーザを消し、 .Xr wtmp 5 ファイルにログアウトを記録します。 このサイクルは、 .Nm init プログラムがその端末に新しい .Nm getty を実行することで繰り返されます。 .Pp ラインの状態 (on, off, secure, getty, ウインドウの情報) は、 .Xr ttys 5 ファイルを書き換えて .Dq Li "kill -HUP 1" によってシグナル .Dv SIGHUP を .Nm init に送ることで、リブートせずに変更できます。 このシグナルを受け取ると .Nm init は .Xr ttys 5 ファイルを再度読み込みます。 .Xr ttys 5 でラインがオフにされると、 .Nm init はそのラインに関係するセッションの制御プロセスに SIGHUP シグナルを送ります。 オフであったラインが .Xr ttys 5 ファイルでオンにされると、 .Nm init は新しい .Nm getty を起動して、新しいログインを可能にします。 ラインの getty やウインドウフィールドが変更された場合、その変更は現在 のログインセッションが終了するまで有効にはなりません。 (例えば、 .Nm init によって新しいプロセスが起動されるまで有効にならない。) .Xr ttys 5 中のあるラインをコメントアウトあるいは削除した場合は、 .Nm init はそのラインに関しては何も実行しません。 しかしこの場合、 .Xr ttys 5 ファイルと .Xr utmp 5 ファイル内の記録情報が一致しなくなるため、試すことはお勧めしません。 .Pp .Dq Li "kill \-TERM 1" などによって terminate シグナル .Pq Dv TERM を受けると、 .Nm init はマルチユーザモードを終了し、シングルユーザモードに復帰します。 ハードウェアまたはソフトウェアの問題でデッドロックしたプロセスがある場合、 .Xr init はすべてのプロセスの終了を待たず(これは無限に終らないかも知れません)、 30 秒間でタイムアウトして警告のメッセージを出力します。 .Pp terminal stop シグナル .Pq Dv TSTP を送ると( .Dq Li "kill \-TSTP 1" )、 .Nm init は新しい .Xr getty を起動するのをやめ、徐々にシステム停止可能な状態にします。 その後、hangup シグナルで完全なマルチユーザモードに戻り、terminate シグナル でシングルユーザモードに移ります。 この hook は .Xr reboot 8 と .Xr halt 8 で使われています。 .Pp interrupt シグナル .Pq Dv INT を送ると( .Dq Li "kill \-INT 1" )、 .Nm init はすべてのプロセスを(デッドロックプロセスを待たずに)終了させ、 リブートを実行します。 この操作は、マシンがハングした時に、カーネルの中から、あるいは、X から、 システムを安全にシャットダウンするのに便利です。 .Pp マシンをシャットダウンする時、 .Nm init は .Pa /etc/rc.shutdown スクリプトを実行しようとします。 このスクリプトは .Nm innd (インターネットニュースサーバ) のような特定のプログラムを綺麗に終了させるために使用可能です。 .Pp .Nm init の役割は非常に重要で、もし .Nm init が死ぬとシステムが自動的にリブートされます。 もしブート時に .Nm init プログラムを見つけられなければ、システムは以下のようなメッセージを出力 して panic で終了します。 ``panic: init died (signal %d, exit %d)'' .Sh 診断 .Bl -diag .It "getty repeating too quickly on port %s, sleeping" ラインにサービスを提供するプロセスが、起動されるたびにすぐ終了してしまう。 これは、端末ラインに着信があるかノイズが大きい場合にしばしば起こります。 .Em "init は 10 秒間スリープし、" .Em "その後、プロセスを開始させようとし続けます。" .Pp .It "some processes would not die; ps axl advised." シャットダウンの際、ハングしていて終了させられないプロセスがあります。 この状態は、通常、デバイスに異常があるときにデバイスドライバではり付い てしまうことにより起こります。 .El .Sh 関連ファイル .Bl -tag -width /var/log/wtmp -compact .It Pa /dev/console システムのコンソールデバイス .It Pa /dev/tty* .Xr ttys 5 内にある端末ポート .It Pa /var/run/utmp 現在ログインしているのユーザの情報 .It Pa /var/log/wtmp すべてのログイン・ログアウトの情報 .It Pa /etc/ttys 端末の初期化情報が書かれたファイル .It Pa /etc/rc システム立ち上げ用スクリプト .It Pa /etc/rc.shutdown システムシャットダウン用スクリプト .El .Sh 関連項目 .Xr kill 1 , .Xr login 1 , .Xr sh 1 , .Xr ttys 5 , .Xr crash 8 , .Xr getty 8 , .Xr halt 8 , .Xr rc 8 , .Xr reboot 8 , .Xr shutdown 8 .Sh 歴史 .Nm コマンドは .At v6 から登場しました。 .Sh バグ .Xr sysctl を持たないシステムは、セキュリティレベル \-1 で動作します。 diff --git a/ja_JP.eucJP/man/man8/lptcontrol.8 b/ja_JP.eucJP/man/man8/lptcontrol.8 index 3993155dc0..ff119d56b8 100644 --- a/ja_JP.eucJP/man/man8/lptcontrol.8 +++ b/ja_JP.eucJP/man/man8/lptcontrol.8 @@ -1,78 +1,78 @@ .\" .\" lptcontrol - a utility for manipulating the lpt driver .\" .\" 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. .\" .\" .\" %Id: lptcontrol.8,v 1.3.2.2 1997/09/29 06:30:31 charnier Exp % .\" jpman %Id: lptcontrol.8,v 1.3 1997/08/16 13:20:55 horikawa Stab % .Dd September 3, 1994 .Dt LPTCONTROL 8 .Os FreeBSD 2 .Sh 名称 .Nm \&lptcontrol .Nd lpt プリンタドライバ操作ユーティリティ .Sh 書式 .Nm \&lptcontrol .Cm -i | .Cm -p .Op Fl u Ar unit no .Sh 解説 .Nm コマンドは、各 .Xr lpt 4 デバイスの割り込み駆動モード/ポーリングモードを設定するのに用いられます。 プリンタが割り込み駆動モード/ポーリングモード間で切り替えられると、 その切り替えは次回デバイスがオープンされたときに有効になります。 .Sh オプション .TP 以下のコマンドラインオプションがサポートされています: .Bl -tag -width indent .It Fl i 割り込み駆動モードにします。 .It Fl p ポーリングモードにします。 .It Fl u Ar n .Em n で指定されたプリンタデバイスのモードを設定します。 .Em n のデフォルト値は .Em 0 (つまり .Pa /dev/lpt0 )です。 .El .Pp .Fl i または .Fl p のいずれか一方を必ず指定しなければなりません。 .Pp .Sh 関連ファイル .Bl -tag -width /sys/i386/conf/GENERIC -compact .It Pa /dev/lpt? プリンタデバイス。 .It Pa /dev/lpctl? プリンタ制御デバイス。 .It Pa /sys/i386/conf/GENERIC -カーネル構成ファイル。 +カーネル設定ファイル。 .El .Sh バグ きっといくつかあるでしょう。 .Sh 関連項目 .Xr lpt 4 .Sh 作者 .An Geoffrey M. Rehmet .Sh 歴史 .Nm は .Fx 1.1.5 で初めて登場しました。 diff --git a/ja_JP.eucJP/man/man8/mountd.8 b/ja_JP.eucJP/man/man8/mountd.8 index 9bee5dcf84..48fbef874b 100644 --- a/ja_JP.eucJP/man/man8/mountd.8 +++ b/ja_JP.eucJP/man/man8/mountd.8 @@ -1,177 +1,177 @@ .\" Copyright (c) 1989, 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 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. .\" .\" @(#)mountd.8 8.4 (Berkeley) 4/28/95 .\" %Id: mountd.8,v 1.5.2.3 1997/05/14 08:19:20 dfr Exp % .\" jpman %Id: mountd.8,v 1.3 1997/05/19 17:06:05 horikawa Stab % .\" .Dd April 28, 1995 .Dt MOUNTD 8 .Os .Sh 名称 .Nm mountd .Nd リモートの .Tn NFS マウント要求に対するサービスを行うデーモン .Sh 書式 .Nm /sbin/mountd .Op Fl 2nr .Op Ar exportsfile .Sh 解説 .Nm mountd は、他のクライアントマシンからの .Tn NFS マウント要求のためのサーバです。 .Nm mountd は、 .Tn NFS サーバの仕様で示されているポート 番号でサービス要求を待ちます。詳細は RFC1094 .%T "Network File System Protocol Specification" の Appendix A と .%T "NFS: Network File System Version 3 Protocol Specification" の Appendix I を参照してください。 .Pp .Nm mountd では、以下のオプションや引数を指定できます: .Bl -tag -width Ds .It Fl 2 .Fl 2 オプションを使用すると、 このサーバからファイルシステムをマウントするクライアントに対し、 管理者はバージョン 2 NFS プロトコルのみの使用を強制できます。 .It Fl n このオプションは、非ルートからのマウント要求を許可します。 このオプションは、 クライアントが PC であるなど、それがどうしても必要な 場合にのみ使うようにしてください。 その場合、自動的に vfs.nfs.nfs_privport sysctl フラグがクリアされます。 このフラグはカーネルが nfs 要求を受け付けるのが、 予約されたポートからのみか否かを制御します。 .It Fl r .Fl r オプションは,レギュラーファイルに対するマウント RPC 要求を許可します。 これは,マウントプロトコルの仕様によると危険なようですが, いくつかのディスクレスワークステーションは,スワップファイルをマウント しようとしますし,それがレギュラーファイルであることを期待しています。 レギュラーファイルは, .Pa /etc/exports , で指定できないので,スワップが置かれようとしているファイルシステム全体 が, .Fl alldirs フラグとともに公開されていなければなりません。 .Ar exportsfile には、公開する( .Tn NFS エキスポートする) ファイルシステムを記述したファイル (公開設定ファイル:エキスポートファイル)のある場所を 指定します。 .\" ↓以下の文も原文に対応が無い .\" デフォルトは .\" .Pa /etc/exports .\" です。 .El .Pp 起動されると、 .Nm mountd は .Xr mount 2 システムコールによって、公開するホストアドレスとオプションを カーネル内にロードします。 公開設定ファイルを変更した場合は、 .Nm mountd -に対してハングアップシグナルを送って +に対して回線切断シグナルを送って 公開設定情報を再ロードする必要があります。 .Dv SIGHUP を送ったあと(例: kill -HUP `cat /var/run/mountd.pid` )、エキスポートファイルにエラーがあるかどうか、 syslogの出力をチェックしてください。 .Pp 動作中のカーネルは .Tn NFS を組み込んでいないものであると判明した場合、 .Nm mountd は、 .Xr vfsload 3 を用いる .Xr modload 8 コマンドを使って、 .Tn NFS を含むローダブルカーネルモジュールのロードを試みます。 これが失敗するか、 .Tn NFS LKM が使用できない場合は、 .Nm mountd はエラー終了します。 .\" ↓使用例の章は原文には存在しないのでコメントアウトする -- jpman J.Sakai .\" .Sh 使用例 .\" .Pa /etc/exports .\" の例: .\" .Pp .\" .Bd -literal -offset indent .\" /home/aino -alldirs .\" .Ed .\" .Pp .\" これは、 .\" .Pa /home/aino .\" 以下のファイルシステムをすべて .\" .Tn NFS .\" で公開しています。 .\" 詳細は、 .\" .Xr exports 5 .\" を参照してください。 .Sh 関連ファイル .Bl -tag -width /var/run/mountd.pid -compact .It Pa /etc/exports 公開設定ファイル(エキスポートファイル) .It Pa /var/run/mountd.pid 現在実行中の .Nm mountd のプロセス id .Tn ID .It Pa /var/db/mountdtab 現在マウントされているリモートファイルシステムのリスト .El .Sh 関連項目 .Xr nfsstat 1 , .Xr exports 5 , .Xr modload 8 , .Xr nfsd 8 , .Xr portmap 8 , .Xr showmount 8 .Sh 歴史 .Nm mountd ユーティリティは .Bx 4.4 から登場しています。 diff --git a/ja_JP.eucJP/man/man8/newsyslog.8 b/ja_JP.eucJP/man/man8/newsyslog.8 index 9fa4ae1c1c..849fb3ef64 100644 --- a/ja_JP.eucJP/man/man8/newsyslog.8 +++ b/ja_JP.eucJP/man/man8/newsyslog.8 @@ -1,181 +1,181 @@ .\" This file contains changes from the Open Software Foundation. .\" .\" from: @(#)newsyslog.8 .\" jpman %Id: newsyslog.8,v 1.3 1997/08/16 13:33:00 horikawa Stab % .\" %Id: newsyslog.8,v 1.1.1.1.2.6 1998/03/22 22:58:21 steve Exp % .\" .\" Copyright 1988, 1989 by the Massachusetts Institute of Technology .\" .\" Permission to use, copy, modify, and distribute this software .\" and its documentation for any purpose and without fee is .\" hereby granted, 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 names of M.I.T. and the M.I.T. S.I.P.B. not be .\" used in advertising or publicity pertaining to distribution .\" of the software without specific, written prior permission. .\" M.I.T. and the M.I.T. S.I.P.B. make no representations about .\" the suitability of this software for any purpose. It is .\" provided "as is" without express or implied warranty. .\" .Dd January 12, 1989 .Dt NEWSYSLOG 8 .Os .Sh 名称 .Nm newsyslog .Nd システムのログファイルを保守し、適切なサイズに保つ .Sh 書式 .Nm newsyslog .Op Fl Fnrv .Op Fl f Ar config_file .Sh 解説 .Nm は .Xr cron 8 から定期的に実行されるようにスケジュールされるべきプログラムです。 実行されると、 .Nm は必要に応じてログファイルを保存(アーカイブ)します。 あるログファイルを保存する必要があると判断すると、 .Nm は、``logfile'' が空になり、``logfile.0'' に前回のログファイルが入り、 ``logfile.1'' に前々回のログが入り‥‥ といった具合に、 ユーザが指定した数の保存ログが残るよう、ファイルを再編します。 オプションにより、保存ログを圧縮してスペースを節約することもできます。 .Pp ログが保存される場合には 2 つの理由があります。 そのログファイルのサイズが予めセットしておいたキロバイト数より大きくなった、 もしくは、前回ログを保存してから指定した時間が経過した、という理由です。 .Nm の粒度は、このコマンドが .Xr cron 8 からどの程度の頻度で実行されるかに依存しています。 .Nm の実行は十分速いので、毎時間実行するようにスケジュールしても 悪影響はありません。 .Pp 起動されると、 .Nm -はコンフィギュレーションファイルを読み込んで、 +は設定ファイルを読み込んで、 どのログファイルをチェックすべきかを決定します。 デフォルトでは、このコンフィギュレーションファイルは .Pa /etc/newsyslog.conf です。 コンフィギュレーションファイルの各行には、 .Nm が処理すべき特定のログファイルに関する情報を記述します。 各行は 5 つの必須フィールドと、3 つのオプションフィールドから成り、 それらは空白で区切られています。 空行や ``#'' で始まる行は無視されます。 コンフィギュレーションファイルの各フィールドは以下の通りです: .Pp .Bl -tag -width indent .It Ar logfile_name 保存するシステムログファイル名。 .It Ar owner.group 保存ファイルの所有者とグループ名を指定します。 .Ar owner あるいは .Ar group が空白のままである場合でも "." は必須です。 指定は数値、あるいは .Pa /etc/passwd か .Pa /etc/group にある名前で行います。 .It Ar mode ログファイルと保存ログファイルのモードを指定します。 .It Ar count ログファイルそのものに加えて保存しておく保存ファイルの数を指定します。 .It Ar size ログファイルのサイズが .Ar size に達すると、ログファイルは上記のように入れ換えられます。 このフィールドが .Ar * で置き換えられると、ログファイル入れ換えに際して そのサイズは考慮されなくなります。 .It Ar interval .Ar interval 時間(60 分×interval の意)が経過すると、ログファイルが入れ換えられます。 このフィールドが .Ar * で置き換えられると、前回の入れ換えからの経過時間は考慮されません。 .It Ar flags このフィールドはオプションであり、 保存に際してログファイルに特別な処理を行うかどうかを指定します。 .Ar Z フラグを指定すると、スペース節約のために 保存ファイルは .Xr gzip 1 で圧縮されます。 .Ar B フラグはファイルがバイナリファイルであることを指示し、 ログファイルが入れ換わったという意味で .Nm が挿入する .Tn ASCII メッセージを含めないようにします。 .Ar - は何も意味しませんが、 .Ar path_to_pid_file フィールドが指定された場合には埋め草として使用可能です。 .It Ar path_to_pid_file このオプションのフィールドは、 デーモンのプロセス ID を調べるために読むファイルを指定します。 このフィールドが存在する場合、 このファイルに書かれたプロセス ID に SIGHUP が送られます。 正しく認識するために、このフィールドは "/" から開始する必要があります。 .El .Sh オプション newsyslog では以下のオプションが利用できます: .Bl -tag -width indent .It Fl f Ar config_file コンフィギュレーションファイルとして .Pa /etc/newsyslog.conf に代えて .Ar config_file を使用します。 .It Fl v .Nm を詳細情報出力モードにします。 このモードでは、ログを入れ換えるあるいはそれをスキップするたびに、 そのログファイル名と理由を表示します。 .It Fl n 実際にログの入れ換えは行わず、このオプションが指定されない場合に 本来行うはずの処理内容を表示します。 .It Fl r .Nm は root として動作しなければならない、という制約を取り除きます。 もちろん、 .Nm は .Xr syslogd 8 に HUP シグナルを送れなくなりますから、 このオプションはデバッグにのみ用いるべきです。 .It Fl F ログを入れ替える条件に合致しないとしても、強制的に .Nm にログを入れ替えさせます。 システムの問題を診断しているときには、 このオプションの使用により、 問題のみを含む新しいログを提供できるので有用です。 .El .Sh 関連ファイル .Bl -tag -width /etc/newsyslog.confxxxx -compact .It Pa /etc/newsyslog.conf .Nm のコンフィギュレーションファイル .El .Sh バグ セキュリティ侵害を見つけるためにログを自動的に読むことは、 まだ行っていません。 .Sh 作者 .An Theodore Ts'o , MIT Project Athena .Pp Copyright 1987, Massachusetts Institute of Technology .Sh 関連項目 .Xr gzip 1 , .Xr syslog 3 , .Xr syslogd 8 diff --git a/ja_JP.eucJP/man/man8/ppp.8 b/ja_JP.eucJP/man/man8/ppp.8 index 365ad634d1..02778828b1 100644 --- a/ja_JP.eucJP/man/man8/ppp.8 +++ b/ja_JP.eucJP/man/man8/ppp.8 @@ -1,2701 +1,2701 @@ .\" %Id: ppp.8,v 1.19.2.37 1998/03/16 07:11:27 steve Exp % .\" jpman %Id: ppp.8,v 1.4 1997/06/08 18:41:58 saeki Stab % .Dd 20 September 1995 .Os FreeBSD .Dt PPP 8 .Sh 名称 .Nm ppp .Nd PPP (Point to Point Protocol) (別名 iijppp) .Sh 書式 .Nm .\" SOMEONE FIX ME ! The .Op macro can't handle enough args ! [ .Fl auto | .Fl background | .Fl ddial | .Fl direct | .Fl dedicated ] .Op Fl alias .Op Ar system .Sh 解説 本プログラムは、ユーザプロセスとして動作する .Em PPP パッケージです。 .Em PPP は通常、( .Xr pppd 8 でそうなっているように) カーネルの一部として実装されますが、 そのため、デバッグや動作の変更が少々難しい場合があります。 しかしながら、この実装ではトンネルデバイス (tun) を利用して、ユーザプロセスで .Em PPP を実現しています。 .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 パケットエイリアシングをサポート パケットエイリアシング (別名: IP マスカレード) により、 未登録でプライベートなネットワーク上のコンピュータからも インターネットにアクセスすることが可能です。 .Em PPP ホストはマスカレードゲートウェイとして動作します。 送信パケットの IP アドレスと TCP や UDP のポート番号は どちらもエイリアスされ、返信パケットではエイリアスが元に戻されます。 .It バックグラウンド PPP 接続をサポート バックグラウンドモードでは、接続を確立するのに成功した場合に .Nm はデーモンになります。 それ以外の場合はエラーで終了します。 これにより、 接続が成功裏に確立した場合のみコマンドを実行するようなスクリプト をセットアップすることが出来ます。 .It サーバとしての PPP 接続をサポート ダイレクトモードでは、 .Nm は標準入力/標準出力からの .Em PPP 接続を受け入れるサーバとして動作させることができます。 .It PAP と CHAP による認証をサポート PAP もしくは CHAP を用いることにより、Unix スタイルの .Xr login 1 手続きをスキップし、 .Em PPP プロトコルを代りに認証に使用することが可能です。 .It 代理 arp (Proxy Arp) をサポート .Em PPP がサーバとして動作している時、その接続について代理 arp を行うよう 設定できます。 .It パケットのフィルタリングをサポート ユーザは 4 種類のフィルタを定義できます。 .Em ifilter は受信パケットに対するフィルタです。 .Em ofilter は送信パケットに対するフィルタです。 .Em dfilter はダイアルを行うきっかけとなるパケットを定義するフィルタで、 .Em afilter は接続を保持するためのパケットを定義するフィルタです。 .It トンネルドライバは bpf (Berkeley Packet Filter) をサポート .Em PPP リンクを流れるパケットを調べるために、 .Xr tcpdump 1 を使うことができます。 .It PPP オーバ TCP をサポート .It IETF ドラフトの Predictor-1 圧縮をサポート .Nm は VJ 圧縮の他に Predictor-1 圧縮もサポートしています。 モデムは通常 (例えば v42.bis のような) 組み込みの圧縮機能を持っており、 その結果システムは .\"(訳注)「転送データレートよりも」をここにいれたいと考えています。 .\" 2.2.1R 対象(1997/04/02) Takeshi MUTOH より高いデータレートで通信できます。 これは一般には良いことですが、より高速のデータによってシリアル回線からの 割り込みが増加します。 システムはこの割り込みをモデムと通信して処理しなくてはならないため、 システムの負荷と遅延時間が増加することになります。 VJ 圧縮とは異なり、Predictor-1 圧縮はリンクを通る .Em すべての データをあらかじめ圧縮しておくことで、オーバヘッドを最小にします。 .It Microsoft の IPCP 拡張をサポート Microsoft の .Em PPP スタックを使用するクライアント (つまり Win95, WinNT) との間で ネームサーバのアドレスと NetBIOS ネームサーバのアドレスを 交渉することができます。 .El .Sh パーミッション .Nm ppp はユーザ .Dv root 、グループ .Dv network 、パーミッション .Dv 4550 でインストールされます。 デフォルトでは .Nm ppp は、起動したユーザ ID が 0 でない場合には実行しません。 これは .Dq allow users コマンドを .Pa /etc/ppp/ppp.conf に記載することにより変更することが可能です。 通常ユーザとして実行する場合には、 .Nm はユーザ ID 0 に変わり、システムのルーティングテーブルを変更するために、 システムロックファイルを作成し、 ppp の設定ファイルを読みます。 全ての外部コマンド ("shell" や "!bg" で実行されます) は、 .Nm ppp を起動したユーザ ID で実行されます。 ユーザ ID 0 にて正確になにが行われているのかに興味がある場合には、 ログ機能の .Sq ID0 を参照してください。 .Sh 始める前に 最初に .Nm を実行する時には、いくつかの初期設定を整える必要があります。 まず、カーネルにトンネルデバイスが含まれていなければ なりません (GENERIC カーネルではデフォルトで 1 つ含まれます)。 もし含まれていない場合や複数の tun インタフェースが必要な場合、 以下の行をカーネル設定ファイルに追加して、 カーネルを再構築する必要があります: .Pp .Dl pseudo-device tun N .Pp ここで .Ar N は .Em PPP 接続を行いたい最大の数です。 つぎに、 .Pa /dev ディレクトリにトンネルデバイスのエントリ .Pa /dev/tunN があるかどうかを調べてください。 ここで .Sq N は、0 から始まる tun デバイスの番号です。 もし無いようならば、"sh ./MAKEDEV tunN" を実行すれば作ることができます。 これにより 0 から .Ar N までの tun デバイスが作成されます。 最後に、ログファイルを作成します。 .Nm ppp は .Xr syslog 3 を使用して情報をログします。通常のログファイル名は .Pa /var/log/ppp.log です。 このファイルに出力を行うためには、以下の行を .Pa /etc/syslog.conf ファイルに記述してください: .Bd -literal -offset indent !ppp *.*/var/log/ppp.log .Ed .Pp TAB と書かれている場所には、実際にはタブを入力します。 スペースを使うと、なにも知らされぬままこの行は無視されます。 .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 シグナルを送ることをお忘れなく。 .Sh 手動ダイアル 以下の例では、あなたのマシン名が .Dv awfulhak であるとして説明します。 .Nm を引数無しで起動すると (前述の .Em パーミッション 参照) 次のプロンプトが表示されます: .Bd -literal -offset indent ppp ON awfulhak> .Ed .Pp プロンプトの .Sq ON の部分は常に大文字であるべきです。ここが小文字の場合、 .Dq passwd コマンドを使用してパスワードを入力しなければならないことを意味します。 実行中の .Nm に接続し、 まだ正しいパスワードを入力していない場合にのみこのような状態になります。 .Pp ここで、モデムのデバイス名、スピードやパリティの設定、 CTS/RTS 信号を使うかどうか (デフォルトでは CTS/RTS が使用されます) を 指定して、開始可能です。もしハードウェアが CTS/RTS 信号を持っていない場合 (これは PPP 可能な端末サーバに直接つなぐ場合に起こり得ます)、 .Nm は そのポートを通してどんな出力も送らず、来るはずのない信号を待ち続けます。 したがって、直接接続で通信ができないような場合には、 CTS/RTS を off にしてみてください: .Bd -literal -offset indent ppp ON awfulhak> set line /dev/cuaa0 ppp ON awfulhak> set speed 38400 ppp ON awfulhak> set parity even ppp ON awfulhak> set ctsrts on ppp ON awfulhak> show modem * モデム関連のパラメータが、ここに示されます * ppp ON awfulhak> .Ed .Pp ここでは、直接モデムと通信するために term コマンドを使用可能です: .Bd -literal -offset indent ppp ON awfulhak> term at OK atdt123456 CONNECT login: ppp Password: Protocol: ppp .Ed .Pp 相手が .Em PPP で話しはじめると、 .Nm はそれを自動的に検出してコマンドモードに戻ります。 .Bd -literal -offset indent ppp ON awfulhak> PPP ON awfulhak> .Ed .Pp これで接続されました! プロンプトの .Sq PPP が大文字に変化して、接続されたことを知らせます。 show コマンドを使用すれば、どのように事態が進行しているのかが分ります: .Bd -literal -offset indent PPP ON awfulhak> show lcp * LCP 関連の情報がここに表示されます * PPP ON awfulhak> show ipcp * IPCP 関連の情報がここに表示されます * .Ed .Pp この時点で、マシンは接続先に対するホスト単位のルート (host route) を持っています。 これはリンクの相手のホストとのみ接続可能であるという意味です。 デフォルトルートのエントリ (他のルーティングエントリを持たずに、全パケットを .Em PPP リンクの相手に送る ように、あなたのマシンに指示します)を追加したければ、 以下のコマンドを入力してください。 .Bd -literal -offset indent PPP ON awfulhak> add default HISADDR .Ed .Pp .Sq HISADDR という文字列は、相手側の IP アドレスを表します。 .Sq HISADDR の位置に .Sq INTERFACE キーワードを使用可能です。 これにより tun インタフェース上に直接経路を作成します。 ここで、(ping, telnet, ftp のような) ネットワークアプリケーションを 別のウインドウで使用可能です。 使用可能コマンドの詳細は .Em PPP コマンドリスト の節を参照してください。 .Sh 自動ダイアル 自動ダイアルを行うためには、 Dial と Login のチャットスクリプトを 用意しなければなりません。定義の例は .Pa /etc/ppp/ppp.conf.sample を見てください ( .Pa /etc/ppp/ppp.conf の書式は非常に簡単です)。 各行は単一のコメント、インクルード、ラベル、コマンドのいずれかを含みます。 .Bl -bullet -compact .It .Pq Dq # で始まる行は、コメントとして扱われます。 コメント行と認識した場合、先行する空白は無視されます。 .It インクルードは語 .Sq !include から始まる行です。 一つの引数 - インクルードするファイル - を持つ必要があります。 古いバージョンの .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 ppp を立ち上げる際に、接続先のラベル名を指定可能です。 .Dq default ラベルに関係づけられたコマンドが実行されてから、 接続先ラベルに関連づけられたコマンドが実行されます。 .Nm を引数無しで起動した場合、 .Dq default だけは実行されます。load コマンドを使用して、 .Pa /etc/ppp/ppp.conf のセクションを手動でロード可能です: .Bd -literal -offset indent PPP ON awfulhak> load MyISP .Ed .Pp ひとたび接続が確立したなら、プロンプトの .Sq ppp は .Sq PPP に変わります: .Bd -literal -offset indent # ppp MyISP ... ppp ON awfulhak> dial dial OK! login OK! PPP ON awfulhak> .Ed .Pp もし .Pa /etc/ppp/ppp.linkup が存在していれば、 .Em PPP 接続が確立された時に、その内容が実行されます。 デフォルトルート追加については。 提供されている .Pa /etc/ppp/ppp.conf.sample の .Dq pmdeman の例を参照してください。 .Dv HISADDR , .Dv MYADDR , .Dv INTERFACE という文字列はおのおのの IP アドレスとインタフェース名を表しています。 同様に、接続が閉じられると、 .Pa /etc/ppp/ppp.linkdown ファイルの内容が実行されます。 これらのファイルのフォーマットは .Pa /etc/ppp/ppp.conf と同じです。 .Sh バックグラウンドダイアル .Nm ppp を使って非対話的に接続を確立したい場合 (例えば .Xr crontab 5 エントリや .Xr at 1 ジョブから使うような場合) には、 .Fl background オプションを使います。この場合にも .Pa /etc/ppp/ppp.conf で定義された接続先のラベルを指定しなければなりません。 このラベルには .Dq set ifaddr コマンドが含まれ、 リモートの接続先の IP アドレスを定義する必要があります。( .Pa /etc/ppp/ppp.conf.sample 参照。) .Fl background が指定された場合、 .Nm はすぐに接続を確立しようとします。 複数の電話番号が指定された場合には、各電話番号が一回づつ試されます。 これらに失敗すると、 .Nm は即座に終了し、0 でない終了コードを返します。 接続に成功すると .Nm はデーモンになり、呼び出し側に終了コード 0 を返します。 デーモンは、リモートシステムが接続を終了した場合、 もしくは .Dv TERM シグナルを受け取った場合に、自動的に終了します。 .Sh ダイアルオンデマンド デマンドダイアル機能は .Fl auto または .Fl ddial オプションにて有効にされます。この場合にも .Pa /etc/ppp/ppp.conf で定義された接続先のラベルを指定しなければなりません。 これには、リモート接続先の IP アドレスを指定するための .Dq set ifaddr コマンドも書かれていなければなりません ( .Pa /etc/ppp/ppp.conf.sample を参照してください)。 .Bd -literal -offset indent # ppp -auto pmdemand ... # .Ed .Pp .Fl auto または .Fl ddial が指定された時に .Nm はデーモンとして動作しますが、以下のように診断ポートを 通じて設定を確認したり変更したりすることができます (これは .Fl background や .Fl direct のモードでも可能です): .Bd -literal -offset indent # pppctl -v 3000 show ipcp Password: IPCP [Opened] his side: xxxx .... .Ed .Pp 現在 .Xr telnet 1 を使用して対話的に会話することもできます。 .Pp これを実現するために、後述のように .Dq set server コマンドを使用する必要があります。 .Pa /etc/ppp/ppp.secret を設定し .Dv USR1 シグナルを送ることにより、 過去を振り返って診断ポートにて listen するように .Nm プログラムを実行することが可能です。 .Fl auto モードにて 送信パケットが検出された時、 .Nm は (チャットスクリプトに基づいて) ダイアルを行い、 通信相手に接続しようとします。 .Fl ddial モードでは回線がダウンしていることが確認された場合にはいつでも ダイアルが行われます。 接続に失敗したら、デフォルトの動作では 30 秒間待ち、 別の送信パケットが検出された時に接続しようとします。 この動作は .Bd -literal -offset indent set redial seconds|random[.nseconds|random] [dial_attempts] .Ed .Pp によって変更することができます。 .Sq seconds は、再び接続しようとするまでの秒数です。 引数が .Sq random の場合には、待ち時間を 0 秒から 30 秒の間でランダムに選びます。 .Sq nseconds は電話番号リストの中の次の番号をダイアルする前に待つ秒数です。( .Dq set phone コマンドを参照してください)。これのデフォルトは 3 秒です。 繰り返しますが、引数が .Sq random の場合には、待ち時間を 0 秒から 30 秒の間でランダムに選びます。 .Sq dial_attempts は、受け取った個々の送信パケットに対して、何回接続を試みるのかを示す 数字です。 このパラメータが省略された場合には、以前の値がそのまま使われます。 .Sq dial_attempts に 0 が指定された場合には、 .Nm は接続できるまでダイアルを続けます。 .Bd -literal -offset indent set redial 10.3 4 .Ed .Pp は個々の送信パケットに対して 4 回接続を試み、 番号間の待ち時間が 3 秒で、すべての番号を試した後に 10 秒待つことを表します。 複数の電話番号が指定されている場合でも、トータルのダイアル回数は 4 回のままです。 (それぞれの番号を 4 回ダイアルするのではありません)。 リンクの両端が .Nm のデマンドダイアルモードを利用している場合は、 ダイアル間隔を変更しておくのが良いでしょう。 もし、リンクの両端が同じタイムアウト時間に設定されていて、 リンクが切れて両方に送信待ちのパケットがあった場合、 両方が同時に相手を呼び出しあうことになってしまいます。 場所によっては、シリアルリンクに信頼性がなく、 切れるべきでない時にキャリアが失われるかもしれません。 セッションの途中で予期せずキャリアが失われた場合、 .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 のデフォルト値はゼロ (再接続しない) です。 このオプションを使用する際には注意が必要です。 もしローカル側のタイムアウトがリモート側よりもわずかに長いと、 リモート側がタイムアウトにより回線を切断した場合に、 再接続機能が (指定した回数まで) 起動されてしまいます。 注: この文脈においては、多くの LQR を喪失するとキャリア喪失を引き起こし、 ひいては再接続を引き起こします。 .Fl background フラグが指定された場合、接続が行えるまで すべての電話番号が最大一回ダイアルされます。 .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 を編集します。 例えば、以下のように設定すれば良いでしょう: .Dl ttyd1 "/usr/libexec/getty std.38400" dialup on secure .Xr getty 8 を起動するために .Xr init 8 プロセスに .Dv HUP シグナルを送るのを 忘れないでください。 .Dl # kill -HUP 1 .It 接続するユーザのためのアカウントを用意します。 .Bd -literal ppp:xxxx:66:66:PPP Login User:/home/ppp:/usr/local/bin/ppplogin .Ed .Pp .It .Pa /usr/local/bin/ppplogin ファイルを以下のような内容で作成します: .Bd -literal -offset indent #!/bin/sh -p exec /usr/sbin/ppp -direct .Ed .Pp (さらに制御を行うためにラベル名を指定することもできます。) .Pp ダイレクトモード .Pq Fl direct では、 .Nm は標準入力と標準出力を使って動作します。クライアント動作の .Nm と同様に、 .Xr pppctl 8 を使用するか設定済みの診断ポートに .Xr telnet 8 することで、コマンドモードでの制御が可能です。 .It オプションでサポートされている Microsoft の IPCP ネームサーバと NetBIOS ネームサーバの 交渉を有効にすることが可能です。 .Dq enable msext と .Dq set ns pri-addr [sec-addr] および .Dq set nbns pri-addr [sec-addr] を .Pa /etc/ppp/ppp.conf ファイルに追加します。 .El .Pp .Sh PPP 接続の受け入れ (方法その 2) この方法は、モデムの接続を扱うのに .Em mgetty+sendfax を使用するようにすすめている点が異なります。 最近のバージョン (0.99 以降) では、 .Dq AUTO_PPP オプションをつけてコンパイルすることで、クライアントが ログインプロンプトに向かって .Em PPP を話すのを検出することができます。 手順は以下の通りです: .Bl -enum .It AUTO_PPP オプションが使えるように、バージョン 0.99 か それ以降の mgetty+sendfax を入手、設定、インストールします。 .It モデムが接続されているポートで mgetty が起動されるように .Pa /etc/ttys を編集します。 例えば、以下のように設定すれば良いでしょう: .Dl cuaa1 "/usr/local/sbin/mgetty -s 57600" dialup on .It 接続するユーザのためのアカウントを用意します。 .Bd -literal Pfred:xxxx:66:66:Fred's PPP:/home/ppp:/etc/ppp/ppp-dialup .Ed .Pp .It ファイル .Pa /etc/ppp/sample.ppp-dialup , .Pa /etc/ppp/sample.ppp-pap-dialup , .Pa /etc/ppp/ppp.conf.sample をよく読んで、要点を理解してください。以下のようにすると .Pa /etc/ppp/ppp-pap-dialup が .Pa /usr/local/etc/mgetty+sendfax/login.conf から呼び出されます。 .Dl /AutoPPP/ - - /etc/ppp/ppp-pap-dialup .El .Pp .Sh 内向き接続の認証 通常、接続の受信側は相手が相手自身を認証することを要求します。 これは通常 .Xr login 1 にて行われますが、代りに PAP か CHAP を使用可能です。 2 つのうちで CHAP の方がより安全ですが、 クライアントによってはサポートしていないものがあります。 どちらを使いたいか決めたら、 .Sq enable chap または .Sq enable pap を .Pa ppp.conf の適切なセクションに追加してください。 .Pp その後、 .Pa /etc/ppp/ppp.secret ファイルの設定を行う必要があります。 このファイルは、クライアントになりうるマシンごとに 1 行を含みます。 各行は 4 つまでのフィールドからなります: .Bd -literal -offset indent name key [hisaddr [label]] .Ed .Pp .Ar name と .Ar key は期待されるクライアントを指定します。 .Pa ppp.secret の如何なる .Ar name No / Ar key の組み合わせにおいても適切でない返答をクライアントが与える場合、 認証は失敗します。 .Pp 認証に成功したならば、 .Pq 指定時には .Ar hisaddr を IP 番号交渉時に使用します。詳細は .Dq set ifaddr コマンドを参照してください。 .Pp 認証に成功し .Ar label が指定された場合、現在のシステムラベルは .Ar label にマッチするように修正されます。 このことはファイル .Pa ppp.linkup と .Pa ppp.linkdown の後続のパーズに影響があります。 .Sh PPP オーバ TCP (別名: トンネリング) シリアルリンク上以外の .Nm の使用方法として、 ホストとポートを指定することにより、 TCP 接続を使用することが可能です: .Dl set device ui-gate:6669 シリアルデバイスをオープンする代りに、 .Nm は指定されたマシンの指定されたソケットへの TCP 接続をオープンします。 .Nm は telnet プロトコルを使用しないこと、 telnet サーバと交渉できないことに注意を払うべきです。 受信マシン (ui-gate) 上に、 この ppp 接続を受信するポートを設定する必要があります。まず .Pa /etc/services を更新して、サービスを定義します: .Dl ppp-in 6669/tcp # Incoming PPP connections over tcp そして .Pa /etc/inetd.conf を更新して、このポートへの受信接続をどのように扱うかを .Xr inetd 8 に指示します: .Dl ppp-in stream tcp nowait root /usr/sbin/ppp ppp -direct ppp-in .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 add 10.0.1.0 255.255.255.0 10.0.4.2 .Ed .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 awfulhak (起動側) の .Pa /etc/ppp/ppp.conf エントリは以下を含む必要があります: .Bd -literal -offset indent ui-gate: set escape 0xff set device ui-gate:ppp-in set dial set timeout 30 15 5 set log Phase Chat Connect Carrier hdlc LCP IPCP CCP tun set ifaddr 10.0.4.2 10.0.4.1 add 10.0.2.0 255.255.255.0 10.0.4.1 .Ed .Pp PAP を有効にしようとしている場合、以下の設定も必要です: .Bd -literal -offset indent set authname MyAuthName set authkey MyAuthKey .Ed .Pp 我々は、 ui-gate に 10.0.4.1 のアドレスを割り当て、 awfulhak に 10.0.4.2 のアドレスを割り当てようとしています。 接続をオープンするためには、以下をタイプするだけで良いです。 .Dl awfulhak # ppp -background ui-gate 結果として、 awfulhak にはネットワーク 10.0.2.0/24 への新たな「ルート」が、 ui-gate にはネットワーク 10.0.1.0/24 への新たな「ルート」が、 TCP 接続経由でそれぞれ作成されます。 ネットワークは実質的にブリッジされます - 下にある TCP 接続はパブリックなネットワーク (例えばインターネット) を またがっても良いです。 また 2 つのゲートウェイ間では ppp トラフィックは 概念的に TCP ストリーム中でカプセル化されます (パケットがパケットに対応するわけではありません)。 この機構の大きな欠点は、同時に 2 つの「配送保証」機構が存在することです - この 2 つとは、下の TCP ストリームと .Em PPP リンク上で使用されるプロトコルであり、おそらくまた TCP でしょう。 パケット喪失が起ると、両者はそれぞれの方法で喪失した パケットを再送しようと するでしょう。 .Sh パケットエイリアシング .Fl alias コマンドラインオプションにより、 パケットエイリアシングが有効になります。 これにより、 .Nm ホストがローカルエリアネットワークの他のコンピュータに対して マスカレードゲートウェイとして動作するようになります。 送信される IP パケットは、まるで .Nm ホストから来たかのようにエイリアスされ、 受信パケットは、それがローカルエリアネットワークの正しいマシンに 送られるようにエイリアスが戻されます。 パケットエイリアシングにより、 未登録でプライベートなサブネット上のコンピュータを 外部から見えないようにしつつ、 インターネットへアクセス可能とします。 一般に、 .Nm が正しく動作していることの確認は、 まず最初にパケットエイリアシングを禁止して行います。 次に .Fl alias オプションを有効にして、 .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 パケットのフィルタリング この実装では、パケットのフィルタリングがサポートされています。 ifilter, ofilter, dfilter, afilter の 4 種類のフィルタがあります。 ここでは基本的なことについて書くことにします。 .Bl -bullet -compact .It フィルタ定義は以下のような構文になっています。 set filter-name rule-no action [src_addr/src_width] [dst_addr/dst_width] [proto [src [lt|eq|gt] port ]] [dst [lt|eq|gt] port] [estab] .Bl -enum .It .Sq filter-name には、ifilter, ofilter, dfilter, afilter のうちのどれか一つを指定します。 .It .Sq permit と .Sq deny の二つの action があります。 もし、あるパケットが規則に一致した場合、 結びつけられた action が直ちに実行されます。 .It .Sq src_width と .Sq dst_width は、アドレスの範囲を表現するネットマスクのように働きます。 .It .Sq proto は icmp, udp, tcp のうちのいずれか一つです。 .It .Sq port number は数字で指定するか、 .Pa /etc/services のサービス名で指定することができます。 .El .Pp .It 各フィルタは規則 0 から始まり、20 個までの規則をもつことができます。 規則の集合は、規則 0 が定義されていなければ、有効にはなりません。 すなわち、デフォルトでは全てが通されます。 .It パケットにマッチする規則が無い場合は、パケットは破棄 (ブロック) されます。 .It すべての規則を消去するには、 .Dq set filter-name -1 を使ってください。 .El .Pp .Pa /etc/ppp/ppp.conf.filter.example を参照してください。 .Sh アイドルタイマ、回線品質要求タイマ、リトライタイマの設定 アイドルタイマを調べたり/設定するためには、それぞれ .Dq show timeout と .Dq set timeout idle [LQR [FSM-resend]] コマンドを使ってください: .Bd -literal -offset indent ppp ON awfulhak> set timeout 600 .Ed .Pp タイムアウト時間は秒数で指定します。デフォルト値は timeout が 180 秒 (3 分)、lprtimer が 30 秒、 retrytimer が 3 秒です。 アイドルタイマ機能を使わないようにするためには、 次のコマンドを利用してください。 .Bd -literal -offset indent ppp ON awfulhak> set timeout 0 .Ed .Pp .Fl auto モードでは、アイドルタイムアウトが発生すると .Nm プログラムは実行したままで .Em PPP セッションを終了します。別の引金となるパケットがきた時に リンクを再び確立しようとします。 .Sh Predictor-1 および DEFLATE 圧縮 このバージョンでは、 現在の IETF ドラフトに基づき、CCP および Predictor type 1 圧縮 もしくは deflate 圧縮をサポートしています。 デフォルトの動作として、 .Nm は、接続相手が同意 .Pq あるいは要求 した場合に、 この機能を使おうと (もしくは受け入れようと) します。 .Nm は deflate プロトコルを優先します。 これらの機能を使用したくない時には .Dq disable と .Dq deny のコマンドを参照してください。 .Pp .Dq disable deflate か .Dq deny deflate の一方を使用することにより、 方向ごとに異ったアルゴリズムを使用することができます。 .Sh IP アドレスの制御 .Nm は IP アドレスの交渉のために IPCP を使います。接続の両側は、自分が 使おうとするアドレスを提示し、要求された IP アドレスが受け入れ可能な ものであれば、相手に ACK (肯定応答) を返します。 受け入れることができなければ、別の IP アドレスの使用を促すために .Nm は相手に NAK (否定応答) を返します。 接続の両側が受け取った要求に同意し (ACK を送っ) た時、 IPCP はオープン状態にセットされ、ネットワーク層での接続が確立されます。 IPCP の動作を制御するために、この実装はローカルとリモートの IP アドレスを定義するための .Dq set ifaddr コマンドを持っています。 .Bd -literal -offset indent set ifaddr [src_addr [dst_addr [netmask [trigger_addr]]]] .Ed .Pp ここで、 .Sq src_addr はローカル側で使おうと思っている IP アドレスで、 .Sq dst_addr はリモート側が使用すべき IP アドレスです。 .Sq netmask は使用すべきネットマスクです。 .Sq src_addr と .Sq dst_addr のデフォルトは 0.0.0.0 であり、 .Sq netmask のデフォルトは .Sq src_addr に適したマスク値です。 .Sq netmask は小さくすることのみ可能です。便利な値は 255.255.255.255 でしょう。 誤った .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 上の例の意味は次の通りです: .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 アドレスを制御する サーバとして動作しており、もう一方はその方針に従わなくてはなりません。 より柔軟な動作をさせるために、`ifaddr' 変数の IP アドレス指定を もっと緩やかにすることが可能です: .Pp .Dl set ifaddr 192.244.177.38/24 192.244.177.2/20 .Pp スラッシュ (/) に続く数字は、この IP アドレスで意味のあるビットの数を 表現しています。上の例は以下のことを示しています。 .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 コマンドを使って、ダイアルスクリプトにプロバイダの電話番号を記述します。 ダイアルやリダイアルに使用する電話番号は、 パイプ (|) またはコロン (:) で区切って 複数指定することができます。例えば、以下のようになります。 .Bd -literal -offset indent set phone "111[|222]...[:333[|444]...]... .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 秒以内に受信できなければ、 もう一度 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 ログ使用時には) コマンドのログは特別な方法でとられ、( .Sq ******** とログされますので) 実際のパスワードが危険にさらされることはありません。 .Ar chat ログ使用時には、実際のパスワードの代りに '\\P' とログされます。 .Pp ログインスクリプトはプロバイダによって大きく違うものになるでしょう。 .It シリアル回線と通信速度を指定するためには .Dq set line と .Dq set speed を使います。例えば以下のようになります。 .Bd -literal -offset indent set line /dev/cuaa0 set speed 115200 .Ed .Pp FreeBSD では cuaa0 が一つめのシリアルポートになります。 OpenBSD で .Nm を実行している場合には cua00 が一つめです。 あなたのモデムが 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 ISP があなたが提示した最初の IP 番号を受け付ける場合、 第 3, 4 の引数に .Dq 0.0.0.0 を指定してください。 これにより ISP が番号を割当てます。 (3 つめの引数は、 .Sq src_addr に対してデフォルトのマスクよりも制約が緩いため、無視されます。) .El .Pp 自分の IP アドレスもプロバイダの IP アドレスも 知らない場合には、以下の例のようにするとよいでしょう。 .Bd -literal -offset indent set ifaddr 10.10.10.10/0 10.10.11.11/0 0.0.0.0 0.0.0.0 .Ed .Pp .It ほとんどの場合、プロバイダはデフォルトルータでもあるでしょう。 この場合で .Fl auto モード使用時には、以下の行を .Pa /etc/ppp/ppp.conf に追加します。 .Bd -literal -offset indent delete ALL add default HISADDR .Ed .Pp これは、 .Nm が使用している tun インタフェースに関連する直接ではない ルーティングエントリを削除して、 それから 10.10.11.11 をデフォルトルートとして追加するよう .Nm に指示します。 .Fl auto モードを使用していない時にはこれは必要ありません。 なぜなら、 .Nm がすぐにダイアルして新しい IP 番号を相手と交渉できるからです。 .Pp .Fl auto モードを使用していないとき、もしくは動的 IP 番号を使用するときには、 次の 2 行を .Pa /etc/ppp/ppp.linkup ファイルに追加しておかなければなりません: .Bd -literal -offset indent delete ALL add default HISADDR .Ed .Pp HISADDR は「相手」の IP 番号を意味するマクロです。 使用する IP 番号に関して (IPCP を使用して) 合意 もしくは ( .Dq set ifaddr を使用して) 設定してはじめて、使用可能です。 一旦接続が確立されると、 .Nm は直接ではないインタフェースのルートを全て削除し、 デフォルトルートが相手の IP 番号を指すように設定します。 .Pa /etc/ppp/ppp.conf で使ったのと同じラベルを使用してください。 .Pp もしコマンドを対話的に入力しているのであれば、接続に成功した後で .Bd -literal -offset indent add default HISADDR .Ed .Pp とタイプするだけで充分です。 .It プロバイダが PAP/CHAP による認証を要求している場合は、 .Pa /etc/ppp/ppp.conf ファイルに以下の行を追加してください: .Bd -literal -offset indent set authname MyName set authkey MyPassword .Ed .Pp デフォルトではどちらも受け付けられますので、ISP が何を要求しても大丈夫です。 .El .Pp 現実の例を見たい場合には、 .Pa /etc/ppp/ppp.conf.sample と .Pa /etc/ppp/ppp.linkup.sample を参照してください。 ラベル pmdemand は、ほとんどのプロバイダで使用できるでしょう。 .Sh ログ機能 .Nm は以下のログ情報を、 .Xr syslog 3 経由で、もしくはスクリーンに出力することができます: .Bl -column SMMMMMM -offset indent .It Li Async 非同期レベルパケットの 16 進ダンプ .It Li Carrier 'CARRIER' まで含めたチャットログの生成 .It Li CCP CCP パケットトレースの生成 .It Li Chat チャットスクリプトのトレースログの生成 .It Li Command コマンド実行のログ .It Li Connect 完全なチャットログの生成 .It Li Debug (非常に長い)デバッグ情報のログ .It Li HDLC HDLC パケットの 16 進ダンプ .It Li ID0 ユーザ ID 0 で実行された全関数呼び出しを詳細に記録 .It Li IPCP IPCP パケットトレースの生成 .It Li LCP LCP パケットトレースの生成 .It Li Link アドレスの割当およびリンクの確立、解放イベントのログ .It Li LQM LQR レポートの生成 .It Li Phase フェイズ遷移ログの出力 .It Li TCP/IP 全 TCP/IP パケットのダンプ .It Li TUN ログの各行に tun デバイスを含めます -.It Li Warning ターミナルデバイスへの出力。ターミナルが存在しない場合は、LOG_WARNING を使用してファイルに送ります。 -.It Li Error ターミナルデバイスとログファイルへの出力で、LOG_ERROR を使用します。 +.It Li Warning 端末デバイスへの出力。端末が存在しない場合は、LOG_WARNING を使用してファイルに送ります。 +.It Li Error 端末デバイスとログファイルへの出力で、LOG_ERROR を使用します。 .It Li Alert ログファイルへの出力で、LOG_ALERT を使用します。 .El .Pp .Dq set log コマンドで、ログの出力レベルを設定することができます。 また、複数のレベルを単一コマンドラインにて指定することも可能です。 デフォルトは、 .Dq set log Carrier Link Phase です。 .Pp スクリーンに直接ログを表示することも可能です。 文法は同じで、語 .Dq local が .Dq set log の直後に付くことだけが違います。 デフォルトは .Dq set log local (つまり、直接スクリーンにログ表示) です。 .Pp .Dq set log Op local への最初の引数が '+' か '-' の文字で始まる場合、 現在のログレベルを消去せずに修正します。例えば: .Bd -literal -offset indent PPP ON awfulhak> set log carrier link phase PPP ON awfulhak> show log Log: Carrier Link Phase Warning Error Alert Local: Warning Error Alert PPP ON awfulhak> set log -link +tcp/ip -warning PPP ON awfulhak> set log local +command PPP ON awfulhak> show log Log: Carrier 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 20 .It INT このシグナルを受信すると、現在の接続がもしあればそれを終了します。 .Fl auto もしくは .Fl ddial のモードではない場合、 .Nm は終了します。 .It HUP, TERM, QUIT .Nm を終了させます。 .It USR1 対話モードではない場合、 .Nm にサーバソケットが存在する場合にはそれらをクローズさせ、 3000 + トンネルデバイス番号のインターネットソケットを オープンさせます。 これは、適切なローカルパスワードが .Pa /etc/ppp/ppp.secret に指定されている場合にのみ行われます。 .It USR2 .Nm に全サーバソケットをクローズさせます。 .El .Pp .Sh PPP コマンドリスト この節では利用可能コマンドとその効果をリストします。 .Nm ppp セッションで対話的に使用することも、 設定ファイルで指定することも、 .Xr pppctl 8 もしくは .Xr telnet 1 セッションで指定することも可能です。 .Bl -tag -width 20 .It accept|deny|enable|disable option.... これらのディレクティブは 最初の接続においてどのように相手と交渉するかを .Nm に指示します。各 .Dq option は、accept/deny および enable/disable のデフォルトを持ちます。 .Dq accept は相手がこのオプションを要求したら、ACK を送ることを意味します。 .Dq deny は相手がこのオプションを要求したら、NACK を送ることを意味します。 .Dq enable はこのオプションを当方が要求することを意味します。 .Dq disable はこのオプションを当方が要求しないことを意味します。 .Pp .Dq option は以下のいずれかです: .Bl -tag -width 20 .It acfcomp デフォルト: enable かつ accept。 ACFComp はアドレスおよびコントロールフィールド圧縮 (Address and Control Field Compression) を意味します。 LCP パケット以外は非常に良く似たフィールトを持ちますので、 簡単に圧縮可能です。 .It chap デフォルト: 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" を使用するものがあります。 詳細については .Dq set encrypt コマンドの記述を参照してください。 .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 Magnalink Variable Resource Compression と指定されています! .Nm は .Nm pppd と交渉する能力がありますが、 .Dq pppd-deflate が .Ar enable かつ .Ar accept されている場合のみです。 .It lqr デフォルト: disable かつ accept。 このオプションはリンク品質要求 (Link Quality Request) を送信するかどうかを 決定します。 LQR は、モデムのキャリア検出を使用せずに、リンクダウンを .Nm に決定させるプロトコルです。 .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 オプションを参照)。 .Pp クライアントとして PAP を使用する場合、 .Dq AuthName と .Dq AuthKey を .Pa /etc/ppp/ppp.conf に指定するだけで良いです。 PAP はデフォルトで accept されます。 .It pppd-deflate デフォルト: disable かつ deny。 .Ar deflate オプションのバリエーションで、 .Xr pppd 8 プログラムとの交渉を許可します。 詳細は、上述の .Ar deflate 部分を参照してください。デフォルトでは抑止されますので、 .Pa rfc1975 に従っていないことになります。 .It pred1 デフォルト: enable かつ accept。 このオプションは圧縮制御プロトコル (Compression Control Protocol; CCP) に Predictor 1 圧縮を使用するかどうかを決定します。 .It protocomp デフォルト: enable かつ accept。 このオプションは PFC (プロトコルフィールド圧縮) の交渉を行うために使用されます。 この機構により、 プロトコルフィールドが 2 オクテッドから 1 オクテッドに減ります。 .It vjcomp デフォルト: enable かつ accept。 このオプションは Van Jacobson ヘッダ圧縮を使用するかどうかを決定します。 .El .Pp 以下のオプションは、実際には相手と交渉しません。 それゆえ accept および deny は意味を持ちません。 .Bl -tag -width 20 .It msext デフォルト: disable。 このオプションは Microsoft の .Em PPP 拡張の使用を許可します。 これにより、DNS と NetBIOS NS の交渉をサポートします。 このオプションを有効にすることにより、"set ns" と "set nbns" で 与えられる値を渡せるようになります。 .It passwdauth デフォルト: disable。 このオプションを指定することにより、 PAP 認証コードが呼び出し側を認証する時に、 .Pa /etc/ppp/ppp.secret ファイルではなくパスワードファイル ( .Xr passwd 5 参照) を使用させます。 .It proxy デフォルト: disable。 このオプションを指定することにより、 .Nm に相手のためにプロクシ ARP をさせます。 .It throughput デフォルト: disable。 このオプションを有効にすると、 .Nm はスループット統計を収集します。 ずれ動く 5 秒間のウィンドウにおいて入出力が検査され、 現在、最良、総計の数値が保持されます。 このデータは関連する .Em PPP 層が終了するときに出力され、また .Dq show コマンドで表示することで得られます。スループット統計は .Dq IPCP と .Dq modem のレベルで利用可能です。 .It utmp デフォルト: enable。 通常ユーザが PAP もしくは CHAP で認証された時で、 .Nm が .Fl direct モードで実行されている時は、このユーザのエントリが utmp ファイルおよび wtmp ファイルに作成されます。 このオプションを disable すると、 .Nm は utmp および wtmp のエントリを作成しません。 通常、 ユーザがログインしかつ認証することを要求する場合のみ必要です。 .El .It add[!] dest mask gateway .Ar dest は宛先 IP アドレスであり、 .Ar mask はそのマスクです。 .Ar 0 0 はデフォルトルートを意味します。 .Ar dest および .Ar mask の引数の場所で、シンボル名 .Sq default を使用可能です。 .Ar gateway は、 .Ar dest マシン/ネットワークに至る、次のホップのゲートウェイです。 宛先にシンボル名 .Sq MYADDR と .Sq HISADDR を使用可能であり、 .Ar gateway には .Sq HISADDR もしくは .Sq INTERFACE を使用可能です。 .Sq MYADDR はインタフェースアドレスに置き換えられ、 .Sq HISADDR はインタフェースの宛先アドレスに置き換えられ、 .Sq INTERFACE は現在のインタフェース名に置き換えられます。 インタフェースの宛先アドレスが ( .Dq set ifaddr によって) 割当てられていない場合、現在の .Sq INTERFACE が .Sq HISADDR の代りに使用されます。 .Pp このコマンドを .Pa ppp.conf ファイルで使用するときの制限についての詳細は、後述の .Dq set ifaddr コマンドを参照してください。 .Pp .Ar add! コマンド ( .Dq \&! に注意) 使用時には、 ルートが存在する場合には .Sq route change コマンド (詳細は .Xr route 8 参照) にてルートを更新します。 .It allow ..... このコマンドは .Nm と設定ファイルへのアクセスを制御します。 ユーザレベルでのアクセスは可能であり、 設定ファイルのラベルと .Nm の実行モードに依存します。 例えば、ユーザ .Sq fred のみがラベル .Sq fredlabel に .Fl background モードでアクセスできるように、 .Nm を構成したいかもしれません。 .Pp ユーザ ID 0 はこれらのコマンドの対象外です。 .Bl -tag -width 20 .It allow user|users logname... デフォルトでは、ユーザ ID 0 のみがアクセスを許されています。 このコマンドが指定されると、 .Dq allow users が記載されている個所に列挙されているユーザのアクセスが可能となります。 .Sq default セクションは 常に最初にチェックされます (スタートアップ時に常にロードされる唯一の セクションです)。後続する .Dq allow users コマンドは、先行するコマンドに優先します。 あるラベル以外のすべてにアクセスを許すことが可能であり、 そのためにはデフォルトユーザを .Sq default セクションで指定し、新しいユーザリストをこのあるラベルに指定します。 .Pp ユーザ .Sq * が指定されると、全ユーザにアクセスが許されます。 .It allow mode|modes modelist... デフォルトでは全 .Nm モードが使用可能です。 このコマンドが使用されると、 このコマンドが指定されたラベルのロードに許されるアクセスモードが制限されます。 .Dq allow users コマンドと同様、 各 .Dq allow modes コマンドは先行するコマンドに優先し、 .Sq default セクションは常に最初にチェックされます。 .Pp 使用可能なモードは以下の通りです: .Sq interactive , .Sq auto , .Sq direct , .Sq dedicated , .Sq ddial , .Sq background , .Sq * . .El .Pp .It alias ..... このコマンドは .Nm 組込みのエイリアシング (マスカレーディング) 機能を 制御するために使用します。 このコードが必要となるまで、 .Nm はこのコードをロードしません。 エイリアスライブラリがあなたのシステムにインストールされないことも 大いにありえます (エイリアスライブラリがセキュリティ的に危険だと認識する管理者もいます)。 あなたのシステムでエイリアシングが有効になると、 以下のコマンドが使用可能となります: .Bl -tag -width 20 .It alias enable [yes|no] エイリアシングを有効もしくは無効にします。 .Fl alias コマンドラインフラグは .Dq alias enable yes と同じ意味です。 .It alias port [proto targetIP:targetPORT [aliasIP:]aliasPORT] このコマンドにより、 マシン [aliasIP] の .Dq aliasPORT へ到着する接続を、 .Dq targetIP の .Dq targetPORT へリダイレクトします。 proto を指定した場合、指定したプロトコルの接続のみマッチします。 あなたのゲートウェイの後のマシンでインターネット電話等を実行したい場合に、 このオプションは有用です。 .It alias addr [addr_local addr_alias] このコマンドにより、 .Dq addr_alias へのデータを .Dq addr_local へリダイレクトします。 あなたのゲートウェイの後で 少数の実 IP アドレスを持ち、 これらをあなたのゲートウェイの後の特定のマシンにマップしたい場合に有用です。 .It alias deny_incoming [yes|no] yes に設定した場合、ファイアウォールがパケットを落すのと同様に、 全ての入力の接続を拒否します。 .It alias log [yes|no] このオプションを指定することにより、 種々のエイリアシングの統計と情報を、ファイル .Pa /var/log/alias.log にログします。 .It alias same_ports [yes|no] 有効になると、 エイリアスライブラリが出力パケットのポート番号を変更しようとすることを 止めさせます。 RPC や LPD といった、 ウェルノウンポート (well known port) からの接続を要求する プロトコルをサポートするのに有用です。 .It alias use_sockets [yes|no] 有効になると、 エイリアスライブラリにソケットを作成させ、 正しい ftp データ入力や IRC 接続を保証できるようになります。 .It alias unregistered_only [yes|no] 出力パケットを、登録されていない送信元アドレスに変更することだけを行います。 RFC1918 に依ると、登録されていない送信元アドレスは 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16 です。 .It alias help|? このコマンドにより、 使用可能なエイリアスコマンドのまとめを表示します。 .El .Pp .It [!]bg command 指定したコマンドをバックグラウンドで実行します。 擬似引数 .Dv HISADDR , .Dv INTERFACE , .Dv MYADDR は適切な値に置き換えられます。 コマンド実行中に .Nm を停止させたい場合は、 .Dv shell コマンドを使用してください。 .It close 現在の接続をクローズします (が終了しません)。 .It delete[!] dest このコマンドは指定した .Ar dest IP アドレスのルートを削除します。 .Ar dest に .Sq ALL が指定された場合、 .Nm が使用中のインタフェースの非直接エントリが全て削除されます。 tunX のエントリで実際のリンク以外を削除することを意味します。 .Ar dest に .Sq default が指定された場合、デフォルトルートが削除されます。 .Pp .Ar delete! コマンドが使用された場合 (最後の .Dq \&! に注意)、存在しないルートについて .Nm は文句を言わなくなります. .It dial|call [remote] .Dq remote が指定されている場合、 .Dq remote システムへの接続が .Dq dial および .Dq login スクリプトを使用して確立されます。 そうでない場合、現在の設定が使用されて接続が確立されます。 .It display 上述 .Dq accept|deny|enable|disable option.... で指定された、交渉可能な値の現在の状態を表示します。 .It down リンクを切断しますが、 綺麗な方法ではなく、物理層が使用不能になったように見えます。 このコマンドを使用することは丁寧ではないとされています。 .It help|? [command] 利用可能なコマンドをリストします。 .Dq command を指定した場合、このコマンドの使用方法を表示します。 .It load [remote] 指定された .Dq remote ラベルをロードします。 .Dq remote が指定されない場合、 .Dq default ラベルが仮定されます。 .It passwd pass 全ての .Nm コマンドセットにアクセスするために要求されるパスワードを指定します。 このパスワードは診断ポート ( .Dq set server コマンド参照) に接続するときに必要です。 .Ar pass の指定は、 .Dq set server コマンドラインもしくは ローカルホストの .Pa /var/log/ppp.secret エントリにて可能です。 .Ar command ログが有効でも、値 .Ar pass はログされず、文字列 .Dq ******** がログされます。 .It quit|bye [all] .Nm を終了します。 .Nm が対話モードであるか .Dq all 引数が指定された場合、 .Nm は終了し、接続をクローズします。 単に .Dq quit を .Xr pppctl 8 もしくは .Xr telnet 1 のセッションから発行しても、現在の接続をクローズしません。 .It save このオプションは (まだ) 実装されていません。 .It set[up] var value このオプションは以下の変数の設定のために使用します: .Bl -tag -width 20 .It set accmap hex-value ACCMap は非同期制御文字マップ (Asyncronous Control Character Map) を 意味します。 これはいつも相手と交渉され、デフォルト値は 0x00000000 です。 このプロトコルが必要なのは、 (XON/XOFF などの) 特定の文字を終点間で受渡すことに依存するハードウェアを 使用する場合です。 .It set filter-name rule-no action [src_addr/src_width] [dst_addr/dst_width] [proto [src [lt|eq|gt] port ]] [dst [lt|eq|gt] port] [estab] .Pp .Nm ppp は 4 つのフィルタセットをサポートします。 afilter は接続を維持 - アイドルタイマをリセット - するためのパケットを指定します。 dfilter は .Fl auto モードにおいて .Nm にリダイアルさせるパケットを指定します。 ifilter はマシンに入力可能なパケットを指定します。 ofilter はマシンから出力可能なパケットを指定します。 デフォルトでは全てのフィルタが全パケットを通過させる値に設定されます。 ルールは .Dq n に従って順番に処理されます。 各セットに対し 20 までのルールを指定可能です。 指定されるセットにおけるどのルールにもマッチしないパケットは破棄されます。 ifilter と ofilter では、パケットをドロップすることを意味します。 afilter では、アイドルタイマをリセットしないことを意味します。 dfilter ではダイアルさせることにはならないことを意味します。 上述のパケットのフィルタリングの節を参照してください。 .It set authkey|key value クライアントモードでの PAP または CHAP の交渉で使用される 認証キー (もしくはパスワード) を、指定した値に設定します。 ダイアルもしくはログインスクリプトの '\\P' シーケンス で使用されるパスワードを指定しますが、 実際のパスワードがログされることを防ぎます。 .Ar command ログが有効な場合、セキュリティの観点から、 .Ar value は .Ar ******** としてログされます。 .It set authname id クライアントモードでの PAP または CHAP の交渉で使用される 認証 ID を設定します。 .It set ctsrts ハードウェアフロー制御をセットします。 これがデフォルトです。 .It set device|line value[,value...] .Nm が使用するデバイスを指定する .Dq value に設定します。 全シリアルデバイス名は .Pa /dev/ から始まることが仮定されています。 .Dq value が .Pa /dev/ から始まらない場合、 .Dq host:port の形式である必要があります。 この場合、 .Nm 指定された .Dq host の指定された .Dq port と接続しようとします。 詳細は上述の .Em PPP オーバ TCP の節を参照してください。 複数の .Dq value を指定した場合、 .Nm は全デバイスについて実行し終るまで、順番にオープンを試みます。 .It set dial chat-script 相手へダイアルする際に使用されるチャットスクリプトを指定します。 後述の .Dq set login コマンドも参照してください。 チャットスクリプトのフォーマットの詳細については、 .Xr chat 8 と設定ファイルの例を参照してください。 以下の特殊な .Sq value をチャットスクリプトに指定可能です: .Bd -literal -offset indent .It \\\\\\\\\\\\\\\\c .Sq 送信 文字列の最後の文字として使用した場合、 改行を追加してはならないことを意味します。 .It \\\\\\\\\\\\\\\\d チャットスクリプトがこのシーケンスに出会うと、2 秒待ちます。 .It \\\\\\\\\\\\\\\\p チャットスクリプトがこのシーケンスに出会うと、1/4 秒待ちます。 .It \\\\\\\\\\\\\\\\n 改行文字と置き換えられます。 .It \\\\\\\\\\\\\\\\r 復改文字と置き換えられます。 .It \\\\\\\\\\\\\\\\s 空白文字と置き換えられます。 .It \\\\\\\\\\\\\\\\t タブ文字と置き換えられます。 .It \\\\\\\\\\\\\\\\T 現在の電話番号と置き換えられます (後述の .Dq set phone 参照)。 .It \\\\\\\\\\\\\\\\P 現在の .Ar authkey 値と置き換えられます (前述の .Dq set authkey 参照)。 .It \\\\\\\\\\\\\\\\U 現在の .Ar authname 値と置き換えられます (前述の .Dq set authname 参照)。 .Ed .Pp 2 つのパーザがこれらのエスケープシーケンスを検査することに注意してください。 .Sq チャットのパーザ にエスケープ文字を見せるには、 .Sq コマンドパーザ からエスケープする必要があります。 つまり、2 つのエスケープを使用する必要があります。例えば次のようにします: .Bd -literal -offset indent set dial "... ATDT\\\\T CONNECT" .Ed .Pp チャットスクリプトから外部コマンドを実行することもできます。 そうするためには、最初の文字をエクスクラメーションマーク .Pq Dq \&! にします。 コマンドが実行されると、標準入力と標準出力がモデムデバイス ( .Dq set device 参照) に向けられ、標準エラー出力が .Nm に読まれて受信待ち文字列もしくは送信文字列に置き換えられます。 .Nm が対話モードで実行している場合、ファイルデスクリプタは .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 .It set hangup chat-script モデムをクローズする前にこれをリセットする時に使用する、 チャットスクリプトを指定します。 .It set encrypt MSChap|MD5 CHAP チャレンジを発行するときに要求および使用する 暗号化アルゴリズムを指定します。 MSChap に設定すると、 .Nm は CHAP チャレンジ送信時 (CHAP が enable されていると仮定しています) に Microsoft RAS のように振舞います。 チャレンジへの応答時には、 .Nm チャレンジに基いてどのように暗号化するかを決定しますので、 この設定は無視されます。 .Bl -tag -width 注: .It 注: Microsoft の暗号化アルゴリズムは MD4 と DES の組み合わせを使用しますので、 .Nm 構築前にマシンに DES 暗号化ソフトウェアをインストールしていないと、 このオプションは使用できません - この場合 MD5 のみ使用されます。 .El .Pp .It set escape value... このオプションは上述の .Dq set accmap オプションに似ています。 リンクを経由する時に「エスケープ」される文字を指定するために使用します。 .It set ifaddr [myaddr [hisaddr [netmask [triggeraddr]]]] このコマンドは、IPCP 交渉の間使用される IP アドレスを指定します。 アドレスのフォーマットは以下の通りです。 .Dl a.b.c.d/n a.b.c.d は IP アドレスであり、 n はこのうち何ビットが有効であるかを示します。 もし /n ビットが省略された場合、デフォルトの /32 になります。 ただし IP アドレスが 0.0.0.0 である場合には、マスクのデフォルトは /0 です。 .Pp .Ar hisaddr に IP 番号の範囲として .Dl a.b.c.d[-d.e.f.g][,h.i.j.k[-l,m,n,o]]... のフォーマットを指定できます。例えば: .Dl set ifaddr 10.0.0.1 10.0.1.2-10.0.1.10,10.0.1.20 は .Ar 10.0.0.1 のみをローカル IP 番号として交渉しますが、指定された 10 個の IP 番号から 相手に割り当てを行います。 相手がこれらの番号のうちの一つを要求し、この番号が未使用な場合には、 .Nm は相手の要求を認めます。 相手がリンクを再確立して前回割当てていた IP 番号を使用したい場合に有用です。 相手が要求した IP 番号が範囲外もしくは使用中の場合、 .Nm はまず範囲内の未使用 IP 番号をランダムに指示します。 相手がこれに賛成しないと、 番号が選択されるか過多の IPCP 構成要求が送出されるまで、 .Nm は次の番号を指示します。 .Pp .Ar triggeraddr が指定された場合、この値が .Ar myaddr の代りに IPCP 交渉で使用されます。 ただし、 .Ar myaddr の範囲のアドレスのみ受け入れられます。 .Pp .Fl auto モードでは設定ファイルの .Dq set ifaddr 行を読んだ直後に .Nm がインタフェースを構成することに注意してください。 他のモードではこれらの値は IPCP 交渉で使用され、 IPCP 層がアップするまでこれらのインタフェースは構成されません。 結果として、 .Fl auto モードでない限り、 .Dq add コマンドを .Pa ppp.conf で使用することは不可能 .Pq か、少くとも賢くない です (代りに .Pa ppp.linkup ファイルが使用されます)。 .Dq allow mode auto を使用して、現在のプロファイルを .Fl auto モードのみに限定してください。 .Pp また、一旦クライアントが自己を認証した後では、 .Ar hisaddr 引数は .Pa ppp.secret ファイルによって優先されることに注意してください。詳細は .Em 内向き接続の認証 の節を参照してください。 .It set loopback on|off .Ar on に設定された場合 (デフォルトです)、 宛先アドレスが .Em PPP インタフェースのアドレスと同一の送出パケットを、 .Nm は自動的にループバックさせます。 .Ar off に設定された場合、 .Nm はパケットを送信します。 この場合おそらく相手方で ICMP リダイレクトが発生します。 .It set log [local] [+|-]value... このコマンドにより現在のログレベルを修正できます。 詳細はログ機能の節を参照してください。 .It set login chat-script この .Ar chat-script はダイアルスクリプトを補います。 もし両方が指定された場合、ダイアルスクリプトの後で、 ログインスクリプトが実行されます。 ダイアルスクリプト中で使用可能なエスケープシーケンスはここでも使用可能です。 .It set mru value デフォルトの MRU は 1500 です。 この値を増加させた場合、相手は MTU を増加させても *かまいません*。 デフォルトの MRU より減らすことは意味がありません。 なぜなら、 .Em PPP プロトコルでは少なくとも 1500 オクテッドのパケットを 受信できなければ *ならない* からです。 .It set mtu value デフォルトの MTU は 1500 です。 相手が指定した MRU によって増加させることができます。 MTU はこのオプションによってのみ減らすことが可能です。 この値を増加させることは無効です。 なぜなら、相手は大きくなったパケットを受信できる保証が無いからです。 .It set ns x.x.x.x y.y.y.y このオプションは交渉される Microsoft DNS サーバを設定します。 .It set nbns x.x.x.x y.y.y.y このオプションは交渉される Microsoft NetBIOS DNS サーバを設定します。 .It set openmode active|passive Op 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 telno[|telno]...[:telno[|telno]...]... ダイアルおよびログインのチャットスクリプトで使用される \\\\T 文字列が 置き換えられる電話番号を指定できます。 複数の電話番号をパイプ (|) もしくはコロン (:) で区切って指定可能です。 パイプの後の番号がダイアルされるのは、 直前の番号へのダイアルもしくはログインのスクリプトが失敗した場合のみです。 ラインの切断の理由にかかわらず、 コロンで区切られた番号は順番に試行されます。 複数の番号を指定した場合、接続が確立するまで .Nm はこのルールに基いてダイアルします。 再試行の最大値は、後述の .Dq set redial で指定します。 .Fl background モードでは各番号は最大 1 回試行されます。 .It set reconnect timeout ntries (CD の喪失もしくは LQR の失敗により) 予想外のライン切断となった場合、 指定した .Ar timeout の後に接続が再確立されます。 ラインは最大 .Ar ntries 回、再接続されます。 .Ar ntries のデフォルトは 0 です。 .Ar timeout に .Ar random を指定すると、0 から 30 秒の間の任意時間の停止となります。 .It set redial seconds[.nseconds] [attempts] .Nm ppp に .Ar attempts 回のリダイアルを指示できます。 1 より大きな数を指定した場合 (上述の .Ar set phone 参照)、 各番号にダイアルする前に、 .Ar nseconds だけ停止します。 最初の番号にダイアル開始する前に .Ar seconds だけ停止します。 .Dq random もここで使用できます。 .It set stopped [LCPseconds [IPCPseconds [CCPseconds]]] このオプションが指定されると、 指定した有限状態機械が停止状態になってから .Dq seconds で指定した秒数だけ停止したのち、 .Nm はタイムアウトします。 このオプションは、 .Nm が停止状態になったことにより返事をしないといった状態を見る場合と、 .Dq set openmode passive を使用した場合に相手が指定時間内に Configure Request を送らないことを タイムアウト検出する場合には、便利かもしれません。 .Dq set log +lcp +ipcp +ccp を使用すると、 .Nm は全状態遷移をログします。 .Pp デフォルト値は 0 であり、 停止状態による .Nm のタイムアウトは発生しません。 .Pp この値は openmode の遅延 (上述の .Dq set openmode 参照) より小さくなってはなりません。 .It set server|socket TcpPort|LocalName|none [password] [mask] このコマンドは .Nm に指定したポートもしくは .Sq 診断ポート にてコマンド接続の入力を listen するように指示します。 これは .Nm が対話モードの時には出来ません。 語 .Ar none は .Nm に既に存在するソケットをクローズさせます。 UNIX ドメインソケットを指定したい場合、 .Ar LocalName に絶対ファイル名を指定します。そうしないと、TCP ポートの名前もしくは番号 であると解釈されます。 UNIX ドメインソケットに使用される 8 進 umask を指定可能です。 .Sq 0 から始まる 4 桁 8 進数で指定します。 umask の詳細については .Xr umask 2 を参照してください。TCP ポート名がどのように変換されるかについては .Xr services 5 を参照してください。 .Pp このソケットにクライアントが接続するときに使用されねばならないパスワードも 指定可能です。 ここにパスワードを指定しないと、 .Pa /etc/ppp/ppp.secret からドメインサフィックスを除いたローカルホスト名にてマシン名で検索を行います。 詳細は .Xr hostname 1 を参照してください。 パスワードに空文字列を指定すると、パスワードは要求されなくなります。 .Pp .Nm をサーバソケットと共に使用する場合、通信機構として .Xr pppctl 8 コマンドを使用することが好ましいです。 現在 .Xr telnet 1 も使用可能ですが、将来リンク暗号化が実装されるかもしれませんので、 .Xr telnet 1 に依存しないようにしてください。 .It set speed value シリアルデバイスの速度を指定します。 .It set timeout idle [LQR [FSM-resend]] アイドルタイマ、 (有効にされているなら) LQR タイマ、 有限状態機械 .Pq FSM; finite state machine リトライタイマの値を指定します。 .It set vj slots nslots このコマンドは最初の .Ar slots 番号を指定します。 .Nm は VJ 圧縮が enable されている時には、 これを使用して相手と交渉をします (前述の .Sq enable コマンドを参照してください)。 デフォルト値は 16 です。 .Ar nslots は .Ar 4 から .Ar 16 の間で、それぞれの値を含みます。 .It set vj slotcomp on|off このコマンドは .Nm に VJ スロット圧縮を交渉するか否かを指示します。 デフォルトではスロット圧縮は .Ar on です。 .It set help|? 使用可能なセットコマンドのまとめを表示します。 .El .Pp .It shell|! [command] .Dq command が指定されない場合、 .Dv SHELL 環境変数で指定されるシェルが起動されます。 そうでなければ指定されたコマンドが実行されます。 擬似引数 .Dv HISADDR , .Dv INTERFACE , .Dv MYADDR は適切な値に置き換えられます。! 文字を使用した場合、 この後のコマンドとの間にスペースが必要です。 このコマンドはフォアグラウンドで実行されることに注意してください - .Nm はプロセスが終了するまでは実行を続けません。 バックグラウンドでコマンド処理を行いたい場合には、 .Dv bg コマンドを使用してください。 .It show var このコマンドを使用して、以下を確認できます: .Bl -tag -width 20 .It show [adio]filter 指定したフィルタの現在のルールをリストします。 .It show auth 現在の authname と暗号値を表示します。 .Nm を DES サポート無しで構築した場合、 .Ar MD5 が使用されるため、暗号値は表示されません。 .It show ccp 現在の CCP 統計を表示します。 .It show compress 現在の圧縮統計を表示します。 .It show escape 現在のエスケープ文字を表示します。 .It show hdlc 現在の HDLC 統計を表示します。 .It show ipcp 現在の IPCP 統計を表示します。 .It show lcp 現在の LCP 統計を表示します。 .It show loopback 現在のループバック状態を表示します。 .It show log 現在のログ値を表示します。 .It show mem 現在のメモリ統計を表示します。 .It show modem 現在のモデム統計を表示します。 .It show mru 現在の MRU を表示します。 .It show mtu 現在の MTU を表示します。 .It show proto 現在のプロトコルの総計を表示します。 .It show reconnect 現在の再接続値を表示します。 .It show redial 現在のリダイアル値を表示します。 .It show stopped 現在の stopped タイムアウト値を表示します。 .It show route 現在のルーティングテーブルを表示します。 .It show timeout 現在のタイムアウト値を表示します。 .It show msext 現在の Microsoft 拡張値を表示します。 .It show version .Nm の現在のバージョン番号を表示します。 .It show help|? 利用可能な show コマンドのまとめを表示します。 .El .Pp .It term -ターミナルモードに移行します。 +端末モードに移行します。 キーボードからタイプした文字はモデムに送られます。 モデムから読んだ文字はスクリーンに表示されます。 モデムの相手側に .Nm の相手が認識された時には、 .Nm は自動的にパケットモードを有効にし、コマンドモードに戻ります。 .El .Pp .Sh 更に詳細について .Bl -bullet -compact .It 設定ファイルの例を読んでください。良い情報源です。 また、 .It .Dq help , .Dq show ? , .Dq alias ? , .Dq set ? , .Dq set ? コマンドを使ってください。 .El .Pp .Sh 関連ファイル .Nm は、4 つのファイル .Pa ppp.conf , .Pa ppp.linkup , .Pa ppp.linkdown , .Pa ppp.secret を参照します。 これらのファイルは .Pa /etc/ppp に置かれます。 .Bl -tag -width flag .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/tunX.pid tunX デバイスに接続されている .Nm プログラムのプロセス ID (pid) 。 ここで 'X' はデバイスの番号です。このファイルは .Fl background , .Fl auto , .Fl ddial のいずれかのモードの時のみ作成されます。 .It Pa /var/run/ttyXX.if このポートで使われている tun インタフェース。 このファイルも .Fl background , .Fl auto , .Fl ddial のいずれかのモードの時のみ作成されます。 .Pa It /etc/services サービス名でポート番号が指定されている場合に、ポート番号を取得します。 .El .Pp .Sh 関連項目 .Xr at 1 , .Xr chat 8 , .Xr crontab 5 , .Xr ftp 1 , .Xr getty 8 , .Xr gzip 1 , .Xr hostname 1 , .Xr inetd 8 , .Xr init 8 , .Xr login 1 , .Xr passwd 5 , .Xr ping 8 , .Xr pppctl 8 , .Xr pppd 8 , .Xr route 8 , .Xr syslog 3 , .Xr syslog.conf 5 , .Xr syslogd 8 , .Xr tcpdump 1 , .Xr telnet 1 , .Xr traceroute 8 , .Xr uucplock 3 .Sh 歴史 元のプログラムは Toshiharu OHNO (tony-o@iij.ad.jp) が作成し、 FreeBSD-2.0.5 に Atsushi Murai (amurai@spec.co.jp) が提出しました。 .Pp それから、本質的に Brian Somers (brian@Awfulhak.org) が修正をし、'97 年 11 月に OpenBSD に移植されました (2.2-RELEASE の直後です)。 diff --git a/ja_JP.eucJP/man/man8/pw.8 b/ja_JP.eucJP/man/man8/pw.8 index f414d55299..bdeb2aacc8 100644 --- a/ja_JP.eucJP/man/man8/pw.8 +++ b/ja_JP.eucJP/man/man8/pw.8 @@ -1,804 +1,804 @@ .\" Copyright (C) 1996 .\" David L. Nugent. 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 DAVID L. NUGENT 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 DAVID L. NUGENT 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. .\" .\" %Id: pw.8,v 1.1.1.1.2.5 1997/11/04 07:16:14 charnier Exp % .\" jpman %Id: pw.8,v 1.3 1997/10/28 15:30:48 kuriyama Stab % .\" .Dd December 9, 1996 .Dt PW 8 .Os .Sh 名称 .Nm pw .Nd システムユーザ、グループの作成、削除、変更、表示 .Sh 書式 .Nm pw .Ar useradd .Op name|uid .Op Fl C Ar config .Op Fl q .Op Fl n Ar name .Op Fl u Ar uid .Op Fl c Ar comment .Op Fl d Ar dir .Op Fl e Ar date .Op Fl p Ar date .Op Fl g Ar group .Op Fl G Ar grouplist .Op Fl m .Op Fl k Ar dir .Op Fl s Ar shell .Op Fl o .Op Fl L Ar class .Op Fl h Ar fd .Op Fl N .Op Fl P .Nm pw .Ar useradd .Op name|uid .Op Fl D .Op Fl C Ar config .Op Fl q .Op Fl b Ar dir .Op Fl e Ar days .Op Fl p Ar days .Op Fl g Ar group .Op Fl G Ar grouplist .Op Fl k Ar dir .Op Fl u Ar min,max .Op Fl i Ar min,max .Op Fl w Ar method .Op Fl s Ar shell .Nm pw .Ar userdel .Op name|uid .Op Fl n Ar name .Op Fl u Ar uid .Op Fl r .Nm pw .Ar usermod .Op name|uid .Op Fl C Ar config .Op Fl q .Op Fl n Ar name .Op Fl u Ar uid .Op Fl c Ar comment .Op Fl d Ar dir .Op Fl e Ar date .Op Fl p Ar date .Op Fl g Ar group .Op Fl G Ar grouplist .Op Fl l Ar name .Op Fl m .Op Fl k Ar dir .Op Fl w Ar method .Op Fl s Ar shell .Op Fl L Ar class .Op Fl h Ar fd .Op Fl N .Op Fl P .Nm pw .Ar usershow .Op name|uid .Op Fl n Ar name .Op Fl u Ar uid .Op Fl F .Op Fl P .Op Fl a .Nm pw .Ar usernext .Op Fl C Ar config .Op Fl q .Nm pw .Ar groupadd .Op group|gid .Op Fl C Ar config .Op Fl q .Op Fl n Ar group .Op Fl g Ar gid .Op Fl M Ar members .Op Fl o .Op Fl h Ar fd .Op Fl N .Op Fl P .Nm pw .Ar groupdel .Op Fl n Ar name .Op Fl g Ar gid .Nm pw .Ar groupmod .Op Fl C Ar config .Op Fl q .Op Fl F .Op Fl n Ar name .Op Fl g Ar gid .Op Fl l Ar name .Op Fl M Ar members .Op Fl m Ar newmembers .Op Fl h Ar fd .Op Fl N .Op Fl P .Nm pw .Ar groupshow .Op Fl n Ar name .Op Fl g Ar gid .Op Fl F .Op Fl P .Op Fl a .Nm pw .Ar groupnext .Op Fl C Ar config .Op Fl q .Sh 解説 .Nm pw は、システムの .Ar user 、 .Ar group ファイルのユーザ、グループを簡単に、標準的な方法で追加、変更、削除 することができるようにするコマンドライン版のエディタです。 .Nm は、ローカルな user ファイルと group ファイルを操作することができるだ けだということに注意して下さい。 NIS のユーザ、グループは NIS サーバ上 で管理しなければなりません。 .Nm は root で実行されなければならず、 .Pa passwd , .Pa master.passwd , .Pa group ファイルや、安全なまたは安全でないパスワードデータベースファイル の更新作業を行います。 .Pp .Xr pw 8 のコマンドラインにかかれている最初の一つか二つのキーワードは、引数の残り に対する文脈を規定します。 .Ar user と .Ar group のキーワードはどちらも、 .Ar add , .Ar del , .Ar mod , .Ar show , .Ar next と組み合わせるか、分離して用いることができ、どちらの順序 (例えば showuser, usershow, show user, user show はすべて同じことと みなされます) で指定してもかまいません。 この柔軟性は、実際のユーザ、グループデータベース操作のために .Nm を呼ぶ対話的なスクリプトには便利です。 .Fl n Ar name , .Fl u Ar uid , .Fl g Ar gid オプションを使う代わりに、 これらのキーワードに続けてユーザ名、グループ名、数字の ID のうち一つ を指定することができます。 .Pp 以下のフラグは操作のすべてのモードで共通です: .Pp .Bl -tag -width "-G grouplist" .It Fl C Ar config .Nm は新しいユーザアカウントとグループはどのように作られるべきかという 方針の情報を得るために、デフォルトではファイル .Pa /etc/pw.conf を読み込みますが、 .Fl C -オプションで異なるコンフィグレーションファイルを指定できます。 -コンフィグレーションファイルのほとんどの内容は、コマンドライン +オプションで異なる設定ファイルを指定できます。 +設定ファイルのほとんどの内容は、コマンドライン オプションにより上書きされますが、新しいアカウントを追加するための標準 -的な情報をコンフィグレーションファイルに設定しておくと +的な情報を設定ファイルに設定しておくと より便利かもしれません。 .It Fl q このオプションを使うと .Nm はエラーメッセージを抑制します。これは、注意深くフォーマットされたディスプレイへのメッセージ表示よりも、 .Nm から返された戻り値を解釈する方が好まれるような対話的な環境では 便利かもしれません。 .It Fl N このオプションは add と modify 操作で使います。 .Nm は、ユーザ/グループデータベースの更新をスキップして、操作を実際には 実行せずに、代わりに結果だけを出力します。 .Fl P オプションを使うと、標準 passwd と可読なフォーマットの切り替えが できます。 .El .Pp .Sh ユーザオプション 以下のオプションは .Ar useradd と .Ar usermod コマンドに付けます: .Pp .Bl -tag -width "-G grouplist" .It Fl n Ar name ユーザ名/アカウント名を指定します。 .It Fl u Ar uid ユーザ ID / アカウント ID を数字で指定します。 .Pp アカウント名は uid を含み、逆も同様であるため、通常これらのオプション のどちらか片方しか必要ではありません。 また .Ql Fl n や .Ql Fl u を使わなくても、コマンドライン上で .Ar useradd , .Ar userdel , .Ar usermod , .Ar usershow キーワードの直後にアカウントとユーザIDのどちらでも続けることができます。 しかし、両方を指定しなければならないこともしばしばあります。 例えば、存在するユーザの uid を .Ar usermod で変えたり、新しいアカウントを作るときにデフォルトの uid を上書きした りするときです。 .Nm で .Ar useradd を使って新しいユーザに uid を自動的に割り当てたい場合は、 .Ql Fl u オプションを使っては .Em いけません 。 .El .Pp .Ar useradd と .Ar usermod の両方で使えるオプション: .Bl -tag -width "-G grouplist" .It Fl c Ar comment このオプションは passwd の GECOS フィールドの内容をセットします。 このフィールドは、カンマで区切られた四つのサブフィールドで、一般的には ユーザの姓名、勤務先または地区、職場と自宅の電話番号を含みます。 これらのサブフィールドは慣習的に使われるだけであり、省略可能です。 このフィールドが空白を含む場合、コメント自身をダブルクォート .Ql \&" でくくらなければなりません。 サブフィールドの区切りで使われたような、フィールド内のカンマの使用は 避けて下さい。そして、コロン .Ql \&: キャラクタも passwd ファイルのフィールド区切りであるため使えません。 .It Fl d Ar dir このオプションは、アカウントのホームディレクトリを設定します。 通常、これはホームディレクトリがデフォルト (基本のホームディレクトリ - 普通 .Pa /home と サブディレクトリとしてのアカウント名 - を指定する pw.conf で決定されます) と異なる場合にだけ使うことになるでしょう。 .It Fl e Ar date アカウントが破棄される日付をセットします。 この日付のフォーマットは、 10 進の UNIX 時間か .Ql \& dd-mmm-yy[yy] フォーマットの日付のどちらかになり、後者は dd が日、mmmが月で、数字と アルファベット('Jan', 'Feb' 等)のどちらでもよく、年は 2 または 4 桁の 数字からなります。 このオプションは、 .Ql \&+n[mhdwoy] の形の相対的な日付も受け付けます。 .Ql \&n は 10 進数、 8 進数 (0 から始まる) 、 16 進数 (0x で始まる) の数字で、 その後に現在の日付時刻から破棄される日までの分(m)、時(h)、日(d)、 曜日(w)、月(o)、年(y)の数がセットされます。 .It Fl p Ar date アカウントのパスワードが破棄される日付をセットします。 このフィールドは、強制的なパスワードの変更を適用することを除けば、 アカウントを破棄するオプションと同等です。 アカウントを破棄するオプションと同じフォーマットを受け付けます。 .It Fl g Ar group 与えられた group をアカウントの初期グループにセットします。 .Ar group は、グループ名または対応するグループ ID 番号が使えます。 .It Fl G Ar grouplist アカウントが属する別のグループをセットします。 .Ar grouplist は、カンマ区切りのリスト、またはグループ名、またはグループ IDです。 ユーザを加える場合、 .Pa /etc/group の各グループにユーザ名が追加されます。 ユーザを編集する場合、 .Ar grouplist に指定されたグループにユーザ名が加えられ、 指定されなかったグループからは除かれます。 注意: ユーザは .Pa /etc/group の初期グループには加えられるべきではありません。 また、グループのメンバの変更は現在のログインにはすぐには影響されず、変 更後のログインにだけ影響します。 .It Fl L Ar class このオプションは生成されたユーザのログインクラスをセットします。 ユーザクラスに関する情報は .Xr login.conf 5 を参照して下さい。 .It Fl m このオプションは、ユーザのホームディレクトリの作成を試みるように .Nm に指示します。 もちろんこれは .Ar useradd で新しいアカウントを加えるときにも役に立ちますが、 存在するユーザのホームディレクトリをファイルシステムの別の場所に 移動する、という使い方もできます。 新しいホームディレクトリは、一般にユーザが個人的に使う -シェルコンフィグレーションファイル一式を含む、 +シェルの設定ファイル一式を含む、 .Ar 雛型 ディレクトリの内容と共に移されます。 .Ar usermod にアカウントを指定して .Ql Fl m が用いられると、そのユーザのホームディレクトリにある -コンフィグレーションファイルはプロトタイプのファイルで +設定ファイルはプロトタイプのファイルで .Em 上書きされません 。 .Pp ユーザのホームディレクトリが作成されるとき、デフォルトで .Ql Fl b Ar dir オプション (下記参照) で指定された .Ar basehome ディレクトリのサブディレクトリとして作られ、アカウント名と同じ名前が付 けられます。 コマンドラインに .Ql Fl d Ar dir オプションを付けると、上書きするようにもできます。 .It Fl k Ar dir このオプションは、 .Ar 雛型 のサブディレクトリをセットします。ユーザのホームディレクトリが作成 -されるとき、そこから基本の起動時ファイル、コンフィグレーションファイル +されるとき、そこから基本の起動時ファイル、設定ファイル がコピーされます。 このオプションは、 .Ql Fl D (下記参照) や .Ql Fl m と共に使ったときにのみ意味があります。 .It Fl s Ar shell ユーザのログインシェルを .Ar shell にセットまたは変更します。 シェルプログラムへのパスが省略されると、 .Nm は .Pa /etc/pw.conf で指定された .Ar shellpath を探し、それを適切に補います。 パスを指定するのは、特別な理由があるのでなければ、避けるべきだ ということを覚えておきましょう。 指定しないことで、プログラムが存在し、かつ実行可能であることを .Nm に確認させることができるからです。 フルパスを指定する (または空のままの "" シェルにしておく) と このチェックをせず、対話的なログインをさせないアカウントを 設定しなければならないときに設定される .Pa /nonexistent のようなエントリを作ることができます。 .It Fl L Ar class ユーザの passwd レコード内の .Em class フィールドをセットします。 このフィールドは現在使われていませんが、将来は .Em termcap エントリのようなタグ (詳細は .Xr passwd 5 を参照のこと) を指定するために使われるでしょう。 .It Fl h Ar fd このオプションは、 .Nm を使ってアカウントパスワードを設定することができる対話的なスクリプトを 設定できるような特別のインタフェースを用意します。 コマンドラインと環境は、プログラムが情報を受け取るしくみとしては 基本的に安全ではないため、 .Nm はファイル記述子 (通常対話的スクリプトとプログラム間のパイプ) を通してのみ、アカウントとグループのパスワードの設定を許可します。 .Ar sh , .Ar bash , .Ar ksh , .Ar perl は皆、これができるしくみを持っています。 .Ql Fl h Ar 0 が指定されると、代わりに .Nm はユーザのパスワードを求めるプロンプトを出し、 .Em stdin をパスワードを読み込むファイル記述子とします。 このパスワードは一度しか読み込まれず、対話的な使用よりも スクリプト向きにできていることに注意して下さい。 .Xr passwd 1 の行に合わせて新しいパスワードの確認をしたい場合、これは .Nm を呼び出す対話的なスクリプトの一部として実装されるべきです。 .Pp 引数 .Ar fd として .Ql \&- が与えられると、パスワードとして .Ql \&* がセットされ、そのアカウントにはパスワードでログインすることが できないようになります。 .El .Pp .Ar useradd を使うことで、存在するユーザ ID と重複する新しいアカウントを作成するこ とができるようになります。 これは普通エラーになって拒否されるはずですが、 .Ql Fl o オプションが重複チェックを上書きし、ユーザ ID の重複を 許すことになります。 これは、同一のユーザが異なるコンテキスト(異なるグループ割り当てや 異なるホームディレクトリ、異なるシェル)でログインするのを許可する 場合に、各アカウントに基本的に同一のアクセス権を与える場合に便利です。 .Pp .Ar useradd コマンドは .Ql Fl D オプションを使うことで新しいユーザとグループのデフォルトも設定できます。 新しいユーザを付け加える代わりに、 .Nm -はコンフィグレーションファイル +は設定ファイル .Pa /etc/pw.conf に新しいデフォルトのセットを書き込みます。 .Ql Fl D オプションを使う場合、 .Ql Fl n Ar name や .Ql Fl u Ar uid を使ってはいけません。そうでないとエラーになります。 .Ql Fl D を使うと、 .Ar useradd コマンドのいくつかのコマンドラインスイッチの意味が変わります。 それは: .Bl -tag -width "-G grouplist" .It Fl D -コンフィグレーションファイル +設定ファイル .Pa /etc/pw.conf ( もしくは .Ql Fl C Ar config -オプションが使われたときは異なる名前のコンフィグレーションファイル ) +オプションが使われたときは異なる名前の設定ファイル ) の中でのデフォルトの値をセットします。 .It Fl b Ar dir ユーザホームディレクトリが作成されるルートディレクトリをセットします。 このオプションのデフォルトの値は .Pa /home ですが、他の好きなディレクトリにセットできます。 .It Fl e Ar days デフォルトのアカウントの有効期間を日数でセットします。 .Ql Fl D を付けずに使われる場合と異なり、引数はアカウントが作成されてから無効に なるまでの日数を指定する数字でなければなりません。 0 という値は、破棄する日付の自動算出を抑制します。 .It Fl p Ar days デフォルトのパスワードの有効期間を日数でセットします。 .It Fl g Ar group 新しいユーザのデフォルトのグループをセットします。 .Ql Fl g Ar \&"" を使って空のグループを指定すると、新しいユーザは自分自身の私的な初期 グループ (ログイン名と同じ名前の新しいグループが作成されます) に 割り当てられます。 グループの指定には、名前または uid を引数として与えることができます。 .It Fl G Ar grouplist 新しいユーザが所属するデフォルトのグループ群を指定します。 これは初期グループとは区別されたグループのセットで、一つの同じグルー プを初期グループとこの別グループ群の両方に指定することは 避けなければなりません。 言い替えると、これらの別グループ群では初期グループ .Em 以外の グループの構成メンバが決められます。 .Ar grouplist はカンマ区切りのグループ名もしくは ID 、もしくはそれらの混在で、 .Pa /etc/pw.conf の中にシンボリック名で保存されます。 .It Fl L Ar class このオプションは、新しいユーザのデフォルトのログインクラスを セットします。 .It Fl k Ar dir デフォルトの .Em 雛型 ディレクトリをセットし、 .Nm がユーザのホームディレクトリを作成するときに、 そこからシェルなどの初期化ファイルのプロトタイプがコピーされます。 .It Fl u Ar min,max , Fl i Ar min,max これらのオプションは、 .Nm により作成された新しいアカウントとグループのために割り当てるユーザと グループの最小の ID と最大の ID をセットします。 デフォルト値はどちらも最小 1000 で最大 32000 です。 .Ar min と .Ar max はどちらも数字で、 max は min より大きく、両方とも 0 から 32767 の範囲 内でなければなりません。 一般に 100 未満のユーザ ID とグループ ID はシステムに予約されており、 32000 より大きな数も (システム daemon が使う) 特殊な目的に 予約されています。 .It Fl w Ar method .Ql Fl w オプションは新しく作成されたユーザアカウントのパスワードをセットするの に使われるデフォルトの方法を指定します。 .Ar method は以下のうちの一つです: .Pp .Bl -tag -width random -offset indent -compact .It no 新しく作成されたアカウントでのログインを不可とします。 .It yes アカウント名をパスワードにします。 .It none パスワードを空欄にします。 .It random ランダムパスワードを生成します。 .El .Pp The .Ql \&random や .Ql \&no method は、最も安全です。前者の場合、 .Nm はパスワードを生成し、標準出力に出力します。 このパスワードは、ユーザがそのアカウントにアクセスするパスワードとして あなたが発行しますが、ユーザ自身が自分のパスワードを指定 (多分ひどい選択です) するものより適切です。 .Ql \&no method にした場合、パスワードでアクセスできるアカウントを与えるために スーパユーザが .Xr passwd 1 を使わなければなりません。 .El .Pp .Ar userdel コマンドには三つしか正しいオプションがありません。 .Ql Fl n Ar name と .Ql Fl u Ar uid オプションには、既に前述の説明があります。 追加オプション: .Bl -tag -width "-G grouplist" .It Fl r このオプションで、 .Nm はユーザのホームディレクトリとその内容のすべてを削除します。 .Nm はシステムからファイルを削除するとき、慎重すぎるやり方をとります。 まず、削除されるアカウントの uid がシステムの別のアカウントでも使われ ていて、パスワードファイルの 'ホーム' ディレクトリが文字 .Ql \&/ で始まる正しいパスであった場合にはファイルは削除されません。 次に、ファイルやディレクトリが実際にそのユーザのものであるか、 誰かの所有であるシンボリックリンクがユーザのホームディレクトリ下にある 場合にだけ削除されます。 最後に、そのユーザの所有であるすべての中身を削除した後、 空のディレクトリだけが削除されます。 更に別の一掃が必要なときは、管理者に任されます。 .El .Pp メールスプールファイルと crontab はユーザ名に無条件に付属しているもの なので、アカウントが削除されたとき常に削除されます。 .Ar at コマンドによって処理待ちのキューに入っているジョブも、ユーザの uid がユニークである (そのシステムの別のアカウントに使われていない) 場合は 削除されます。 .Pp .Ar usershow コマンドは、二種類のフォーマットでアカウントを閲覧できます。 フォーマットは、デフォルトで .Pa /etc/master.passwd で使われているものと同じで、パスワードフィールドは .Ql \&* に置き換えられています。 .Ql Fl P オプションが使われると、 .Nm はより人間に読みやすい形でアカウントの詳細を出力します。 .Ql Fl a オプションは、現在ファイルにあるすべてのユーザをリストします。 .Pp .Ar usernext コマンドは、利用可能な次のユーザ ID とグループ ID を コロン区切りで返します。 これは、通常 .Nm を使う対話的なスクリプトやフロントエンド用です。 .Pp .Sh グループオプション グループを操作するコマンドには、 .Ql Fl C Ar config と .Ql Fl q オプション (前セクションの始めに説明があります) が使えます。 他のグループ関係のコマンド: .Bl -tag -width "-m newmembers" .It Fl n Ar name グループ名を指定します。 .It Fl g Ar gid グループの ID を数字で指定します。 .Pp グループ名は uid を意味し、逆も同様なので、アカウント名 と ID フィールドとして、普通どちらか一つを付ければよいのです。 両方を指定する必要があるのは、新しいグループに指定したグループ ID を 設定するとき、または存在するグループの uid を変えたいときだけです。 .It Fl M Ar memberlist このオプションは、存在するユーザを新しいグループに (groupaddで) 加えたり、存在するメンバリストを (groupmodで) 新しいものに取り換える もうひとつの方法です。 .Ar memberlist は正当で、存在するユーザ名または uid のカンマ区切りのリストです。 .It Fl m Ar newmembers .Op M オプションと同様、このオプションは最初に存在するメンバのリストを 入れ換えることなく、グループに存在するユーザを .Em 追加 します。 ログイン名またはユーザ ID を使うことができ、重複するユーザは警告無く 自動的に削除されます。 .El .Pp .Ar groupadd にも、存在するグループ ID を新しいグループに割り当てる .Ql Fl o オプションがあります。 デフォルトの動作は、グループ追加の試みを拒否することになっており、この オプションはグループ ID の重複チェックを上書きします。 グループ ID を重複させる必要は滅多にありません。 .Pp .Ar groupmod コマンドには、一つの追加オプションがあります: .Pp .Bl -tag -width "-m newmembers" .It Fl l Ar name このオプションで、存在するグループ名を .Ql \&name に変更することができます。 新しい名前は存在しないものでなければならず、存在するグループ名と 重複させようとすると拒否されます。 .El .Pp .Ar groupshow へのオプションは .Ql Fl u Ar uid の代わりにグループ ID を指定する .Ql Fl g Ar gid を付けた .Ar usershow と同じです。 .Pp .Ar groupnext コマンドは、次に使用できるグループ ID を標準出力に返します。 .Sh 診断 .Nm は、操作に成功すると EXIT_SUCCESS を返し、そうでなければ .Xr sysexits 3 により定義された以下の戻り値のうちどれかひとつを返します: .Bl -tag -width xxxx .It EX_USAGE .Bl -bullet -compact .It コマンドラインのシンタックスエラー (不適切なキーワード、未定義オプション)。 .El .It EX_NOPERM .Bl -bullet -compact .It root でないユーザとして、何らかの更新を実行しようとした。 .El .It EX_OSERR .Bl -bullet -compact .It メモリアロケーションエラー。 .It パスワードファイル記述子の読み出しエラー .El .It EX_DATAERR .Bl -bullet -compact .It コマンドライン上やパスワードファイル記述子の、間違った、または正しくな いデータや欠落データ。 .It root アカウントの名前や uid の変更、削除をしようとした。 .El .It EX_OSFILE .Bl -bullet -compact .It 雛型ディレクトリが適切でない、または存在しない。 .It 基本ホームディレクトリが適切でない、または存在しない。 .It 指定したシェルが適切でない、または存在しない。 .El .It EX_NOUSER .Bl -bullet -compact .It 指定されたユーザ、ユーザ ID 、グループ、グループ ID が存在しない。 .It 記録、追加、または更新されたユーザ、グループが予期せず無くなった。 .El .It EX_SOFTWARE .Bl -bullet -compact .It 指定した範囲には未使用グループ ID 、ユーザ ID が残っていない。 .El .It EX_IOERR .Bl -bullet -compact .It -コンフィグレーションファイルの書き換えができない。 +設定ファイルの書き換えができない。 .It グループやユーザデータベースファイルの更新時エラー。 .It パスワードまたはグループデータベースファイルの更新時エラー。 .El .It EX_CONFIG .Bl -bullet -compact .It 基本ホームディレクトリが設定されていない。 .El .El .Pp .Sh 注釈 各コマンドに使用可能なオプションの要約として、 .Dl pw [command] help が使えます。例えば、 .Dl pw useradd help は useradd 操作に使用できるすべてのオプションをリストします。 .Sh 関連ファイル .Bl -tag -width /etc/master.passwd.new -compact .It Pa /etc/master.passwd ユーザデータベース .It Pa /etc/passwd Version 7 フォーマットのパスワードファイル .It Pa /etc/login.conf ユーザケーパビリティデータベース (user capability database) .It Pa /etc/group グループデータベース .It Pa /etc/master.passwd.new マスタパスワードファイルの一時コピー .It Pa /etc/passwd.new Version 7 パスワードファイルの一時コピー .It Pa /etc/group.new グループファイルの一時コピー .It Pa /etc/pw.conf pw コマンドのデフォルトオプションファイル .El .Sh 関連ファイル .Xr chpass 1 , .Xr passwd 1 , .Xr group 5 , .Xr login.conf 5 , .Xr passwd 5 , .Xr pw.conf 5 , .Xr pwd_mkdb 8 , .Xr vipw 8 .Sh 歴史 .Nm は、 SYSV の .Em shadow サポートで使われていた多くのオプションを模倣して書かれましたが、 .Bx 4.4 オペレーティングシステムに特有のパスワードフィールド、 グループフィールドに合わせて変更されています。また、ほとんどの要素が 一つのコマンドにまとめられています。 diff --git a/ja_JP.eucJP/man/man8/rbootd.8 b/ja_JP.eucJP/man/man8/rbootd.8 index 7b51bc5b55..0cd1d37c9c 100644 --- a/ja_JP.eucJP/man/man8/rbootd.8 +++ b/ja_JP.eucJP/man/man8/rbootd.8 @@ -1,159 +1,159 @@ .\" Copyright (c) 1988, 1992 The University of Utah and the Center .\" for Software Science (CSS). .\" Copyright (c) 1992, 1993 .\" The Regents of the University of California. All rights reserved. .\" .\" This code is derived from software contributed to Berkeley by .\" the Center for Software Science of the University of Utah Computer .\" Science Department. CSS requests users of this software to return .\" to css-dist@cs.utah.edu any improvements that they make and grant .\" CSS redistribution rights. .\" .\" 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. .\" .\" @(#)rbootd.8 8.2 (Berkeley) 12/11/93 .\" %Id: rbootd.8,v 1.3.2.1 1997/12/16 07:17:43 charnier Exp % .\" .\" Utah $Hdr: rbootd.man 3.1 92/07/06$ .\" Author: Jeff Forys, University of Utah CSS .\" jpman %Id: rbootd.8,v 1.2 1997/03/31 14:57:40 horikawa Stab % .\" .Dd "December 11, 1993" .Dt RBOOTD 8 .Os .Sh 名称 .Nm rbootd .Nd HP 社製ワークステーションのブート要求に対応するブートサーバ .Sh 書式 .Nm rbootd .Op Fl ad .Op Fl i Ar interface .Op config_file .Sh 解説 .Nm ユーティリティは、LAN 上の Hewlett-Packard 社製ワークステーションからの ブート要求に対するサービスを行います。 全てのブートファイルはブートファイル用のディレクトリになければならず、 さらに、もしクライアントがブートリクエスト中にパス情報をつけていた場合は、 処理する前にそのパスは取り除かれます。デフォルトでは、 .Nm -は, そのコンフィグレーションファイル中にリストされているマシンからの +は, その設定ファイル中にリストされているマシンからの リクエストにのみ応答します。 .Pp オプションとしては以下のものがあります: .Bl -tag -width indent .It Fl a どのようなマシンからのブート要求にも応えます。このオプションが設定された -場合は、コンフィギュレーションファイルは無視されます。 +場合は、設定ファイルは無視されます。 .It Fl d .Nm をデバッグモードで起動します。受信および送信 されたパケットが端末に表示されるようになります。 .It Fl i Ar interface 指定したインタフェースに対してサービスを行います。 もし指定されていない場合には、 .Nm はループバック以外のもっとも小さい番号の使用可能なインタフェースを システムインタフェースリストから探します。 早いもの順で選ぶので、組合せはバラバラになります。 .El .Pp .Ar config_file を指定すれば、 .Nm -はデフォルトのコンフィギュレーションファイルではなく、こちらのファイルを +はデフォルトの設定ファイルではなく、こちらのファイルを 使用するようになります。 .Pp -コンフィギュレーションファイルは、各行に個々のマシンの設定を記述した +設定ファイルは、各行に個々のマシンの設定を記述した テキストファイルです。行の先頭は各マシンの Ethernet アドレスで始め、 そのあとにブートファイルの名前をオプションとして記述します。 Ethernet アドレスは 6 オクテッドの値を 16 進数で記述し、 各間を ``:'' で区切ります。 ブートファイルの名前は、ブートファイルディレクトリにあるファイルの名前です。 Ethernet アドレスとブートファイルの名前の間は、空白もしくはコンマで区切ら なければなりません。 行中の ``#'' より後は無視します。 .Pp -コンフィギュレーションファイルの例を以下に示します: +設定ファイルの例を以下に示します: .Bl -column 08:00:09:0:66:ad SYSHPBSD,SYSHPUX "# vandy (anything)" .It # .It # ethernet addr boot file(s) comments .It # .It 08:00:09:0:66:ad SYSHPBSD # snake (4.3BSD) .It 08:00:09:0:59:5b # vandy (anything) .It 8::9:1:C6:75 SYSHPBSD,SYSHPUX # jaguar (either) .El .Pp .Nm のログやエラーメッセージは .Xr syslog 3 を使っています。スタートアップメッセージはつねにログに記録され、 致命的なエラー(もしくは .Nm を殺すようなシグナル) が起こった場合にはサーバの終了メッセージもログに残します。 一般的には、致命的ではないエラーはそれによってひき起こされる動作を 無視するといった形で扱われます。 -(例えばコンフィギュレーションファイル中の無効なEthernet アドレスは +(例えば設定ファイル中の無効な Ethernet アドレスは その行が無効になる原因となります)。 .Pp 以下のシグナルを .Xr kill 1 コマンドを使ってサーバプロセスに送ることで、 サーバプロセスに影響を与えることができます: .Bl -tag -width SIGUSR1 -offset -compact .It SIGHUP アクティブな接続を切り、リコンフィグします。 .It SIGUSR1 デバッグモードをオンにします。すでにオンであれば何もしません。 .It SIGUSR2 デバッグモードをオフにします。すでにオフであれば何もしません。 .El .Sh 関連ファイル .Bl -tag -width /usr/libexec/rbootd -compact .It /dev/bpf# パケットフィルタのデバイス .It /etc/rbootd.conf -コンフィギュレーションファイル +設定ファイル .It /tmp/rbootd.dbg デバッグ出力 .It /usr/mdec/rbootd ブートファイルを置くディレクトリ .It /var/run/rbootd.pid .Nm のプロセス ID .El .Sh 関連項目 .Xr kill 1 , .Xr socket 2 , .Xr signal 3 , .Xr syslog 3 .Sh バグ 同一インタフェース上に複数のサーバが走った場合、 同一のパケットに対して各サーバが応答してしまいます。 diff --git a/ja_JP.eucJP/man/man8/rlogind.8 b/ja_JP.eucJP/man/man8/rlogind.8 index 228f16d921..9fc865253a 100644 --- a/ja_JP.eucJP/man/man8/rlogind.8 +++ b/ja_JP.eucJP/man/man8/rlogind.8 @@ -1,195 +1,195 @@ .\" Copyright (c) 1983, 1989, 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 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: @(#)rlogind.8 8.1 (Berkeley) 6/4/93 .\" %Id: rlogind.8,v 1.4.2.3 1998/02/18 11:48:06 markm Exp % .\" jpman %Id: rlogind.8,v 1.2 1997/05/23 00:50:03 mutoh Stab % .\" .Dd June 4, 1993 .Dt RLOGIND 8 .Os BSD 4.2 .Sh 名称 .Nm rlogind .Nd リモートログインのサーバ .Sh 書式 .Nm .Op Fl Daln .Sh 解説 .Nm は、 .Xr rlogin 1 のためのサーバです。サーバは信頼できるホストからの 特権ポート番号に基づいた認証を用いて、リモートログイン機能を提供します。 .Nm では、以下のオプションが使用可能です。 .Bl -tag -width indent .It Fl D TCP_NODELAY ソケットオプションを設定します。これは、いくつかの ネットワークトラフィックの増大に対して、応答性を向上します。 .It Fl a 検証のために、ホスト名を問い合わせます。 .It Fl l ユーザがスーパユーザとしてログインしない限り、 一般ユーザの .Dq Pa .rhosts による、あらゆる認証を禁止します。 .It Fl n キープアライブメッセージを禁止します。 .El .Pp Kerberos を使っている時には、以下のようなオプションが利用可能です。 .Bl -tag -width indent .It Fl k Kerberos 認証を利用可能にします。 .It Fl v vacuous モードを利用可能にします。 .It Fl x .Xr rlogin 1 セッションで流される全てのデータに .Tn DES 暗号化を施します。このオプションを利用すると、応答性や CPU に負荷が かかりますが、機密性は向上します。 .El .Pp .Nm は、``login'' サービスの仕様に基づく番号のポートで、要求を受け付けます。 詳しくは .Xr services 5 を参照してください。 サービスの要求を受け取ると、以下のプロトコルを開始します。 .Bl -enum .It サーバはクライアントの要求元ポート番号を調べます。 もしポート番号が512〜1023の範囲外であれば、サーバは接続を切断します。 .It サーバはクライアントの要求元アドレスを調べ、それに対応するホスト名を 求めます ( .Xr gethostbyaddr 3 , .Xr hosts 5 , .Xr named 8 を参照してください)。 ホスト名を決定できなければ、ドット表記法によるホストアドレスを 用います。 ホスト名がサーバと同じドメインに属しているか (ドメイン名の最後の二つの 構成要素に基づいて判断します)、あるいは .Fl a オプションが指定されていたら、 ホスト名に対するアドレスを調べて、ホスト名とアドレスが一致しているか どうかを検証します。 アドレスの検証に失敗した場合は、通常の認証作業は行いません。 .El .Pp 要求元ポートの番号を調べ終えたら、 .Nm は、 .Xr rshd 8 で説明している認証作業を開始します。 -そして、疑似ターミナル ( +そして、疑似端末 ( .Xr pty 4 を参照のこと) を割り当てると共に、 ファイルディスクリプタを操作して、 -この疑似ターミナルのスレーブ側がログインプロセスの +この疑似端末のスレーブ側がログインプロセスの .Em stdin , .Em stdout , .Em stderr になるようにします。 認証作業が成功した場合には、 .Xr login 1 プログラムに .Fl f オプションを指定してログインプロセスを生成します。 自動認証作業に失敗した場合には、 -通常のターミナルラインからのログインの場合と同様に、 +通常の端末回線からのログインの場合と同様に、 ユーザに問い合わせをします。 .Pp -ログインプロセスの親プロセスは、疑似ターミナルのマスター側を操作します。 +ログインプロセスの親プロセスは、疑似端末のマスタ側を操作します。 すなわちログインプロセスと、クライアント側の .Xr rlogin 1 プログラムを実体化したものとの間で処理を行います。 通常の処理においては、 .Ql ^S/^Q のような機能を提供したり、割り込み信号をリモートプログラムへと伝えるために .Xr pty 4 で説明しているパケットプロトコルを起動します。 -ログインプロセスは、クライアントのターミナルの通信速度や +ログインプロセスは、クライアントの端末の通信速度や 環境変数 .Ql Ev TERM -で指定されているターミナルタイプを伝えます。 +で指定されている端末タイプを伝えます。 .Xr environ 7 を参照してください。 クライアント側に端末の画面、あるいはウィンドウの大きさを問い合わます。 -また、クライアント側からウィンドウサイズの変更が疑似ターミナルへ +また、クライアント側からウィンドウサイズの変更が疑似端末へ 伝えられます。 .Pp トランスポートレベルのキープアライブメッセージは、オプション .Fl n が指定されていない限り出力されます。 キープアライブメッセージを利用すると、クライアントがクラッシュしたり、 通信不能になってしまった時に、セッションをタイムアウトで 終了することが可能になります。 .Sh 診断 すべての診断メッセージは、ネットワーク接続が切断された後に、最初に 1 の値 のバイトが付加されて通知されます。 .Xr login 1 が起動された後にエラーが発生しない場合、 処理成功の通知のために、NULL バイトを返します。 .Bl -tag -width Ds .It Sy Try again. サーバが .Xr fork 2 に失敗したことを表します。 .El .Sh 関連項目 .Xr login 1 , .Xr ruserok 3 , .Xr hosts 5 , .Xr nologin 5 , .Xr rshd 8 .Sh 関連ファイル .Bl -tag -width /etc/hostsxxxxxxxx -compact .It Pa /etc/hosts .It Pa /etc/hosts.equiv .It Pa $HOME/.rhosts .It Pa /etc/nologin .El .Sh バグ このコマンドが用いている認証手続きは、それぞれのクライアントマシンと 接続媒体が完全であるということを仮定したものです。これはセキュリティホールに なりやすいのですが、``オープン'' な環境においては有用な方針です。 .Pp 全てのデータについて暗号化を行なう機能が実装されるべきです。 .Pp もっと発展性のあるプロトコルが用いられるべきです。 .Sh 歴史 .Nm コマンドは .Bx 4.2 から登場しました。 diff --git a/ja_JP.eucJP/man/man8/sendmail.8 b/ja_JP.eucJP/man/man8/sendmail.8 index b7bdaaa971..ccb7bed0fa 100644 --- a/ja_JP.eucJP/man/man8/sendmail.8 +++ b/ja_JP.eucJP/man/man8/sendmail.8 @@ -1,588 +1,588 @@ .\" Copyright (c) 1983, 1997 Eric P. Allman .\" Copyright (c) 1988, 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 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. .\" .\" @(#)sendmail.8 8.12 (Berkeley) 2/1/97 .\" jpman %Id: sendmail.8,v 1.2 1997/06/05 01:31:44 yugawa Stab % .\" .Dd February 1, 1997 .Dt SENDMAIL 8 .Os BSD 4 .Sh 名称 .Nm sendmail .Nd 電子メール配送デーモン .Sh 書式 .Nm sendmail .Op Ar flags .Op Ar address ... .Nm newaliases .Nm mailq .Op Fl v .Sh 解説 .Nm sendmail はメッセージを他の人に送ります。必要ならばネットワークを 通してメッセージを正しい場所に転送します。 .Pp ただし、 .Nm sendmail はユーザインタフェースとして使われることは考慮さ れていません。ユーザにとって使いやすいフロントエンドは別のプログラムで 提供されます。 .Nm sendmail は、あらかじめメールとして整形されたメッセージ を配送するためだけに使われます。 .Pp .Nm sendmail を引数を指定せずに起動すると、 .Nm sendmail は標準入力を EOF (エンド・オブ・ ファイル)か `.'だけを含む行まで読み込み、メッセージのなかに記述されている アドレスにメッセージのコピーを送ります。アドレスの文法や内容にもとづいて 経路に使用するネットワークを決定します。 .Pp ローカルアドレスは、ファイルの中を検索して適当なエイリアスを行います。 先頭にバックスラッシュ `\\' のついたアドレスについては、エイリアスは 行なわれません。 通常、送り手はエイリアスの対象に含まれません。つまり、もし `john' が `group' にメールを送って、 `john' が `group' に 含まれている場合、送ったメッセージは `john' には送られません。 .Ss パラメータ .Bl -tag -width Fl .It Fl B Ns Ar type ボディのタイプを .Ar type に設定します。現在有効なのは、 .Li `7BIT' か .Li `8BITMIME' です。 .It Fl ba .Tn ARPANET モードに移行します。すべての入力行は CR-LF で終わらなければならず、 すべてのメッセージの末尾には CR-LF がつきます。また、``From:'' と ``Sender:'' フィールドは送り手の名前としてチェックされます。 .It Fl bd デーモンモードで実行します。バークレー .Tn IPC が必要です。 .Nm sendmail は .Xr fork 2 を行い、バックグラウンドで動作し、ソケット番号 25 で .Tn SMTP コネクションを 待ちます。通常このモードは、 .Pa /etc/rc から実行されています。 .It Fl bD フォアグラウンドで動作する以外は .Fl bd と同じです。 .It Fl bh 現在のホストの状況のデータベースを表示します。 .It Fl bH 現在のホストの状況のデータベースをパージします。 .It Fl bi エイリアスデータベースを初期化します。 .It Fl bm 普通にメールを配送します(デフォルト)。 .It Fl bp メールキューのリストを表示します。 .It Fl bs 標準入出力で .Tn RFC821 にもとづいた .Tn SMTP プロトコルを使います。この フラグは、 .Fl ba フラグのうち .Tn SMTP 互換の全ての操作を含みます。 .It Fl bt アドレスのテストモードで起動します。このモードは対話 モードでアドレスを入力し、処理の過程を表示します。設定ファイル をデバッグするのに使います。 .It Fl bv 名前のチェックだけを行います。メッセージの収集や配送は行い ません。ベリファイモードは、ユーザやメーリングリストが有効かどうかを確認する ために使います。 .It Fl C Ns Ar file 別の設定ファイルを使います。 .Nm sendmail は、別の設定ファイル を使用する場合は root として実行することはできません。 .It Fl d Ns Ar X デバッグ値を .Ar X に設定します。 .ne 1i .It Fl F Ns Ar fullname 送り手のフルネームを設定します。 .It Fl f Ns Ar name ``from'' に入る名前(つまり、送り手の名前です)を設定します。 .Fl f は、``trusted''なユーザ(普通は .Em root , .Em daemon , .Em network です)が使うか、 送り手が自分自身の名前を指定して使う場合のみ指定することができます。 .It Fl h Ns Ar N ホップカウントを .Ar N に設定します。ホップカウントは、 メールが処理されるたびに増えていきます。ホップカウントがリミットになった とき、メールは「エイリアスがループしている」という旨のエラーメッセージと いっしょに送り返されます。 もしこのフラグが指定されなければ、メッセージのなかの ``Received:'' 行がカウント されます。 .It Fl i 入力されるメッセージ中の `.' だけを含む行を無視します。 このフラグは、データをファイルから読み込むような場合に使用する必要があります。 .It Fl N Ar dsn 配送状況の通知条件を .Ar dsn に設定します。 .Ar dsn には、 .Ql never (何も通知しない)または、コンマで区切った、 .Ql failure (配送が失敗した場合に通知する) .Ql delay (配送が遅れた場合に通知する) .Ql success (配送が正常に行われた場合に通知する) の組合せを指定する事ができます。 .It Fl n エイリアスを行いません。 .It Fl O Ar option Ns = Ns Em value オプション .Ar option を、指定した .Em value に設定します。この形式では長いオプション名が使用されます。 詳しくは後に記述します。 .It Fl o Ns Ar x Em value オプション .Ar x を、指定した .Em value に設定します。 この形式では、一文字のオプション名しか使用できません。 短いオプション名についてはこのマニュアルには記述されていません。 詳しくは、 .%T "Sendmail Installation and Operation Guide" を参照して下さい。 .It Fl p Ns Ar protocol メッセージを受け取るのに利用するプロトコル名を設定します。 設定できるのは、 ``UUCP'' のようなプロトコル名だけかプロトコル+ホスト名、たとえば ``UUCP:ucbvax'' などです。 .It Fl q Ns Bq Ar time キューのなかにあるメッセージを処理する間隔を設定します。 .Ar time を省略した場合は、キューの内容を一度だけしか処理しません。 .Ar time は、 .Ql s (秒)、 .Ql m (分)、 .Ql h (時間)、 .Ql d (日)、 .Ql w (週)の単位を付けた数字で指定します。 たとえば、 .Ql -q1h30m や .Ql -q90m は、タイムアウトを 1 時間 30 分に設定します。 .Ar time が指定されると、 .Nm sendmail はデーモンとしてバックグラウンドで 実行されます。 デーモンとして実行させる際には、同時にオプション .Fl bd を つけておくほうが安全です。 .It Fl qI Ns Ar substr キュー ID の文字列に .Ar substr が含まれるジョブのみを処理します。 .It Fl qR Ns Ar substr 受信者のリストの文字列に .Ar substr が含まれるジョブのみを処理します。 .It Fl qS Ns Ar substr 送信者の文字列に .Ar substr が含まれるジョブのみを処理します。 .It Fl R Ar return メッセージがバウンスした時に返送されるメッセージの量を設定します。 .Ar return パラメータには、メッセージ全体を返送する場合は .Ql full を、ヘッダのみを返送する場合は .Ql hdrs を指定します。 .It Fl r Ns Ar name .Fl f フラグと同じですが、古い形式です。 .It Fl t 受信者をメッセージから読み取ります。To:, Cc:, Bcc: フィールドが受信者 のアドレスとして読み込まれます。Bcc: フィールドはメッセージの転送前に 削除されます。引数で指定されたアドレスは全て無視されますので、メッセー ジのヘッダに名前が並べてあっても、引数に指定してあるとメッセージは転送 されません。 .It Fl U 最初の(ユーザからの)発送である事を示します。 このフラグは、 .Nm Mail や .Nm exmh の様なユーザエージェントから呼び出す場合は .Em 必ず 指定する必要があり、 .Nm rmail 等のネットワーク配送エージェントから呼び出す場合は、 .Em 絶対に 指定してはいけません。 .It Fl V Ar envid オリジナルのエンベロープ ID を設定します。 これは、DSN をサポートするサーバ間では SMTP 上を伝達し、 DSN に従ったエラーメッセージの中で返送されます。 .It Fl v 詳細モードに移行します。展開されるエイリアスなどが報告されます。 .It Fl X Ar logfile 指定された .Ar logfile に、メーラに出たり入ったり するすべてメッセージに関する情報を記録します。メーラをデバッグする際の 最後の手段としてのみ使ってください。非常に大量の情報があっという間に記録 されます。 .El .Ss オプション .Nm sendmail には、設定することができる多くの処理オプションがあります。 通常、これらのオプションはシステム管理者のみが使います。 オプションは、コマンドラインから .Fl o フラグを使って(短いオプション名で)指定したり、 .Fl O フラグを使って(長いオプション名で)指定したり、 設定ファイルから指定することができます。ここに記述して いるのは部分的なもので、コマンド行から指定する場合に便利な物だけを、 長いオプション名で示しています。完全なリスト(と詳細)は、 .%T "Sendmail Installation and Operation Guide" を参照してください。 オプションには以下の物があります。 .Bl -tag -width Fl .It Li AliasFile= Ns Ar file 別のエイリアスファイルを使います。 .It Li HoldExpensive 接続するのに時間がかかるホストと接続するときは、 すぐに接続せず、リクエストはキューに入れられます。 .It Li CheckpointInterval= Ns Ar N .Nm sendmail が、 .Ar N 個の配送に成功するたびにキューファイルに チェックポイントを設定します(デフォルトは 10 個です)。これによって、 システムのクラッシュによって長いメーリングリストの配送が中断 されたときでも、再開時に同じ人に重複して配送されることを防ぎます。 .ne 1i .It Li DeliveryMode= Ns Ar x 配送モードを .Ar x に設定します。配送モードには .Ql i 対話的(同期的)配送モード、 .Ql b バックグラウンド(非同期的)配送モード、 .Ql q キューモード(実際の配送は、キューが実行されるときに行われる)、 .Ql d 延期モード(データベースの検索(特に DNS や NIS )が行われない以外は .Ql q と同じ)があります。 .It Li ErrorMode= Ns Ar x エラー処理をモード .Ar x に設定します。 .Ql m はエラーメッセージを送り返します。 .Ql w -はエラーメッセージを送り手のターミナルに書き出します +はエラーメッセージを送り手の端末に書き出します (送り手がログインしていなければ、メールを返します)。 .Ql p は、エラーメッセージを端末に表示します(デフォルト)。 .Ql q は、エラーメッセージを捨てます(exit コードだけを返します)。 .Ql e は、BerkNet 用に特別処理をします。 もし、モード .Ql m や .Ql w を使っている場合に、エラーとなったメッセージが エラーメールとして送り返されず、送り手が .Nm sendmail を実行している マシン上のユーザならば、 メッセージのコピーは送り手のホームディレクトリにある .Pa dead.letter に追加されます。 .It Li SaveFromLine メッセージのはじめに .Tn UNIX Ns \-style From 行を残します。 .It Li MaxHopCount= Ar N メールがループしていると判断されない、最大のホップ数を 指定します。 .It Li IgnoreDots `.' だけを含む行をメッセージの終わりとして解釈しません。 .It Li SendMimeErrors エラーメッセージをMIMEフォーマットで送り返します。 設定されていない場合は、DSN (Delivery Status Notification: 配送状況通知) SMTP 拡張は無効になります。 .It Li ConnectionCacheTimeout= Ns Ar timeout コネクションキャッシュの .Ar timeout を設定します。 .It Li ConnectionCacheSize= Ns Ar N コネクションキャッシュのサイズを .Ar N に設定します。 .It Li LogLevel= Ns Ar n ログレベルを .Ar n にします。 .It Li MeToo エイリアスに自分自身が含まれている場合、``me''(送り手自身)にも送ります。 .It Li CheckAliases .Xr newaliases 1 コマンドの実行の際、 エイリアスの右側の項目(エイリアスの値)を有効性をチェックします。 .It Li OldStyleHeaders もしオプションが設定されていれば、メッセージが古いスタイルのヘッダ を持つことがあることを意味します。 このオプションが設定されていなければ、このメッセージが新しい スタイルを持っていることが保証されます(2 つのアドレスの間はスペースのかわり にカンマで区切られます)。このオプションが設定されていると、大抵の場合、 ヘッダのフォーマットを正しく決定するためのアルゴリズムが用いられます。 .It Li QueueDirectory= Ns Ar queuedir キューメッセージを保存するディレクトリを選択します。 .It Li StatusFile= Ns Ar file 指定した名前のファイルに統計情報をセーブします。 .It Li Timeout.queuereturn= Ns Ar time キューのなかの配送されなかったメッセージのタイムアウト時間を設定します。 この時間内に(ホストのダウンなどにより)配送が行われなかったときには、 失敗した旨のメッセージが送り返されます。デフォルトは 5 日です。 .It Li UserDatabaseSpec= Ns Ar userdatabase このオプションが設定されると、情報を送る際にユーザデータ ベースに対する問い合わせが行われます。 この方法をエイリアス機構の補助として使用する事ができます。ただし、 エイリアスはそのホストローカルでのみ有効なので、データベースが意図的に 分散されている場合は使用できません。 .Nm sendmail が .Dv USERDB 付きでコンパイルされていなければ使うことはできません。 .It Li ForkEachJob キューを処理する間、 .Xr fork 2 を行います。メモリが少ないマシン では便利です。 .It Li SevenBitInput 到着するメッセージを 7 ビットにします (8 ビット目は落します)。 .It Li EightBitMode= Ns Ar mode 8 ビットの入力を 7 ビットの宛先へ送る場合の処理方法を .Ar mode に設定します。 処理方法には、 .Li m (mime 化) 7 ビット MIME 形式へ変換、 .Li p (パス) 8 ビットのまま配送(プロトコルには違反します)、 .Li s (厳密) メッセージをバウンス、 があります。 .It Li MinQueueAge= Ns Ar timeout 配送の試行の間、ジョブがキューに蓄積される時間を設定します。 .It Li DefaultCharSet= Ns Ar charset 特に指定されていない場合に、8 ビットのデータである事を示す ラベルとして使用されるデフォルトのキャラクタを設定します。 .It Li DialDelay= Ns Ar sleeptime コネクションの確立が失敗した場合に、再試行までに .Ar sleeptime だけスリープします。オンデマンドでダイアル接続するサイトでの使用に便利です。 .It Li NoRecipientAction= Ns Ar action 受信者ヘッダ (To: Cc: あるいは Bcc:) がない場合の動作を .Ar action に設定します。 .Li none メッセージを変更しない、 .Li add-to To: ヘッダにエンベロープで指定された受信者を加える、 .Li add-apparrently-to Apparrently-To: ヘッダにエンベロープで指定された受信者を加える、 .Li add-bcc 空の Bcc: ヘッダを加える、 .Li add-to-undisclosed .Ql "To: undisclosed-recipients:;" というヘッダを加える、という動作が指定できます。 .It Li MaxDaemonChildren= Ns Ar N 待ち受け SMTP デーモンが同時に動作できる子プロセスの最大数を .Ar N に設定します。 .It Li ConnectionRateThrottle= Ns Ar N SMTP ポートへの 1 秒当りの最大コネクション数を .Ar N に設定します。 .El .Pp エイリアスのなかで最初の文字が `|' で始まるものは、メールの内容をパイプで コマンドに送るものと解釈されます。引数などをつけるために空白文字が 必要な場合はクォートする (" でくくる)必要があります。以下に、例を示します: .Pp .Bd -literal -offset indent -compact msgs: "|/usr/bin/msgs -s" .Ed .Pp エイリアスには、 .Dq :include: Ns Ar filename という文法もあります。 .Nm sendmail は、 メールの受け手のエイリアスとして、指定されたファイルを読みます。 以下に、例を示します: .Pp .Bd -literal -offset indent -compact poets: ":include:/usr/local/lib/poets.list" .Ed .Pp 上記の例の場合は、 .Pa /usr/local/lib/poets.list を読み、`poets' のグループの ためのアドレスリストを作ります。 .Pp .Nm sendmail は、以下に示すような終了コードを返します。これらの コードは、 .Aq Pa sysexits.h に定義されています。 .Bl -tag -width EX_UNAVAILABLE -compact -offset indent .It Dv EX_OK すべてのアドレスについて完全に成功しました。 .It Dv EX_NOUSER ユーザ名が認識できません。 .It Dv EX_UNAVAILABLE 処理に必要なリソースを得ることができません。 .It Dv EX_SYNTAX アドレスに文法的な間違いがあります。 .It Dv EX_SOFTWARE 引数が間違っている等の、内部的なエラーです。 .It Dv EX_OSERR .Dq cannot fork のような、一時的な OS エラーです。 .It Dv EX_NOHOST ホスト名が認識できません。 .It Dv EX_TEMPFAIL メッセージはすぐには送られませんでしたが、 キューには入れられました。 .El .Pp .Nm newaliases というコマンドで実行されると、 .Nm sendmail はエイリアス データベースを再構築します。 .Nm mailq というコマンドで実行されると、 .Nm sendmail はメールキューの内容を表示します。 .Sh 関連ファイル .Pa /etc/sendmail.cf を除き、以下のファイルのパスはすべて .Pa /etc/sendmail.cf 内部で決められています。以下は一例に過ぎません。 .Pp .Bl -tag -width /usr/lib/sendmail.fc -compact .It Pa /etc/aliases エイリアス名の生データ .It Pa /etc/aliases.db エイリアス名のデータベース .It Pa /etc/sendmail.cf 設定ファイル .It Pa /usr/share/misc/sendmail.hf ヘルプファイル .It Pa /var/log/sendmail.st 統計情報ファイル .It Pa /var/spool/mqueue/* テンポラリファイル .It Pa /var/run/sendmail.pid デーモンのプロセス ID を格納しているファイル .El .Sh 関連項目 .Xr mail 1 , .Xr syslog 3 , .Xr aliases 5 , .Xr mailaddr 7 , .Xr mail.local 8 , .Xr rc 8 , .Xr rmail 8 ; .Pp DARPA Internet Request For Comments .%T RFC819 , .%T RFC821 , .%T RFC822 . .Rs .%T "Sendmail \- An Internetwork Mail Router" .%V SMM .%N \&No. 9 .Re .Rs .%T "Sendmail Installation and Operation Guide" .%V SMM .%N \&No. 8 .Re .Sh 歴史 .Nm コマンドは .Bx 4.2 から登場しました。 diff --git a/ja_JP.eucJP/man/man8/shutdown.8 b/ja_JP.eucJP/man/man8/shutdown.8 index 72eb1ce1ec..d5afea9f91 100644 --- a/ja_JP.eucJP/man/man8/shutdown.8 +++ b/ja_JP.eucJP/man/man8/shutdown.8 @@ -1,135 +1,135 @@ .\" Copyright (c) 1988, 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 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. .\" .\" @(#)shutdown.8 8.1 (Berkeley) 6/5/93 .\" jpman %Id: shutdown.8,v 1.2 1997/05/13 00:55:09 mutoh Stab % .\" .Dd June 5, 1993 .Dt SHUTDOWN 8 .Os BSD 4 .Sh 名称 .Nm shutdown .Nd 指定時刻にシステムを停止する .Sh 書式 .Nm shutdown .Op Fl .Op Fl hkrn .Ar time .Op Ar warning-message ... .Sh 解説 .Nm shutdown は、自動的にシャットダウンするための手順をスーパユーザに提供します。 システムがシャットダウンされるときユーザに知らせるので、 こういったお知せを面倒がって行なわない システム管理者やハッカーやグルといった人々から、ユーザを救います。 .Pp 以下の親切なオプションがあります: .Bl -tag -width time .It Fl h .Ar time で指定された時間に .Xr halt 8 を実行し、システムを停止します。 .It Fl k 全ユーザを追い出します。 実際にはシステムを停止しませんが、 マルチユーザシステムのままでスーパユーザ以外のユーザをログインできなくします。 .It Fl n 停止する前に、通常実行される .Xr sync 2 を実行しません。 .It Fl r .Ar time で指定した時刻に .Xr reboot 8 を実行し、システムを再起動します。 .It Ar time .Nm shutdown がシステムを停止させる時間を指定します。 .Ar now を指定すると即時にシステムを停止します。 また、時間を指定する次の二つの書式があります: .Ar +number もしくは .Ar yymmddhhmm の形式です。現在のシステムの年・月・日の値がデフォルトになっています。 一つめの書式は .Ar number 分経過後をあらわし、二つめの書式は停止する時刻を直接指定します。 .It Ar warning-message その他の引数は現在ログイン中のユーザに送る警告メッセージとして扱われます。 .It Fl もし .Ql Fl がオプションとして与えられると、警告メッセージを標準入力から読み取ります。 .El .Pp システム停止の 10 時間前から、ログイン中の全てのユーザの端末に 警告メッセージが表示されはじめ、終末が近付くにつれ頻繁になってきます。 システム停止の 5 分前、もしくは 5 分以内にシステム停止する場合には、 ただちに警告メッセージをコピーした .Pa /etc/nologin が作られログインが禁止されます。 ユーザがログインしようとした際にこのファイルが存在する場合には、 .Xr login 1 はその内容を表示し終了します。このファイルは .Nm shutdown が終了する際に削除されます。 .Pp システム停止時には、システムを停止した時間、実行者、理由が システムログに記録されます。その後、terminate シグナルが .Xr init に送られ、システムをシングルユーザ状態にします(この動作は上記の オプションに依存します)。 システムを停止する時間と警告メッセージは .Pa /etc/nologin に置かれます。これをユーザにシステムを再開する時間や、なぜシステムを 停止するかなどを知らせるために使うべきです。 .Sh 関連ファイル .Bl -tag -width /etc/nologin -compact .It Pa /etc/nologin login に誰にもログインさせないことを知らせます。 .El .Sh 関連項目 .Xr login 1 , .Xr wall 1 , .Xr nologin 5 , .Xr halt 8 , .Xr reboot 8 .Bd -literal -offset indent -.Sh 下位互換性 -下位互換性のため、二つめの書式で時と分をコロン(``:'')で区切ることができます。 +.Sh 以前との互換性 +以前との互換性のため、二つめの書式で時と分をコロン(``:'')で区切ることができます。 .Ed .Sh 歴史 .Nm コマンドは .Bx 4.0 から登場しました。 diff --git a/ja_JP.eucJP/man/man8/sicontrol.8 b/ja_JP.eucJP/man/man8/sicontrol.8 index e016ba73d5..e582d7e7bb 100644 --- a/ja_JP.eucJP/man/man8/sicontrol.8 +++ b/ja_JP.eucJP/man/man8/sicontrol.8 @@ -1,115 +1,115 @@ .\" %Id: sicontrol.8,v 1.3.2.2 1997/10/16 06:28:03 charnier Exp % .\" jpman %Id: sicontrol.8,v 1.2 1997/06/17 17:49:35 saeki Stab % .\" The following requests are required for all man pages. .Dd September 26,1995 .Dt SICONTROL 8 .Os FreeBSD .Sh 名称 .Nm sicontrol .Nd Specialix 社 SI/XIO ドライバの設定とデバッグ .Sh 書式 .Nm sicontrol device .Ar command Op Cm Ar param ... .Sh 解説 .Nm sicontrol は SI/XIO デバイスドライバの設定やモニタリングをおこなうために使用します。 .Pp .Nm sicontrol は .Ar device で指定されたポートを操作します。 .Pp ドライバ全体の設定をおこなう際には、特別なデバイス名 `-' を .Ar device に指定します。 .Pp 必要であれば、デバイス名には '/dev/' が補完されます。 .Pp 以下のコマンドはドライバ全体の設定をおこなうので、 デバイス名に '-' を指定する必要があります。 .Bl -tag -width 4n .It Cm int_throttle Op Cm value 「総合割り込みスロットル値」を設定します。 ホストアダプタ割り込みの 1 秒あたりの最大値は次のようにして求められます: .Pp .Ar "controller CPU clock / (8 * int_throttle)" .Pp ブート時のデフォルト値は 25000 で、ホストアダプタの CPU クロックは 25MHz ですから、この場合の最大割り込みレートは約 125 回/秒になります。 .Pp この値を下げると、ホストアダプタがオペレーティングシステムに 処理を要求するための割り込みのレートを増加させることができます。 .\" .It Cm rxint_throttle Op Cm value 受信割り込みスロットル値を設定します。 ブート時のデフォルト値は 4 で、割り込みレートは約 25 回/秒になります。 .Pp この値を下げると、ホストアダプタがオペレーティングシステムに受信 FIFO を 空にするよう要求する割り込みのレートを増加させることができます。 .\" .It Cm nport そのデバイスドライバの制御下にあるシリアルポートの数を返します。 .El .Pp 以下のコマンドは個々のシリアルポートに対して実行されるため、 .Pa /dev 以下のデバイス名を指定する必要があります。 .Bl -tag -width 4n .It Cm mstate モデムが駆動する制御信号の、現在の状態を表示します。 .It Cm ccbstat 指定されたシリアルポートの "ccb" 構造体の、現在の内容を表示します。 これはドライバのデバッグや、シリアルポートが反応しない原因の調査以外には、 あまり使い道がありません。 .It Cm ttystat 指定されたシリアルポートに関するカーネル内部の "tty" 構造体の現在の内容を 表示します。これはドライバのデバッグ以外には、あまり使い道がありません。 .El .\" The following requests should be uncommented and used where appropriate. .\" This next request is for sections 2 and 3 function return values only. .\" .Sh RETURN VALUES .\" This next request is for sections 1, 6, 7 & 8 only .\" .Sh ENVIRONMENT .Sh 関連ファイル .Bl -tag -width /dev/si_control -compact .It Pa /dev/si_control .Xr sicontrol 8 で使用される、ドライバ全体の制御ファイル .It Pa /dev/ttyA* -ターミナル制御ポート +端末制御ポート .It Pa /dev/ttyiA* .Xr stty 1 で使用される、初期 termios ステートデバイス .It Pa /dev/ttylA* .Xr stty 1 で使用される、ロックされた termios ステートデバイス .El .\" .Sh EXAMPLES .\" This next request is for sections 1, 6, 7 & 8 only .\" (command return values (to shell) and fprintf/stderr type diagnostics) .Sh 診断 一般に自明です..... .\" The next request is for sections 2 and 3 error and signal handling only. .\" .Sh ERRORS .Sh 関連項目 .Xr stty 1 , .Xr si 4 , .Xr termios 4 , .Xr tty 4 , .Xr comcontrol 8 . .\" .Sh STANDARDS .Sh 歴史 .Nm sicontrol は .An Andy Rutter Aq andy@acronym.co.uk によって書かれた .Nm siconfig ユーティリティを基にしている部分が多少あります。 .Pp Specialix International 社は、このデバイスドライバに関して、 いかなる形のサポートもおこないません。 .Sh 作者 Peter Wemm .Sh バグ たくさんあるでしょう... :-) diff --git a/ja_JP.eucJP/man/man8/sliplogin.8 b/ja_JP.eucJP/man/man8/sliplogin.8 index 458fd7299b..3d3be3fbd7 100644 --- a/ja_JP.eucJP/man/man8/sliplogin.8 +++ b/ja_JP.eucJP/man/man8/sliplogin.8 @@ -1,287 +1,287 @@ .\" Copyright (c) 1990, 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 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. .\" .\" @(#)sliplogin.8 8.2 (Berkeley) 1/5/94 .\" jpman %Id: sliplogin.8,v 1.3 1997/07/26 22:10:08 horikawa Stab % .\" .Dd January 5, 1994 .Dt SLIPLOGIN 8 .Os .Sh 名称 .Nm sliplogin .Nd シリアル回線とネットワークインタフェースの対応づけ(アタッチ)を行う .Sh 書式 .Nm .Op Ar loginname Op Ar device .Sh 解説 .Nm は、標準入力 (もしくは、 .Ar device ) の tty 回線を用いて他のホストと Serial Line IP .Pq Tn SLIP による接続を確立するためのコマンドです。 そのために、まず .Pa /etc/sliphome/slip.hosts ファイルを検索し、引数 .Ar loginname と一致するエントリを引き出します。 (ログイン名が省略された場合、コマンドを起動したユーザのログイン名が用い られます) ログイン名と一致するエントリが見つかった場合、回線は SLIP に適した設定 (8ビット透過な入出力) にされ、オプションの回線パラメータを使って .Tn SLIP 回線に変換されます。 .Pp 回線パラメータのオプションは次のとおりです: .Sq normal , .Sq compress , .Sq noicmp , .Sq autocomp これらはそれぞれ、 .Sq 通常の設定 (ヘッダ圧縮をしない) 、 .Sq VJヘッダ圧縮を行う 、 .Sq ICMP パケットを無視する 、 .Sq VJヘッダ圧縮を自動設定する (相手がサポートしているときのみヘッダ圧縮する) です。 .Pp その後、 .Tn IP アドレスやネットマスクなどの設定を行なう、 SLIP インタフェース初期化のためのシェルスクリプトが実行され ます。 .Pp 通常、初期化のためのシェルスクリプトファイルは .Pa /etc/sliphome/slip.login ですが、特定のホスト向けの設定のために、 .Pa /etc/sliphome/slip.login. Ns Ar loginname というシェルスクリプトファイルがあった場合は、そちらが実行されます。 スクリプトは、以下のパラメータとともに起動されます。 .Bl -tag -width slipunit .It Em slipunit 回線に割り当てられる SLIP インタフェースです。例えば、 .Sy 0 の場合、割り当てられる SLIP インタフェースは .Sy sl0 です。 .It Em speed 回線速度です。 .It Em args .Ar loginname を指定して起動する場合、 .Pa /etc/sliphome/slip.hosts の対応エントリに記述されている引数です。 .El .Pp スーパユーザのみが、ネットワークインタフェースのアタッチを行うことが -出来ます。ネットワークインタフェースは、リモートホスト側でハングアップす +出来ます。ネットワークインタフェースは、リモートホスト側で回線切断す るか、ローカルホスト側の .Nm プロセスが終了した場合には自動的に対応づけが解消 (デタッチ) されます。 カーネル SLIP モジュールが設定されていた場合、このインタフェースを経由 して設定されている全ての経路は、同時に消滅します。 他の処理も行いたいサイトでは、回線の切断時に .Pa /etc/sliphome/slip.logout ファイルもしくは .Pa /etc/sliphome/slip.logout. Ns Ar loginname ファイルが有ればその内容が実行されますので、これを使って下さい。 起動時には、ログインスクリプトと同じ引数が与えられます。 .Ss /etc/sliphome/slip.hosts の書式 コメント (`#' で開始する行) および空白行 (もしくは空白で開始する行) は 無視されます。 他の行は、 .Ar loginname で始まる必要があります。 しかし、他の引数については、そのログイン名に対応して実行される .Pa slip.login ファイルに応じたものであれば、何でもかまいません。 引数は、スペースやタブで区切り、 .Xr sh 1 が解釈出来るクォートなどを用いてまとめます(ただし .Ar loginname はクォートできません)。 通常、各行は以下の形式で記述されます: .Bd -literal -offset indent loginname local-address remote-address netmask opt-args .Ed .Pp .Em local-address と .Em remote-address については、互いに接続される SLIP インタフェースに割り当てられる IP アドレスを (ホスト名か数字で) 設定します。そして、 .Em netmask については、適切な IP ネットマスクを設定します。これらの引数は、直接 .Xr ifconfig 8 に渡されます。 .Em opt-args は、オプション引数であり、回線の設定に用いられます。 .Pp .Sh FreeBSD での追加 追加の SLIP 設定用ファイル .Pa /etc/sliphome/slip.slparms があるかもしれません。 特定のホストに異なる設定が必要である場合、 ファイル .Pa /etc/sliphome/slip.slparms. Ns Ar loginname が存在すれば、代わりに使われます。 .Ss /etc/sliphome/slip.slparms* の書式 コメント (`#' で開始する行) および空白行 (もしくは空白で開始する行) は 無視されます。 このファイルには空白で区切られた 1 から 3 個の数字を書きます。 数字は順に、 .Ar keepalive , .Ar outfill , .Ar slunit を意味します。 .Bl -tag -width keepalive .It Ar keepalive SLIP "keep alive" タイムアウト時間を秒単位で設定します。 FRAME_END がこの時間内に受信できない時、 .Nm は回線を閉じて終了します。 省略時はタイムアウトは設定されません ( 0 です)。 .It Ar outfill SLIP "out fill" タイムアウト時間を秒単位で設定します。 これにより、相手側の "keep alive" タイムアウトに必要な FRAME_END をこの時間内に送信します。 省略時はタイムアウトは設定されません ( 0 です)。 .It Ar slunit SLIP ユニット番号を直接指定します。 2 つのインタフェースが同じユニット番号にならないかチェックをしないので、 注意が必要です。 省略時は動的にユニット番号を割り当てます。 .El .Pp あとの 2 つのパラメータが省略されたときは、これに対応する SLIP の設定には影響が ありません。最初の 2 つのパラメータが 0 であるときにも、これに対応する設定に 影響しません。 .Sh 使用例 通常、 .Nm を使う場合、 リモートの SLIP サイトごとに .Nm をシェルフィールドに持つ .Pa /etc/passwd のエントリを作ります。例えば .Bd -literal Sfoo:ikhuy6:2010:1:slip line to foo:/tmp:/usr/sbin/sliplogin .Ed .Pp (ここでは、リモートホスト .Ar hostname のアカウント名を .Em Shostname としています) 次に、 .Pa slip.hosts に、以下のようなエントリを追加します: .Pp .Bd -literal -offset indent -compact Sfoo `hostname` foo netmask .Ed .Pp ここで、 .Em `hostname` は、 .Xr sh によって評価されローカルホスト名となり、 .Em netmask はローカルホストの IP ネットマスクです。 .Pp 注意事項があります。 .Nm は、root に setuid しなければなりません。 セキュリティホールではありませんが、心がけの悪い奴が .Nm をつかって端末の回線を使えなくしたり、リモートの SLIP サイトのユーザの アクセスを不可能にしたりすることができます。これを防ぐために、 .Nm をユーザ .Em root グループ .Em network モード 4550 でインストールし、グループ .Em network のメンバのみが .Nm を実行可能とします。システム管理者は、 正当なユーザが正しいグループのメンバであることを確認すべきです。 .Sh 診断 .Nm は、様々な情報を .Em daemon の facility コードでシステムログデーモン .Xr syslogd 8 を通じて、 syslog に書き出します。 以下に問題の大きさ別にメッセージを列挙します。 .Pp .Sy エラー .Bl -tag -width Ds -compact .It Sy ioctl (TCGETS): Em 理由 .Dv TCGETS .Fn ioctl を用いた回線のパラメータ取得が失敗しました。 .Pp .It Sy ioctl (TCSETS): Em 理由 .Dv TCSETS .Fn ioctl を用いた回線のパラメータ設定が失敗しました。 .Pp .It Sy /etc/sliphome/slip.hosts: Em 理由 .Pa /etc/sliphome/slip.hosts ファイルがオープン出来ません。 .Pp .It Sy access denied for Em user .Em user エントリが .Pa /etc/sliphome/slip.hosts にありません。 .El .Pp .Sy 報告 .Bl -tag -width Ds -compact .It Sy "attaching slip unit" Em unit Sy for Ar loginname .Tn SLIP ユニット .Em unit は、アタッチに成功しました。 .El .Sh 関連項目 .Xr slattach 8 , .Xr syslogd 8 , .Pa /usr/share/examples/sliplogin .Sh 歴史 .Nm コマンドは、現在βテスト版です。 diff --git a/ja_JP.eucJP/man/man8/smrsh.8 b/ja_JP.eucJP/man/man8/smrsh.8 index 64833ebe0b..1096da301c 100644 --- a/ja_JP.eucJP/man/man8/smrsh.8 +++ b/ja_JP.eucJP/man/man8/smrsh.8 @@ -1,103 +1,103 @@ .\" Copyright (c) 1993 Eric P. Allman .\" Copyright (c) 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. .\" .\" @(#)smrsh.8 8.2 (Berkeley) 1/9/96 .\" jpman %Id: smrsh.8,v 1.3 1997/09/04 18:05:48 horikawa Stab % .\" .TH SMRSH 8 11/02/93 .SH 名称 smrsh \- sendmail用に制限されたシェル .SH 書式 .B smrsh .B \-c command .SH 解説 .I smrsh は、 .IR sendmail (8) -のコンフィグレーションファイルで、 +の設定ファイルで、 .I sh の代わりに ``prog'' メーラとして使用する事を目的としています。 .I smrsh は、システムの全体的なセキュリティを改善するために、 .I sendmail の ``|program'' 書式により起動する事ができるコマンドを制限します。 つまり、もし ``悪者'' が alias ファイルや forward ファイルを経由せずに sendmail からプログラムを実行する事ができたとしても、 .I smrsh を使えば、彼(あるいは彼女)が実行できるプログラムを制限する事ができるのです。 .PP 簡単に言うと、 .I smrsh は、実行可能なプログラムを /usr/libexec/sm.bin ディレクトリに存在するもの だけに限定します。これにより、システム管理者は利用可能なコマンドを選択する 事ができます。 更に、 .I smrsh は、``end run'' 攻撃を防ぐために、コマンド行に `\`', `<', `>', `|', `;', `&', `$', `(', `)', `\er'(キャリッジリターン), `\en'(ニューライン) の文字を含むコマンドは実行しません。 .PP プログラム名の前にあるパス名は全て取り除かれるため、 ``/usr/bin/vacation'', ``/home/server/mydir/bin/vacation'', ``vacation'' などは全て ``/usr/libexec/sm.bin/vacation'' と解釈されます。 .PP システム管理者は、 /usr/libexec/sm.bin に置くプログラムを選ぶ際には慎重な 判断をすべきです。適切な物としては、 .IR vacation (1) や .IR procmail (1) などがあげられるでしょう。いかなる要望があっても、シェルや、 .IR perl (1) などのシェルに似たプログラムを sm.bin に入れてはいけません。 これは、単に任意のプログラムを実行する事を制限するだけで、 ``#!''書式を用いた、シェルスクリプトや perl スクリプトを sm.bin ディレクトリに入れる事を制限する訳ではありません。 .SH コンパイル コンパイルはほとんどのシステムでつまらないものです。 デフォルトのサーチパス (デフォルトでは``/bin:/usr/bin'') を変更するためには、\-DPATH=\e"\fIpath\fP\e" を 使用する必要があり、また、 デフォルトのプログラムディレクトリ (デフォルトでは ``/usr/libexec/sm.bin'') を変更するためには、\-DCMDBIN=\e"\fIdir\fP\e" を 使用する必要があります。 .SH 関連ファイル /usr/libexec/sm.bin \- 制限されたプログラム用のディレクトリ .SH 関連項目 sendmail(8) diff --git a/ja_JP.eucJP/man/man8/syslogd.8 b/ja_JP.eucJP/man/man8/syslogd.8 index 4fb52ff791..b968f0b2e2 100644 --- a/ja_JP.eucJP/man/man8/syslogd.8 +++ b/ja_JP.eucJP/man/man8/syslogd.8 @@ -1,217 +1,217 @@ .\" Copyright (c) 1983, 1986, 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 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. .\" .\" @(#)syslogd.8 8.1 (Berkeley) 6/6/93 .\" %Id: syslogd.8,v 1.6.2.6 1998/03/09 13:56:05 jkh Exp % .\" jpman %Id: syslogd.8,v 1.3 1997/05/19 17:08:30 horikawa Stab % .\" .Dd October 12, 1995 .Dt SYSLOGD 8 .Os BSD 4.2 .Sh 名称 .Nm syslogd .Nd システムメッセージの記録をとる .Sh 書式 .Nm syslogd .Op Fl ds .Op Fl a Ar allowed_peer .Op Fl f Ar config_file .Op Fl m Ar mark_interval .Op Fl p Ar log_socket .Sh 解説 .Nm -デーモンはコンフィグレーションファイルに指定された通りに、システムコンソール、 +デーモンは設定ファイルに指定された通りに、システムコンソール、 ログファイル、他のマシンやユーザへのメッセージを読み込み、記録します。 オプションには以下のものがあります。 .Bl -tag -width indent .It Fl a Ar allowed_peer .Ar allowed_peer がこの .Nm に UDP データグラムを使用してログすることを許します。複数の .Fl a オプションを指定可能です。 .Pp .Ar allowed_peer は以下のいずれかです: .Bl -tag -width "ipaddr/masklen[:service]XX" .It Ar ipaddr/masklen Ns Op Ar :service .Ar ipaddr (通常のドット表記の 4 つ組) からのデータグラムを受け付けます。 アドレス比較の際、 .Ar masklen ビットを考慮します。 .Ar service が指定された場合、パケット送出元が属すべき UDP service の名前もしくは番号となります( .Xr services 5 参照)。 .Ar service に .Ql \&* を指定すると、全ての UDP ポートから送信されたパケットを受け付けます。 デフォルトの .Ar service は .Ql syslog です。 .Ar masklen を指定しないと、 .Ar ipaddr がクラス A もしくは B のアドレス範囲に属す場合にはそれぞれ 歴史的なクラス A もしくは B のネットマスクが使用され、 そうでない場合には 24 が使用されます。 .It Ar domainname Ns Op Ar :service 送信アドレスのアドレス逆引きにおいて .Ar domainname が得られたデータグラムを受け付けます。 .Ar service の意味は前述の通りです。 .It Ar *domainname Ns Op Ar :service 上述の通りですが、送信ホスト名が .Ar domainname で .Em 終る 全てのホストから受け付けます。 .El .It Fl d .Nm をデバッグモードで実行します。これは恐らく、 .Nm の開発者にのみ役立ちます。 .It Fl f -代りのコンフィグレーションファイルのパス名を指定します。 +代りの設定ファイルのパス名を指定します。 デフォルトは .Pa /etc/syslog.conf です。 .It Fl m .Dq mark されたメッセージの間隔を分単位で指定します。 デフォルトは20分です。 .It Fl p 代りのログ用ソケットのパス名を指定します。 デフォルトは .Pa /var/run/log です。 .It Fl s セキュアモードで操作します。リモートマシンからのログメッセージを受ける ために listen しません。 .El .Pp .Nm デーモンは -起動時と hangup シグナルを受けとった時はいつでもコンフィグレーションファイルを +起動時と hangup シグナルを受けとった時はいつでも設定ファイルを 読み込みます。 -コンフィグレーションファイルのフォーマットに関する情報は、 +設定ファイルのフォーマットに関する情報は、 .Xr syslog.conf 5 参照して下さい。 .Pp .Nm デーモンは .Tn UNIX ドメインソケット .Pa /var/run/log、 .Pa /etc/services で指定されるインターネットドメインソケット およびスペシャルデバイス .Pa /dev/klog -(カーネルメッセージを読むため)からメッセージを読み込みます。 +(カーネルメッセージを読むため) からメッセージを読み込みます。 .Pp .Nm デーモンはファイル .Pa /var/run/syslog.pid -を作成し、プロセスIDを記録します。 +を作成し、プロセス ID を記録します。 これは .Nm -のkillやコンフィグレーションファイルを読み込ませるために使えます。 +を kill や、設定ファイルを読み込ませるために使えます。 .Pp .Nm に送られるメッセージは単一の行で構成されます。このメッセージは先頭に優 先順位コードを含んでいます。このコードは .Sq Aq 5 -のように括弧でくくられた十進数から構成されており、インクルードファイル +のように括弧でくくられた 10 進数から構成されており、インクルードファイル .Aq Pa sys/syslog.h で定義されている優先順位に対応します。 .Sh 関連ファイル .Bl -tag -width /var/run/syslog.pid -compact .It Pa /etc/syslog.conf コンフィグレーションファイル .It Pa /var/run/syslog.pid 動作中の .Nm のプロセスID .It Pa /var/run/log .Tn UNIX ドメインデータグラムのログ用ソケットの名前 .It Pa /dev/klog カーネルログ用のデバイス .El .Sh 関連項目 .Xr logger 1 , .Xr syslog 3 , .Xr services 5 , .Xr syslog.conf 5 .Sh 歴史 .Nm コマンドは .Bx 4.3 から登場しました。 .Pp .Fl s および .Fl a オプションは .Fx 2.2 における拡張です。 .Sh バグ UDPパケットで受けとったメッセージを記録する能力は認証されていないディ スクを溢れさせるリモートサービスと等価であり、恐らくデフォルトで無効に されるべきです。ある種の .Nm 間の認証メカニズムが用意されるべきでしょう。 最悪の無駄遣いを避けるために、 .Fl a オプションの使用を強く勧めます。 .Pp .Fl a のマッチングアルゴリズムは非常に効率的には見えません; ドメイン名比較より、数値による IP アドレスを使用する方が高速です。 許可されたピアのリストの検索は線型に行なわれるため、 多くのメッセージを受け付けると予測されるピアグループは .Fl a リストの最初の方に置くべきです。 .Pp ログ用ソケットは読み込み専用のルートファイルシステムの扱いを容易にする ために .Pa /dev から移されました。このことは古いバイナリを混乱させるかもしれないので、 過渡期の間はシンボリックリンクが役に立つでしょう。 diff --git a/ja_JP.eucJP/man/man8/telnetd.8 b/ja_JP.eucJP/man/man8/telnetd.8 index 5cf6c69595..5b1307f0b3 100644 --- a/ja_JP.eucJP/man/man8/telnetd.8 +++ b/ja_JP.eucJP/man/man8/telnetd.8 @@ -1,605 +1,605 @@ .\" Copyright (c) 1983, 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. .\" .\" @(#)telnetd.8 8.3 (Berkeley) 3/1/94 .\" %Id: telnetd.8,v 1.5.2.4 1998/05/04 02:41:38 steve Exp % .\" jpman %Id: telnetd.8,v 1.2 1997/05/12 08:14:57 yugawa Stab % .\" .Dd March 1, 1994 .Dt TELNETD 8 .Os BSD 4.2 .Sh 名称 .Nm telnetd .Nd DARPA .Tn TELNET プロトコルサーバ .Sh 書式 .Nm /usr/libexec/telnetd .Op Fl BUhlkns .Op Fl D Ar debugmode .Op Fl I Ns Ar initid .Op Fl S Ar tos .Op Fl X Ar authtype .Op Fl a Ar authmode .Op Fl edebug .Op Fl p Ar loginprog .Op Fl r Ns Ar lowpty-highpty .Op Fl u Ar len .Op Fl debug Op Ar port .Sh 解説 .Nm コマンドは、 .Tn DARPA 標準 .Tn TELNET 仮想端末プロトコルをサポートするサーバです。 .Nm は、通常は .Pa /etc/services ファイル ( .Xr services 5 参照) に記述されている .Tn TELNET ポートへの接続要求を受けて、インターネットサーバ ( .Xr inetd 8 参照) から起動されます。 .Fl debug オプションは、 .Xr inetd 8 の代わりに .Nm を手動で起動するために用いられます。 このように手動で起動された場合には、代わりの .Tn TCP ポート番号で .Nm を動かすために .Ar port を指定する事ができます。 .Pp .Nm コマンドには以下のオプションがあります: .Bl -tag -width indent .It Fl a Ar authmode このオプションは、どのモードが認証に使われるかを指定するために用いられます。 このオプションは、 .Nm が .Dv AUTHENTICATION オプションをサポートする設定で構築された場合においてのみ役に立つことに 注意して下さい。 以下に示すようないくつかの .Ar authmode があります: .Bl -tag -width debug .It Cm debug 認証のデバッグコードを有効にします。 .It Cm user リモートユーザは、自分自身であること示すための有効な認証情報を 提供した時にのみ接続が許可されます。 この場合、指定されたアカウントに対しては、パスワードの提供なしに接続が 許可されます。 .It Cm valid リモートユーザが自分自身であることを示すための有効な認証情報を 提供した時にのみ接続が許可されます。 リモートユーザが指定されたアカウントに対する自動的な接続が許可されて いなければ .Xr login 1 コマンドは、必要となるユーザ認証を実施します。 .It Cm other ある種の認証情報を提供した場合のみ接続を許可します。 現在このオプションはすべての認証方法でサポートされていないため .Fl a .Cm valid オプションを指定した時と同じ動作をします。 .It Cm none デフォルトではこの状態です。 認証情報は要求されません。 もし認証情報がなかったり不十分であれば、 .Xr login 1 プログラムによって必要となるユーザ認証を実施します。 .It Cm off 認証コードを無効にします。 すべてのユーザ証明が .Xr login 1 プログラムによって行われます。 .El .It Fl B bftp サーバモードを指定します。このモードでは、 ユーザの通常のシェルではなく .Xr bftp 1 セッションを開始するように、 .Nm は login に指示します。 bftp デーモンモードにおいて通常のログインはサポートされていません。 また通常の .Tn TELNET ポートではなく別のポートを使わなくてはいけません。 .It Fl D Ar debugmode このモードはデバックのために用いられます。 これによって .Nm がデバッグ情報を表示し、ユーザは .Nm が何をしているのかを見ることが許されます。 以下に示すようないくつかの .Ar debugmode があります: .Bl -tag -width exercise .It Cm options .Tn TELNET オプションのネゴシエーションについての情報が表示されます。 .It Cm report .Cm options で表示される情報に加えて、 どのような操作が行われているのかという、いくつかの付加的な情報が 表示されます。 .It Cm netdata .Nm が受け取ったデータストリームを表示します。 .It Cm ptydata pty に書かれたデータを表示します。 .It Cm exercise まだ実装されていません。 .El .It Fl debug .Nm によって作られたソケットについてのデバッグを可能にします ( .Xr socket 2 の .Dv SO_DEBUG 参照)。 .It Fl edebug .Nm がデータの暗号化をサポートする設定で構築されている場合に、 .Fl edebug オプションは、暗号化デバッグコードを有効にするために使われます。 .It Fl p Ar loginprog ログインを完了する際に実行されるコマンドとして .Xr login 1 以外のコマンドを指定します。指定されたコマンドは通常の login と同じ引数を 解釈できる必要があります。 .It Fl h ログインが完了するまでホストに特有の情報を表示しないようにします。 .It Fl I Ar initid このオプションは、バージョン 7.0 以前の .Tn UNICOS システムでのみ有効です。 init がログインセッションを開始したときに、 .Pa /etc/inittab から .Dv ID を特定します。デフォルトの .Dv ID は .Dv fe です。 .It Fl k このオプションは、 .Nm が linemode と kludge linemode をサポートする設定で構築されている ときにのみ有効です。 .Fl k オプションが指定されている場合で、もしリモートのクライアントが .Dv LINEMODE オプションをサポートしていなければ、 .Nm は、 character at a time mode で動きます。 この様な状態でも kludge linemode をサポートしますが、リモートのクライアントが 要求した場合のみ kludge linemode になります (これは、クライアントが .Dv DONT SUPPRESS-GO-AHEAD と .Dv DONT ECHO を送信することによって行われます)。 .Fl k オプションは kludge linemode をサポートしていないリモートクライアントが あるが、(もしクライアントが .Dv DO TIMING-MARK に対して .Dv WILL TIMING-MARK を応答する事で) 自己発見的に kludge linemode をサポートすると認められる 様な場合にとても便利です。 .It Fl l line mode を指定します。クライアントを強制的に line-at-a-time mode に なるよう試みます。 もし .Dv LINEMODE オプションがサポートされてなければ、kludge linemode になります。 .It Fl n .Dv TCP keep-alives を行いません。通常、 .Nm は .Tn TCP keep-alive を有効にしています。なぜなら、クラッシュしたり、すでに接続 出来ないようなマシンからのアイドルコネクションを解消するために、 ある期間アイドルだった場合にクライアントとの接続がまだ存在するかどうかを 調べる必要があるからです。 .It Fl r Ar lowpty-highpty このオプションは、 .Nm が .Dv UNICOS 用に構築されている場合にのみ有効です。 使用する仮想端末デバイスの包括的な範囲を指定します。 システムが sysconf 変数 .Dv _SC_CRAY_NPTY を使用するように設定されている場合、デフォルトでの pty の検索範囲は 0から .Dv _SC_CRAY_NPTY までになります。そうでなければ、デフォルトでの検索範囲は 0 から 128 に なります。検索範囲のどちらか一方だけを変更したい場合は、 .Ar lowpty あるいは .Ar highpty は省略する事が出来ます。 .Ar lowpty を省略した場合でも文字 - を省略する事は出来ません。 文字 - を省略してしまうと .Nm はそれが .Ar highpty であることを判断できずに .Ar lowpty であると判断してしまうからです。 .It Fl s このオプションは、 .Nm が .Tn SecurID カードをサポートする設定で構築されている時にのみ有効です。 このオプションを指定すると、 .Fl s オプションはそのまま .Xr login 1 に渡され、 .Xr login 1 が .Fl s オプションをサポートしていて .Tn SecurID によって認証されたログインのみを許可するような場合に有効です。 これは、ファイアウォールの外側からのリモートログインを制御するような 場合に有意義でしょう。 .It Fl S Ar tos .It Fl u Ar len このオプションは、リモートホスト名を保持している .Dv utmp 構造体のフィールドの大きさを指定するために使われます。 もし解決されたホスト名が .Ar len よりも長ければ、ホスト名の代わりにドットで区切られたアドレスが使われます。 これによりフィールドを超えるようなとても長いホスト名を 一意に特定できるようにします。 .Fl u0 を指定することによって、ドットで区切られたアドレスだけが .Pa utmp ファイルに書き込まれるようにします。 .It Fl U このオプションは .Nm が、 .Xr gethostbyaddr 3 ルーチンを通してシンボルでの名前にマップされないようなアドレスからの コネクションを拒絶するようにします。 .It Fl X Ar authtype このオプションは .Nm が認証オプションをサポートする設定で構築されたときにのみ有効です。 .Ar authtype 認証を使用不能にし、 .Nm を再コンパイルすることなしに 特定の認証タイプを一時的に使用不能にする事が出来ます。 .El .Pp .Nm は仮想端末デバイス ( .Xr pty 4 参照) をクライアントに割り当てます。 そして、 .Dv stdin , .Dv stdout , .Dv stderr として仮想端末のスレーブ側を使用する login プロセスを生成します。 .Nm は、 .Tn TELNET プロトコルを実装し、 リモートクライアントと login プロセスとの間の キャラクタを通過させることにより、仮想端末のマスター側を操作します。 .Pp .Tn TELNET セッションが開始されると .Nm は以下の .Tn TELNET オプションをクライアント側に送信して、これらの .Tn TELNET オプションの使用を希望している事を伝えます。 これらのオプションの詳細はついては以下に説明されています。 .Bd -literal -offset indent DO AUTHENTICATION WILL ENCRYPT DO TERMINAL TYPE DO TSPEED DO XDISPLOC DO NEW-ENVIRON DO ENVIRON WILL SUPPRESS GO AHEAD DO ECHO DO LINEMODE DO NAWS WILL STATUS DO LFLOW DO TIMING-MARK .Ed .Pp クライアントに割り当てられた仮想端末は、 \*(lqcooked\*(rq モードで動作し、 .Dv XTABS と .Dv CRMOD ( .Xr tty 4 参照) が有効な状態で操作するように設定されます。 .Pp .Nm は、ローカル側で有効な以下に示す .Tn TELNET オプションをサポートしています: .Bl -tag -width "DO AUTHENTICATION" .It "WILL ECHO" .Dv LINEMODE オプションが設定されている時に 端末エコーの現在の状態を示すためにクライアントに .Dv WILL ECHO あるいは .Dv WONT ECHO が送信されます。 端末エコーが不要な場合は、 .Tn telnetd がエコーが必要なデータに対する エコーを処理する事を示すために .Dv WILL ECHO が送信され、何もエコーされません。 端末エコーが必要な場合は、 .Tn telnetd -がいかなるターミナルエコーも +がいかなる端末エコーも 行わない事を示すために .Dv WONT ECHO -が送信されるので、必要な時はターミナルエコーをクライアント側が +が送信されるので、必要な時は端末エコーをクライアント側が 行わなければなりません。 .It "WILL BINARY" クライアントが、通常のネットワーク仮想端末が用いる 7 ビットのデータ ではなく、8 ビットのデータを送信するように指定します。 .It "WILL SGA" .Dv IAC GA すなわち go ahead コマンドを送信しないように指定します。 .It "WILL STATUS" クライアントから要求があった時に、全ての .Tn TELNET オプションの現在の状況を送信するように指定します。 .It "WILL TIMING-MARK" .Dv DO TIMING-MARK コマンドが受信された場合に、常にそれに対して .Dv WILL TIMING-MARK を返答します。 .It "WILL LOGOUT" .Dv DO LOGOUT が受信されると .Dv WILL LOGOUT を返答し、 .Tn TELNET セッションはシャットダウンされます。 .It "WILL ENCRYPT" .Nm がデータの暗号化をサポートする設定で構築された場合のみ送信され、 データ列に対して暗号を復号するように指定します。 .El .Pp .Nm はリモート側で有効な以下に示す .Tn TELNET オプションをサポートしています: .Bl -tag -width "DO AUTHENTICATION" .It "DO BINARY" .Nm telnetd が 8 ビットのデータ列を受信するように指定します。 .It "DO LFLOW" クライアントがフロー制御文字をリモート側で処理するように指定します。 .It "DO ECHO" このコマンドは実際にはサポートされませんが、クライアントが 4.2BSD .Xr telnet 1 クライアント ( .Dv WILL ECHO に正しく応答しない) であるかを判断するために送信されます。 もし、 .Dv WILL ECHO が受信された場合は、それに対して .Dv DONT ECHO が送信されます。 .It "DO TERMINAL-TYPE" -接続のクライアント側に割り当てられたターミナルタイプの名前を +接続のクライアント側に割り当てられた端末タイプの名前を 要求できるように指定します。 .It "DO SGA" .Dv IAC GA すなわち go ahead コマンドを受信する必要がないように指定します。 .It "DO NAWS" ウィンドウ (ディスプレイ) のサイズが変わった場合に、クライアントが それをサーバに知らせる事を要求します。 .It "DO TERMINAL-SPEED" クライアントに割り当てられたシリアルラインの速度に関する情報を 要求できるように指定します。 .It "DO XDISPLOC" telnet クライアントが使用している X ウィンドウのディスプレイの名前を 要求できるように指定します。 .It "DO NEW-ENVIRON" RFC 1572 に示されている環境変数に関する情報を 要求できるように指定します。 .It "DO ENVIRON" RFC 1408 に示されている環境変数に関する情報を 要求できるように指定します。 .It "DO LINEMODE" .Nm が linemode をサポートする設定で構築された場合のみ送信され、 クライアントに行単位の処理を行う事を要求します。 .It "DO TIMING-MARK" .Nm が linemode および kludge linemode の両方をサポートする設定で 構築され、クライアントが .Dv WONT LINEMODE を返信した場合のみ送信されます。 クライアントが .Dv WILL TM を返信した場合は、クライアントが kludge linemode を サポートしていると判断されます。 .Op Fl k オプションによりこの機能を無効にする事ができます。 .It "DO AUTHENTICATION" .Nm が認証機能をサポートする設定で構築された場合のみ送信され、 自動ログインに使用する認証情報を受信するようにします。 .It "DO ENCRYPT" .Nm がデータの暗号化をサポートする設定で構築された場合のみ送信され、 データ列に対して暗号を復号するように指定します。 .Sh 注釈 デフォルトでは、 .Nm は .Pa /etc/gettytab から .Em \&he , .Em \&hn , .Em \&im のケーパビリティを読み、(存在するならば) この情報を使用して login: プロンプトの前に何を表示すべきかを決定します。 .Em \&im ケーパビリティに優先する .Em \&if ケーパビリティを使用して、System V スタイルの .Pa /etc/issue ファイルを使うこともできます。 .Em \&im または .Em \&if に指定される情報は、コンソールとリモートログインの両方で表示されます。 .Sh 環境変数 .Sh ファイル .Bl -tag -width /usr/ucb/bftp -compact .It Pa /etc/services .It Pa /etc/gettytab .It Pa /etc/inittab (UNICOS システムのみ) .It Pa /etc/iptos (サポートされている場合) .It Pa /usr/ucb/bftp (サポートされている場合) .El .Sh "関連項目" .Xr bftp 1 , .Xr gettytab 5 , .Xr login 1 , .Xr telnet 1 (サポートされている場合) .Sh 標準 .Bl -tag -compact -width RFC-1572 .It Cm RFC-854 .Tn TELNET PROTOCOL SPECIFICATION .It Cm RFC-855 TELNET OPTION SPECIFICATIONS .It Cm RFC-856 TELNET BINARY TRANSMISSION .It Cm RFC-857 TELNET ECHO OPTION .It Cm RFC-858 TELNET SUPPRESS GO AHEAD OPTION .It Cm RFC-859 TELNET STATUS OPTION .It Cm RFC-860 TELNET TIMING MARK OPTION .It Cm RFC-861 TELNET EXTENDED OPTIONS - LIST OPTION .It Cm RFC-885 TELNET END OF RECORD OPTION .It Cm RFC-1073 Telnet Window Size Option .It Cm RFC-1079 Telnet Terminal Speed Option .It Cm RFC-1091 Telnet Terminal-Type Option .It Cm RFC-1096 Telnet X Display Location Option .It Cm RFC-1123 Requirements for Internet Hosts -- Application and Support .It Cm RFC-1184 Telnet Linemode Option .It Cm RFC-1372 Telnet Remote Flow Control Option .It Cm RFC-1416 Telnet Authentication Option .It Cm RFC-1411 Telnet Authentication: Kerberos Version 4 .It Cm RFC-1412 Telnet Authentication: SPX .It Cm RFC-1571 Telnet Environment Option Interoperability Issues .It Cm RFC-1572 Telnet Environment Option .Sh バグ いくつかの .Tn TELNET コマンドは部分的にしか実装されていまいません。 .Pp オリジナルの 4.2 BSD の .Xr telnet 1 のバグに対処するため、 .Nm は、ある種のあいまいなプロトコル変換を行うことにより、 リモートクライアントが実際に 4.2 BSD の .Xr telnet 1 であるかどうかを判断しようとします。 .Pp バイナリモードは よく似たオペレーティングシステム (この場合 Unix) 間以外では 互換性がありません。 .Pp リモートクライアントから受け取った端末タイプの名前は小文字に変換されます。 .Pp .Nm は、 .Tn TELNET .Dv IAC GA (go ahead) コマンドを絶対に送りません。 diff --git a/ja_JP.eucJP/man/man8/uuchk.8 b/ja_JP.eucJP/man/man8/uuchk.8 index e902f1901b..86f24d1934 100644 --- a/ja_JP.eucJP/man/man8/uuchk.8 +++ b/ja_JP.eucJP/man/man8/uuchk.8 @@ -1,42 +1,42 @@ ''' %Id: uuchk.8,v 1.1.2.1 1998/03/09 11:13:33 jkh Exp % .TH uuchk 1 "Taylor UUCP 1.06" .SH 名称 -uuchk \- UUCP 構成から得た情報を表示する +uuchk \- UUCP の設定から得た情報を表示する .SH 書式 .B uuchk [-s system] [standard UUCP options] .SH 解説 .B uuchk -プログラムは UUCP 構成ファイルを読み込み、 +プログラムは UUCP 設定ファイルを読み込み、 どんなことが書かれていたかをどちらかというと長めの表現で表示します。 UUCP の設定を行っているときに、 UUCP パッケージがあなたの期待通りに動作することを確認するために使用すると 便利です。 .SH オプション 以下のオプションを .B uuchk に与えることが可能です: .TP 5 .B \-s, \-\-system 全システムではなく、指定したシステムに関する情報のみを表示します。 .B uuchk プログラムは、標準の UUCP プログラムのオプションもサポートします。 .TP 5 .B \-x type .TP 5 .B \-\-debug type .TP 5 .B \-I file .TP 5 .B \-\-config file .TP 5 .B \-v, \-\-version .TP 5 .B \-\-help 標準の UUCP オプション。 .SH 関連項目 uucp(1) .SH 作者 Ian Lance Taylor (ian@airs.com). このマニュアルページは Taylor UUCP 1.06 の Texinfo 文書に基いています。 diff --git a/ja_JP.eucJP/man/man8/uuxqt.8 b/ja_JP.eucJP/man/man8/uuxqt.8 index 6eeabbf569..4711998b7a 100644 --- a/ja_JP.eucJP/man/man8/uuxqt.8 +++ b/ja_JP.eucJP/man/man8/uuxqt.8 @@ -1,113 +1,113 @@ ''' %Id: uuxqt.8,v 1.4 1995/08/19 21:30:28 ache Exp % .\" jpman %Id: uuxqt.8,v 1.2 1997/03/31 15:01:29 horikawa Stab % .TH uuxqt 8 "Taylor UUCP 1.05" .SH 名称 uuxqt \- UUCP 実行デーモン .SH 書式 .B uuxqt [ options ] .SH 解説 .B uuxqt デーモンは、ローカルもしくはリモートシステムの .I uux (1) によって要求されたコマンドを実行します。このデーモンは .I uucico (8) によって自動的に実行開始されます。ただし、 .I uucico (8) デーモンが .B \-q オプションか .B \-\-nouuxqt オプションを付加して実行された場合にはこの限りではありません。 通常は、 .I uucico (8) から本コマンドを起動するため、本コマンドをユーザが直接実行する 必要はありません。しかし、処理キューの処理について、なんらかの融通を きかせたい場合に本コマンドは有効です。 .I uuxqt の複数同時起動については、初期化コマンドの .I max-uuxqt を用いることによって 同時起動最大数を制御することが出来ます。 .SH オプション 以下のオプションが .B uuxqt で使用可能です。 .TP 5 .B \-c command, \-\-command command 引数 .I command で指定したコマンドの要求のみを実行します。例: .br .in +0.5i .nf uuxqt --command rmail .fi .in -0.5i .TP 5 .B \-s system, \-\-system system 指定したシステムからの要求のみを実行します。 .TP 5 .B \-x type, \-\-debug type 特定のデバッグタイプを有効にします。デバッグタイプとしては、 abnormal, chat, handshake, uucp-proto, proto, port, config, spooldir, execute, incoming, outgoing が有効です。 なお、 .I uuxqt 自体に意味のあるデバッグタイプは abnormal, config, spooldir, execute の 4 つだけです。 デバッグタイプに関しては、コンマで区切ることで複数指定が可能になります。 .B \-\-debug によるデバッグタイプ指定は、 1 つのコマンドライン中に複数存在してもかまいません。 数字による指定を行なうと、先述のリスト中、先頭から指定した番号までの デバッグタイプが有効になります。例えば、 .B \-\-debug 2 と指定した場合は、 .B \-\-debug abnormal,chat と指定したのと同じです。 デバッグ出力は、デバッグファイルに記録されます。デバッグファイルは、通常は、 /var/spool/uucp/Debug, /var/spool/uucp/DEBUG, /var/spool/uucp/.Admin/audit.local のいずれかです。 .TP 5 .B \-I file, \-\-config -使用するコンフィギュレーションファイルを指定します。しかし +使用する設定ファイルを指定します。しかし このオプションが利用できるかできないかは .I uuxqt をどのようにコンパイルしたかに依存します。 .TP 5 .B \-v, \-\-version バージョン情報を表示して終了します。 .TP 5 .B \-\-help ヘルプメッセージを表示して終了します。 .SH 関連ファイル ファイル名は、コンパイル時もしくは -コンフィギュレーションファイルによって変更可能です。 +設定ファイルによって変更可能です。 したがって、これは目安だと思って下さい。 .br -/etc/uucp/config - コンフィギュレーションファイル。 +/etc/uucp/config - 設定ファイル。 .br /var/spool/uucp - UUCP スプールディレクトリ。 .br /var/spool/uucp/Log - UUCP ログ記録ファイル。 .br /var/spool/uucppublic - デフォルト時の UUCP パブリックディレクトリ。 .br /var/spool/uucp/Debug - デバッグ情報ファイル。 .SH 関連項目 uucp(1), uux(1), uucico(8) .SH 作者 Ian Lance Taylor (ian@airs.com) diff --git a/ja_JP.eucJP/man/man8/vnconfig.8 b/ja_JP.eucJP/man/man8/vnconfig.8 index e3e1a682df..94e26853ac 100644 --- a/ja_JP.eucJP/man/man8/vnconfig.8 +++ b/ja_JP.eucJP/man/man8/vnconfig.8 @@ -1,187 +1,187 @@ .\" Copyright (c) 1993 University of Utah. .\" Copyright (c) 1980, 1989, 1991, 1993 .\" The Regents of the University of California. All rights reserved. .\" .\" This code is derived from software contributed to Berkeley by .\" the Systems Programming Group of the University of Utah Computer .\" Science Department. .\" .\" 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. .\" .\" @(#)vnconfig.8 8.1 (Berkeley) 6/5/93 .\" jpman %Id: vnconfig.8,v 1.2 1997/05/03 13:45:51 horikawa Stab % .\" .Dd July 8, 1993 .Dt VNCONFIG 8 .Os BSD 4 .Sh 名称 .Nm vnconfig .Nd vnode ディスクを構築して利用できるようする .Sh 書式 .Nm vnconfig .Op Fl cdeguv .Op Fl s Ar option .Op Fl r Ar option .Ar special_file Ar regular_file .Oo Ar feature Oc .Nm vnconfig .Fl a .Op Fl cdeguv .Op Fl s Ar option .Op Fl r Ar option .Op Fl f Ar config_file .Sh 解説 .Nm コマンドは、vnode 疑似ディスクデバイスを構築して使用可能にします。 コマンドの最初の書式では、スペシャルファイル .Ar special_file を通常ファイル .Ar regular_file に結びつけ、 後で通常ファイルをディスクであるかのようにアクセスできるようにします。 これによりファイルシステム中の通常ファイルを、 スワップや、名前空間にマウントされるファイルシステムと出来ます。 .Pp オプションは動作を指定します: .Bl -tag -width indent .It Fl a コマンドファイルを読み込み、 各デバイス/ファイルの組に対して指定された動作を実行します。 .It Fl c デバイスを構築します。 成功すると、 .Ar special_file への参照は、 .Ar regular_file の内容へのアクセスとなります。 .It Fl d 指定した .Ar feature を(可能であれば)無効にします。 .It Fl e デバイスを構築し、指定された .Ar feature を有効にします。 .Ar feature が指定されないと、 .Fl e は .Fl c と同じ意味になります。 .It Fl f Ar config_file .Ar config_file -を構成ファイルの代りに使用します。 +を設定ファイルの代りに使用します。 .It Fl g global オプションを制御します。 .It Fl r Ar option .Ar option をリセットします。 .Ar option は labels, follow, debug, io, all, none のいずれかです。 .It Fl s Ar option .Ar option をセットします。 .It Fl u デバイスを無効にし、``無構築状態'' にします。 .It Fl v 実行される動作の内容を標準出力に表示します。 .El .Pp 動作を指定するオプションがない場合には、 .Fl c が指定されたものと見なします。 .Pp .Ar feature 引数は、 .Fl e によって有効になる機能を指定します。 .Bl -tag -width indent .It Dv swap スペシャルファイル上でのスワップを有効にします。 .Xr swapon 2 を参照してください。 .It Dv Pf mountro= Pa mount_point スペシャルファイルは、 .Ar mount_point へ読み込み専用マウントされます。 .Xr mount 2 を参照してください。 .It Dv Pf mountrw= Pa mount_point スペシャルファイルは、 .Ar mount_point へ読み書き可能マウントされます。 .Xr mount 2 を参照してください。 .It Dv Pf mount= Pa mount_point ``mountrw='' と同じです。 .El .Pp -構成ファイルは、1 行にデバイスとファイル名の組を次の形式で持ちます: +設定ファイルは、1 行にデバイスとファイル名の組を次の形式で持ちます: .Bd -literal special_file regular_file [ feature ] .Ed .Pp ここでは各フィールドはスペースで分割されます。 -構成ファイル中のすべてのデバイスの動作に関して、 +設定ファイル中のすべてのデバイスの動作に関して、 前述の動作オプションが有効です。 .Sh 関連ファイル .Bl -tag -width /etc/vntab -compact .It Pa /etc/vntab .Fl a -オプションで使われるデフォルトの構成ファイル +オプションで使われるデフォルトの設定ファイル .El .Sh 使用例 .Pp .Dl vnconfig /dev/vn0c /tmp/diskimage .Pp vnode ディスクデバイス .Pa vn0c を構築します。 .Pp .Dl vnconfig -e /dev/vn0c /var/swapfile swap .Pp vnode ディスクデバイス .Pa vn0c を構築し、それをスワップ領域として使うようにします。 .Pp .Dl vnconfig -d /dev/vn0c myfilesystem mount=/mnt .Pp vnode ディスクデバイス .Pa vn0c のマウントを解除します(また無構築状態にします)。 .Pp .Dl vnconfig -ae .Pp .Pa /etc/vntab に記述されているすべてのデバイスを構築して使用可能にします。 .Sh 関連項目 .Xr mount 2 , .Xr swapon 2 , .Xr unmount 2 , .Xr vn 4 . diff --git a/ja_JP.eucJP/man/man8/watch.8 b/ja_JP.eucJP/man/man8/watch.8 index 98a315eac9..5c1b82207f 100644 --- a/ja_JP.eucJP/man/man8/watch.8 +++ b/ja_JP.eucJP/man/man8/watch.8 @@ -1,96 +1,96 @@ .\" .\" @(#)watch.8 1.1 (FreeBSD) 2/17/95 .\" jpman %Id: watch.8,v 1.3 1997/07/22 17:07:53 horikawa Stab % .\" .Dd February 17, 1995 .Dt WATCH 8 .Os .Sh 名称 .Nm watch .Nd 別の tty 線を覗き見る .Sh 書式 .Nm watch .Op Fl ciotnW .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 がオーバフローした時の +あふれが発生した場合、再接続します。 +観察している tty があふれた時の .Nm の振舞いは、観察している tty が閉じられた時の振舞いに似ています。 詳しい情報は、 .Xr snp 4 を見てください。 .It Fl t tty の観察を始めた時の日付と時間を表示します。 .It Fl n 観察する tty を対話的に変更できなくします。 これは、 による変更要求と、 -現在の tty が閉じられたりオーバフローを起こした場合の自動プロンプトともに +現在の tty が閉じられたりあふれを起こした場合の自動プロンプトともに 無効にします。 プロンプトが表示される全ての場合、 .Nm .\"(訳注)実際は文中の語でしたが、ここでは.Nmを使いました。 .\" 2.2.1R 対象(1997/04/28) Takeshi MUTOH は終了します。再接続フラグは、このオプションに影響されません。 .It Fl W 観察している tty への書き込みを許可します。 .It Ar tty tty は、仮想 tty デバイスや仮想コンソールやシリアル線などのように、 tty 形式のデバイスとして指定しなければなりません。 名前には、前に "/dev/" をつけても構いません。 .Sh 操作 対話的モードで実行中は、全てのユーザの入力は以下のものを除いて、 捨てられます。 .Pp .Bl -tag -width "XXXX" -compact .It Sy "" .Nm の終了。 .It Sy "" 画面の消去。 .It Sy "" 除き見る tty の変更。 .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/man8/xntpd.8 b/ja_JP.eucJP/man/man8/xntpd.8 index 6c06271233..b7922d7698 100644 --- a/ja_JP.eucJP/man/man8/xntpd.8 +++ b/ja_JP.eucJP/man/man8/xntpd.8 @@ -1,1088 +1,1087 @@ .\" jpman %Id: xntpd.8,v 1.2 1997/09/16 18:16:37 ken Stab % ''' $Header ''' .de Sh .br .ne 5 .PP \fB\\$1\fR .PP .. .de Sp .if t .sp .5v .if n .sp .. .de Ip .br .ie \\n.$>=3 .ne \\$3 .el .ne 3 .IP "\\$1" \\$2 .. ''' ''' Set up \*(-- to give an unbreakable dash; ''' string Tr holds user defined translation string. ''' Greek uppercase omega is used as a dummy character. ''' .tr \(*W-|\(bv\*(Tr .ie n \{\ .ds -- \(*W- .if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch .if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch .ds L" "" .ds R" "" .ds L' ' .ds R' ' 'br\} .el\{\ .ds -- \(em\| .tr \*(Tr .ds L" `` .ds R" '' .ds L' ` .ds R' ' 'br\} .TH XNTPD 8 LOCAL .SH 名称 xntpd - Network Time Protocol デーモン .SH 書式 .B xntpd [ .B -abdm ] [ .B -c .I conffile ] [ .B -e .I authdelay ] [ .B -f .I driftfile ] [ .B -k .I keyfile ] [ .B -p .I pidfile ] [ .B -r .I broadcastdelay ] [ .B -s .I statsdir ] [ .B -t .I trustedkey ] [ .B -v .I variable ] [ .B -V .I variable ] .SH 解説 .I xntpd は、インターネットの標準時間サーバに合わせて、 Unix のシステム時刻 (time\-of\-day) を設定し維持するデーモンです。 .I xntpd は、RFC 1305 で定義されている Network Time Protocol (NTP) バージョン 3 標準の完全な実装となっていますが、各々 RFC 1059 と RFC 1119 で定義 されているバージョン 1 とバージョン 2 に対する互換性も保っています。 .I xntpd は全ての計算を固定少数点演算により行うので、浮動少数点を扱うコードは 必要としません。プロトコルおよび時間調整のコードで行われる計算は、高 精度で実行されます。また、最も正確な外部時計の供給源に対しても同期で きるだけの精度の維持を計るべく、計算に規則だった補正値を導入するといっ たように、細部まで注意が払われています。 .PP 通常、 .I xntpd -は、起動時にコンフィギュレーションファイルから設定を読込みます。 -デフォルトのコンフィギュレーションファイル名は、 +は、起動時に設定ファイルから設定を読込みます。 +デフォルトの設定ファイル名は、 .IR /etc/ntp.conf ですが、コマンドラインの指定の方が優先します。また、もっぱらコマンド ラインだけで、その局面に役立つ .I xntpd -の設定を与え、コンフィギュレーションファイルを不要にすることもで +の設定を与え、設定ファイルを不要にすることもで きます。これは、 .I xntpd が、実行時にブロードキャストを待受ける (listen) ことで決定される全て の通信相手 (peer) に対して、ブロードキャストもしくはマルチキャスト・ クライアントとして設定されるべき時には、特に適しています。 .I xntpd デーモンの実行中は、 .IR ntpq (8) および .IR xntpdc (8) を使用することで、デーモンのさまざまな内部変数を表示したり 設定オプションを変更できます。 .PP デーモンはアクティブ/パッシブ, クライアント/サーバ, ブロードキャスト /マルチキャスト等の対称的なモードを含むいずれかのモードで働くことが できます。ブロードキャストもしくはマルチキャスト・クライアントは、 自動的にリモートサーバを探し出し、片道の遅延補正因子を計算して、自動的 に自身に対する設定を行います。これにより、その環境に固有の詳細な設定 -やコンフィギュレーションファイルなしに、一群のワークステーションを +や設定ファイルなしに、一群のワークステーションを 配置することが可能になります。 .PP 以下にあげるコマンドライン引数が .I xntpd により理解されます。(より完全な機能の説明については、 -コンフィギュレーションファイルの説明を参照のこと): +設定ファイルの説明を参照のこと): .Ip -a 8 「認証」 (\*(L"authenticate\*(R") モードで実行します。 .Ip -b 8 NTP のブロードキャストを待受けて、可能ならそれに同期します。 .Ip -c 8 -デフォルトの代わりのコンフィギュレーションファイルを指定します。 +デフォルトの代わりの設定ファイルを指定します。 .Ip -d 8 デバッグモードを指定します。このフラグは何回指定してもかまいませんが、 回数が多いほど表示がより詳細になります。 .Ip -e 8 このコンピュータ上で、NTP の暗号化 (encryption) フィールドを計算する のに必要な時間を (秒で) 指定します。 .Ip "-f driftfile" 8 driftfile のある場所を指定します。 .Ip -k 8 NTP の認証キーを含むファイルのある場所を指定します。 .Ip -m 8 マルチキャストメッセージを待受けて、可能ならそれらに同期します ( マルチキャストカーネルが必要になります)。 .Ip -p 8 デーモンのプロセス ID を記録するためのファイル名を指定します。 .Ip -r 8 通常、デーモンは、ブロードキャストもしくはマルチキャストのサーバと クライアントとの間のネットワーク遅延を自動的に補正します。 遅延の測定作業が失敗した場合には、ここで指定した (秒の) デフォルトの 遅延を使用するようになります。 .Ip -s 8 統計ファイルを作成するためのディレクトリを指定します。 .Ip "-t trustedkey" 8 キー番号を信頼できるキー (trusted key) のリストに付け加えます。 .Ip -v 8 システム変数を追加します。 .Ip -V 8 デフォルトでリストされるシステム変数を追加します。 .SH "コンフィギュレーションオプション" .I xntpd -のコンフィギュレーションファイルのフォーマットは、 -他の Unix コンフィギュレーションファイルのものに似ています。 +の設定ファイルのフォーマットは、 +他の Unix 設定ファイルのものに似ています。 コメントは文字 \*(L"#\*(R" で始まり、行末まで続きます。空行は無視されます。 設定コマンドは、行頭のキーワードとそれに続く空白で区切られた 引数のリストからなります。引数の内いくつかは、省略可能な場合があります。 これらのコマンドは複数行にわたってはなりません。 引数は、ホスト名, ドットで区切られた 4 つ組の数からなる (dotted-quad) 形式の ホストアドレス, 整数, 浮動少数点数 (秒で時間を指定する際用います), テキスト文字列などです。 以下の説明では、省略可能な引数は、\*(L"[]\*(R" で囲み、 複数択一の引数は、互いに \*(L"|\*(R" で区切って表します。 .PP .B peer .I host_address [ .B key .I # ] [ .B version .I # ] [ .B prefer ] .br .B server .I host_address [ .B key .I # ] [ .B version .I # ] [ .B prefer ] .br .B broadcast .I host_address [ .B key .I # ] [ .B version .I # ] [ .B ttl .I # ] .PP これらの 3つのコマンドは、利用されるべき時間サーバや与えられるべき 時間サービスを指定します。 .B peer コマンドは、ローカルサーバが、コマンド中の .I host_address で示されるリモートサーバに対し、「対称的アクティブ」 (\*(L"symmetric active\*(R") モードで動作するよう指示します。これは、さまざまな失敗 の仕方によって、ローカルもしくはリモートのサーバホストのいずれかが より良い時刻供給源となり得るようなサーバのネットワークにおいて、役立つ ものです。 .B server コマンドは、ローカルサーバが、指定したリモートサーバに 対して \*(L"クライアント\*(R" モードで動作するよう指示します。 このモードでは、ローカルサーバはリモートサーバに同期しますが、 リモートサーバがローカルサーバに同期することは決してありません。 .B broadcast コマンドは、ローカルサーバが、\*(L"ブロードキャスト\*(R" モードで 動作するよう指示します。ローカルサーバは、コマンド中で指定される ブロードキャスト/マルチキャスト/アドレスを持つクライアント集団に、 定期的にブロードキャストメッセージを送ります。通常、この指示は、 送信側 (transmitter) として動作しているローカルサーバにのみ適用されます。 ブロードキャストクライアントに対する動作については、以下に説明する .B broadcastclient もしくは .B multicastclient コマンドの項を参照して下さい。このモードでは、 .I host_address は、通常、そのローカルネットワーク (もしくは複数の ローカルネットワークの内のひとつ)の上でのブロードキャストアドレスであるか、 NTP に割当てられたマルチキャストアドレスです。NTPには、アドレス 224.0.1.1 が 割当てられてきました。現在のところは、このアドレスのみを使用すべきです。 マルチキャスト機能はマルチキャストカーネルを必要としますが、これは、 まだ、どのベンダの製品にでも存在するものではないということに注意し て下さい。 .PP .B key オプションが含まれていると、そのアドレスに送られる全てのパケットが、 指定したキー (32 ビット符号無し整数の範囲の数) を用いて暗号化された 認証フィールドを含むようになります。 .B version オプションにより、送出される NTP パケットに使用されるべきバージョン 番号を指定することができます。バージョン 1, 2, 3 のいずれかが選択で きますが、バージョン 3 がデフォルトになっています。 .B prefer オプションは、そのホストを優先的ホストとします。このホストは、その他 全ての点では同等ですが、正常に動作している一群のホストの中から同期を 取る対象として選ばれます。 .B ttl オプションは、ブロードキャストモードでのみ使用され、マルチキャスト パケットで用いられる生存時間 (TTL) を指定します。デフォルトは 127 ですが、 適切な値を選択することは、黒魔術の一種であり、ネットワーク管理者 との調整を必要とします。 .PP .B broadcastclient .PP ローカルサーバに対し、同じサブネット上の他のサーバを見付けるために、 ローカルネットワーク上のブロードキャストメッセージを待受けるよう指示 します。ローカルサーバは、最初のブロードキャストメッセージを受取る際、 リモートサーバとクライアント/サーバ間の短いやりとりを用いて、名目上 の (nominal) ネットワーク遅延を測定してから、後続のブロードキャスト メッセージを待ち受けて、それに同期する\*(L"ブロードキャストクライアント\*(R" モードに入ります。このモードでの偶然もしくは故意の分裂状態 を避けるため、ローカルとリモートのサーバの両方は認証に同一の信頼でき るキーとキー識別子を使用して動作しなくてはならないことに注意して下さい。 .PP .B multicastclient [ .I IP address ... ] .PP このコマンドは、 .IR broadcastclient コマンドと同じように用いられますが、IP マルチキャストを使用して動作 します。この機能をサポートするには、マルチキャストカーネルと認証の使用が 必要です。1 つ以上の IP アドレスが与えられると、サーバはそれぞれ のマルチキャストグループに加わります。1 つも与えられなければ、NTP に は IP アドレス (224.0.1.1) が割当てられていると想定されます。 .PP .B driftfile .I filename .PP このコマンドは、ローカルの時計発振子の周波数オフセットを記録するため のファイル名を指定します。このファイルが存在すると、起動時に初期周波数 オフセットを指定するのに使用され、その後デーモンにより計算される カレント周波数オフセットで、 1 時間に 1 度更新されます。ファイルが存在 しないか、このコマンドが与えられていない場合、初期周波数オフセットは ゼロと仮定されます。この場合、周波数が安定し、残った時間誤差が収まる のに数時間かかります。このファイルが、最初にカレント変動値を一時 ファイルに書込み、 .IR rename (3) により古いファイルと置換えることで更新されることに注意して下さい。これは、 .I xntpd が、 ドリフトファイルのあるディレクトリに対し書込み権を持っていなけ ればならず、ファイルは、シンボリックであろうとなかろうと、 ファイルシステムリンクであるべきではないだろうことを意味しています。 .PP .B enable auth|bclient|pll|monitor|stats [ .I ... ] .PP さまざまなサーバオプションを有効にします。指定されていないフラグは 影響を受けません。\*(L"auth\*(R" フラグは、その通信相手 (peer) が信頼 できるキーとキー識別子を使用して正しく認証されている場合に限って、サーバが 指定されていない相手に同期するようにします。このフラグのデフォルトは 無効 (オフ) です。 \*(L"bclient\*(R" フラグは、サーバがブロード キャストもしくはマルチキャストサーバからのメッセージを待受けるように します。これにより、そのサーバに対する連携 (association) が自動的に 成立します。このフラグのデフォルトは無効 (オフ) です。 \*(L"pll\*(R" フラグは、サーバのローカル時計を調整するようにします。デフォルトでは 有効 (オン) です。無効にした場合、ローカル時計は固有の時間と周波数の まま動きます。このフラグは、ローカル時計が他の何らかのデバイスや プロトコルにより制御されており、NTPは他のクライアントと同期をとるためだ けに使用されている場合に、役立ちます。\*(L"monitor\*(R" フラグは、 モニタファシリティ (facility) を有効にします(下記参照のこと)。デフォルトでは 有効 (オン) です。\*(L"stats\*(R" フラグは、統計のファシリティ の filegen (下記説明を参照のこと) を有効にします。デフォルトでは有効 (オン) です。 .PP .B disable auth|bclient|pll|monitor|stats [ .I ... ] .PP さまざまなサーバオプションを無効にします。指定されていないフラグは影響を 受けません。現在使用可能なオプションは、enable コマンドの項で説明 しています。 .SH "認証オプション" .PP .B keys .I filename .PP このコマンドは、認証モードでの操作の際、 .I xntpd により使用される暗号化キーとキー識別子を含むファイルの名前を指定します。 このファイルのフォーマットは以降で説明します。 .PP .B trustedkey .I # [ .I "# ..." ] .PP このコマンドは、同期するのにふさわしい通信相手を認証する目的にとって 信用できる暗号化キー識別子を指定するのに使用されます。異なるサーバは 異なるキーを使用できますが、認証手続きにはローカルとリモート両方の サーバがこの目的のため同一のキーとキー識別子を共有することが必要です。 引数は、32 ビット符合なし整数ですが、 NTP キー 0 は固定されており周知の ものであることに注意してください。意味のある認証が行われるべきならば、 キー 0 は信用すべきではありません。 .PP .B requestkey .I # .PP このコマンドは、 .IR xntpd (8) の動作に影響を与える問題の診断と修復に役立つ .IR xntpdc (8) プログラムにより使用されるキー識別子を指定します。 .I xntpdc プログラムの動作は、 xntpd のこの固有の実装に特定されており、これ および以前のバージョンのデーモンとのみ動作すると見込まれます。ローカル サーバの状態に影響を与えるリモートの .I xntpdc プログラムからの要求は、 認証されねばなりません。そのためには、リモートプログラムとローカル サーバが共通のキーとキー識別子を共有することが必要です。このコマンドの引数は、 -32 ビット符合なし整数です。コンフィギュレーションファイルに +32 ビット符合なし整数です。設定ファイルに .B controlkey コマンドが含まれていないか、キーがマッチしないと、この要求は無視され ます。 .PP .B controlkey .I # .PP このコマンドは、 .IR xntpd (8) の動作に影響を与える問題の診断と修復に役立つ .IR ntpq (8) プログラムにより使用されるキー識別子を指定します。 .IR ntpq プログラムと .I xntpd の動作は RFC 1305 の定義を満たしています。ローカルサーバの状態に影響 を与えるリモートの .I ntpq プログラムからの要求は、認証されねばなりません。そのためには、リモート プログラムとローカルサーバが共通のキーとキー識別子を共有することが 必要です。このコマンドの引数は、32 ビット符合なし整数です。 -コンフィギュレーションファイルに +設定ファイルに .B requestkey コマンドが含まれていないか、キーがマッチしないと、この要求は無視され ます。 .PP .B authdelay .I seconds .PP ローカル計算機上で NTP 認証フィールドを暗号化するのに要する時間の 総計を示します。この値は、送出パケットに認証が用いられる際、送信タイム スタンプを修正するのに使用されます。通常、この値は 0.0001 秒から 0.003 秒あたりになりますが、これはホスト計算機の CPU 速度に依存して います。通常、この値は、ディストリビューションに含まれている .I authspeed プログラムを用いて計算されます。 .SH "アクセス制御オプション" .B restrict .I address [ .B mask .I numeric_mask ] [ .I flag ] [ .I ... ] .PP .I xntpd は、汎用のアドレスとマスクに基づく制限リストを実装しています。リスト はアドレスにより、そしてマスクによりソートされ、その順番でマッチして いるかどうか調べられます。ここで、最後にマッチしたものが受信パケット に関する制限フラグを定義します。受信パケットのソースアドレスは、制限 リストのエントリに関するマスクでアンドをとられた 32 ビットアドレスと マッチするか調べられ、それからエントリアドレス (これもまたマスクと アンドをとられます) と比較され、マッチするものを探します。引数 \*(L"mask\*(R" のデフォルトは 255.255.255.255 で、\*(L"address\*(R" が個別のホストのアドレスとして扱われることを意味します。デフォルト エントリ (address 0.0.0.0, mask 0.0.0.0) は常にリストに含まれ、既定の ソートアルゴリズムでは、リストの先頭のエントリとなります。 \*(L"address\*(R" は、通常、 dotted\-quad 形式で与えられ、 mask オプションを伴わないテキスト文字列 \*(L"default\*(R" は、デフォルト エントリを示すために使用できることに、注意して下さい。 .PP 現在の実装では、フラグは常にアクセスを制限します。すなわち、フラグを 持たないエントリは、サーバへの自由なアクセスが与えられることを示す ことになります。フラグは直交的ではなく、より制限の強いフラグは、より 制限の弱いフラグを冗長にします。フラグは、一般に 2 つのカテゴリに分類 されます。時間サービスを制限するものと、情報問い合わせやサーバの 実行時再設定の試みを制限するものです。次のフラグの内1つ以上を指定する ことができます: .Ip ignore 10 このエントリにマッチするホストからのすべてのパケットを無視します。 このフラグが指定されると、問い合わせも時間サーバへのポーリングも応答さ れなくなります。 .Ip noquery 10 NTP の モード 6 と 7のすべてのパケット (つまり情報問い合わせと設定要求) を無視します。時間サービスは影響を受けません。 .Ip nomodify 10 サーバの状態を変えようとするモード 6 と 7のすべてのパケット (つまり 実行時再設定) を無視します。情報を返す問い合わせは許されます。 .Ip notrap 10 マッチしたホストにモード 6 の制御メッセージのトラップサービスを提供 することを拒否します。トラップサービスは、モード 6 の制御メッセージ プロトコルのサブシステムで、リモートのイベントロギングプログラムによ る使用が意図されています。 .Ip lowpriotrap 10 マッチしたホストによるトラップセットを低い優先度として宣言します。1 つのサーバが保持し得るトラップの数は制限されています(現在の制限値は 3 です)。トラップは通常、先入れ先処理ベースで割当てられ、後から来た トラップ要求はサービスを拒否されます。このフラグは、通常優先度の トラップに対する後からの要求が、低い優先度のトラップより優先されることを 許すことで、通常の割当てアルゴリズムを変更します。 .Ip noserve 10 モード 6 と 7 以外のすべての NTP パケットを無視します。基本的には、 時間サービスは拒否されますが、それでも問い合わせは許されています。 .Ip nopeer 10 ポーリングしているホストに、状態を持たない (stateless) 時間サービス を与えますが、そうしなければ将来的に同期の相手として有用であるかもし れない場合にさえ、それらに peer メモリ資源を割当てません。 .Ip notrust 10 これらのホストは同期源としては決して使用されませんが、その他の点では 普通に扱われます。 .Ip limited 10 これらのホストは、同一のネットからのクライアント数の制限の対象となり ます。ここで言うネットとは、 (class A, class B, class C 等の) ネット の IP 表記のことです。サーバで見えており、過去 \*(L"client_limit_period\*(R" 秒の間アクティブであった、最初の \*(L"client_limit\*(R" 個のホストのみが、受付けられます。同一の ネットの他のクライアントからの要求は拒否されます。時間要求パケットのみが、 考慮されます。\*(L"プライベート\*(R"", \*(L"制御\*(R"", \*(L"ブロー ドキャスト\*(R" 等のパケットは、クライアント制限の対象にはならず、 クライアントの数の内には入れられません。クライアントの履歴は、 .I xntpd のモニタリング機能を使用して維持されます。それゆえ、モニタリングは、 \*(L"limited\*(R" フラグに制限エントリがある限り、アクティブです。 \*(L"client_limit\*(R" のデフォルト値は 3 です。 \*(L"client_limit_period\*(R" デフォルト値は 3600 秒です。 .Ip ntpport 10 実質的には、制限フラグと言うより、マッチのアルゴリズムを変更するもの です。このフラグが存在すると、パケットのソースポートが標準の NTP の UDP ポート (123) である場合にのみ、制限エントリにマッチします。 \*(L"ntpport\*(R" と non\-\*(L"ntpport\*(R" の両方が指定できます。 \*(L"ntpport\*(R" はより限定的であると考えられ、リストの後方にソート されます。 .PP デフォルトの制限リストエントリは、フラグ \*(L"ignore, ntpport\*(R" を持ち、ローカルホストのインタフェースアドレスの各々に対し、 スタートアップ時にテーブルに挿入され、サーバがそれ自身の時間に同期しようと しないようにします。また、デフォルトエントリは常に存在しますが、他で は設定されない場合は、どのフラグもデフォルトエントリに関連づけられま せん (すなわち、あなた自身の NTP サーバ以外のすべてが無制限になります) 。 .PP 制限ファシリティは、NSFnet の幹線上で動いている時間サーバの現在の アクセスポリシが、 .I xntpd と同様に実装され得るように、付け加えられたものです。このファシリティ は、あなたのサーバが、望まないか故障したリモート時間サーバの影響を受 けないようにするのに、ことのほか有用ですが、これが 標準の NTP 認証 ファシリティの代わりになると考えるべきではありません。ソースアドレスに 基づく制限は、確信犯的クラッカーにたやすく裏をかかれます。 .PP .B clientlimit .I limit .PP \*(L"client_limit\*(R" を \*(L"limit\*(R" にセットし、クライアント 制限ポリシの設定を可能にします。この変数は、そのサーバの使用を許される 同一ネットワークからのクライアント数を定義します。 .PP .B clientperiod .I period .PP \*(L"client_limit_period\*(R" をセットし、クライアント制限ポリシの設 定を可能にします。この変数は、その時間後にクライアントがインアクティブに なると考えられ、従って制限されるクライアント数にもはや数えられな くなるような秒数を指定します。 .SH "モニタリングオプション" .PP .B statsdir .I /directory path/ .PP 統計ファイルが作られるべきディレクトリのフルパスを指定します(下記参照)。 このキーワードにより (そうでなければ定数である) filegen ファイル名の プレフィックスを統計ログ処理に対して用いられるファイル生成セットに対して 修正することが可能となります (下記 .B filegen 文を参照)。 .PP .B statistics .IR name \.\.\. .PP 統計レコードの書込みを有効にします。現在のところ、3 種類の統計がサポート されています。 .Ip loopstats 10 ループフィルタの統計情報の記録を有効にします。ローカル時計の更新を 行う度に、\*(L"loopstats\*(R" と名付けられたファイル生成セットに次の 形式の行を出力します: .PP .RS 5 48773 10847.650 0.0001307 17.3478 2 .RE .RS 10 最初の 2 つのフィールドは、日付 (ユリウス歴に修正済) と時刻 (UTC 午前 0 時からの秒数)です。次の 3 つのフィールドは、時計の更新時の、 秒での時間オフセット, 100 万分の 1 単位の周波数オフセット, clock-discipline アルゴリズムの時定数です。 .RE .Ip peerstats 10 通信相手に関する統計情報の記録を有効にします。これには、存在し初期化 された NTP サーバと 1-pps シグナルのすべての通信相手に関する統計レコードが 含まれます。有効な更新が行われる度に、 \*(L"peerstats\*(R" と 名付けられたファイル生成セットの現在の要素に次の形式の行を出力します: .PP .RS 5 48773 10847.650 127.127.4.1 9714 -0.001605 0.00000 0.00142 .RE .RS 10 最初の 2 つのフィールドは、日付 (ユリウス歴に修正済) と時刻 (UTC 午前 0 時からの秒数)です。次の 2 つのフィールドは、それぞれ dotted-quad 記法で表された通信相手のアドレスとステータスです。 ステータスフィールドは、 NTP の仕様である RFC 1305 の Appendix A で記述さ れたフォーマットに従い 16 進数にエンコードされています。最後の 3 つ のフィールドは、オフセット, 遅延, ばらつきで、すべて秒単位です。 .RE .Ip clockstats 10 時計ドライバの統計情報の記録を有効にします。時計ドライバからの更新を 受ける度に、 \*(L"clockstats\*(R" と名付けられたファイル生成セット次 の形式の行を出力します: .PP .RS 5 49213 525.624 127.127.4.1 93 226 00:08:29.606 D .RE .RS 10 最初の 2 つのフィールドは、日付 (ユリウス歴に修正済) と時刻 (UTC 午前 0 時からの秒数)です。次のフィールドは、dotted-quad 記法で表された 時計のアドレスです。最後のフィールドは、時計から受け取った最後のタイム コードで、ここでは意味のある ASCII 形式になっています。いくつかの 時計ドライバでは、たくさんの付加的情報が集められ、同様に表示されます。 より詳しくは、それぞれの時計の仕様情報を参照してください。 .RE .PP 統計ファイルは、ファイル生成セット(下記 .B filegen を参照)を用いて管理されます。統計を記録することで得られる情報は、 .I xntpd サーバの一時的なプロパティ (properties) の解析を可能にします。通常は 主要な (primary) サーバで役立つだけで、あるいはキャンパスのメイン サーバでも役立つかもしれません。 .PP .B filegen .I name [ .B file .I filename ] [ .B type .I typename ] [ .B flag .I flagval ] [ .BR link | nolink ] [ .BR enable | disable ] .PP ファイル生成セット (file generation set) .IR name の設定を行います。ファイル生成セットは、サーバの活動期間を通じて 継続的に大きくなっていくファイルを扱う手段を提供します。サーバ統計は このようなファイルの典型例です。ファイル生成セットにより、現状のデータ を格納するのに用いられるファイル集合にアクセスできます。任意の時点で、 集合の高々 1 つの要素への書き込みが行われます。 .I type は、その集合の新たな要素に、データが、いつ、どのように出力されるのか の仕様を与えます。この方法で、 .I xntpd の動作を妨げる危険なしに、管理的な操作 (administrational operations) から、現在使用されていないファイル集合の要素に格納されている情報が、 利用できるようになります。(最重要: それらは、新たな出力データのため 空きを作るのに削除される可能性があります。)要素のファイル名は 3 つの 部分から作られます。 .Ip prefix 10 不変なファイル名のパスです。 .B filegen 文による修正の対象にはなりません。サーバによって定義され、通常コンパイル時の 定数として指定されます。しかし、他のコマンドにより、個別のファイル生成 セットに対して設定は可能です。たとえば、"loopstats" と "peerstats" という filegen で用いられるプレフィックスは、すでに説明した .B statsdir 文を使用して設定できます。 .Ip filename 10 この文字列は、上で述べた .I prefix に、( \*(L'/\*(R' (スラッシュ) を入れずに ) 直接連結されます。 \*(L"filegen\*(R" 文の \*(L"file\*(R" 引数を使って修正できます。 \*(L"prefix\*(R" により示されるファイル名が、ファイルシステム階層の 外側を参照しないように、この部分は \*(L"..\*(R" を含んではいけないよ うになっています。 .Ip suffix 10 この部分はファイル集合の各要素を反映します。後述のように、ファイル集合の .I type に従って生成されます。 .PP ファイル生成セットは、その型 (type) により特徴づけられます。次の型が サポートされています: .Ip none 10 ファイル集合は実際には、単一のプレーンファイルです。 .Ip pid 10 .I xntpd サーバの起動ごとに、ファイル集合の 1 つの要素が使われます。この型は、 実行中にファイル集合の要素への変更を一切行いませんが、異なる .I xntpd サーバの起動ごとに別々のファイルをつくる簡単な方法になります。要素の ファイル名は、 \*(L"prefix\*(R" と \*(L"filename\*(R" をドット (\*(L'.\*(R') でつなげた上、 .I xntpd サーバプロセスのプロセス ID の10進表現をつなげで作られます。 .Ip day 10 1 日に 1 つのファイル生成セットの要素が作成されます。ここで、 .I 日 という用語は、 .IR UTC に基づきます。1 日は、 UTC の 00:00 と 24:00 の間の期間として定義さ れます。要素のサフィックスは、ドット \*(L".\*(R" と .RI < YYYYMMDD > の形式の日付指定からなります。 .I YYYY は 4 桁の西暦年 (たとえば 1992)で、 .I MM は、2 桁の月です。 .I DD は、2 桁の日となります。したがって、1992 年 12 月 10 日に情報はすべ て、 \*(L".19921210\*(R" という名前のファイルに書 かれます。 .Ip week 10 どの要素も 1 年の内のある週に関連するデータを含みます。ここで、 .I 週 という用語は、年の始まりからの日数の 7 の商により定義されます。この ようなファイル生成セットの要素は、ファイル集合のファイル名のベースに 次のようなサフィックスをつけることで区別されます。サフィックスは、 ドット, 4 桁の西暦年, 文字 \*(L"W\*(R", 2 桁の週番号です。例えば、 1992 年 1 月 10 日からの情報は、サフィックス \*(L".1992W1\*(R" を持つ ファイルに出力されます。 .Ip month 10 1 月に 1 つのファイル生成セットの要素が作成されます。ファイル名の サフィックスは、ドット, 4 桁の西暦年, 2 桁の月からなります。 .Ip year 10 1 年に 1 つのファイル生成セットの要素が作成されます。ファイル名の サフィックスは、ドットと 4 桁の西暦年からなります。 .Ip age 10 この型のファイル生成セットは、サーバが 24 時間活動するごとに新たな要素に 変わります。ファイル名のサフィックスは、ドット, 文字 \*(L"a\*(R", 8 桁の数からなります。この数は、対応する 24 時間の始め からサーバが実行されている秒数であるようになります。 .PP 情報は、ファイル生成セットが \*(L"enabled\*(R"のときのみ、そのセット に書込まれます。出力は \*(L"disabled\*(R"を指定することで抑止されます。 .PP ファイル生成セットの .I 現在の 要素に決まった名前でアクセスできると便利です。この機能は、 \*(L"link\*(R" を指定することで有効になり、 \*(L"nolink\*(R" を使っ て無効になります。 \*(L"link\*(R" が指定されると、 現在の要素から サフイックスを持たないファイルへのハードリンクが作成されます。その名前 を持つファイルが既に存在し、そのファイルのリンク数が 1 の場合、その ファイル名に、ドット, 文字 \*(L"C\*(R", .I xntpd サーバプロセスの pid をつなげて、名前変更を行います。リンク数が 1 以上の場合、ファイルはアンリンクされます。これにより現在のファイルを 定数名でアクセスすることができます。 .SH "その他のオプション" .PP .B precision .I # .PP このコマンドは、ローカル時計の名目上の (nominal) 精度を指定します。 この値は、秒単位のローカルの時間管理精度の底を 2 とする対数に近似的 に等しい整数です。ふつう、デーモンは起動時に自動的に精度を決定するの で、このコマンドは、精度を自動的に決定できない特殊な場合にのみ必要に なります。 .PP .B broadcastdelay .I seconds .PP ブロードキャストおよびマルチキャストモードは、ローカルとリモートサーバ間の ネットワーク遅延を決定するため、特別の修正を必要とします。通常、 この修正は、ローカルとリモートサーバ間の最初のプロトコル交換により、 自動的に行われます。修正手続きは、例えば、ネットワークもしくはサーバ のアクセス制御のために失敗する可能性があります。このコマンドは、これ らの状況下で使用されるデフォルトの遅延を指定します。(イーサネットに 対する)典型としては、0.003 から 0.007 秒が適切です。このコマンドが使 用されない場合のデフォルトは、 0.004 秒です。 .PP .B trap .I host_address [ .B port .I port_number ] [ .B interface .I interface_addess ] .PP このコマンドは、指定されたローカルインタフェースに送られる メッセージに対する、所与のホストアドレスとポート番号でのトラップレシーバを 設定します。ポート番号が指定されない場合、 18447 が使用されます。 インタフェースアドレスが指定されない場合、メッセージが送信時に通過する ローカルインタフェースのアドレスをソースアドレスとしてメッセージが 送られます。マルチホームのホストでは、使用されるインタフェースが、 ルーティングの変更にともない変化し得ることに注意してください。 .PP トラップレシーバは、一般には、イベントメッセージやサーバからのその他 の情報をログファイル中に記録するものです。このようなモニタプログラム はまた、それら自身のトラップをダイナミックに要求するかもしれませんが、 トラップレシーバの設定は、サーバのスタート時にメッセージが失われない ことを保証することになっています。 .PP .B setvar .I variable .I [default] .PP このコマンドは、付加的なシステム変数を追加します。これらの変数は、 アクセスポリシなどの付加的な情報を配布するために使用できます。 = の形式の変数に、キーワード .I default が続いた場合、変数はデフォルトのシステム変数の一部としてリストされる ようになります ( .I ntpq rv コマンド) 。これら付加的な変数は、情報を与える目的だけを果たします。 リストされ得ると言うこと以外に、プロトコルに関係しません。 既知のプロトコル変数は常に、 .I setvar の機構により定義されたいかなる変数よりも優先されます。 .PP 同一グループのすべての変数の名前を含む 3 つの特別な変数があります。 .I sys_var_list は、すべてのシステム変数の名前を保持しています。 .I peer_var_list は、すべての peer (交信相手) 変数の名前を保持しています。 .I clock_var_list は、参照時計変数の名前を保持しています。 .PP .B monitor yes|no .B authenticate yes|no .PP これらのコマンドは、 .B enable と .B disable コマンドに置き換えられました。ここにあげたのは歴史を述べるためです。 .SH "認証キーファイルのフォーマット" .PP NTP 標準は、受信した NTP パケットの認証の確認を可能とし、送信パケット内の 認証の指示を与えるための拡張を定めています。これは、 .I xntpd においては、デジタル署名, あるいは message-digest を計算するため、 DES もしくは MD5 アルゴリズムを使用して実装されています。この仕様は、 32 ビットのキー識別子により、ほぼ 40 億分の 1 が、連携 (association) の認証に使用できるようにしています。連携に含まれるサーバは、各々独立 にキーとキー識別子を学習せねばならないにも関わらず、データを認証する のに使用されるキーとキー識別子に合意せねばなりません。 DES の場合、 キーは 56 ビット長で、型によっては各バイトにパリティがつきます。MD5 の場合、キーは 64 ビット (8 バイト) です。 .I xntpd は、 コマンドラインオプション .B -k -もしくはコンフィギュレーションファイル中の +もしくは設定ファイル中の .B keys 文を使用して指定されるファイルからキーを読み込みます。キー番号 0 は、 NTP 標準によって (56 ビットの 0 として) 決定されており、変更できませ んが、一方、1 から 15 のキー番号の内の 1 つ以上がキーファイル中で任意に セットできます。 .PP -キーファイルは、コンフィギュレーションファイルと同様のコメント記述法 +キーファイルは、設定ファイルと同様のコメント記述法 を使用しています。キーエントリはの形式の固定されたフォーマットを 使用します。 .Ip "" 5 .I "keyno type key" .PP の形式の固定されたフォーマットを使用します。ここで、 \*(L"keyno\*(R" は正の数、 \*(L"type\*(R" はキーが与えられる形式を定義する単一文字、 \*(L"key\*(R" はキーそれ自身です。 .PP キーは、 \*(L"type\*(R" 文字による制御で、3 つの異なるフォーマットの 内の 1つで与えられます。3 つのキーの型とそれに対応するフォーマットは、 次にあげるとおりです。 .Ip "S" 5 \*(L"key\*(R" は、 DES のドキュメントに定められたフォーマットの 64 ビットの 16進数で、各オクテットの上位 7 ビットが使用された 56 ビット キーです。各オクテットの下位 1 ビットは、オクテットを奇数パリティに 保つように与えられます。先頭の 0 は省略できません (すなわち、キーは 正確に 16 桁の 16 進数である必要があります) 。また、奇数パリティが保 たれねばなりません。それゆえ、ゼロキーは、標準フォーマットで、 .I 0101010101010101 として与えられます。 .Ip "N" 5 \*(L"key\*(R" は、 NTP 標準で定められたフォーマットの 64 ビットの 16 進数です。これは、各オクテットを 1 ビット右 rotate して、パリティビッ トがオクテットの上位ビットになったことを除いては、 DES フォーマット と同じです。先頭の 0 は省略できず、奇数パリティが保たれねばなりませ ん。ゼロキーは、 NTP フォーマットで、 .I 8080808080808080 のように指定されます。 .Ip "A" 5 \*(L"key\*(R" は 1 文字から 8 文字の ASCII 文字列です。キーは、文字 列中の各文字の ASCII 表現の下位 7 ビットを使用して構成されます。56 ビット幅のキーを作るために、 Unix パスワードから暗号化キーを作るのと 同じ方法で、必要なら 0 が右端に付加されます。 .Ip "M" 5 \*(L"key\*(R" は 1 文字から 8 文字の ASCII 文字列で、 MD5 の認証方式 を使用しています。キーと認証方式 (DES または MD5) の両方が、同じキー 番号を共有する一組の交信相手の間で一意であることが、必要であることに 注意してください。 .PP -コンフィギュレーションファイルの +設定ファイルの .B requestkey 文の方法で、 .IR xntpdc (8) プログラムを用いてなされる実行時の設定要求を認証するために、キーの内 1 つが選択できます。後者のプログラムは、パスワードとして端末からキー を得ます。ですから、一般に、この目的のために使用されるキーを ASCII 表現で指定するのは、適切なことです。 .SH 主要な時計サポート (PRIMARY CLOCK SUPPORT) .I xntpd は、オプションで、いくつかの型の参照時計に対するサポートを含むように コンパイルできます。参照時計は、一般に (常にではなく)、カナダの NRC やアメリカの NIST により提供されるサービスと同様の標準時刻の供給源に 同期している無線時刻コード受信機です。コンピュータと時刻コード受信機 の間のインタフェースはデバイス依存で多種にわたりますが、多くは シリアルポートです。 .PP 多種類の参照時計ドライバに対するサポートは、他の場所で記述された コンパイラ定義のコードを使用して、条件コンパイルされます。参照時計を設定 しようとする試みは、特定のサポートが得られないか、ハードウェアポート が適切に設定されていないとき、システムログファイルに警告を残しますが、 そのほかでは障害となりません。 .PP 設定のために、 .I xntpd は、参照時計を、できるかぎり普通の NTP の交信相手にするのと同じよう な方法で扱います。参照時計は、普通の交信相手と同様にアドレスで参照さ れますが、普通の交信相手と区別するため、無効なアドレスが使用されます。 参照時計のアドレスは、 .I 127.127.t.u の形式となります。ここで、 .I t は、時計の型を示す整数で、 .I u -は、型で特定されるユニット番号を示します。参照時計は、コンフィギュレーション -ファイル中の +は、型で特定されるユニット番号を示します。参照時計は、設定ファイル中の .B server 文を使用して設定されます。このときの .I host_address は、時計のアドレスです。 .I key と .I version と .I ttl オプションは、参照時計サポートのためには使用されませんが、 .I prefer オプションは、ある参照時計を、それが望ましい場合には、他の参照時計や 交信相手より少し熱心に大事に扱わせるよう、サーバに促すのにうまく使え -ます。時計のアドレスは、一般にコンフィギュレーションファイル中で普通 +ます。時計のアドレスは、一般に設定ファイル中で普通 の IP アドレスが使用できるところならどこでも使用できます。例えば、 .B restrict 文中などですが、このような使用法は普通は奇妙に思えるでしょう。 .PP 参照時計サポートは、特別の方法で参照時計を設定するのに使用できる .B fudge コマンドを与えます。 以下は、このコマンドに適用される一般的なフォーマットです。 .PP .B fudge .I 127.127.t.u [ .B time1 .I secs ] [ .B time2 .I secs ] [ .B stratum .I int ] [ .B refid .I int ] [ .B flag1 .I 0|1 ] [ .B flag2 .I 0|1 ] [ .B flag3 .I 0|1 ] [ .B flag4 .I 0|1 ] .PP .I time1 と .B time2 オプションは、秒単位の固定小数点で指定され、いくつかの時計ドライバで は、補正定数として使用されます。慣習により、別のやり方で示されない限り、 .B time1 は、特定の時計の名目上の時間オフセットを、高精度の PPS 信号のような、 外部の標準に一致させるように調整するための補正定数として使用されます。 指定されたオフセットは、内部の DIP スイッチのような他の手段により与えられた 伝搬遅延に付加されます。 .B stratum オプションは 0 から 15 までの数で、時計に対し非標準の operating stratum を割当てるのに使用します。 .B refid オプションは、 1 から 4 文字までの ASCII 文字列で、時計に対し非標準 の参照識別子を割当てるのに使用します。最後に、4つの 2 値フラグ .B flag1, .B flag2, .B flag3, .B flag4 は、時計ドライバをカスタマイズするのに使用されます。これらの値の解釈 や、ともかくそれらが用いられるのかどうかは、特定の時計ドライバが必要 とするかに関わっています。しかし、慣習により、別のやり方で示されない 限り、 .B flag3 は、 ppsclock ストリームモジュールを設定されるドライバにアタッチする のに使用され、一方、 .B flag4 は、 .I filegen コマンドで設定される時計統計 (clockstats) ファイルへの詳細なモニタリング データの記録を有効にするために使用されます。 ppsclock ストリーム モジュールについてのさらなる情報は、現在の xntp3 プログラムの ディストリビューション中の ./kernel ディレクトリの README ファイル内にあり ます。この機能についてのさらなる情報は、 同じディストリビューション中の ./scripts/stats ディレクトリにあります。 .PP 通常、参照時計の stratum は、デフォルトで 0 です。 .I xntpd デーモンは、各交信相手の stratum に 1 を加算するので、主要 (primary) サーバは、通常 stratum 1 を示します。巧みに運用されたバックアップを 与えるために、参照時計の stratum を 0 以上に指定することは、役に立つ ことが多いです。 .B stratum オプションは、この目的のために使用されます。また、参照時計と 1-pps discipline 信号の両方を含む場合、ドライバによっては、参照時計識別子 をデフォルト以外に指定することは有用です。 .I refid オプションは、この目的のために使用されます。そう記されていない限り、 これらのオプションは、すべての時計ドライバに適用されます。 .PP 現在、Unix マシン上の .I xntpd は、バックアップとして用いられる、あるいは他の時計供給源が与えられな いとき使用される特殊な仮想時計に加えて、いくつかの異なる型の時計 ハードウェアをサポートしています。たいていの時計ドライバの場合、xntp3 プログラムのディストリビューション中の ./doc ディレクトリの README ファイル内で述べられているように 1-pps 精度のタイミング信号に対する サポートが利用可能です。時計ドライバ、およびそれらを設定するのに使用される アドレスは、現在の xntp3 プログラムのディストリビューション中の doc ディレクトリの README.refclocks で記述されています。 .PP .SH 変数 NTP protocol により用いられるたいていの変数は、 .I xntpdc (モード 7 メッセージ) と .I ntpq (モード 6 メッセージ) で、調べることができます。 現在は、ごくわずかの変数が、モード 6 メッセージを通して変更可能です。 これらの変数は、 .I setvar の指示で作られたか、リープ警告 (leap warning) 変数かのどちらかです。 リープ警告ビットは、 .B leapwarning 変数で (1 ヶ月前までに) セットされます。 .B leapwarning と .B leapindication 変数内の両方が通常の .B leap ビット解釈と少し違ったエンコーディングを持っています: .P .Ip 00 8 デーモンは、同期源のリープビットを渡します (通常モードの動作) 。 .Ip 01/10 8 リープ秒が、付加/削除されます (オペレータによるリープ秒の強制)。 .Ip 11 8 同期源からのリープ情報は、無視されます (それゆえ LEAP_NOWARNING が 与えられます) 。 .PP .SH 関連ファイル .Ip /etc/ntp.conf 20 -デフォルトのコンフィギュレーションファイル名 +デフォルトの設定ファイル名 .Ip /etc/ntp.drift 20 ドリフトファイルの慣習上の名前 .Ip /etc/ntp.keys 20 キーファイルの慣習上の名前 .SH 関連項目 .PP .IR xntpdc (8), .IR ntpq (8), .IR ntpdate (8) .SH 歴史 .PP .Nm コマンドはトロント大学の Dennis Ferguson によって書かれました。 テキストはデラウェア大学の David Mills により修正されました。 .SH バグ .PP .I xntpd はかなり大きくなってしまいました。巨大とは言いませんが、ワークステーションで 実行される可変プライオリティのデーモンとして望ましい大きさを 超えてしまいました。それは特に、かさばる凝った特徴の多くが、高い stratum のワークステーションよりは、高負荷の主要 (primary) サーバに あわせて設計されているからです。 diff --git a/ja_JP.eucJP/man/man8/yp_mkdb.8 b/ja_JP.eucJP/man/man8/yp_mkdb.8 index 53bb573aac..a486822a72 100644 --- a/ja_JP.eucJP/man/man8/yp_mkdb.8 +++ b/ja_JP.eucJP/man/man8/yp_mkdb.8 @@ -1,186 +1,186 @@ .\" Copyright (c) 1995, 1996 .\" Bill Paul . 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 Bill Paul .\" 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 Bill Paul 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 Bill Paul 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. .\" .\" %Id: yp_mkdb.8,v 1.2.2.3 1997/11/18 07:32:58 charnier Exp % .\" jpman %Id: yp_mkdb.8,v 1.3 1997/05/19 17:09:21 horikawa Stab % .\" .Dd March 12, 1996 .Dt YP_MKDB 8 .Os .Sh 名称 .Nm yp_mkdb .Nd "NIS データベースを作成する" .Sh 書式 .Nm yp_mkdb .Fl c .Nm yp_mkdb .Fl u Ar dbname .Nm yp_mkdb .Op Fl c .Op Fl b .Op Fl s .Op Fl i Ar inputfile .Op Fl o Ar outputfile .Op Fl d Ar domainname .Op Fl m Ar mastername .Ar inputfile .Ar dbname .Sh 解説 .Nm yp_mkdb は FreeBSD の NIS サーバが使用する .Xr db 3 スタイルのデータベースを作成します。 .Nm yp_mkdb はデータを .Ar inputfile から読み取り、 そのデータを .Ar dbname に .Xr db 3 フォーマットで書き込みます (ハッシュテーブル法を使用します)。 入力は 'key data' の形式、 すなわち空白で区切られた 2 つの .Tn ASCII データフィールドである必要があります。 1 番目のフィールドはキーであるとされ、他は全てデータであるとされます。 通常、データベースが格納されるのは .Pa /var/yp/[domainname] です。ここで、 .Ar domainname はサーバが対象とする NIS ドメイン名です。 .Nm yp_mkdb が起動されるのは、通常 .Pa /var/yp/Makefile からです。 .Nm で NIS データベースファイルをダンプし、内容検査を行えます。 セキュリティのため、 .Nm -が作成した全てのデータベースは、オーナのみ読み書き可能です -(通常オーナは root です)。 +が作成した全てのデータベースは、所有者のみ読み書き可能です +(通常所有者は root です)。 .Sh オプション .Nm yp_mkdb コマンドは以下のフラグとオプションをサポートしています: .Bl -tag -width indent .It Fl c YPPROC_CLEAR リクエストをローカルホスト上の .Xr ypserv 8 宛に送ることを .Nm に指示します。 このシグナルにより、 サーバはオープンしているデータベースデスクリプタをクローズし、 データベースキャッシュをフラッシュします。 このフラグを単体で使用した場合、 サーバにシグナルを送るだけで他には何もしません。 データベース作成コマンドとともに使用した場合には、 .Nm は新たなデータベースが成功裏に作成された後にのみシグナルを送ります。 .It Fl b このフラグを指定すると、キーが .Em YP_INTERDOMAIN でありデータフィールドが空である特別のエントリの データベースへの追加を .Nm に指示します。 このキーがマップ中に存在すると、 .Xr ypserv 8 における 'マッチ' 手続きの動作が何も言わずに変わります。 (キーにマッチするレコードをサーバが見付けられなかったことにより) マッチ問い合わせが失敗した場合、 その要求されたマップに .Em YP_INTERDOMAIN キーが存在する場合には、 .Xr ypserv 8 は今度はそのエントリが DNS でマッチするか検索します。 この特別な振舞は .Em hosts マップだけに適用されることに注意して下さい。 他のマップに .Fl b フラグを使用しても効果はありません。 .It Fl s このフラグは、キーが .Em YP_SECURE でありデータフィールドが空である特別なエントリを データベースに追加するために使用します。 このキーがマップ中にあると、 .Xr ypserv 8 は問い合わせのために用意されたポート以外からの クライアントからのアクセスを拒否します。 これは主に、特権アクセスのみに制限しなければならない .Em master.passwd マップのために使用します。 .It Fl u Ar dbname NIS データベースをダンプします('ほどき'ます)。 既に存在する NIS データベースの内容を検査するために使用可能です。 .It Fl i Ar inputfile NIS マップ作成時に、キーが .Em YP_INPUT_FILE であり .Ar inputfile がエンコードされた特別なエントリをデータベース中に作成します。 .It Fl o Ar outputfile NIS マップ作成時に、キーが .Em YP_OUTPUT_FILE で .Ar outputfile がエンコードされた特別なエントリをデータベース中に作成します。 .It Fl d Ar domainname NIS マップ作成時に、キーが .Em YP_DOMAIN_NAME であり .Ar domainname がエンコードされた特別なエントリをデータベース中に作成します。 .It Fl m Ar mastername NIS マップ作成時に、キーが .Em YP_MASTER_NAME であり .Ar mastername がエンコードされた特別なエントリをデータベース中に作成します。 データベース中のこのエントリは、 ドメイン中の NIS マスタサーバの名前を判定するために、 様々な NIS ユーティリティからしばしば使用されます。 デフォルトでは、 .Nm はローカルホストが NIS マスタであるとします; .Fl m オプションをすればこのデフォルトを上書きできます。 .Sh 関連ファイル .Bl -tag -width /var/yp/Makefile -compact .It Pa /var/yp/Makefile .Nm を呼び出し NIS データベースを作成する Makefile .Sh 関連項目 .Xr db 3 , .Xr ypserv 8 .Sh 作者 .An Bill Paul Aq wpaul@ctr.columbia.edu diff --git a/ja_JP.eucJP/man/man8/ypbind.8 b/ja_JP.eucJP/man/man8/ypbind.8 index 59ad6076c5..52fdda8fd2 100644 --- a/ja_JP.eucJP/man/man8/ypbind.8 +++ b/ja_JP.eucJP/man/man8/ypbind.8 @@ -1,164 +1,164 @@ .\" Copyright (c) 1991, 1993, 1995 .\" 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. .\" .\" %Id: ypbind.8,v 1.5.2.3 1997/11/18 07:37:39 charnier Exp % .\" jpman %Id: ypbind.8,v 1.4 1997/06/18 16:55:44 horikawa Stab % .\" .Dd April 9, 1995 .Dt YPBIND 8 .Os .Sh 名称 .Nm ypbind .Nd "NIS ドメインをバインドするデーモン" .Sh 書式 .Nm ypbind .Op Fl ypset .Op Fl ypsetme .Op Fl s .Op Fl S Ar domainname,server1,server2,... .Sh 解説 .Nm は NIS バインド情報を管理するプロセスです。 開始時にネットワークブロードキャストを行い、( .Xr domainname 1 コマンドにより設定された) システムデフォルトドメインに対して サービスする NIS サーバを探します。 返答を受け取ると、サーバのアドレス等の情報をファイル .Pa /var/yp/binding に格納します。 標準 C ライブラリ中の NIS ルーチンは、 NIS リクエストを処理する時にはこのファイルを使用します。 NIS クライアントは複数のドメインにバインドされる事がありうるため、 このようなファイルが複数ある場合があります。 .Pp バインドされると、 .Nm は DOMAIN_NONACK リクエストを NIS サーバ宛に 1 分置きに送ります。 リクエストに対する返答が得られない場合、 .Nm はサーバがもう実行していないものとし、 別サーバにバインドされるまでネットワークブロードキャストを再開します。 .Nm は、サーバが返答しなかったことを検知するたび および新たなサーバにバインドされるたび、 警告メッセージを .Xr syslog 3 の機能を使用して記録します。 .Sh オプション 以下のオプションが .Nm にてサポートされています: .Bl -tag -width indent .It Fl ypset .Xr ypset 8 コマンドを使用し、 指定されたドメインの特定の NIS サーバに .Nm を強制的にバインドする事は可能です。 しかし .Nm は、正確には誰が要求しているのかを知る事が出来ないため、 YPBINDPROC_SETDOM リクエストをデフォルトでは拒否します。 .Fl ypset フラグを使用する事により、 .Nm にあらゆるホストからの YPBINDPROC_SETDOM リクエストを受理させられます。 任意のユーザにより NIS クライアントのバインドがリセットされてしまうという セキュリティ上の危険がありますので、 このオプションは診断目的および短い期間のみ使用すべきです。 .It Fl ypsetme これは .Fl ypset フラグに似ていますが、YPBINDPROC_SETDOM リクエストがローカルホスト発の場合のみ 処理を許すという点のみ異なります。 .It Fl s .Nm を安全モードで実行します: root 以外により実行されている NIS サーバ (つまり、特権 TCP ポートを使用していないもの)へのバインドを拒否します。 .It Fl S Ar domainname,server1,server2,server3,... システム管理者は .Nm を特定のドメインおよび NIS サーバグループへロック出来ます。 10 サーバまで指定できます。 domain/server 指定においては、コンマの間には空白を入れてはなりません。 このオプションを指定する事により、 ある 1 つのドメインおよび指定されたサーバのうちの 1 つにのみに システムがバインドされる事を保証できます。 これは NIS サーバであり NIS クライアントでもあるシステムにて有用です: システムがバインド可能なマシンの限定を、 しばしばセキュリティホールであるとされる .Fl ypset や .Fl ypsetme といったオプションを指定する必要無く行えます。 指定されるサーバの有効なエントリが、ローカルの .Pa /etc/hosts ファイルに存在する必要があります。 ホスト名の代わりに IP アドレスを指定しても構いません。 .Nm が引数を解釈できない場合、 .Fl S フラグを無視し、通常の動作を行います。 .Pp .Nm は .Fl S フラグにより指定されるドメイン名を、システムデフォルトドメインと解釈 することに注意して下さい。 .Sh 注釈 .Nm は 2 番目のドメインのバインドを連続して保持しようとはしません。 2 番目のドメインのサーバが ping に応答しない場合、 .Nm はあきらめる前に一度だけ新たなサーバを探してブロードキャストします。 クライアントプログラムがバインドされていないドメインを参照しようとした場合、 .Nm は再度ブロードキャストしようとします。 これとは対称的に、クライアントプログラムが参照していようといまいと、 .Nm はデフォルトドメインへのバインドを自動的に保持します。 .Sh 関連ファイル .Bl -tag -width /etc/rc.conf -compact .It Pa /var/yp/binding/[domainname].[version] NIS ドメインに関連したバインド情報を保持するファイル。 .It Pa /etc/rc.conf システムデフォルトのドメインと ypbind 開始オプションを指定する -コンフィギュレーションファイル。 +設定ファイル。 .El .Sh 関連項目 .Xr domainname 1 , .Xr syslog 3 , .Xr yp 4 , .Xr ypserv 8 , .Xr ypset 8 .Sh 作者 .An Theo de Raadt Aq deraadt@fsa.ca diff --git a/ja_JP.eucJP/man/man8/ypserv.8 b/ja_JP.eucJP/man/man8/ypserv.8 index ad8b3494ad..468bb7e702 100644 --- a/ja_JP.eucJP/man/man8/ypserv.8 +++ b/ja_JP.eucJP/man/man8/ypserv.8 @@ -1,422 +1,422 @@ .\" Copyright (c) 1995 .\" Bill Paul . 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 Bill Paul. .\" 4. Neither the name of the author nor the names of any co-contributors .\" may be used to endorse or promote products derived from this software .\" without specific prior written permission. .\" .\" THIS SOFTWARE IS PROVIDED BY Bill Paul 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 Bill Paul 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. .\" .\" %Id: ypserv.8,v 1.8.2.3 1997/11/18 07:52:07 charnier Exp % .\" jpman %Id: ypserv.8,v 1.3 1997/05/19 17:11:16 horikawa Stab % .\" .Dd February 4, 1995 .Dt YPSERV 8 .Os .Sh 名称 .Nm ypserv .Nd NIS データベースサーバ .Sh 書式 .Nm .Op Fl n .Op Fl d .Op Fl p Ar path .Sh 解説 .Tn NIS は複数の UNIX ベースのマシン間で -共通のコンフィギュレーションファイルの集合を共有するための +共通の設定ファイルの集合を共有するための RPC ベースのサービスです。 .Tn NIS では、 .Pa /etc/hosts , .Pa /etc/passwd , .Pa /etc/group といった、ほとんどの環境で頻繁に更新されるファイルの複数のコピーを システム管理者が更新する必要は無く、 計算機のグループで一箇所で更新可能な 1 組のデータを共有することができます。 .Pp .Nm は .Tn NIS .Em ドメイン 内のクライアントシステムに .Tn NIS データベースを配布するサーバです。 .Tn NIS ドメイン内のクライアントは .Xr domainname 1 コマンドを使用し、 .Nm がサービスしているドメイン名を設定しなければなりません。 また、単一 .Tn NIS ドメイン中に複数のサーバが存在しうるため、 クライアントは、 .Xr ypbind 8 を実行させ、特定のサーバに接続する必要もあります。 .Pp .Nm によって配布されるデータベースは .Pa /var/yp/[domainname] に格納されます。 ここで .Pa domainname はサービスを受けるドメイン名です。 この様なディレクトリは様々なドメイン名にて複数存在可能ですが、 単一の .Nm デーモンにて全て処理可能です。 .Pp データベース (もしくはしばしば .Pa マップ と呼ばれます)は、様々なシステムファイルをソースとして .Pa /var/yp/Makefile によって作成されます。 データベースファイルは .Xr db 3 フォーマットであり、レコード数が多くとも高速に検索可能です。 .Bx Free では、セキュリティのため、マップの読み書きは root のみ可能です。 技術的には、このような制限はパスワードマップにのみ必要ですが、 他のマップの内容は誰もが読める他のファイルに書いてありますので、 この様な制約は害ではなく、現実的であると考えられています。 .Pp .Nm は .Pa /etc/rc.conf にて有効にされている場合に .Pa /etc/rc.network から起動されます。 .Sh 特別な仕様 .Bx Free のパスワードデータベースを .Tn NIS によって配布する場合にいくつかの問題があります。 .Bx Free は通常、暗号化したパスワードを、root のみ読み書き可能な .Pa /etc/master.passwd にのみ格納します。 このファイルを .Tn NIS マップにすると、セキュリティが完全に破れてしまいます。 .Pp これに対処するために、 .Bx Free の .Nm は .Pa master.passwd.byname と .Pa master.basswd.byuid のマップを特別な方法で扱います。 サーバがこれら 2 つのマップへのアクセス要求を受け付けると、 要求元の TCP ポートをチェックし、ポート番号が 1023 より大きい場合には エラーを返します。 スーパユーザのみ 1024 より小さい TCP ポートにバインドする事を許されているため、 サーバはこれを利用して特権ユーザからの要求か否かを判定できます。 非特権ユーザからの全ての要求は拒否されます。 .Pp また、 .Bx Free の標準 C ライブラリ中の .Xr getpwent 3 ルーチンは、スーパユーザが使用した場合には .Pa master.passwd.byname と .Pa master.passwd.byuid のマップからデータを取得します。 通常のユーザがこれらのルーチンをコールした場合には、標準の .Pa passwd.byname と .Pa passwd.byuid のマップにアクセスします。後者の 2 つのマップは .Pa /var/yp/Makefile により、 .Pa master.passwd ファイルをパースし、パスワードフィールドを削除する事により作成されますので、 非特権ユーザに渡しても安全です。 このように .Pa master.passwd データベースのシャドウパスワード機構は .Tn NIS においても守られます。 .Pp .Sh 注釈 .Ss 制限 .Tn NIS 環境にてシャドウパスワードを使用することに起因する問題が 2 つあります。 ユーザは次のことに気をつけねばなりません。 .Pp .Bl -enum -offset indent .It .Sq TCP ポートが 1024 より小さい というテストは非常に簡単であるため、 同一ネットワーク上の、無制限のアクセスが可能なマシンを持つユーザは これを破る事が可能です (UNIX ベースではないオペレーティングシステムを実行するマシンでも可能です)。 .It .Bx Free システムを、シャドウパスワードをサポートしない非 .Bx Free クライアント (ほとんどがそうです) に対するサーバにしようとしている場合には、 .Pa /var/yp/Makefile の .Em UNSECURE=True エントリのコメントを外し、 シャドウパスワードを無効にする必要があります。 これにより、 .Pa passwd.byname と .Pa passwd.byuid のマップに、非 .Bx Free クライアントが .Tn NIS を通じてユーザ認証を 行うために必要とする、 有効な暗号化されたパスワードフィールドが含まれるようになります。 .El .Pp .Ss セキュリティ 一般的に、リモートユーザは、ドメイン名を知ってさえいれば、RPC を .Nm に発行し、 .Tn NIS マップの内容を取得可能です。 このような権限の無いトランザクションを防ぐために、 .Nm には .Pa securenets と呼ばれる、あるホストの集合にのみアクセスを制限する機能があります。 起動時に、 .Nm は securenets 情報をファイル .Pa /var/yp/securenets から読み込みます。 (後述するように、このパスは、 .Fl p オプションによって指定するパスによって変化することに注意して下さい。) このファイルは、空白によって区切られるネットワークとネットワークマスクからなる エントリを複数含みます。 .Dq \&# から始まる行はコメントと見なされます。 securenets ファイルの例を以下に示します: .Bd -unfilled -offset indent # allow connections from local host -- mandatory 127.0.0.1 255.255.255.255 # allow connections from any host # on the 129.168.128.0 network 192.168.128.0 255.255.255.0 # allow connections from any host # between 10.0.0.0 to 10.0.15.255 10.0.0.0 255.255.240.0 .Ed .Pp .Nm がこれらのルールに適合するアドレスからの要求を受け取った場合には、 通常通り要求を処理します。 アドレスがルールに適合しない場合には、要求は無視され、警告がログされます。 .Pa /var/yp/securenets ファイルが存在しない場合には、 .Nm は全てのホストからの接続を許します。 .Pp .Nm は、Wietse Venema の .Em tcpwrapper パッケージをサポートしますが、 .Em tcpwrapper パッケージは .Bx Free とともに配布されていないため、 デフォルトでは組み込まれていません。 しかし .Pa libwrap.a と .Pa tcpd.h があれば、容易に .Nm を再コンパイルすることができます。 これにより、アクセス管理のために、 -システム管理者は tcpwrapper のコンフィグレーションファイル +システム管理者は tcpwrapper の設定ファイル ( .Pa /etc/hosts.allow と .Pa /etc/hosts.deny ) を .Pa /var/yp/securenets の代わりに使用できます。 .Pp 注: どちらのアクセス制御もそれなりのセキュリティを提供しますが、 特権ポートテストと同様に .Dq IP 詐称 (spoofing) 攻撃には無力であることに 注意して下さい。 .Pp .Ss NIS v1 互換性 このバージョンの .Nm は .Tn NIS v1 クライアントに対してある程度サービス可能です。 .Bx Free の .Tn NIS 実装は .Tn NIS v2 プロトコルのみを使用しますが、 他の実装では古いシステムとのバックワードコンパチビリティのために v1 プロトコルもサポートしています。 そのようなシステムで提供されている .Xr ypbind 8 デーモンは、実際にはおそらく不要なのですが、 .Tn NIS v1 サーバにバインドしようとします。 (そして、v2 サーバから返答を受け取ったとしてもサーバを探すために ブロードキャストし続けます。) このバージョンの .Nm では通常のクライアントの呼び出しはサポートされていますが、 v1 マップ転送要求は扱いません。 すなわち、古い .Tn NIS サーバとともに、マスタもしくはスレーブとして使用することはできません。 好運なことに、今日ではこの様なサーバは存在しないでしょう。 .Ss NIS クライアントでもある NIS サーバ 複数のサーバが存在するドメインにおいて、 サーバが .Tn NIS クライアントでもある場合には、 .Nm の実行に注意を払う必要があります。 バインド要求をブロードキャストさせてサーバ間でバインドさせるのではなく、 サーバを自分自身にバインドすることは一般的には良い考えです。 あるサーバがダウンし、他のサーバがそのサーバに依存していた場合には、 奇妙な障害が生じ得ます。(結果として全てのクライアントがタイムアウトし、 他のサーバにバインドしようとしますが、遅延は無視できず、 サーバはまだ互いにバインドしようとしますので、障害は残ります。) .Pp 特定のサーバに強制的にバインドさせるための詳細は .Xr ypbind 8 マニュアルページを参照して下さい。 .Sh オプション 以下のオプションが .Nm にてサポートされています。 .Bl -tag -width flag .It Fl n このオプションは .Nm が .Pa hosts.byname と .Pa hosts.byaddress のマップに対する yp_match 要求を扱う方法を操作します。 デフォルトでは、 .Nm が与えられたホストのエントリをホストマップ中に見付けられなかった場合には、 エラーを返しそれ以上の処理を行いません。 .Fl n フラグを指定すると、 .Nm はさらなる処理を行います。 すぐにあきらめずに、ホスト名もしくはアドレスを DNS ネームサーバに問い合わせて 解決しようとします。 問い合わせが成功すると、 .Nm は偽のデータベースレコードを作成し、それをクライアントに返しますので、 クライアントの yp_match 要求は成功したように見えます。 .Pp この仕様は SunOS 4.1.x との互換性のために用意されています。 そのシステムの標準 C ライブラリではリゾルバが腐っており、 ホスト名とアドレスの解決のために .Tn NIS に依存していました。 .Bx Free のリゾルバは DNS への問い合わせを直接行えますので、 .Bx Free である .Tn NIS クライアントに対してのみサービスする場合は、 このオプションを有効にする必要はありません。 .It Fl d サーバをデバッグモードで実行します。 通常 .Nm は異常時のエラー (アクセス違反、ファイルアクセス失敗) のみを .Xr syslog 3 機能を使用して報告します。 デバッグモードでは、サーバは自身をバックグラウンドでは実行せず、 リクエストを受けるたびに、 状態を表す追加のメッセージを標準エラー出力に表示します。 また、デバッグモードで実行している間は、通常とは異なり、 yp_all 要求処理時や DNS 検索処理時に .Nm ypserv サブプロセスを生成しません。 (これらの処理は多くの場合完了までに時間がかかるために サブプロセスにより処理され、 親であるサーバは別の要求を処理できるようになっています。) これによりデバッグツールによるサーバのトレースが容易になります。 .It Fl p Ar path 通常 .Nm は .Tn NIS マップは .Pa /var/yp 以下にあるものと想定します。 .Fl p フラグを使用し、別の .Tn NIS ルートパスを指定できますので、 システム管理者はファイルシステム中の別の場所にマップファイルを移動できます。 .El .Sh 関連ファイル .Bl -tag -width Pa -compact .It Pa /var/yp/[domainname]/[maps] .Tn NIS マップ .It Pa /etc/host.conf -リゾルバ構成ファイル +リゾルバ設定ファイル .It Pa /var/yp/securenets ホストアクセス制御ファイル .El .Sh 関連項目 .Xr ypcat 1 , .Xr db 3 , .Xr yp 4 , .Xr ypbind 8 , .Xr yppasswdd 8 , .Xr yppush 8 , .Xr ypxfr 8 .Sh 作者 .An Bill Paul Aq wpaul@ctr.columbia.edu .Sh 歴史 このバージョンの .Nm が最初に登場したのは .Fx 2.2 です。 diff --git a/ja_JP.eucJP/man/man8/ypxfr.8 b/ja_JP.eucJP/man/man8/ypxfr.8 index 0ff35e8943..6ab8ed8f0a 100644 --- a/ja_JP.eucJP/man/man8/ypxfr.8 +++ b/ja_JP.eucJP/man/man8/ypxfr.8 @@ -1,295 +1,295 @@ .\" Copyright (c) 1995 .\" Bill Paul . 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 Bill Paul. .\" 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 Bill Paul 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 Bill Paul 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. .\" .\" %Id: ypxfr.8,v 1.3.2.1 1997/12/19 07:35:33 charnier Exp % .\" jpman %Id: ypxfr.8,v 1.3 1997/09/09 04:09:30 yugawa Stab % .\" .Dd February 5, 1995 .Dt YPXFR 8 .Os .Sh 名称 .Nm ypxfr .Nd "リモートのサーバからローカルホストへ NIS データベースを転送する" .Sh 書式 .Nm /usr/libexec/ypxfr .Op Fl f .Op Fl c .Op Fl d Ar target domain .Op Fl h Ar source host .Op Fl s Ar source domain .Op Fl p Ar path .Op Fl C Ar taskid program-number ipaddr port .Ar mapname .Sh 解説 .Nm ypxfr は .Tn NIS データベース(または .Pa マップ ) を .Tn NIS サービスを使用し、ある .Tn NIS サーバから別のサーバにコピーします。 .Bx Free では一般に、 .Nm は .Xr yppush 8 からマップ転送要求を受け取った .Xr ypserv 8 から 起動されます。 基本的に、 .Nm を使用するのは、単一ドメイン内で複数の .Tn NIS サーバが使用される環境です。 一台のサーバ( .Tn NIS マスタ)は全ての .Tn NIS マップの基準となるコピーを管理します。 その他のサーバ( .Tn NIS スレーブ)は、マップに更新があったとき (例えば、ユーザが .Xr yppasswd 1 を用いてパスワードを更新したとき)に、 新しいバージョンのマップをマスタからコピーします。 .Pp 実行時、 .Nm は一時データベースファイルを .Pa /var/yp/[domainmame] に作成し、 指定された .Ar source host により提供される .Ar mapname の内容で埋めます。 マップ全体の転送が完了すると、 .Nm は .Ar mapname の古いコピーを消去し、代わりに一時ファイルを置きます。 転送完了時に、 .Nm は `現在のマップのクリア' 要求を、 ローカルの .Xr ypserv 8 プロセス宛に送信し、 古いマップを参照している場合にはクリアさせようとします。 .Pp .Nm -が作成した全てのファイルがオーナのみ読み書き可能なのは、 +が作成した全てのファイルが所有者のみ読み書き可能なのは、 セキュリティのためである事に注意して下さい。 .Tn NIS マップとそれを格納するディレクトリは通常 root が所有しますので、 非特権ユーザによる権限の無い変更を防ぎます。 .Pp 全ての .Tn NIS サーバ間で一貫性を保持するために .Nm を .Xr cron 8 ジョブとして定期的に実行する事が出来ます。 ほとんど変更されないマップは 1 日 1 度 (システム使用率が一番低い深夜が望ましいでしょう)更新すれば良いですが、 頻繁に変更されるマップ(例えば .Pa passwd.byname や .Pa passwd.byuid ) はおそらく 1 時間に 1 度更新すべきでしょう。 .Xr cron 8 を使用し NIS マップを自動的に更新する事は厳密には必須ではありません。 なぜなら、全ての更新は .Tn NIS マスタサーバ上で .Pa /var/yp/Makefile が実行された時に .Xr yppush 8 にて伝搬されているはずだからです。 ただし、通信不能となって .Tn NIS サーバ間で同期が取れなくなる事があるような 大きなネットワークでは、良い実現方式です。 .Pp .Nm が制御端末無しで起動された場合、例えば .Xr ypserv 8 内部から起動された場合には、 .Xr syslog 3 機構を使用して、全ての出力のログを取ります。 .Sh 注釈 .Bx Free バージョンの .Nm は .Bx Free の .Xr rpc.ypxfrd 8 サーバと連動する特別なマップ転送プロトコルをサポートします。 このプロトコルは、 生のマップデータベースファイルを .Tn NIS マスタサーバから転送する事を許しますので、 特に大きな .Tn NIS マップの場合は、標準の転送方法よりも数倍高速です。 .Nm コマンドは .Tn NIS マスタサーバ上に .Xr rpc.ypxfrd 8 が登録されているかをチェックし、存在する場合にはこれを使用しようとします。 存在しない場合には、標準プロトコルを使用し、 .Xr ypserv 8 からマップの内容をコピーし、新たなマップを作成します。 .Pp 概念的には .Bx Free の ypxfrd プロトコルは SunOS の ypxfrd プロトコルと同じですが、 .Bx Free のプロトコルは SunOS のプロトコルとは互換ではないため、 Sun の ypxfrd サーバとともに使用する事は出来ない事に注意して下さい。 FreeBSD のスレーブは .Bx 非 Free の .Tn NIS サーバから マップを転送する事が出来ますが、 高速プロトコルを使用できるのは、マスタサーバも .Bx Free の場合だけです。 .Sh オプション .Nm がサポートするオプションは以下の通りです: .Bl -tag -width indent .It Fl f マップ転送を強制します。通常、 .Tn NIS マスタ上のコピーがローカルホスト上にあるコピーよりも新しくない場合には、 .Nm はマップを転送しません: .Fl f フラグにより、サーバ上のバージョンが新しいか否かにかにかかわらず、 転送します。 .It Fl c ローカルホスト上で実行されている .Xr ypserv 8 プロセス宛に `現在のマップのクリア' 要求を送信しません。 このフラグは通常 .Xr ypserv 8 を実行していないマシン上で .Nm を手動で起動する時に使用します。 このフラグを指定しないと、ローカルの .Tn NIS サーバと通信できないために、 .Nm は転送を中止します。 .It Fl d Ar target domain 現在の .Tn NIS ドメインではない別のドメイン名を指定します。 .It Fl h Ar source host .Tn NIS マップのコピー元のホスト名を指定します。 このオプションにより .Nm が .Tn NIS マスタサーバからのみマップをコピーする事を保証できます。 .It Fl s Ar source domain マップの転送元のドメインを指定します。 これは 2 つの .Tn NIS ドメイン間で転送を行う時に有用です。 .It Fl p Ar path .Tn NIS マップを保持する最上位ディレクトリを指定します。 デフォルトではこのパスは .Pa /var/yp です。 .Fl p フラグにより別のパスを指定し、 .Tn NIS マップを別の場所に格納する場合に対処できます。 .Tn NIS サーバ .Xr ypserv 8 が別のパスを使用するように指示された場合にも、このフラグを .Nm に渡します。 .It Fl C Ar taskid program-number ipaddr port .Xr yppush 8 によるマップ転送要求への応答として、 .Nm が .Xr ypserv 8 から起動された場合にのみ、このオプションは使用されます。 この場合、 .Nm は .Xr yppush 8 を `コールバック' して通信する必要がありますので、 .Xr yppush 8 は IP アドレス .Ar ipaddr 、ポート番号 .Ar port 、登録プログラム番号(registered program number) .Ar program-number 、トランザクション ID .Ar taskid を渡し、 マスタサーバ上で待っている .Xr yppush 8 プロセスと通信出来るようにします。 .It Ar mapname 転送するマップを指定します。 .El .Sh 関連ファイル .Bl -tag -width Pa -compact .It Pa /var/yp/[domainname]/[maps] ある .Tn NIS ドメインの .Tn NIS マップ。 .El .Sh 関連項目 .Xr yp 4 , .Xr ypserv 8 , .Xr yppush 8 .Sh 作者 .An Bill Paul Aq wpaul@ctr.columbia.edu