diff --git a/ja_JP.eucJP/man/man1/dc.1 b/ja_JP.eucJP/man/man1/dc.1 index 671d8468b3..52ac57e8c6 100644 --- a/ja_JP.eucJP/man/man1/dc.1 +++ b/ja_JP.eucJP/man/man1/dc.1 @@ -1,447 +1,447 @@ .\" .\" dc.1 - the *roff document processor source for the dc manual .\" .\" This file is part of GNU dc. .\" Copyright (C) 1994, 1997, 1998, 2000 Free Software Foundation, Inc. .\" .\" This program is free software; you can redistribute it and/or modify .\" it under the terms of the GNU General Public License as published by .\" the Free Software Foundation; either version 2 of the License , or .\" (at your option) any later version. .\" .\" This program is distributed in the hope that it will be useful, .\" but WITHOUT ANY WARRANTY; without even the implied warranty of .\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the .\" GNU General Public License for more details. .\" .\" You should have received a copy of the GNU General Public License .\" along with this program; see the file COPYING. If not, write to: .\" The Free Software Foundation, Inc. .\" 59 Temple Place, Suite 330 .\" Boston, MA 02111 USA .\" .\" %FreeBSD: src/contrib/bc/doc/dc.1,v 1.3.2.1 2001/03/04 09:34:56 kris Exp % .\" .\" $FreeBSD$ .\" .TH DC 1 "1997-03-25" "GNU Project" .ds dc \fIdc\fP .ds Dc \fIDc\fP .SH 名称 dc \- 任意精度の計算機 .SH 書式 dc [-V] [--version] [-h] [--help] [-e scriptexpression] [--expression=scriptexpression] [-f scriptfile] [--file=scriptfile] [file ...] .SH 解説 .PP \*(dc は、逆ポーランド形式の無限精度の計算が行える卓上計算機です。 この電卓は、定義やマクロ呼び出しも行えます。 普通、\*(dc は標準入力から読み込みます。 コマンドライン引数が与えられた時は、それはファイル名となり、 \*(dc はそのファイルを読み込み、ファイルの内容を実行した後で、 標準入力から入力を取ります。 通常の出力はすべて標準出力へ、エラー出力はすべて標準エラー出力へ 送られます。 .PP 逆ポーランド記法計算機は、数をスタックに保存します。 数字を入力すると、それをスタックに積み上げます。 計算操作は、引数をスタックから取り出し、結果をスタックに積み上げます。 .PP 数字を .IR dc に入力するためには、数字 (小数点が有っても構いません) を入力します。 指数表現はサポートされていません。 負の数字を入力するためには、``_'' で始まる数字を入力します。 ``-'' は減算の二項演算子として使われているので、 このために利用することはできません。 引き続いて 2 つの数字を入力するためには、あいだに空白文字か改行文字を 入力します。 これらは、コマンドとしての意味はありません。 .SH オプション \*(dc は、次のコマンドラインオプション付きで起動可能です: .TP .B -V .TP .B --version 実行される \*(dc のバージョンと著作権情報を表示し、終了します。 .TP .B -h .TP .B --help これらのコマンドラインオプションを短くまとめたメッセージと バグ報告アドレスを表示し、終了します。 .TP .B -e \fIscript\fP .TP .BI --expression= script .I script 中のコマンドを、入力処理中に実行するコマンド集合に追加します。 .TP .B -f \fIscript-file\fP .TP .BI --file= script-file ファイル .I script-file 中のコマンドを、入力処理中に実行するコマンド集合に追加します。 .PP 上記オプションの処理後にコマンドラインパラメータが残った場合、 これらのコマンドラインパラメータは処理対象の入力ファイル名として 解釈されます。 ファイル名 .B - は、標準入力ストリームを指します。 ファイル名を指定しないと、標準入力が処理されます。 .PD .SH 表示コマンド .TP .B p スタックを変更することなく、スタックの先頭の値を表示します。 改行文字が、数値の後に表示されます。 .TP .B n スタックの先頭の値を表示し、スタックから取り出します。 改行文字は、後に表示されません。 .TP .B P スタックの先頭の値をスタックから取り出します。 値が文字列の場合、末尾の改行を付けずに、単に表示します。 そうでない場合、これは数値であり、数値の絶対値の整数部分が、 \&"基数 (UCHAR_MAX+1)" のバイトストリームとして表示されます。 ここで (UCHAR_MAX+1) は 256 を仮定すると (ほとんどのマシンでは 8 ビットバイトなので)、文字列 \fBKSK 0k1/ [_1*]sx d0>x [256~aPd0 r スタックから 2 つの値を取り出し、それらを数と仮定して比較し、 もともとのスタックの先頭が大きい場合、レジスタ .I r の内容を実行します。 したがって、 .B 1 2>a は、レジスタ .BR a の内容を実行しますが、 .B 2 1>a では実行しません。 .TP .BI !> r 似ていますが、もともとのスタックの先頭が 2 番目の値よりも大きくない場合 (2 番目の値以下である場合)、マクロを起動します。 .TP .BI < r 似ていますが、もともとのスタックの先頭が小さい場合にマクロを実行します。 .TP .BI !< r 似ていますが、もともとのスタックの先頭が 2 番目の値よりも小さくない場合 (2 番目の値以上である場合)、マクロを起動します。 .TP .BI = r 似ていますが、2 つの取り出された値が等しい場合にマクロが実行されます。 .TP .BI != r 似ていますが、2 つの取り出された値が等しくない場合にマクロが実行されます。 .ig これは、2 つの文字列の等価性を比較するためにも使うことができます。 .. .TP .B ? 端末から行を読み込み、実行します。 このコマンドは、ユーザからの入力を要求するためのマクロで使えます。 .TP .B q マクロを終了し、それを呼び出したマクロからも終了します。 一番上のレベルか、一番上のレベルから直接呼ばれたマクロから呼ばれると、 .B q コマンドは \*(dc を終了します。 .TP .B Q スタックから値を取り出し、それを終了すべきマクロレベル数として、 その数のマクロを終了します。 したがって、 .B 3Q は、3 つのレベルを終了します。 .B Q コマンドでは、\*(dc を終了することはありません。 .SH 状態の問い合わせ .TP .B Z スタックから値を取り出し、その桁数 (文字列の場合は、文字数) を計算し、 その値をスタックに積みます。 .TP .B X スタックから値を取り出し、その小数点以下の桁数を計算し、 その値をスタックに積みます。文字列の場合、スタックには .\" -1. 0 が積まれます。 .TP .B z 現在のスタックの深さを、スタックに積みます。 スタックの深さとは、 .B z コマンドが実行される前のスタックのデータ数です。 .SH その他のさまざまなこと .TP .B ! -行の末尾までををシステムコマンドとして実行します (シェルエスケープ) 。 +行の末尾までをシステムコマンドとして実行します (シェルエスケープ) 。 .\"(訳注)シェルエスケープは、訳者が付け足しました。 .\" 2.2.1R 対象(1997/05/04) Takeshi MUTOH コマンド !<, !=, !> のパーズが優先しますので、<, =, > で開始する コマンドを起動したい場合には、! の後に空白を加える必要があります。 .TP .B # 行の末尾までをコメントとして取り扱います。 .TP .BI : r スタックから 2 つの値を取り出します。 スタックの先頭だった値で配列 .IR r をインデックスし、スタックの先頭から 2 番目だった値をそこに保存します。 .TP .BI ; r スタックから値を取り出し、配列 .IR r のインデックスとして利用します。 配列から選ばれた値は、その後でスタックに積まれます。 .SH バグ .PP バグ報告は、 .BR bug-dc@gnu.org に電子メールでお願いします。 単語 ``dc'' を ``Subject:'' フィールドのどこかに入れておいてください。 diff --git a/ja_JP.eucJP/man/man1/dtmfdecode.1 b/ja_JP.eucJP/man/man1/dtmfdecode.1 index 463a36495d..286c0a7585 100644 --- a/ja_JP.eucJP/man/man1/dtmfdecode.1 +++ b/ja_JP.eucJP/man/man1/dtmfdecode.1 @@ -1,68 +1,68 @@ .\" .\" Copyright (c) 1999 Hellmuth Michaelis. 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: dtmfdecode.1,v 1.6 2001-08-06 03:01:42 horikawa Exp $ +.\" $Id: dtmfdecode.1,v 1.7 2002-01-18 02:48:51 horikawa Exp $ .\" .\" %FreeBSD: src/usr.sbin/i4b/dtmfdecode/dtmfdecode.1,v 1.5.2.4 2001/08/01 17:45:02 obrien Exp % .\" .\" last edit-date: [Mon Dec 13 22:53:13 1999] .\" .\" -.\" $FreeBSD: doc/ja_JP.eucJP/man/man1/dtmfdecode.1,v 1.5 2001/07/29 05:14:50 horikawa Exp $ +.\" $FreeBSD$ .Dd February 15, 1999 .Dt DTMFDECODE 1 .Os .Sh 名称 .Nm dtmfdecode .Nd A-law オーディオデータから DTMF トーンへのデコード .Sh 書式 .Nm .Sh 解説 .Nm は isdn4bsd パッケージの一部分です。オーディオストリーム中の DTMF トーンを見つけるために使われます。 .Pp このコマンドは、標準入力から G.711 A-Law 形式のデータによる音声を -読み込み、標準出力にに ASCII 文字として、見つけた番号を出力します。 +読み込み、標準出力に ASCII 文字として、見つけた番号を出力します。 .Pp 検波器は integer double-cross recursive algorithm による 8 つの狭帯域 バンドパスフィルタによって実装されています。検波した信号にヒステリシスと アンチバウンスを与えるために、様々なアドホックな方法が試みられています。 .Sh 使用例 次のコマンド .Bd -literal -offset indent dtmfdecode < beep.al .Ed .Pp は標準出力に "1" を表示します。 .Sh 規格 ITU Recommendations G.711 .Sh 作者 .Nm は .An Poul-Henning Kamp Aq phk@FreeBSD.org が作成しました。 このマニュアルページは .An Hellmuth Michaelis Aq hm@FreeBSD.org が書きました。 diff --git a/ja_JP.eucJP/man/man1/fold.1 b/ja_JP.eucJP/man/man1/fold.1 index dbdf345a04..e1a6f22965 100644 --- a/ja_JP.eucJP/man/man1/fold.1 +++ b/ja_JP.eucJP/man/man1/fold.1 @@ -1,69 +1,69 @@ .\" Copyright (c) 1980, 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. .\" .\" @(#)fold.1 8.1 (Berkeley) 6/6/93 .\" %FreeBSD: src/usr.bin/fold/fold.1,v 1.3.2.4 2001/12/14 15:53:30 ru Exp % .\" .\" $FreeBSD$ .\" .Dd June 6, 1993 .Dt FOLD 1 .Os .Sh 名称 .Nm fold .Nd 有限桁の出力デバイスのために長い行を折り返すフィルタ .Sh 書式 .Nm .Op Fl w Ar width .Op Ar .Sh 解説 .Nm は、file が指定されていればそのファイルを、 指定されていなければ標準入力を読み込み、 指定された長さを超えるような入力行に対しては改行を入れて複数の行に分割します。 デフォルトでは 80 文字になるようにします。 .Pp オプションとしては以下のものがあります: .Bl -tag -width indent .It Fl w Ar width -デフォルトの 80 文字のかわりに、一行の長さをを指定します。 +デフォルトの 80 文字のかわりに、一行の長さを指定します。 タブがある場合は、 .Ar width として 8 の倍数を指定するか、さもなければ、 .Nm の前に .Xr expand 1 を使用して、タブを空白文字に置き換えてください。 .El .Sh 関連項目 .Xr expand 1 .Sh バグ アンダラインがある場合には、fold がうまくいかないことがあります。 diff --git a/ja_JP.eucJP/man/man1/make.1 b/ja_JP.eucJP/man/man1/make.1 index 24bc43a462..f10d4e3680 100644 --- a/ja_JP.eucJP/man/man1/make.1 +++ b/ja_JP.eucJP/man/man1/make.1 @@ -1,1208 +1,1208 @@ .\" Copyright (c) 1990, 1993 .\" The Regents of the University of California. All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" 3. All advertising materials mentioning features or use of this software .\" must display the following acknowledgement: .\" This product includes software developed by the University of .\" California, Berkeley and its contributors. .\" 4. Neither the name of the University nor the names of its contributors .\" may be used to endorse or promote products derived from this software .\" without specific prior written permission. .\" .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" .\" from: @(#)make.1 8.4 (Berkeley) 3/19/94 .\" %FreeBSD: src/usr.bin/make/make.1,v 1.29.2.12 2001/08/16 13:16:57 ru Exp % .\" .\" this file based on that translated to japanese on NetBSD Japanese Reference .\" Manual Project, and modefied to fit FreeBSD Reference Manual .\" by Mochida Shuji 1996/04/26 -.\" $FreeBSD: doc/ja_JP.eucJP/man/man1/make.1,v 1.25 2001/08/17 05:42:08 horikawa Exp $ +.\" $FreeBSD$ .\" .Dd March 19, 1994 .Dt MAKE 1 .Os .Sh 名称 .Nm make .Nd プログラムの依存関係をメンテナンスする .Sh 書式 .Nm .Op Fl BPSXeiknqrstv .Op Fl D Ar variable .Op Fl d Ar flags .Op Fl E Ar variable .Op Fl f Ar makefile .Op Fl I Ar directory .Bk -words .Op Fl j Ar max_jobs .Op Fl m Ar directory .Ek .Op Fl V Ar variable .Op Ar variable Ns No = Ns Ar value .Op Ar target ... .Sh 解説 .Nm は、プログラムのメンテナンスを単純化するためのツールです。 その入力はファイルの生成とプログラムとの間の依存関係を指定する リストが記述されています。 カレントディレクトリまたは特別なオブジェクトディレクトリ .Ql Va (.OBJDIR 参照) のどちらか一方において .Ql Pa makefile と .Ql Pa Makefile の最初に見つかった方から、この指定のリストが読み込まれます。 .Ql Pa .depend というファイルが見つかれば、それも読み込みます .Pq Xr mkdep 1 を参照 。 .Pp 本マニュアルはリファレンスのためのみのドキュメントです。 .Nm と makefile に関する詳しい紹介は .%T "Make \- A Tutorial" を参照してください。 .Pp オプションは以下のとおりです。 .Bl -tag -width Ds .It Fl B シーケンス中の依存行のソースを作成するために、各コマンドに対して 1 つのシェルを実行する、バックワード互換モードで実行しようとします。 このオプションは .Fl j が使用されない限り、デフォルトで有効になります。 .It Fl D Ar variable 大域変数 .Ar variable を 1 と定義します。 .It Fl d Ar flags デバッグモードを有効にし、 .Nm が表示するデバッグ情報の種類を指定します。 引数 .Ar flags には、以下のうち 1 つ以上を指定できます。 .Bl -tag -width Ds .It Ar A すべてのデバッグ情報を出力します。他のフラグをすべて指定したことと 等価です。 .It Ar a アーカイブ検索とキャッシュに関する情報を表示します。 .It Ar c 条件評価に関する情報を表示します。 .It Ar d ディレクトリ検索とキャッシュに関する情報を表示します。 .It Ar f for ループの実行に関するデバッグ情報を表示します。 今のところは何もしていません。 .It Ar "g1" 処理を行う前に、入力のグラフを表示します。 .It Ar "g2" すべての処理を行ったあと、あるいはエラーにより終了する前に入力のグラフを 表示します。 .It Ar j 複数のシェルを起動する場合の情報を表示します。 .It Ar l @ がコマンドに前置されていようといまいと、 また他の「静寂」フラグの有無に関わらず、Makefile のコマンドを表示します。 これは「やかましい」動作としても知られています。 .It Ar m ターゲットの作成と変更日付に関する情報を表示します。 .It Ar s 拡張子解釈に関する情報を表示します。 .It Ar t ターゲットリストのメンテナンスに関する情報を表示します。 .It Ar v 変数の値に関する情報を表示します。 .El .It Fl E Ar variable (存在すれば) 環境の値で上書きする、makefile の中の変数を指定します。 .It Fl e 環境の値で makefile 中のすべての変数の値を上書きするように指示します。 .It Fl f Ar makefile デフォルトの .Ql Pa makefile と .Ql Pa Makefile のかわりに、読み込むファイルを指定します。もし .Ar makefile が .Ql \- なら標準入力から読み込みます。複数のファイルが指定可能で、 指定した順に読み込まれます。 .It Fl I Ar directory makefile と、インクルードされる makefile を検索するためのディレクトリを 指定します。システムで定義してある makefile のあるディレクトリ (または、 複数のディレクトリ; .Fl m オプションを参照) は自動的にリストに含まれ、検索されます。 .It Fl i makefile から実行されたシェルコマンドが 0 でない終了ステータスを返し ても無視します。makefile 中でコマンドの先頭に .Ql \- を指定するのと同じです。 .It Fl j Ar max_jobs .Nm が同時に起動できるジョブの数を指定します。 .Ar B フラグを指定しなければ、互換性モードはオフになります。 .It Fl k エラーが発生しても処理を続行します。ただし、発生したエラーによって作成 が不能になったターゲットに依存したターゲットに関しては処理が中断されます。 .It Fl m Ar directory <...> 形式で読み込まれる sys.mk や makefile を検索するための ディレクトリを指定します。複数のディレクトリを検索パスに加えることが できます。このパスは、デフォルトのシステムインクルードパス .Pa /usr/share/mk を上書きします。 さらに、システムインクルードパスを "..." 形式のインクルードによって 追加することができます( .Fl I オプションを参照)。 .It Fl n make が実行するであろうコマンド内容の表示のみを行い、実行はしません。 .It Fl P 並行して動作するジョブを一緒に混ぜて出力するのでなく、 与えられたジョブの順番をそろえて、ジョブが終了するまで表示しません。 このオプションは .Fl j が使われた時のみ効果を持ちます。 .It Fl q いっさいのコマンドを実行せず、指定されたターゲットが最新のものであれば 0 を、そうでなければ 1 を終了ステータスとして返します。 .It Fl r システムの makefile で定義された組み込みのルールを使用しません。 .It Fl S エラーが起きた時に処理を中止します。 デフォルトの動作です。このオプションは 再帰的な構築の際に .Fl k オプションを打ち消すのに必要となります。 .It Fl s 実行するコマンドを表示しません。makefile のなかで、コマンドの先頭に .Ql Ic @ を指定するのと同じです。 .It Fl t makefile で指定されたターゲットを作り直すのではなく、ターゲットを作成 するか、あるいは最終更新日付を現在の時刻に設定することにより、 ターゲットが最新であるかのようにします。 .It Fl V Ar variable グローバルな文脈での .Nm の .Ar variable の値を表示します。如何なるターゲットも生成しません。 このオプションで複数のインスタンスを指定することができます。 変数は、各行毎に表示されます。未定義もしくは空の変数は、空行で 表現されます。 .It Fl v 特に冗長表示させます。 複数ジョブの make においては、ファイルバナーを生成させます。 .It Fl X .Fl V オプションを使用して変数の値を表示するときに、再帰的な値の展開をしません。 .It Ar variable Ns No = Ns Ar value 変数 .Ar variable の値を .Ar value に設定します。 .El .Pp makefile には 7 種類の行があります: 依存関係記述、シェルコマンド、変数 代入、インクルード文、条件命令、for ループ、コメントです。 .Pp 一般に、行は行末にバックスラッシュ .Pq Ql \e を置くことにより次行へ継続させることがで きます。この場合、バックスラッシュ直後の改行と、次の行の先頭の 空白部分は 1 つの空白に置き換えられます。 .Sh ファイル依存関係記述 入力ファイルにおける依存関係記述行は、1 つ以上のターゲット、オペレータ、 0 個 以上のソースからなります。 これは、ターゲットがソースに .Dq 依存 しているという関係を 定義しており、通常は、ソースからターゲットが作成されます。ターゲットと ソースとの厳密な関係はオペレータによって、両者間に指定します。 オペレータには以下の種類があります。 .Bl -tag -width flag .It Ic \&: ターゲットの最終更新日付が、いずれかのソースの最終更新日付よりも 古いものであれば、ターゲットは古いものであり、作り直されるべきものと 判断されます。 別の行でこのオペレータによる同じターゲットに関するソースの記述があれば、 それらはすべて 1 つにまとめられます。ターゲットの作成中に .Nm が中断されると、ターゲットは削除されます。 .It Ic \&! ターゲットはつねに作り直されます。ただし、作り直されるのは、 すべてのソースが検査され、必要と判断されたソースが作り直されたあとです。 このオペレータによる同じターゲットに関するソースの記述が別の行にもあれば、 それらはすべて 1 つにまとめられます。ターゲットの作成中に .Nm が中断されると、ターゲットは削除されます。 .It Ic \&:: ソースが指定されていなかった場合、つねにターゲットは作り直されます。 指定されていた場合にはソースのいずれかがターゲットよりも新しい時だけ ターゲットは作り直されます。本オペレータでは、別の行において同じ ターゲットに関するソースの記述があっても 1 つにまとめません。 ターゲットの作成中に .Nm が中断されても、ターゲットは削除されません。 .El .Pp ターゲットとソースは、シェルのワイルドカード表記として .Ql \&? , .Ql * , .Ql [] , .Ql {} を含むことができます。 .Ql \&? , .Ql * , .Ql [] の表記は、ターゲットまたはソースの最後の要素として記述でき、 存在するファイルを指定するものでなければなりません。 表記 .Ql {} はファイルが存在しなくてもかまいません。シェルのように辞書順に並べられて 展開されることはなく、ファイルシステム上に並んでいる順番のまま行われます。 .Sh シェルコマンド ターゲットは、シェルコマンドの列と関連付けることができ、通常はそれによって ターゲットを作成します。 これに含まれる各コマンドは、 .Em 必ず 行頭のタブに続けて記述します。同一のターゲットに 対して複数の依存記述行がある場合、 .Ql Ic :: オペレータを使用したのでなければ、それらのうちの 1 つにのみコマンド行を 続けることができます。 .Pp コマンドラインの先頭もしくは先頭 2 文字が .Ql Ic @ や .Ql Ic \- ならば、コマンドは特別な扱いを受けます。 .Ql Ic @ は、コマンドが実行前に、コマンド内容の表示を抑制します。 .Ql Ic \- は、コマンドの 0 ではない終了ステータスを無視するように指示します。 .Sh 変数代入 .Nm で使われる変数はシェルでの変数に類似しています。そして、歴史的な経緯から、 すべて大文字からなる名前が用いられます。変数代入には以下の 5 通りの オペレータを使用できます。 .Bl -tag -width Ds .It Ic \&= 変数に値を代入します。その時点までの値は失われます。 .It Ic \&+= 現在の変数の値に、右辺の値を追加します。 .It Ic \&?= 変数が未定義の場合のみ、値を代入します .It Ic \&:= 右辺を展開した値を代入します。つまり、変数に代入する前に値の展開を行います。 通常、値の展開は代入時には行われず、変数が参照されるときに行われます。 .It Ic \&!= 右辺を展開した値をシェルに実行させ、実行結果を左辺の変数に代入します。 結果のなかに含まれる改行は空白に置き換えられます。 .El .Pp いずれの場合も、値の前にある空白は無視されます。値が追加される場合、 変数の直前の値と追加する値との間に空白が挿入されます。 .Pp 変数は、ドル記号 .Pq Ql $ に続いて中括弧 .Pq Ql {} または小括弧 .Pq Ql () で囲まれた変数名を置くことにより展開されます。もし変数名が 1 文字な ら、変数名を囲む括弧は省略できますが、このような省略形は推奨できません。 .Pp 変数置換は、変数が用いられている場所により、 2 つの別々のタイミングで 行われます。依存関係記述行で用いられた変数は、その行が読み込まれたときに 展開されます。シェルコマンド内で用いられた変数は、シェルコマンド実行時に 展開されます。 .Pp 変数には、優先度に従って、4 つの異なるクラスがあります: .Bl -tag -width Ds .It 環境変数 .Nm の環境中で有効な変数 .It グローバル変数 makefile とインクルードされた makefile 内で有効な変数。 .It コマンドライン変数 コマンドラインで指定された変数。 .It ローカル変数 あるターゲットのみに対して定義される変数。ローカル変数には、 以下の 7 種類があります: .Bl -tag -width ".ARCHIVE" .It Va .ALLSRC このターゲットに対するすべてのソースのリスト。 .Ql Va \&> も同じです。 .It Va .ARCHIVE アーカイブファイル名。 .Ql Va \&! も同じです。 .It Va .IMPSRC ターゲット名に変換するのに使用するソースのファイル名またはパス名 ( .Dq 暗黙の ソース)。 .Ql Va \&< も同じです。 .It Va .MEMBER アーカイブのメンバ。 .Ql Va \&% も同じです。 .It Va .OODATE ターゲットよりも新しいソースのリスト。 .Ql Va \&? も同じです。 .It Va .PREFIX ターゲットのディレクトリ名と拡張子を取り除いた名前。 .Ql Va * も同じです。 .It Va .TARGET ターゲットの名前。 .Ql Va @ も同じです。 .El .Pp 短い形式 .Ql Va @ , .Ql Va \&! , .Ql Va \&< , .Ql Va \&% , .Ql Va ? , .Ql Va \&> , .Ql Va * は互換性のためのものですが、利用することは推奨できません。 また、 .Ql Va "@F" , .Ql Va "@D" , .Ql Va " .It Ic \&.include Ar \*qfile\*q 指定した makefile をインクルードします。 アングルブラケットが使用された場合は、 makefile はシステムの makefile ディレクトリにあるものを用います。 ダブルクォートが使用された場合は、 makefile が存在するディレクトリ、 .Fl I オプションで指定されたディレクトリ、システムの makefile ディレクトリの 順に検索します。 .It Ic \&.undef Ar variable 指定したグローバル変数を未定義とします。 グローバル変数のみ、未定義とすることができます。 .It Ic \&.error Ar message makefile の処理を即座に終了します。 makefile のファイル名と、どの行でエラーとなったかと、 指定したエラーメッセージとを、標準出力に表示し、 .Nm は終了コード 1 で終了します。 .El .Pp 条件文は Makefile のどの部分を処理するのかを判定するために使用します。 C プリプロセッサがサポートする条件文と同様に使用されます。 以下の条件文がサポートされています: .Bl -tag -width Ds .It Xo .Ic \&.if .Oo \&! Oc Ns Ar expression .Op Ar operator expression ... .Xc 式の値をテストします。 .It Xo .Ic .ifdef .Oo \&! Oc Ns Ar variable .Op Ar operator variable ... .Xc 変数の値をテストします。 .It Xo .Ic .ifndef .Oo \&! Oc Ns Ar variable .Op Ar operator variable ... .Xc 変数の値をテストします。 .It Xo .Ic .ifmake .Oo \&! Oc Ns Ar target .Op Ar operator target ... .Xc ターゲット .Ar target が作成中かどうかをテストします。 .It Xo .Ic .ifnmake .Oo \&! Oc Ns Ar target .Op Ar operator target ... .Xc ターゲット .Ar target が作成中かどうかをテストします。 .It Ic .else 最後に行った条件文の意味を逆にします。 .It Xo .Ic .elif .Oo \&! Oc Ns Ar expression .Op Ar operator expression ... .Xc .Ql Ic .else と直後の .Ql Ic .if を対にしたものです。 .It Xo .Ic .elifdef .Oo \&! Oc Ns Ar variable .Op Ar operator variable ... .Xc .Ql Ic .else と直後の .Ql Ic .ifdef を対にしたものです。 .It Xo .Ic .elifndef .Oo \&! Oc Ns Ar variable .Op Ar operator variable ... .Xc .Ql Ic .else と直後の .Ql Ic .ifndef を対にしたものです。 .It Xo .Ic .elifmake .Oo \&! Oc Ns Ar target .Op Ar operator target ... .Xc .Ql Ic .else と直後の .Ql Ic .ifmake を対にしたものです。 .It Xo .Ic .elifnmake .Oo \&! Oc Ns Ar target .Op Ar operator target ... .Xc .Ql Ic .else と直後の .Ql Ic .ifnmake を対にしたものです。 .It Ic .endif 条件文の本体を終了させます。 .El .Pp オペレータ .Ar operator は、以下のうちのいずれかです。 .Bl -tag -width "Cm XX" .It Cm \&|\&| 論理 OR。 .It Cm \&&& 論理 AND。 .Ql Ic || より優先順位が上です。 .El .Pp C 言語と同様、 .Nm は条件式を、式の値を決定するのに必要なところまでしか評価しません。 評価順序を変更するには括弧を使います。論理オペレータ .Ql Ic !\& は条件式全体の値を反転するのに使用します。 .Ql Ic !\& は .Ql Ic \&&& より優先順位が上です。 .Pp 式 .Ar expression は、以下のいずれかの形式です: .Bl -tag -width Ic .It Ic defined 引数として変数名をとり、変数が定義されていれば真となる。 .It Ic make 引数としてターゲット名をとり、そのターゲットが .Nm のコマンドライン引数に指定されているか、デフォルトのターゲット .Pq 明示的なものも暗黙的なものも含む。 Va .MAIN の項を参照 として宣言されている場合に真となる。 .It Ic empty 引数として変数名 .Pq と修飾子 をとり、展開した結果が空文字列ならば真となる。 .It Ic exists 引数としてファイル名をとり、ファイルが存在すれば真となる。 ファイルはシステム検索パス .Pq Va .PATH の項を参照 にそって検索される。 .It Ic target 引数としてターゲット名をとり、ターゲットが定義されているなら真となる。 .El .Pp 条件式 .Ar expression としては、数値あるいは文字列の比較を用いることもできます。比較オペレータの 両辺は、変数展開が適用されたあとに比較されます。値が 0x で始まるなら 16 進数 であると解釈し、さもなければ 10 進数と解釈します。8 進数はサポートして いません。標準的な C 言語の関係オペレータは全て利用可能です。 変数展開後、 .Ql Ic == または .Ql Ic "!=" の左辺値または右辺値のいずれかが数値とは認められない場合、文字列として 比較を行います。関係オペレータが指定されなかった場合、展開された変数と 0 とを 比較します。 .Pp 条件式を評価中に、評価できない単語が出現した場合は、条件式の形式によって、 .Dq make または .Dq defined オペレータを適用します。条件式が .Ql Ic .ifdef または .Ql Ic .ifndef ならば .Dq defined を、条件式が .Ql Ic .ifmake または .Ql Ic .ifnmake ならば .Dq make を、それぞれ適用します。 .Pp 条件式が真と評価されたなら、makefile の解析はそのまま続行されます。 偽と評価されたなら、 .Ql Ic .else または .Ql Ic .endif が見つかるまで makefile の解析をスキップします。 .Pp for ループは、いくつかのルールを一連のファイルに適用するのによく 用いられます。以下がループの形式です: .Pp .Bl -tag -width indent -compact .It Ic .for Ar variable Ic in Ar expression .It .It Ic \&.endfor .El .Pp .Ar expression は評価されたあとに単語に分解され、それぞれを .Ar variable に代入 しながら、 .Ic make-rules 部分を繰り返し展開します。 .Sh コメント コメントはハッシュ記号 .Pq Ql \&# から始まり、シェルコマンド行以外のどこにでも置くことができます。 コメントは改行で終わります。 .Sh 特殊ソース .Bl -tag -width Ic .It Ic .IGNORE 本ターゲットに関連したコマンドでのエラーを無視します。シェルコマンドの 先頭にダッシュ .Ql \- を指定したのと等価です。 .It Ic .MAKE たとえ、 .Fl n や .Fl t オプションが指定されていても、このターゲットに関連したシェルコマンドを 実行します。通常、再帰的な .Nm のために用いられます。 .It Ic .NOTMAIN 通常 .Nm は、最初に発見したターゲットをデフォルトのターゲットとみなします。 .Ic .NOTMAIN が指定されたターゲットはデフォルトのターゲットとはみなされなくなります。 .It Ic .OPTIONAL もし .Ic .OPTIONAL が指定されたターゲットの作り方がわからなくても、エラーとはせず、 そのターゲットは必要ないか、すでに存在しているものとみなします。 .It Ic .PRECIOUS 通常 .Nm が中断されたときは、作成途中のターゲットは削除されます。本ソースを 指定することで、そのターゲットを削除しなくなります。 .It Ic .SILENT 指定されたターゲットに関連づけられたシェルコマンドを実行するときに エコーを行いません。シェルコマンドの先頭に .Ql @ を指定したのと等価です。 .It Ic .USE 指定されたターゲットをマクロ的に扱います。 .Ic .USE をソースに持つターゲット .Pq 以下ではマクロと呼びます が別のターゲットのソースとなった場合、その ターゲットはコマンド、ソース、属性( .Ic .USE は除く) をマクロから受け取ります。もし、すでにターゲットにコマンドが指定されていた 場合は、マクロのコマンドが追加されます。 .It Ic .WAIT 特別な .Ic .WAIT ソースが依存関係行に現れた時には、ソースはその行中でソースが 作成されるまで待ちます。ループは検出されず、ループ形式のターゲットは 単に無視されます。 .El .Sh 特殊ターゲット 特殊ターゲットは、他のターゲットとともに使用してはいけません。すなわち、 依存関係記述行の唯一のターゲットとして指定する必要があります。 .Bl -tag -width Ic .It Ic .BEGIN 本ターゲットに指定されたシェルコマンドは他の処理に先立って実行されます。 .It Ic .DEFAULT これは、作成方法がわからないどんなターゲットにも適用される .Ic .USE ルールのようなものです。シェルスクリプトのみを使用します。 .Ic .DEFAULT に指定されたコマンド中の .Ic .IMPSRC 変数はターゲット自身の名前に置換されます。 .It Ic .END 本ターゲットに指定されたシェルコマンドは、他のすべての処理の終了後に 実行されます。 .It Ic .IGNORE 指定されたソースに .Ic .IGNORE 属性を付与します。もしソースが指定されていなければ、 .Fl i オプションを指定したのと同じ意味になります。 .It Ic .INCLUDES ソースファイル中で include される可能性のあるファイルの拡張子のリスト。 拡張子はあらかじめ .Ic .SUFFIXES で宣言されていなければなりません; このように宣言された拡張子は自身の検索パス( .Ic .PATH 参照) にそれぞれ .Fl I フラグを前に付けた状態で .Va .INCLUDES 特殊変数に設定されます。 .It Ic .INTERRUPT .Nm が中断されたとき、本ターゲットに指定されたコマンドを実行します。 .It Ic .LIBS .Ic .INCLUDES が include ファイルに対して行なうことと同じことを ライブラリに対して行ないます。ただし .Fl L フラグが使われます。 .It Ic .MAIN ターゲットを指定せずに .Nm が起動された場合、本ターゲットを処理します。 .Nm がデフォルトターゲットを選択した際に、 利用者がコマンドラインからデフォルトターゲットを指示できるようにするため、 明示的・暗黙的に関わらず必ず設定されます。 .It Ic .MAKEFLAGS ソースにおいて、 .Nm に指定するフラグを指定します。フラグはシェルでタイプしたのと同様に 渡されますが、 .Fl f オプションは無効になります。 .\" XXX: NOT YET!!!! .\" .It Ic .NOTPARALLEL .\" この名前のターゲットは、並列モードを使わすに実行されます。 .\" ターゲットが指定されていない時には、全てのターゲットが非並列モード .\" で実行されます。 .It Ic .NOTPARALLEL 並列モードを使いません。 .It Ic .NO_PARALLEL 上と同じですが、 pmake の変種のための互換性のためにあります。 .It Ic .ORDER シーケンス中の名前付きターゲットが作成されます。 .\" XXX: NOT YET!!!! .\" .It Ic .PARALLEL .\" 名前付きターゲットが並列モードで実行されます。 .\" ターゲットが指定されない時には、全てのターゲットが並列モードで実行 .\" されます。 .It Ic .PATH カレントディレクトリに発見できなかったときのファイルの検索パスを、 本ターゲットのソースとして指定します。ソースが指定されなかった場合、 以前に設定されていたディレクトリが無効になります。 可能であれば .Ic .PATH を利用する方が、 .Va VPATH 変数を利用するよりも好まれています。 .It Ic .PATH\fIsuffix\fR カレントディレクトリに発見できなかったときの suffix のついたファイルの検索パスをソースとして指定します。 .Nm はファイルが見つからなかった場合に、 デフォルトパスよりも先に、まず suffix の付いた検索パスで探します。 この形式は .Ic .LIBS と .Ic .INCLUDES が動作するために必要です。 .It Ic .PHONY .Ic .PHONY 属性を指定したソースに適用します。この属性を持ったターゲットは いつでも更新されていると考えられます。 .It Ic .PRECIOUS 指定されたソースに .Ic .PRECIOUS 属性を付与します。もし、ソースが指定されなかった場合、 すべてのターゲットに .Ic .PRECIOUS 属性を与えます。 .It Ic .SILENT 指定されたソースに .Ic .SILENT 属性を付与します。もし、ソースが指定されなかった場合、 ファイル中のすべてのコマンドに .Ic .SILENT 属性を与えます。 .It Ic .SUFFIXES ソースにおいて、 .Nm で用いる拡張子を指定します。ソースが指定されなかった場合は、 以前の指定が無効になります。 .El .Sh 互換性 .Nm の古いバージョンは .Ev MAKEFLAGS の代わりに .Ev MAKE を使っていました。 この機能は POSIX への互換性のために削除されました。 内部変数 .Va MAKE は .Va .MAKE と同じ値が代入されます ; この機能は将来削除されるかもしれません。 .Pp .Nm のたくさんの秘密にされいている機能の多くは、 より多くの互換性を保つために使用を避けるべきです。 .Sh 環境変数 .Nm は次の環境変数の値を用います: .Ev MACHINE , .Ev MAKE , .Ev MAKEFLAGS , .Ev MAKEOBJDIR , .Ev MAKEOBJDIRPREFIX , .Ev PWD .Sh 関連ファイル .Bl -tag -width /usr/share/doc/psd/12.make -compact .It Pa .depend 依存関係リスト .It Pa Makefile 依存関係リスト .It Pa makefile 依存関係リスト .It obj オブジェクトディレクトリ .It Pa sys.mk システム定義の makefile (他のすべてのファイルよりも前に処理されます。これには .Pa makefile と .Pa Makefile も含まれます) .It Pa /usr/share/mk システム定義の makefile が置かれるディレクトリ .It /usr/share/doc/psd/12.make PMake のチュートリアル .It Pa /usr/obj デフォルトの .Ev MAKEOBJDIRPREFIX ディレクトリ .El .Sh バグ .Va .OBJDIR の決定は不条理といっていいほどまで曲解されます。 .Pp 複数の .Ic .MAIN 特殊ターゲットが存在した場合、 .Nm は最初のもの以外は黙って無視します。 .Pp .Nm がターゲット名なしに起動された場合と .Ic .MAIN 特殊ターゲットが存在しなかった場合、 .Va .TARGETS は設定されません。 .Pp テスト時の .Ar expression の評価はあまり気が配られていません。今のところ、 .Ql .if ${VAR} op something という形式でしか動きません。 例えば、テストは .Ql .if ${VAR} = "string" のように書かなければなりません。 他の書き方では動きません。 .Pp for ループはテストされる前に展開されるため、 .Bd -literal \&.for TMACHINE in ${SHARED_ARCHS} \&.if ${TMACHINE} = ${MACHINE} ... \&.endif \&.endfor .Ed のような断片は動きません。他の方法を使って書き直す必要があります。 .Sh 関連項目 .Xr mkdep 1 , .Xr make.conf 5 .Rs .%T "PMake - A Tutorial" .Re .Pa /usr/share/doc/psd/12.make にあります。 .Sh 歴史 .Nm は .At v7 において追加されました。 diff --git a/ja_JP.eucJP/man/man1/ncal.1 b/ja_JP.eucJP/man/man1/ncal.1 index fdbc47aab0..605f8d2ef4 100644 --- a/ja_JP.eucJP/man/man1/ncal.1 +++ b/ja_JP.eucJP/man/man1/ncal.1 @@ -1,123 +1,123 @@ .\" Copyright (c) 1997 Wolfgang Helbig .\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" .\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" .\" %FreeBSD: src/usr.bin/ncal/ncal.1,v 1.8.2.4 2001/07/22 11:02:19 dd Exp % -.\" $FreeBSD: doc/ja_JP.eucJP/man/man1/ncal.1,v 1.9 2001/05/14 01:07:26 horikawa Exp $ +.\" $FreeBSD$ .\". .Dd December 16, 1997 .Dt CAL 1 .Os .Sh 名称 .Nm cal , .Nm ncal .Nd カレンダおよびイースターの日付を表示する .Sh 書式 .Nm .Op Fl jy .Oo .Op Ar month .Ar year .Oc .Nm ncal .Op Fl jJpwy .Op Fl s Ar country_code .Oo .Op Ar month .Ar year .Oc .Nm ncal .Op Fl Jeo .Op Ar year .Sh 解説 .Nm は簡単なカレンダを表示します。 また .Nm ncal は別のフォーマット、追加のオプション、イースターの日付も提供します。 新しいフォーマットは込み入っていますが、 25x80 文字の端末で一年が表示できます。 引数が指定されなかった場合は今月のものを表示します。 .Pp オプションには以下のものがあります: .Bl -tag -width indent .It Fl J ユリウス暦でカレンダーを表示します。 .Fl e オプションと共に使用すると、ユリウス暦でのイースターを表示します。 .It Fl e イースターの日付を表示します (西方教会)。 .It Fl j ユリウス日で表示します。(1 月 1 日を第 1 日とする通日です) (訳注:天文学での定義とは異なります。[Mar.1996]) .It Fl o 東方正教会のイースターの日付を表示します (ギリシャおよびロシアの東方正教会)。 .It Fl p カントリーコードと、ユリウス暦からグレゴリオ暦へ移行したと .Nm ncal が見なす日付を表示します。 ローカル環境で定義されるカントリーコードにはアスタリスクが表示されます。 .It Fl s Ar country_code ユリウス暦からグレゴリオ暦へ移行した日付を .Ar country_code に基づくものとします。 指定しない場合には、 .Nm ncal はローカル環境に基づき推定しますが、 推定に失敗した場合は、1752 年 9 月 2 日であるとします。 この日付は、英国およびその植民地がグレゴリオ暦に移行した日付です。 .It Fl w 週のカラムの下に週の番号を表示します。 .It Fl y 今年のカレンダを表示します。 .El .Pp パラメータが 1 つの時は西暦年 (1 - 9999) を指定したものとして、 その年のカレンダを表示します。 年は完全な形で指定して下さい。例えば .Dq Li cal 89 では 1989 年のカレンダを表示 .Em しません 。パラメータが 2 つの時は月 (1 - 12) と年を指定します。 .Pp 一年は 1 月 1 日から始まります。 .Sh 関連項目 .Xr calendar 3 , .Xr strftime 3 .Sh 歴史 .Nm コマンドは .At v6 から登場しました。 .Nm ncal は .Fx 2.2.6 に登場しました。 .Sh 作者 .Nm ncal コマンドとマニュアルは .An Wolfgang Helbig Aq helbig@FreeBSD.ORG が作成しました。 .Sh バグ ユリウス暦からグレゴリオ暦に移行した日付とカントリーコードの対応は、 -多くの国にについて不適当です。 +多くの国について不適当です。 diff --git a/ja_JP.eucJP/man/man1/pic.1 b/ja_JP.eucJP/man/man1/pic.1 index e311ca12b6..33dfb25c67 100644 --- a/ja_JP.eucJP/man/man1/pic.1 +++ b/ja_JP.eucJP/man/man1/pic.1 @@ -1,892 +1,892 @@ .ig Copyright (C) 1989-2000, 2001 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. .. -.\" $FreeBSD: doc/ja_JP.eucJP/man/man1/pic.1,v 1.10 2001/07/29 05:14:52 horikawa Exp $ +.\" $FreeBSD$ .\" 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" .. .ie t .ds tx T\h'-.1667m'\v'.224m'E\v'-.224m'\h'-.125m'X .el .ds tx TeX .ie \n(.g .ds ic \/ .el .ds ic \^ .\" The BSD man macros can't handle " in arguments to font change macros, .\" so use \(ts instead of ". .tr \(ts" .TH PIC 1 "6 August 2001" "Groff Version 1.17.2" .SH 名称 pic \- troff と TeX で用いるピクチャコンパイラ .SH 書式 .B pic [ .B \-nvCSU ] [ .I filename \&.\|.\|. ] .br .B pic .B \-t [ .B \-cvzCSU ] [ .I filename \&.\|.\|. ] .SH 解説 .LP 本マニュアルでは、groff ドキュメントフォーマットシステムの一部である GNU バージョンの .B pic について記述します。 .B pic は、 .B troff か \*(tx の入力ファイルに埋め込まれたピクチャの記述を .B troff か \*(tx が解釈できるコマンドに変換します。 ピクチャは .B .PS で始まる行から開始され、 .B .PE で始まる行で終了します。 .B .PS と .B .PE に狭まれた領域以外は、変更せずに素通しします。 .LP .B .PS と .B .PE マクロの適切な定義はユーザに任されています。使用している マクロパッケージが適当な定義を提供しない場合 (たとえば、古いバージョンの \-ms マクロの場合)、 .B \-mpic マクロから取り出すことができます。 \-mpic マクロではピクチャ は中央寄せになります。 .SH オプション 引数を伴わないオプションは .B \- のあとにまとめて続けることができます。 特別なオプション .B \-\^\- は、オプションの最後を意味します。ファイル名のかわ りに用いられる .B \- は、標準入力を意味します。 .TP .B \-C .B .PS や .B .PE のあとに空白や改行以外の文字がきても、それを .B .PS や .B .PE であると解釈します。 .TP .B \-S より安全なモード; .B sh コマンドを実行しません。 信用できない入力を処理する場合に便利です。 (デフォルトで有効です) .TP .B \-U 安全でないモード; デフォルトオプション .BR \-S を打ち消します。 .TP .B \-n groff の troff に対する独自拡張を用いません。後処理に独自拡張を解釈 できないものを用いるときに、このオプションを指定します。拡張については、 .BR groff_out (5) に記述されています。 .B \-n オプションはまた、troff モードにおいて、点を打つために .B pic が長さ 0 の直線を使わないようにします。 .TP .B \-t \*(tx モードです。 .TP .B \-c より .B tpic との互換性が高い処理を行います。本オプションは自動的に -t オプションも設定します。 .B \e で始まる行が透過的に出力されることがなくなり ます。 .B . で始まる行は先頭の .B . を .B \e に置き換えます。 .B .ps で始まる行は、特 別な扱いを受けます。すなわち、整数のオプションを続けることができ、それ は直線の太さ (ペンのサイズ) を 1000 分の 1 インチで示します。オプションが 省略された場合は、直 前の直線の太さに戻します。直線の太さの初期値は 1000 分の 8 インチです。 このように指定された直線の太さは、 .B thickness 属性、または、 .B linethick 変数によって負でない値が設定されていない場合にのみ有効です。 .TP .B \-v バージョン番号を表示します。 .TP .B \-z \*(tx モードにおいて、長さ 0 の直線を用いて点を描画します。 .LP 他のバージョンの .B pic でサポートされている以下のオプションは無視されます。 .TP .B \-D すべての直線を .B \eD エスケープシーケンスにより描画します。 .B pic は、つねに この動作を行います。 .TP .BI \-T \ dev .B troff のデバイス .I dev のための出力を行います。 .B pic が .B troff に出 力する内容はデバイス非依存なので、本オプションは不要です。 .SH 使用法 本節では GNU .B pic とオリジナルバージョンの .B pic との違いのみを説明します。 これらの違いの多くは新しいバージョンの Unix .B pic にもあてはまります。 .SS \*(tx モード .LP \*(tx モードは .B \-t オプションにて有効になります。 \*(tx モードでは、各ピクチャのために .B \egraph から呼び出される vbox を、 .B pic は定義します。 例えば以下のようにして、自分自身で vbox を表示する必要が有ります。 .RS .LP .B \ecenterline{\ebox\egraph} .RE .LP 実際、vbox は高さが 0 ですから、この表現ではピクチャの上の空間が ピクチャの下の空間よりも若干大きくなります。 .RS .LP .B \ecenterline{\eraise 1em\ebox\egraph} .RE .LP はこの問題を避けます。 .LP \*(tx ドライバで .B tpic スペシャルバージョン 2 をサポートするものを使用する必要が有ります。 .LP .B \e で始まる行は透過的に通されます; 単一の .B % が行末に追加され、望まれない空白が出るのを防ぎます。 この機能を使用して、安全にフォントを変更したり .B \ebaselineskip の値を変更できます。 この方法以外で実行すると、望ましくない結果となるでしょう; 各自のリスクで実行して下さい。 ピリオドで始まる行は特別には扱われません。 .SS コマンド .TP \fBfor\fR \fIvariable\fR \fB=\fR \fIexpr1\fR \fBto\fR \fIexpr2\fR \ [\fBby\fR [\fB*\fR]\fIexpr3\fR] \fBdo\fR \fIX\fR \fIbody\fR \fIX\fR .I variable を .IR expr1 に設定します。 .I variable の値が .IR expr2 以下の間、 .I body を実行して .I variable を .IR expr3 だけ増加させます; もし .B by が指定されない場合、 .I variable の増分は 1 です。 もし .I expr3 の前に .B * が指定された場合、 .I variable には .IR expr3 が掛けられます。 .I X は .IR body に存在しない任意の文字を使用して構いません。 .TP \fBif\fR \fIexpr\fR \fBthen\fR \fIX\fR \fIif-true\fR \fIX\fR \ [\fBelse\fR \fIY\fR \fIif-false\fR \fIY\fR] .IR expr を評価します; もし非 0 ならば、 .IR if-true を実行します、 そうでないなら .IR if-false を実行します。 .I X は .IR if-true に存在しない任意の文字であり、 .I Y は .IR if-false に存在しない任意の文字です。 .TP \fBprint\fR \fIarg\fR\|.\|.\|. 引数を結合し、標準エラー出力に 1 行で出力します。 各 .I arg は式、位置、テキストのいずれかである必要が有ります。 デバッグに有効です。 .TP \fBcommand\fR \fIarg\fR\|.\|.\|. 引数を結合し、troff または \*(tx に 1 行として渡します。 各 .I arg は式、位置、テキストのいずれかである必要が有ります。 これは .B . や .BR \e で始まる行と同様の効果が有りますが、 値や変数をそのまま通します。 .TP \fBsh\fR \fIX\fR \fIcommand\fR \fIX\fR .I command をシェルに渡します。 .I X は .IR command 中に存在しない任意の文字です。 .TP \fBcopy\fR \fB"\fIfilename\fB"\fR .I filename をファイルのこの位置に埋め込みます。 .TP \fBcopy\fR [\fB"\fIfilename\fB"\fR] \fBthru\fR \fIX\fR \fIbody\fR \fIX\fR \ [\fBuntil\fR \fB"\fIword\*(ic\fB"\fR] .ns .TP \fBcopy\fR [\fB"\fIfilename\fB"\fR] \fBthru\fR \fImacro\fR \ [\fBuntil\fR \fB"\fIword\*(ic\fB"\fR] この構造は .I body を .IR filename の各行に対して 1 度づつ実行します。 行は空白で区切られた語に分割され、 .IR body 中の .BI $ i ただし .I i は 1 から 9 までは、 行の .IR i 番目の語に置換されます。 .I filename が指定されない場合、行は現在の行から .BR .PE の行までが使用されます。 .B until 節が指定されると、 行の最初の語が .IR word の行までが読み込まれます; その行は捨てられます。 .I X は .IR body に含まれない任意の文字です。 例えば .RS .IP .ft B .nf \&.PS copy thru % circle at ($1,$2) % until "END" 1 2 3 4 5 6 END box \&.PE .ft .fi .RE .IP は以下等価です。 .RS .IP .ft B .nf \&.PS circle at (1,2) circle at (3,4) circle at (5,6) box \&.PE .ft .fi .RE .IP 各行に対して実行されるコマンドは、 .BR thru の引数としてマクロ名を与えることで、 すでに定義されているマクロをとりうる。 .LP .B reset .br .ns .TP \fBreset\fI variable1\fB,\fI variable2 .\^.\^. 既定義の変数 .IR variable1 , .I variable2 \&.\^.\^. をデフォルト値にリセットします。 引数が指定されない場合、すべての既定義の変数はデフォルト値にリセットされます。 また .B scale に値を定義すると、寸法を管理する全ての既定義の変数は、 それらのデフォルト値に新しい scale を掛けたものになります。 .TP \fBplot\fR \fIexpr\fR [\fB"\fItext\*(ic\fB"\fR] これはテキストオブジェクトであり、 .I text をフォーマットとして .IR expr を引数として sprintf を用いて構成します。 .I text が省略された場合にはフォーマット文字列 .B "\(ts%g\(ts" が使用されます。 通常のテキストオブジェクトと同様属性を指定できます。 適切なフォーマット文字列を指定するように非常に気を付ける必要が有ります; .B pic は文字列に関して非常に限られたチェックしか行いません。 この仕様は、 .BR sprintf のことを考慮して批判されています。 .TP .IB variable := expr これは .B = と同じですが、 .I variable が既に定義されていなければならず、 .I variable が変更される場合は、これが定義された最内側ブロックでなければなりません。 (これに対して .B = は、variable がまだ定義されていない場合には現在のブロックにおいて定義し、 現在のブロックに置いて値を変更します。) .LP .IP .IR X\ anything\ X .LP という形式に対しては .IP .BI {\ anything\ } .LP も許されます。 この場合、 .I anything には .B { と .BR } がバランスして登場する必要が有ります。 文字列に .I X が含まれる場合、 .B { と .BR } のバランスが悪い場合に対応します。 .SS 式 式の文法が少し拡張されました: .LP .IB x\ ^\ y (指数) .br .BI sin( x ) .br .BI cos( x ) .br .BI atan2( y , \ x ) .br .BI log( x ) (base 10) .br .BI exp( x ) (base 10, ie 10\v'-.4m'\fIx\*(ic\fR\v'.4m') .br .BI sqrt( x ) .br .BI int( x ) .br .B rand() (0 から 1 までの乱数を返す) .br .BI rand( x ) (1 から .IR x までの乱数を返す; 勧められません) .br .BI srand( x ) (乱数の種を設定する) .br .BI max( e1 , \ e2 ) .br .BI min( e1 , \ e2 ) .br .BI ! e .br \fIe1\fB && \fIe2\fR .br \fIe1\fB || \fIe2\fR .br \fIe1\fB == \fIe2\fR .br \fIe1\fB != \fIe2\fR .br \fIe1\fB >= \fIe2\fR .br \fIe1\fB > \fIe2\fR .br \fIe1\fB <= \fIe2\fR .br \fIe1\fB < \fIe2\fR .br \fB"\fIstr1\*(ic\fB" == "\fIstr2\*(ic\fB"\fR .br \fB"\fIstr1\*(ic\fB" != "\fIstr2\*(ic\fB"\fR .br .LP 曖昧さを避けるために、 文字列の比較式はあるコンテキストにおいては括弧で括られる必要が有ります .SS その他の変更 .LP 単なる式 .IR expr は属性として受理可能です; これは .IR dir\ expr と同じであり、 .I dir は現在の方向です。 例えば .IP .B line 2i .LP は 2 インチの長さの線を現在の方向へ描きます。 .LP ピクチャの最大の幅と高さは変数 .BR maxpswid , .B maxpsht により指定されます。 初期値は 8.5 および 11 です。 .LP 数を表すのに科学技術的表記が可能です。 例えば .RS .B x = 5e\-2 .RE .LP テキストの属性は組み合わせることが可能です。 例えば .RS .B "foo" above ljust .RE は正しいです。 .LP ブロックが検査される深さには制限は有りません。 例えば .RS .B [A: [B: [C: box ]]] with .A.B.C.sw at 1,2 .br .B circle at last [\^].A.B.C .RE は受理可能です。 .LP 円弧はコンパスポイントを持ち、円弧が部分となるような円から決定されます。 .LP 円と円弧は点線や破線で書くことが出来ます。 \*(tx モードではスプラインを点線や破線で書くことが出来ます。 .LP ボックスの角を丸くできます。 .B rad 属性は、角を構成する 1/4 円の半径を指定します。 .BR rad , .B diam 属性が与えられない場合、 .B boxrad が半径として使用されます。 初期値では .B boxrad は値 0 です。 角の丸いボックスは点線や破線で書くことが出来ます。 .LP .B .PS 行は 2 番目の引数としてピクチャの最大の高さを指定できます。 幅として 0 が指定された場合には、 ピクチャのスケーリングファクタの計算においては幅は無視されます。 GNU .B pic は常に水平方向と垂直方向ともに同じ縮尺で スケーリングしていることに注意して下さい。 これは 高さが指定された場合に水平方向と垂直方向を同じ縮尺でスケーリングしない .SM DWB 2.0 .B pic と異なります。 .LP テキストオブジェクトはそれぞれに関連づけられた見えないボックスを持っています。 テキストオブジェクトのコンパスポイントはこのボックスによって決定されます。 オブジェクトに関連づけられた暗示的な動きもこのボックスによって決定されます。 このボックスの寸法は width, height 属性から定まります; もし width 属性が与えられていない場合は幅は .BR textwid となります; もし height 属性が与えられていない場合は高さは .BR textht となります。 初期値では .BR textwid , .B textht は値 0 です。 .LP クオートされされたテキストが使用される場合、 .IP .BI sprintf(\(ts format \(ts,\ arg ,\fR.\|.\|.\fB) .LP という形式の式を使用可能です; これは引数を .IR format に従い整形したものを出力します。 .I format は .BR printf (3) に記述されている文字列であり、 与えられる数及び引数に適切なものである必要が有ります。 .BR e , .BR f , .BR g , .B % フォーマット文字のみ使用可能です。 .LP オブジェクトを描画する時に使用する線の太さは .B linethick 変数で制御可能です。 これは線の太さをポイントで指定します。 負の値はデフォルトの太さを使用することを意味します: \*(tx 出力モードでは、8 ミリインチを使用することを意味します; \*(tx 出力モードで .B -c オプション使用時には、線の太さには .B .ps 行で指定されるものを使用ことを意味します; troff 出力モードでは、ポイントサイズに比例する太さを使用することを意味します。 値 0 ではデバイスがサポートするもっとも細い線で描画します。 初期値は -1 です。 また、 .BR thick [ ness ] 属性が有ります。 例えば .RS .LP .B circle thickness 1.5 .RE .LP は 1.5 ポイントの太さの円を描画します。 線の太さは .B scale 変数の値の影響も .B .PS 行における高さの影響も受けません。 .LP ボックス (角の丸いボックスを含みます)、 円、楕円は塗りつぶすことが可能であり、 属性 .BR fill [ ed ] で指定します。 これは値が 0 から 1 の式をオプションで引数として取ります; 0 は白で塗りつぶし、1 は黒で塗りつぶし、その間の値では 適切な灰色で塗りつぶします。 1 より大きい値も使用可能です: この場合、現在のテキスト及び線に使用している灰色で塗りつぶします。 通常これは黒ですが、出力デバイスが変更する機構を持っているかも知れません。 引数を取らない場合、 .B fillval 変数の値が使用されます。 初期値では 0.5 です。 invisible 属性はオブジェクトの塗りつぶしには影響しません。 塗りつぶされたオブジェクトに関連づけられたテキストは、 塗りつぶし後に追加されます。 このため、塗りつぶしによってテキストが隠されることは有りません。 .LP 変数 .B arrowhead が非 0 でありかつ \*(tx モードが有効もしくは .B \-x オプションが与えられている場合には、 矢印の頭を実線の三角形で描画します。 初期値では .B arrowhead は 1 です。 .LP .B pic の troff 出力はデバイス独立です。 それゆえ .B \-T オプションは冗長です。 全ての数値はインチとして扱われます; 数値は troff マシン単位としては解釈されません。 .LP オブジェクトは .B aligned 属性を取りえます。 これは後処理が .BR grops で実行される場合のみ機能します。 オブジェクトに関連づけられたテキストで .B aligned 属性を持つものは全て オブジェクトの中央において回転されます。 それゆえ、オブジェクトの始点から終点への方向にあわせられます。 この属性は始点と終点が同じオブジェクトに関しては効果が有りません。 .LP .IB n th と言う表現が許されている場所では .BI ` expr 'th という表現も許されます。 .B 'th は単一のトークンであることに注意して下さい: .B ' と .BR th の間には空白を入れてはなりません。 使用例は以下です。 .IP .B .nf for i = 1 to 4 do { line from `i'th box.nw to `i+1'th box.se } .fi .SH 変換 スタンドアロンのピクチャを .B pic ファイルから得るには、 .B pic コードを .B .PS と .B .PE のリクエストで囲みます。 .B roff 設定コマンドをファイルの先頭に追加しても良いですが、 .B roff テキストは追加しません。 .LP ページ情報をなにも加えずに、このファイルを .B groff に喰わせることが必要です。 どの .B .PS と .B .PE のリクエストが実際に呼ばれたのかを確認してください。 例えば、mm マクロパッケージはページ番号を追加しますが、 これは非常に迷惑です。 当面、標準の .B groff を、どのマクロパッケージも働かないようにして呼び出します。 または、独自のリクエストを定義します。 例えば、なにもしないようにするには次のようにします: .LP .RS .nf .ft B \&.de PS \&.. \&.de PE \&.. .ft .fi .RE .LP .B groff 自身は、他のグラフィックスファイル書式への直接変換はできません。 しかし、 .B groff オプション .BR -Tps の使用により、ピクチャを最初に PostScript\*R 書式へ変換すれば、 多くの可能性があります。 この .IR ps ファイルは、BoundingBox 情報が無いので、 それ自身は非常に使用し易いというものではないので、 他の変換プログラム、通常は .BI ps2 other や .BI psto other といった名前のものに喰わせます。 さらに、PostScript インタプリタ .B ghostscript .RB ( gs ) は、 次のオプションで呼び出し可能な組み込みのグラフィックス変換デバイスを持ちます: .LP .RS .BI "gs -sDEVICE=" .RE .LP 使用可能なデバイス一覧を得るには、次のように呼び出します: .RS .B gs --help .RE .LP Encapsulated PostScript ファイル書式 .B EPS がより重要になっており、 また変換が過去のようには簡単ではないので、正しい仕事を行う .B ps2eps という名前の変換ツールの存在を知っていると良いでしょう。 これは、 .BR gs にパッケージされているツール .B ps2epsi よりも良いものです。 .LP -ビットマップグラフィックス書式用にには、 +ビットマップグラフィックス書式用には、 .BR pstopnm を使用します。結果の (中間出力の) .B PNM ファイルは、 .B netpbm パッケージを使用することにより、 実質的に任意のグラフィックス書式に変換可能です。 .SH 関連ファイル .Tp \w'\fB/usr/share/tmac/pic.tmac'u+3n .B /usr/share/tmac/pic.tmac .B PS と .B PE マクロの定義の例です。 .SH 関連項目 .BR troff (1), .BR groff_out (5), .BR tex (1), .BR gs (1), .BR ps2eps (1), .BR pstopnm (1), .BR ps2epsi (1), .BR pnm (5) .LP Tpic: Pic for \*(tx .br Brian W. Kernighan, PIC \(em A Graphics Language for Typesetting (User Manual). AT&T Bell Laboratories, Computing Science Technical Report No.\ 116 (revised May, 1991). .LP .B ps2eps は CTAN ミラーで入手可能であり、例えば次のところから入手可能です: .br .LP W. Richard Stevens - Turning PIC Into HTML .br .LP W. Richard Stevens - Examples of picMacros .br .SH バグ .LP .B groff にとって不正な文字 (例えば .SM ASCII code 0 や 8 進で 013〜037、 0200〜0237) は \*(tx モードであっても拒否されます。 .LP .B fillval の解釈は 10th edition Unix と互換性がありません。 10th edition Unix は 0 を黒、1 を白と解釈します。 .LP PostScript\*R は、Adobe Systems Incorporation の登録商標です。 .\" Kazuo HORIKAWA .\" USAGE 訳出 (Dec 27, 1996) . .\" Local Variables: .\" mode: nroff .\" End: diff --git a/ja_JP.eucJP/man/man1/ps.1 b/ja_JP.eucJP/man/man1/ps.1 index d2c1f6bd95..08b89a96f4 100644 --- a/ja_JP.eucJP/man/man1/ps.1 +++ b/ja_JP.eucJP/man/man1/ps.1 @@ -1,530 +1,530 @@ .\" Copyright (c) 1980, 1990, 1991, 1993, 1994 .\" 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. .\" .\" @(#)ps.1 8.3 (Berkeley) 4/18/94 .\" %FreeBSD: src/bin/ps/ps.1,v 1.24.2.5 2001/08/16 10:01:06 ru Exp % .\" -.\" $FreeBSD: doc/ja_JP.eucJP/man/man1/ps.1,v 1.17 2001/07/29 05:14:52 horikawa Exp $ +.\" $FreeBSD$ .Dd April 18, 1994 .Dt PS 1 .Os .Sh 名称 .Nm ps .Nd プロセスの状態の表示 .Sh 書式 .Nm .Op Fl aCcefhjlmrSTuvwx .Op Fl M Ar core .Op Fl N Ar system .Op Fl O Ar fmt .Op Fl o Ar fmt .Op Fl p Ar pid .Op Fl t Ar tty .Op Fl U Ar username .Op Fl W Ar swap .br .Nm .Op Fl L .Sh 解説 .Nm は、制御端末を持つ自分 (あなた) のプロセスの情報を、 ヘッダ行に続いて表示します。 この情報は、制御端末順に整列され、その中ではプロセス .Tn ID 順に整列されます。 .Pp 表示される情報は、一連のキーワードによって選ばれます .Pf ( Fl L , .Fl O , .Fl o オプションを参照)。 デフォルトの出力フォーマットは、各プロセス毎に、 プロセス .Tn ID , 制御端末・cpu 時間 (ユーザ時間とシステム時間の両方)・ プロセス状態・プロセスに関連するコマンドから成ります。 .Pp プロセスファイルシステム ( .Xr procfs 5 参照) は、 .Nm が実行されている時にマウントされているべきです。そうでない場合、 すべての情報が利用可能になるわけではありません。 .Pp オプションを以下に示します。 .Bl -tag -width indent .It Fl a 自分のプロセスに加え自分以外のプロセスの情報も同様に表示します。 この機能は、 .Va kern.ps_showallprocs sysctl を 0 に設定することで無効化できます。 .It Fl c ``コマンド'' 桁の出力を、すべてのコマンドラインを表示するのではなく、 実行形式名だけを表示するように変更します。 .It Fl C cpu パーセンテージの計算を、``常駐'' 時間を無視する ``生'' cpu 時間を使う方法に変更します (通常これは影響ありません)。 .It Fl e 環境 (変数) も同時に表示します。 .It Fl f スワップアウトされたプロセスに関して、 コマンドラインと環境の情報を表示します。 ユーザの uid が 0 である場合のみ、このオプションが有効になります。 .It Fl h ページ毎に 1 つヘッダが入るようにします。 .It Fl j 次のキーワードに関する情報を表示します: user, pid, ppid, pgid, sess, jobc, state, tt, time, command。 .It Fl L 有効なキーワードの一覧を表示します。 .It Fl l 次のキーワードに関する情報を表示します: uid, pid, ppid, cpu, pri, nice, vsz, rss, wchan, state, tt, time, command。 .It Fl M 名前リストの値を取り出すとき、 デフォルトの .Pa /dev/kmem の代わりに、指定した .Ar core から取り出します。 .It Fl m プロセス .Tn ID 順ではなく、メモリ使用量順に整列します。 .It Fl N デフォルトの .Pa /kernel の代わりに、指定された .Ar system から名前リストを取り出します。 .It Fl O デフォルトで表示される情報に加え、 指定されたキーワードに関する情報を、 プロセス .Tn ID の後に挿入する形式で表示します。 各キーワードの後ろには、等号 (``='') と文字列を追加しても構いません。 この場合、標準のヘッダの代わりに指定された文字列が表示されます。 .It Fl o 指定されたキーワードに関する情報を、表示します。 各キーワードの後ろには、等号(``='')と文字列を追加しても構いません。 この場合、標準のヘッダの代わりに指定された文字列が表示されます。 .It Fl p 指定したプロセス .Tn ID に関する情報を表示します。 .It Fl r プロセス .Tn ID 順ではなく、現在の cpu 利用率順に整列します。 .It Fl S プロセス時間を計算するのに、 終了した子プロセスの時間を親プロセスに合計するように変更します。 .It Fl T 標準入力のデバイスに取り付けられたプロセスの情報を表示します。 .It Fl t 指定された端末デバイスに取り付けられたプロセスの情報を表示します。 .It Fl U 指定された .Ar username に属するプロセスを表示します。 .It Fl u 次のキーワードに関する情報を表示します: user, pid, %cpu, %mem, vsz, rss, tt, state, start, time, command。 .Fl u オプションを指定すると .Fl r オプションも暗に指定したことになります。 .It Fl v 次のキーワードに関する情報を表示します: pid, state, time, sl, re, pagein, vsz, rss, lim, tsiz, %cpu, %mem, command。 .Fl v オプションを指定すると .Fl m オプションも暗に指定したことになります。 .It Fl W libkvm を使う 代わりに指定したファイルからスワップ情報を取り出します。 .It Fl w デフォルトの現行ウィンドウ幅ではなく、132 桁幅で表示します。 一度より多く .Fl w オプションを指定すると、 .Nm はウィンドウ幅にかかわらず、必要なだけの幅を使用します。 .It Fl x 制御端末のないプロセスの情報も表示します。 .El .Pp 有効なキーワードの全リストを以下に示します。 いくつかのキーワードに関してはさらに詳しく述べます。 .Bl -tag -width indent .It %cpu プロセスの cpu 利用率です。実時間で最近 1 分間の減衰平均です。 計算の基点となる時間は変化するので (プロセスはまだ生れたばかりかもしれないので)、 .Tn \&%CPU フィールド全部の合計は 100% を越える可能性もあります。 .It %mem プロセスで使われている実メモリのパーセンテージです。 .It flags インクルードファイル .Aq Pa sys/proc.h でプロセスに定義されたフラグです。 .Bl -column SNOCLDSTOP SNOCLDSTOP .It Dv "P_ADVLOCK" Ta No "0x00001 プロセスは POSIX 提案ロックを保持している" .It Dv "P_CONTROLT" Ta No "0x00002 制御端末を持っている" .It Dv "P_INMEM" Ta No "0x00004 メモリに読み込まれている" .It Dv "P_NOCLDSTOP" Ta No "0x00008 子プロセスが停止しても SIGCHLD を送らない" .It Dv "P_PPWAIT" Ta No "0x00010 親プロセスが、子プロセスが exec/exit するのを待っている" .It Dv "P_PROFIL" Ta No "0x00020 プロファイル付きで実行された" .It Dv "P_SELECT" Ta No "0x00040 select 中; wakeup/waiting は危険である" .It Dv "P_SINTR" Ta No "0x00080 sleep は割り込み可能" .It Dv "P_SUGID" Ta No "0x00100 最後の実行以来、id 特権が設定されている" .It Dv "P_SYSTEM" Ta No "0x00200 システムプロセス: シグナルや stat やスワップが無い" .It Dv "P_TIMEOUT" Ta No "0x00400 sleep 中にタイムアウトした" .It Dv "P_TRACED" Ta No "0x00800 デバッグプロセスはトレースされている" .It Dv "P_WAITED" Ta No "0x01000 デバッグプロセスは子プロセスを待っている" .It Dv "P_WEXIT" Ta No "0x02000 終了動作中" .It Dv "P_EXEC" Ta No "0x04000 プロセスは exec で呼ばれた" .It Dv "P_OWEUPC" Ta No "0x20000 次の ast プロセスが addupc() 呼び出しの借り" .It Dv "P_SWAPPING" Ta No "0x40000 プロセスはスワップされている" .El .It lim .Xr setrlimit 2 の呼び出しで指定される、メモリ使用量のソフトリミットです。 .It lstart コマンドの実行が始まった正確な時刻を、 .Xr strftime 3 に記述された ``%c'' フォーマットで表示します。 .It nice プロセススケジューリングにおける増加値です .Ns ( Xr setpriority 2 参照)。 .\" .Ns により ( と setpriority が離れるのを防ぐ .\" by horikawa@jp.freebsd.org (Feb 9 1997) .It rss プロセスの実メモリ(常駐分)の大きさ(1024バイト単位)です。 .It start コマンドが開始された時間です。 コマンドが開始されたのが 24 時間以内なら、 開始時刻は .Xr strftime 3 で記述された ``%l:ps.1p'' フォーマットで表示されます。 コマンドが開始されたのが 7 日以内なら、 開始時刻は ``%a6.15p'' フォーマットで表示されます。 さもなくば、開始時刻は ``%e%b%y'' フォーマットで表示されます。 .It state プロセスの状態を文字の列で表示します。例えば、 .Dq Tn RWNA の最初の文字は、プロセスが runnable 状態であることを示しています。 .Pp .Bl -tag -width indent -compact .It D プロセスはディスク (あるいは他の割り込み不可能な短期間の) 待ち状態です。 .It I プロセスは idle 状態 (20 秒以上 sleep している) です。 .It J プロセスは .Xr jail 2 中のものです。 -牢屋のホスト名はは +牢屋のホスト名は .Ql Li /proc//status に記述されています。 .It R プロセスは runnable 状態です。 .It S プロセスは 20 秒未満の sleep 状態です。 .It T プロセスは stop している状態です。 .It Z プロセスは死んでいる状態 (``ゾンビ'') です。 .El .Pp さらにこの後に文字があれば、さらなる状態情報を示します。 .Pp .Bl -tag -width indent -compact .It + プロセスはその制御端末のフォアグラウンドプロセスグループに属しています。 .It < プロセスは .Tn CPU のスケジュール優先度が上げられています。 .It > プロセスはメモリ要求に対するソフトリミットが指定されており、 現在そのリミットを越えています。 このようなプロセスは (必然的に) スワップされていません。 .It A プロセスはランダムなページ置換 ( .Xr madvise 2 における .Dv MADV_RANDOM のことで、例えば、 .Xr lisp 1 でのガーベージコレクション) を要求しました。 .It E プロセスは終了しようとしています。 .It L プロセスは実メモリ中にロックされたページ (例えば、raw .Tn I/O 用) を持っています。 .It N プロセスは .Tn CPU スケジューリング優先度 ( .Xr setpriority 2 参照) が下げられています。 .It S プロセスは .Tn FIFO ページ置換 ( .Xr madvise 2 における .Dv MADV_SEQUENTIAL のことで、 例えば、仮想記憶の多量のデータを順次アクセスする 大規模画像処理プログラム) を要求しました。 .It s プロセスはセッションリーダです。 .It V プロセスは .Xr vfork 2 の間、一時中断されています。 .It W プロセスはスワップアウトされています。 .It X プロセスはトレースされているか、デバッグされています。 .El .It tt もしあれば、制御端末のパス名の省略形です。 省略形は .Pa /dev/tty に続く 3 文字か、コンソール場合の ``con'' です。 もはやプロセスがその制御端末に到達できない (即ち、revoke された) 場合、 後に ``-'' が付きます。 .It wchan プロセスが待っているイベント (システム内のアドレス)。 数字で表示される時には、アドレスの最初の部分は削られて その結果が 16 進で表示されます。例えば 0x80324000 では 324000 と表示されます。 .El .Pp キーワード command には、 すでに終了しているのに親がまだ wait してくれていない プロセス(即ちゾンビ)は ``'' と表示されます。 終了しようとしてブロックされているプロセスは ``'' と表示されます。 .Nm は、メモリやスワップ領域を検査して、 プロセスが生成されたときのファイル名や引数を推測します。 この方法は、本質的に少々信頼できるものではなく、 プロセスはとにかくこの情報を破壊することができます。 だから、表示されるコマンド名や引数をあまり信用しすぎてはなりません。 一方、キーワード ucomm (アカウンティング名) は信用できます。 .Sh キーワード 以下は有効なキーワードとその意味の全リストです。 そのうちいくつかは別名があります。 .Pp .Bl -tag -width sigignore -compact .It %cpu cpu 使用率 (別名 pcpu) .It %mem メモリ使用率 (別名 pmem) .It acflag アカウンティングフラグ (別名 acflg) .It command コマンド名と引数 .It cpu 短期間 cpu 使用係数 (スケジューリング用) .It flags 16 進数のプロセスフラグ (別名 f) .It inblk 総ブロック読み出し数 (別名 inblock) .It jobc ジョブコントロール数 .It ktrace トレース中フラグ .It ktracep トレース中の vnode .It lim メモリ利用のリミット .It logname プロセスを開始したユーザのログイン名 .It lstart 開始時刻 .It majflt 総ページフォールト数 .It minflt 総ページ再生数 .It msgrcv 総メッセージ受信数 (パイプ/ソケットからの読み込み) .It msgsnd 総メッセージ送信数 (パイプ/ソケットへの書き込み) .It nice nice 値 (別名 ni) .It nivcsw 総強制的コンテキストスィッチ数 .It nsigs 総シグナル受け入れ数 (別名 nsignals) .It nswap 総スワップイン/スワップアウト数 .It nvcsw 総自発的コンテキストスィッチ数 .It nwchan wait チャネル (アドレスで表示) .It oublk 総ブロック書き込み数 (別名 oublock) .It p_ru リソース利用量 (ゾンビに対してのみ有効) .It paddr スワップアドレス .It pagein ページイン数 (majflt と同じ) .It pgid プロセスグループ番号 .It pid プロセス .Tn ID .It poip 進行中のページアウト数 .It ppid 親プロセス .Tn ID .It pri スケジューリング優先度 .It re 実メモリ常駐時間 (秒単位; 127 = 無限) .It rgid 実グループ .Tn ID .It rlink run 行列における逆リンク (あるいは 0) .It rss 常駐セットサイズ .It rsz 常駐セットサイズ + (テキストのサイズ/テキストの利用総数) (別名 rssize) .\" つまり、共通テキストを複数プロセスで分担しているわけだ .It rtprio 実時間優先度 (101 = 実時間プロセスではない) .It ruid 実ユーザ .Tn ID .It ruser ユーザ名 (ruid から得られたもの) .It sess セッションポインタ .It sig 遅延されたシグナル (別名 pending) .It sigcatch 捕獲されたシグナル (別名 caught) .It sigignore 無視されたシグナル (別名 ignored) .It sigmask ブロックされたシグナル (別名 blocked) .It sl sleep 時間 (秒単位; 127 = 無限) .It start 開始時刻 .It state 記号でのプロセス状態 (別名 stat) .It svgid setgid プログラムでの saved gid .It svuid setuid プログラムでの saved uid .It tdev 制御端末のデバイス番号 .It time ユーザ + システムの合計 cpu 時間 (別名 cputime) .It tpgid 制御端末プロセスグループ .Tn ID .\".It trss .\"text resident set size (in Kbytes) .\"テキスト常駐セットサイズ(Kbyte単位) .It tsess 制御端末セッションポインタ .It tsiz テキストサイズ (K バイト単位) .It tt 制御端末名 (2 文字の省略形) .It tty 制御端末の完全な名前 .It uprocp プロセスポインタ .It ucomm アカウンティングで使われるコマンド名 .It uid 実効ユーザ .Tn ID .It upr システムコールから帰る時のスケジューリング優先度 (別名 usrpri) .It user ユーザ名 (uid から得たもの) .It vsz k バイト単位の仮想記憶サイズ (別名 vsize) .It wchan wait チャネル (シンボル名で表示) .It xstat 終了ステータスまたは stop ステータス (stop プロセスかゾンビプロセスの時のみに有効) .El .Sh 関連ファイル .Bl -tag -width /var/run/kvm_kernel.db -compact .It Pa /dev 特殊ファイルとデバイスの名前 .It Pa /dev/drum デフォルトのスワップデバイス .It Pa /dev/kmem デフォルトのカーネルメモリデバイス .It Pa /var/run/dev.db .Pa /dev 名前データベース .It Pa /var/run/kvm_kernel.db システム (カーネル) の名前リストデータベース .It Pa /kernel デフォルトのシステムの名前リスト .It Pa /proc .Xr procfs 5 のマウントポイント .El .Sh 関連項目 .Xr kill 1 , .Xr w 1 , .Xr kvm 3 , .Xr strftime 3 , .Xr procfs 5 , .Xr pstat 8 , .Xr sysctl 8 .Sh バグ .Nm はシステムより速く実行できず、 他のプロセスと同様にスケジュールされて実行されるので、 表示される情報は正確ではあり得ません。 diff --git a/ja_JP.eucJP/man/man1/send-pr.1 b/ja_JP.eucJP/man/man1/send-pr.1 index 2a2032b291..a57abbe2c9 100644 --- a/ja_JP.eucJP/man/man1/send-pr.1 +++ b/ja_JP.eucJP/man/man1/send-pr.1 @@ -1,307 +1,307 @@ .\" -*- nroff -*- .\" --------------------------------------------------------------------------- .\" man page for send-pr (by Heinz G. Seidl, hgs@cygnus.com) .\" updated Feb 1993 for GNATS 3.00 by Jeffrey Osier, jeffrey@cygnus.com .\" .\" This file is part of the Problem Report Management System (GNATS) .\" Copyright 1992 Cygnus Support .\" .\" This program is free software; you can redistribute it and/or .\" modify it under the terms of the GNU General Public .\" License as published by the Free Software Foundation; either .\" version 2 of the License, or (at your option) any later version. .\" .\" This program is distributed in the hope that it will be useful, .\" but WITHOUT ANY WARRANTY; without even the implied warranty of .\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU .\" General Public License for more details. .\" .\" You should have received a copy of the GNU Library General Public .\" License along with this program; if not, write to the Free .\" Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA .\" .\" --------------------------------------------------------------------------- .\" %FreeBSD: src/gnu/usr.bin/send-pr/send-pr.1,v 1.9.2.2 2001/11/05 00:27:21 dd Exp % .\" $FreeBSD$ .nh .TH SEND-PR 1 3.113 "February 1993" .SH 名称 send-pr \- サポートサイトに Problem Report (PR) を送る。 .SH 書式 .B send-pr [ .I site ] [ .B \-f .I problem-report ] [ .B \-t .I mail-address ] .br .in +0.8i [ .B \-P ] [ .B \-L ] [ .B \-s .I severity ] [ .B \-V ] .br [ .B \-\-version ] [ .B \-c .I address ] [ .B \-a .I file ] .SH 解説 .B send-pr は、サポートサイトに対して、 .I problem report .\" SITE ADMINISTRATORS - change this if you use a local default (PR) を送るために使うツールです。大抵の場合は正しい .I site がデフォルトとなっているはずです。この引数は、問題 のカテゴリに対して責任をもつサポートサイトを指し示します。いくつかの サイトはデフォルトとしてローカルアドレスを使っていることでしょう。 .I site は、 .BR aliases (5) を使って定義されます。 .LP .B send-pr を実行すると、エディタが起動され、用意されているテンプレートが (いくつ かのフィールドにもっともらしいデフォルトの値をあてはめてから) 読み込ま れます。エディタを終了すると、 .B send-pr は、サポートサイトの .I Problem Report Management System (\fBGNATS\fR) に書き込み終えた書式をメールで送ります。 サポートサイトで は、PR に唯一の番号を割り当てて、その問題のカテゴリ と \fIsubmitter-id\fR とともに、\fBGNATS\fR データベースに 保存しています。 \fBGNATS\fR は PR を受理したこと知らせるために、 問題のカテゴリの引用と PR 番号とを自動的に返送します。 .LP PR がすぐに処理されるようにするためには、問題の属す領域を識別するため、 指定可能カテゴリから一つを選んで記入する必要があります。(カテゴリの一覧は .B `send-pr -L' で見ることができます。) .LP 問題の記述がより正確であり、提供される情報がより完全であればあるほど、 サポートチームは問題をそれだけ早く解決することができます。 .SH オプション .TP .BI \-f " problem-report" すでに記入した PR ファイルを \fIproblem-report\fR に指定できます。 .B send-pr はエディタを起動せずに指定したファイルを送ります。 .I problem-report が .BR `\|\-\|' のときは .B send-pr は、標準入力から読み込みます。 .TP .BI \-s " severity" PR の重大度を、 .IR severity と指定します。 .TP .BI \-t " mail-address" PR を送るサイトのメールアドレスを変更します。 デフォルトのメールアドレスは、 デフォルトサイトのものが使われます。特殊な状況を除き、この オプションではなく、 .I site 引数を使って下さい。 .TP .BI \-c " address" .I address を、メッセージの .B Cc: ヘッダ中に入れます。 .TP .BI \-a " file" 指定した .I file を .B Fix: 節にコピーします。 バイナリファイルは uuencode されます。 .TP .B \-P 環境変数 .B PR_FORM で指定されたテンプレートを標準出力に出力します。 .B PR_FORM が定義されていないときは、標準のブランク PR テンプレートが出力されます。 メールは送られません。 .TP .B \-L 指定可能なカテゴリの一覧が表示されます。メールは送られません。 .TP .B \-V .B send-pr のバージョン番号を表示します。 .B \-\-version 指定でも表示可能です。 .LP 注: PR を提出するためには、PR を直接メールするのではなく、 .B send-pr を使いましょう。テンプレートと .B send-pr の両方を使うことによって、必要な情報のすべてがサポートサイトに確実に 届きやすくなります。 .SH FREEBSD のカテゴリ .TP .B advocacy 支持 WWW ページ用。何に使うのか今は不確かです。 .TP .B alpha Alpha プロセッサ固有の問題。 .TP .B bin システムの実行形式の修正または拡張。 .TP .B conf システムの設定ファイルの修正または拡張。 .TP .B docs マニュアルページまたは他の文書の修正または拡張。 .TP .B gnu GNU 堤要ソフトウェアの修正または拡張。 .TP .B i386 Intel x86 プロセッサ固有の問題。 .TP .B kern アーキテクチャ独立カーネルソースの修正または拡張。 .TP .B misc 他のカテゴリにあてはまらない問題。 .TP .B ports ports collection の修正または拡張 (新規 ports を含みます)。 .TP .B sparc SPARC プロセッサ固有の問題。 .SH 環境変数 環境変数 .B EDITOR は、テンプレートを編集する際に使用するエディタを指定します。 .br デフォルト: .B vi .sp 環境変数 .B PR_FORM が設定されていれば、その値は編集する PR のテンプレートのファイル名として 使われます。部分的に埋められた記入書式 ( たとえば、identification フィールドがすでに完成した書式など) を使って始めようとする場合に、 この環境変数を使うことができます。 .SH " PR の記入方法" プログラムが容易に PR を扱うことができるようにするため、 PR はある形式に従っている必要があります。 以下のガイドラインを覚えておきましょう: .IP \(bu 3m それぞれの PR には .B 一つの問題 だけを記述しましょう。 .IP \(bu 3m フォローアップメールには、 自動返送されて来るメールと同じサブジェクトを使いましょう。サブジェクトは、 カテゴリ、PR 番号、もともとの概要 ( synopsis ) 行から構成されています。 これによってサポートサイトは、 複数のメールメッセージをある PR に関連付けることができ、 またそれらを自動的に記録することができます。 .IP \(bu 3m サブジェクトや、概要の行はできるだけ正確に記入するようにしましょう。 .IP \(bu 3m サブジェクトの行と概要の行は機密扱いになりません。 公開扱いのバグリストがサブジェクトと概要の行から編集生成されるからです。 機密情報はここに書かないでください。 .LP 詳しくは、GNU .B Info ファイルの .B send-pr.info か、RP について詳しく書かれている \fIReporting Problems With send-pr\fR\ のドキュメントなどを参照してください。 .SH "テストケース、コード、その他の記入方法" 小さなサンプルコードを送りましょう。 -大きなテストケースや問題のソースコードを送りたい場合にには、 +大きなテストケースや問題のソースコードを送りたい場合には、 サポートサイトに連絡を取り、指示に従ってください。 .SH 関連ファイル .ta \w'/tmp/pbad$$ 'u /tmp/p$$ 編集しているときに使う PR のコピー .br /tmp/pf$$ テスト目的で使う、空の PR テンプレートコピー .br /tmp/pbad$$ 却下された PR のファイル .SH EMACS ユーザインタフェース .B send-pr のフィールドを記入するための Emacs ユーザインタフェースが .B send-pr の配布物に含まれます( .BR "M-x send-pr" で起動します)。 コンフィギュレーションとインストールのための情報は、 .B send-pr.info もしくは配布物の最上位ディレクトリにある ASCII ファイル .B INSTALL を参照してください。 Emacs LISP のテンプレートファイルは .B send-pr-el.in であり、これを .BR send-pr.el としてインストールします。 .SH インストールとコンフィギュレーション インストール手順を知るためには .B send-pr.info か .B INSTALL を参照してください。 .SH 関連項目 .I Reporting Problems Using send-pr (GNU Info ファイル .BR send-pr.info としてもインストールされます) .SH 作者 Jeffrey Osier, Brendan Kehoe, Jason Merrill, Heinz G. Seidl (Cygnus Support) .SH COPYING Copyright (c) 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. diff --git a/ja_JP.eucJP/man/man1/tcsh.1 b/ja_JP.eucJP/man/man1/tcsh.1 index 37325f292c..7a3f95acb6 100644 --- a/ja_JP.eucJP/man/man1/tcsh.1 +++ b/ja_JP.eucJP/man/man1/tcsh.1 @@ -1,5852 +1,5852 @@ .\" 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 acknowledgment: .\" This product includes software developed by the University of .\" California, Berkeley and its contributors. .\" 4. Neither the name of the University nor the names of its contributors .\" may be used to endorse or promote products derived from this software .\" without specific prior written permission. .\" .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" .\" tcsh マニュアルページ: スタイルに関する注意 .\" .\" - リストのタグはボールド体とします。但し、「関連ファイル (FILES)」 .\" セクション中でイタリック体になっている部分は除きます。 .\" .\" - セクション名、環境変数、シェル変数に対する参照はボールド体としま .\" す。コマンド (外部コマンド、組み込みコマンド、エイリアス、エディ .\" タコマンド) とコマンド引数に対する参照はイタリック体とします。 .\" .\" - .B, .I マクロに注意してください。扱うことができる単語数には限界が .\" あります。この制限を回避するには、\fB, \fI を用います。ただ、 .\" この利用は絶対に必要な場合に限るようにしてください。 .\" これは、tcsh.man2html が名前アンカーを見つける際に .\" .B/.I を使うからです。 .\" .\" - 4 の倍数でインデントしてください。普通は 8 でインデントしてください。 .\" .\" - `' を使ってください。シェル構文の例の中を除いて '' や "" は使わない .\" ようにしてください。行先頭で '' を使うと消えてしまいます。 .\" .\" - \- を使ってください。- は使わないようにしてください。 .\" .\" - ドットファイルの名前を表す際にはチルダも含めるようにしてください。 .\" つまり、`~/.login' と書きますが、`.login' とは書きません。 .\" .\" - 外部コマンドを参照する際は、マニュアルページ形式で参照してください。 .\" 例: `csh(1)'。ただし、tcsh は `tcsh' とし、`tcsh(1)' としません。 .\" というのは、このページが tcsh のマニュアルページだからです。 .\" .\" - tcsh と csh とを区別して表す場合を除き、「このシェル」といい、 .\" 「tcsh」と言わないようにしてください。 .\" .\" - ただ「変数」と言わずに、「シェル変数」、「環境変数」と言うように .\" してください。また、ただ、「ビルトイン」、「コマンド」と言わずに、 .\" 「組み込みコマンド」、「編集コマンド」と言うようにしてください。 .\" ただ、文脈上区別が明らかな場合は別ですが。 .\" .\" - 現在時制を使ってください。`The shell will use' ではなく、`The .\" shell uses' です (この項は日本語訳部分には適用しません)。 .\" .\" - 重要: できるだけ相互参照するようにしてください。「参照 (REFERENCE)」 .\" セクション中にあるコマンド、変数などは、適切な解説セクションの中 .\" で触れるようにしてください。少なくとも、(解説セクションかどこか .\" で触れられている)他のコマンドの「参照」セクションでの記述で触れ .\" るようにしてください。OS 固有事項に関する注意は、「OS 固有機能の .\" サポート(OS variant support)」のセクションに記述するようにして下 .\" さい。新規機能は「新規機能 (NEW FEATURES)」セクションに、外部コマ .\" ンドを参照した場合は、「関連項目 (SEE ALSO)」セクションにそれぞれ .\" 記述するようにしてください。 .\" .\" - tcsh.man2html は、それが作成された時点でマニュアルページで使用さ .\" れていた nroff コマンドにかなり依存しています。可能ならば、ここ .\" で用いているスタイルに厳密に従ってください。特に、これまで使用さ .\" れたことのない nroff コマンドを使用しないようにしてください。 .\" .\" WORD: command-line editor コマンド行編集 .\" WORD: editor command 編集コマンド .\" WORD: autologout mechanism 自動ログアウト機構 .\" WORD: directory stack entries ディレクトリスタックエントリ .\" WORD: word 単語 .\" WORD: positional completion 位置指定補完 .\" WORD: next-word completion 逐次補完 .\" WORD: programmed completion 補完指定 .\" WORD: tilde substitution チルダ置換 .\" WORD: hard limit hard limit .\" WORD: current limit current limit .\" WORD: register a misspelling ミススペルを記録する .\" WORD: switches スイッチ .\" WORD: glob-pattern グロブパターン .\" WORD: Toggles 切り替える .\" WORD: pager ページャー .\" WORD: prefix 接頭辞 .\" WORD: return リターンキー (enter キー) .\" WORD: builtin command 組み込みコマンド .\" WORD: spelling スペル .\" WORD: quote クォートする .\" .\" .\" .\" $FreeBSD$ .TH TCSH 1 "2 September 2001" "Astron 6.11.00" .\" INTERIM1(jpman) .SH 名称 tcsh - ファイル名補完とコマンド行編集を追加した C シェル .SH 書式 .B tcsh \fR[\fB\-bcdefFimnqstvVxX\fR] [\fB\-Dname\fR[\fB=value\fR]] [arg ...] .br .B tcsh \-l .SH 解説 \fItcsh\fR は、バークレイ版 UNIX の C シェル \fIcsh\fR(1) と完全に 互換性があり、さらに機能強化したシェルです。 対話的なログインシェル、またシェルスクリプトのコマンドプロセッサの 両方の用途で使われるコマンドインタプリタです。 \fItcsh\fR には、コマンド行編集 (\fBコマンド行編集\fRの項を参照)、 プログラム可能な単語の補完 (\fB補完と一覧\fRの項を参照)、 スペル訂正 (\fBスペル訂正\fRの項を参照)、 履歴 (\fBヒストリ置換\fRの項を参照)、 ジョブ制御 (\fBジョブ\fRの項を参照)、 C 言語風の文法があります。 \fB新機能\fRの章では、\fIcsh\fR(1) には存在しない、\fItcsh\fR の 主な追加機能について説明しています。 このマニュアルを通じ、\fItcsh\fR の機能のうち、 \fIcsh\fR(1) のほとんどの実装 (特に 4.4BSD の \fIcsh\fR) に ない機能について、ラベル (+) をつけてあります。 そして、\fIcsh\fR(1) にあったけれども文書化されていなかった機能に ラベル (u) をつけてあります。 .SS "引数リスト処理" シェルへの 1 番目の引数 (引数 0 番) が `\-' の場合、シェルは ログインシェルになります。 シェルを \fB\-l\fR フラグを指定して起動することでも ログインシェルにできます。 .PP 残りのフラグは以下のように解釈されます。 .TP 4 .B \-b このフラグは、オプションの処理を強制的に中断させる場合に使用します。 このフラグ以降の引数はすべて、オプションではないものとして 処理されます。これにより、混乱を避け、小細工をしなくても、 シェルスクリプトにオプションを渡すことが可能になります。 set-user ID スクリプトは本オプションなしでは実行できません。 .TP 4 .B \-c コマンドを、本フラグの次にくる引数 (この引数は省略できません。 また、1 つだけである必要があります) から読み込み、実行します。 この引数は、あとで参照できるように、シェル変数 \fBcommand\fR に 格納されます。残りの引数は、シェル変数 \fBargv\fR に代入されます。 .TP 4 .B \-d ログインシェルであるかどうかにかかわらず、 \fBスタートアップとシャットダウン\fRの項で解説されているように \fI~/.cshdirs\fR から、ディレクトリスタックを読み込みます。(+) .TP 4 .B \-D\fIname\fR[=\fIvalue\fR] 環境変数 \fIname\fR に値 \fIvalue\fR を設定します。(Domain/OS のみ) (+) .TP 4 .B \-e 起動したコマンドが異常終了したり、0 でない終了ステータスを返したときに、 ただちにシェルを終了します。 .TP 4 .B \-f \fI~/.tcshrc \fRを読み込まずに無視するので、 起動が高速になります。 .TP 4 .B \-F プロセスを生成する際に \fIvfork\fR(2) の代わりに \fIfork\fR(2) を使います。(Convex/OS のみ) (+) .TP 4 .B \-i たとえ端末上で実行されていなくても、対話的に動作し最上位レベルの 入力の際にプロンプトを表示します。入力と出力がともに端末である場合、 本オプションなしでもシェルは対話的に動作します。 .TP 4 .B \-l ログインシェルとなります (\fB-l\fR が、指定された唯一のフラグである 場合にのみ有効です)。 .TP 4 .B \-m 実効ユーザに属していなくても \fI~/.tcshrc\fR をロードします。 新しいバージョンの \fIsu\fR(1) は \fB-m\fR をシェルに渡すことが できます。(+) .TP 4 .B \-n コマンドの解析は行いますが、実行はしません。 シェルスクリプトのデバッグに役立ちます。 .TP 4 .B \-q SIGQUIT (\fBシグナル処理\fRの項を参照) を受け付けるようにし、 デバッガのもとで使われても作動するようになります。 ジョブ制御は無効になります。(u) .TP 4 .B \-s 標準入力からコマンドを読み込みます。 .TP 4 .B \-t 入力から 1 行だけ読み込み、それを実行します。入力行の改行の直前に `\\' を置くことで、次の行への継続を行うことができます。 .TP 4 .B \-v シェル変数 \fBverbose\fR を設定します。 これにより、ヒストリ置換された状態のコマンド行を表示するようになります。 .TP 4 .B \-x シェル変数 \fBecho\fR を設定します。これにより、実行直前に、 実行するコマンドを表示するようになります。 .TP 4 .B \-V \fI~/.tcshrc\fR を実行する前に、シェル変数 \fBverbose\fR を設定します。 .TP 4 .B \-X \fI~/.tcshrc\fR を実行する前に、シェル変数 \fBecho\fR を設定します。 .TP 4 .B \-X に対する \fB-x\fR の関係は、\fB-V\fR に対する \fB-v\fR の関係に 相当します。 .PP フラグ引数の処理のあと、もし引数が残っていて、かつ、 \fB-c\fR, \fB-i\fR, \fB-s\fR, \fB-t\fR のいずれのフラグも 指定されていなければ、残っている引数のうち最初のものは コマンドファイル、つまり「スクリプト」の名前とみなされます。 シェルはこのファイルをオープンし、`$0' による置換に備えて ファイル名を保存します。 多くのシステムは、スクリプトが本シェルと互換性のない version 6 または version 7 の標準のシェルを使っているため、 スクリプトの先頭の文字が `#' でない場合、 つまりスクリプトがコメントから始まらない場合、本シェルは それらの「標準」のシェルを起動して実行します。 .PP 残りの引数はシェル変数 \fBargv\fR に設定されます。 .SS "スタートアップとシャットダウン" ログインシェルの場合は、実行開始に際し、まずシステムファイル \fI/etc/csh.cshrc\fR と \fI/etc/csh.login\fR を読み込んで実行します。 そしてシェルを起動したユーザの\fBホーム\fRディレクトリの中から、 まずはじめに \fI~/.tcshrc\fR (+) を読み込んで実行します。 もし、\fI~/.tcshrc\fR が見つからない場合は、\fI~/.cshrc\fR を 読み込んで実行します。 次に、\fI~/.history\fR (もしくは、シェル変数 \fBhistfile\fR の値) を、 その次に \fI~/.login\fR を、最後に、\fI~/.cshdirs\fR (もしくは、 シェル変数 \fBdirsfile\fR の値) (+) を読み込んで実行します。 コンパイルの仕方によって、シェルは \fI/etc/csh.cshrc\fR の後ではなく前に \fI/etc/csh.login\fR を読み込み、 \fI~/.tcshrc\fR (または \fI~/.cshrc\fR) と \fI~/.history\fR の後ではなく前に \fI~/.login\fR を読み込む場合があります。 シェル変数 \fBversion\fR を参照してください。(+) .PP ログインシェルでない場合は、\fI/etc/csh.cshrc\fR と、 \fI~/.tcshrc\fR (または \fI~/.cshrc\fR) のみを起動時に読み込みます。 .PP スタートアップファイルの例は、 \fIhttp://tcshrc.sourceforge.net\fR を見てください。 .PP \fIstty\fR(1) や \fItset\fR(1) のようなコマンドは、ログインする ごとに 1 度だけ実行される必要がありますが、これらのコマンドは、 普通は \fI~/.login\fR ファイルに入れます。 \fIcsh\fR(1) と \fItcsh\fR の両方で同じファイルのセットを使う 必要があるユーザは、\fI~/.cshrc\fR だけを使い、その中で シェル変数 \fBtcsh\fR (値は任意) があるかどうかチェックして から、\fItcsh\fR 特有のコマンドを使うようにします。または、 \fI~/.cshrc\fR と \fI~/.tcshrc\fR の両方を使うが、\fI~/.tcshrc\fR で、 \fIsource\fR コマンド (組み込みコマンドの項を参照) を使い \fI~/.cshrc\fR を読み込むようにします。 以下、このマニュアルの残りの部分で `\fI~/.tcshrc\fR' と表現したときは、 「\fI~/.tcshrc\fR、または \fI~/.tcshrc\fR が見つからない 場合は \fI~/.cshrc\fR」という意味で使います。 .PP 通常、シェルはプロンプト `> ' を表示し、端末からコマンドの読み込みを 開始します (引数処理と、コマンドスクリプトを含むファイルの処理のための シェルの使用については、後で説明します)。 シェルは、入力されたコマンド行の読み込み、読み込んだコマンド行を単語に 分解、およびコマンド履歴への格納、コマンド行の解析、 コマンド行の中のコマンドそれぞれの実行を繰り返します。 .PP ログアウトするには、空の行で `^D' とタイプするか、`logout' するか、 `login' するか、シェルの自動ログアウト機構 (シェル変数 \fBautologout\fR を参照) を使います。 ログインシェルが実行終了する際には、ログアウトの状況に応じて シェル変数 \fBlogout\fR を `normal' か `automatic' に設定し、 \fI/etc/csh.logout\fR ファイルと \fI~/.logout\fR ファイルにある コマンドを実行します。 コンパイルの仕方によっては、シェルは、ログアウト時に DTR を落とす ことがあります。これについてはシェル変数 \fBversion\fR を参照してください。 .PP システムのログインファイル名、ログアウトファイル名は、 異なる \fIcsh\fR(1) 間での互換性を保つために、 システムごとにファイルが違います。これについては、 \fB関連ファイル\fRを参照してください。 .SS 編集 はじめに、\fBコマンド行エディタ\fRについて説明します。 \fB補完と一覧\fRと、\fBスペル訂正\fRの 2 つの機能は、 編集コマンドとして実装されていますが、 特に分けて説明する必要があるため、項を改めて説明します。 最後に、\fB編集コマンド\fRの項で、シェルに特有の編集コマンドについて、 一覧をあげ、デフォルトのバインドとともに説明します。 .SS "コマンド行編集 (+)" コマンド行の入力データは、GNU Emacs や \fIvi\fR(1) で使われているものと、 よく似たキーシーケンスを使って編集できます。 シェル変数 \fBedit\fR がセットされているときのみ、編集できるように なっています。対話的なシェルでは、この値はデフォルトで 設定されています。 組み込みコマンド \fIbindkey\fR で、キーバインドを変更したり、 表示したりできます。 デフォルトでは、Emacs 形式のキーバインドが使われています (違う方法でコンパイルしなければそうなります。 シェル変数 \fBversion\fR を参照)。 しかし、コマンド \fIbindkey\fR で、キーバインドを \fIvi\fR 形式に 一括して変更できます。 .PP シェルは、つねに矢印キー (環境変数 \fBTERMCAP\fR で定義されたものです) を、次のように割り付けています。 .PP .PD 0 .RS +4 .TP 8 下矢印 \fIdown-history\fR .TP 8 上矢印 \fIup-history\fR .TP 8 左矢印 \fIbackward-char\fR .TP 8 右矢印 \fIforward-char\fR .PD .RE .PP 他の 1 文字バインドによって、変わっていなければこのようになります。 このようなバインドにしたくない場合、\fIsettc\fR を使って、矢印キーの エスケープシーケンスを空の文字列にセットすることができます。 ANSI/VT100 の矢印キーシーケンスは、つねにバインドされています。 .PP その他のキーバインドは、そのほとんどは、Emacs、\fIvi\fR(1) ユーザが 予想できるものです。また、簡単に \fIbindkey\fR コマンドで表示させる こともできるので、ここで、それらのバインドを並べあげる必要は ないでしょう。 同じく、\fIbindkey\fR コマンドは、それぞれの編集コマンドを 簡単な説明付きで、表示させることができます。 .PP 注意: 「単語」という概念に関して、編集コマンドは、シェルと同じ概念を 持たないことに注意してください。 エディタは、シェル変数 \fBwordchars\fR の中にはない非英数文字 (英文字、数字のどちらでもない文字) によって単語の区切りを決めます。 一方、シェルは、ホワイトスペース (空白、タブ、改行) と、 \fB字句構造\fRの項で列挙する特殊な意味を持つ文字のいくつかを 識別します。 .SS "補完と一覧 (+)" シェルは、一意に決まる短縮形を与えられると、しばしば単語の補完を 行うことができます。 単語の一部 (たとえば `ls /usr/lost') をタイプして、タブキーを押すと、 編集コマンド \fIcomplete-word\fR が実行します。シェルは、 ファイル名 `/usr/lost' を補完して `/usr/lost+found/' にします。 このとき、入力バッファの中で、不完全な単語を完全な単語で置き換えます。 (注意: 末端の `/' について: 補完では、ディレクトリ名を補完すると 最後に `/' を付け加えます。 そして、ディレクトリ名以外の単語を補完すると、末尾に空白文字を 付け加えます。こうすることで、タイプ入力が速くなり、また、 補完が成功したことが一目で分かります。 シェル変数 \fBaddsuffix\fR のセットをはずせば、 これらを付け加えなくすることもできます。) 合致するものが見当たらない場合 (おそらく `/usr/lost+found' が 存在しない場合でしょう)、端末のベルが鳴ります。 単語がすでに補完されている場合 (システムに `/usr/lost' が 存在する場合か、あるいは、ユーザがはるか先まで考えて、すべてを 入力してしまっていた場合でしょう)、`/' または空白文字が末尾に まだなければ、付け加えられます。 .PP 補完は、行の一番最後でなくても、途中どこででも機能します。 そして、テキストの補完によって、その分、行の残りは右方向へ押されます。 単語の中間で補完された場合、しばしばカーソルの右側に文字が残り、 それを消すはめになることもあります。 .PP コマンドと変数は、ほとんど同じ方法で補完できます。 たとえば、`em[tab]' とタイプした時、使用しているシステムで `em' から始まるコマンドが唯一 \fIemacs\fR だけならば、 `em' は `emacs' と補完されます。 補完は、\fBpath\fR 中のディレクトリにあるコマンドか、 フルパスが与えられれば、そこにあるコマンドを見つけ出すことができます。 `echo $ar[tab]' とタイプした時、他に `ar' から始まる変数がなければ、 `$ar' は `$argv' と補完されます。 .PP シェルは、入力バッファを解析して、補完したい単語を、ファイル名としてか、 コマンドとしてか、変数としてか、どのように補完すべきかを決めます。 バッファの中の最初の単語と、`;', `|', `|&', `&&', `||' の すぐ次にくる単語は、コマンドとみなします。 `$' で始まる単語は、変数とみなします。 その他のものは、ファイル名とみなします。 空の行は、ファイル名として `補完されて' います。 .PP いつでも、`^D' とタイプすることで、編集コマンド \fIdelete-char-or-list-or-eof\fR を実行させて、 補完可能な単語の候補を並べ挙げることができます。 シェルは、組み込みコマンド \fIls-F\fR (q.v.) を使って、 補完可能な候補を並べ挙げます。 そして、プロンプトと未完成のコマンドラインを再表示します。 次に例を示します。 .IP "" 4 > ls /usr/l[^D] .br lbin/ lib/ local/ lost+found/ .br > ls /usr/l .PP シェル変数 \fBautolist\fR をセットしていれば、シェルは、 補完に失敗したときはいつでも残りの選択肢を表示します。 .IP "" 4 > set autolist .br > nm /usr/lib/libt[tab] .br libtermcap.a@ libtermlib.a@ .br > nm /usr/lib/libterm .PP シェル変数 \fBautolist\fR を `ambiguous (あいまいな)' に セットした場合は、補完に失敗して補完される単語へ新しい文字を それ以上追加できなくなったときに限り、選択肢を表示します。 .PP 補完するファイル名には、変数、自分もしくは他人のホームディレクトリ (`~' で短縮したもの。\fBファイル名置換\fRの項を参照)、 ディレクトリスタックエントリ (`=' で短縮したもの。 \fBディレクトリスタック置換\fRの項を参照) を含めることができます。 たとえば、次のようになります。 .IP "" 4 > ls ~k[^D] .br kahn kas kellogg .br > ls ~ke[tab] .br > ls ~kellogg/ .PP あるいは、 .IP "" 4 > set local = /usr/local .br > ls $lo[tab] .br > ls $local/[^D] .br bin/ etc/ lib/ man/ src/ .br > ls $local/ .PP 変数については、編集コマンド \fIexpand-variables\fR を指定して使っても 展開できることに注意してください。 .PP コマンド \fIdelete-char-or-list-or-eof\fR は、行の最後でのみ リストを表示します。 行の中間の場合、カーソル位置の文字を消去します。 空行の場合、ログアウトします。ただし、\fBignoreeof\fR がセットされて いれば、何もしません。 `M-^D' は、編集コマンド \fIlist-choices\fR にバインドされていますが、 これは行中のどこでも、補完の候補のリストを表示します。 \fIlist-choices\fR (または、\fIdelete-char-or-list-or-eof\fR のところで 列挙するコマンドで、消去するコマンド、しないコマンド、 リスト表示するコマンド、ログアウトするコマンドのどれでも) は、そうしたい場合、組み込みコマンド \fIbindkey\fR で `^D' にバインドすることもできます。 .PP 編集コマンド \fIcomplete-word-fwd\fR と \fIcomplete-word-back\fR (デフォルトでは、どのキーにも割り付けられていません) を使うことで、 補完候補のリストを上または下に順に巡り、リスト上の現在の単語を、 次の単語または 1 つ前の単語に置き換えることができます。 .PP シェル変数 \fBfignore\fR に、補完の際に無視するファイルの サフィックスのリストをセットできます。 次の例を考えてみます。 .IP "" 4 > ls .br Makefile condiments.h~ main.o side.c .br README main.c meal side.o .br condiments.h main.c~ .br > set fignore = (.o \\~) .br > emacs ma[^D] .br main.c main.c~ main.o .br > emacs ma[tab] .br > emacs main.c .PP `main.c~' と `main.o' は、\fBfignore\fR にサフィックスが 登録されているために、補完では無視されます (しかしリスト上には表示されます)。 \fBファイル名置換\fRの項で解説しているように、\fBhome\fR に 拡張されないようにするために、`~' の前に `\\' が必要なことに 注意してください。補完の候補が1 つしかない場合は、 \fBfignore\fR の設定は無視されます。 .PP シェル変数 \fBcomplete\fR が `enhance(拡張)' にセットされていた場合、補完は 1) 大文字小文字の区別を無視し、 2) ピリオド、ハイフン、アンダスコア (`.', `\-', `_')を、 単語を分ける記号であるとみなし、ハイフンとアンダスコアは 同等なものとみなします。 次のようなファイルがある場合、 .IP "" 4 comp.lang.c comp.lang.perl comp.std.c++ .br comp.lang.c++ comp.std.c .PP `mail \-f c.l.c[tab]' とタイプすれば、`mail \-f comp.lang.c' のように補完され、^D の場合には、`comp.lang.c' と `comp.lang.c++' が リストとして表示されます。 `mail \-f c..c++[^D]' とタイプした場合は、`comp.lang.c++' と `comp.std.c++' が表示されます。 次のファイルがあるディレクトリで、`rm a\-\-file[^D]' とタイプした 場合、 .IP "" 4 A_silly_file a-hyphenated-file another_silly_file .PP の 3 つのファイルすべてが一覧表示されます。 なぜならば、大文字小文字の区別は無視されて、 ハイフンとアンダスコアは同等と解釈されるからです。しかしながら、 ピリオドは、ハイフンやアンダスコアと同等ではありません。 .PP 補完と一覧は、他にもいくつかのシェル変数の影響を受けます。 そのひとつ、\fBrecexact\fR をセットすると、続けてタイプすれば より長い単語に合致するような場合でさえも、 最短で一意に一致する単語に合致するようになります。たとえば、 .IP "" 4 > ls .br fodder foo food foonly .br > set recexact .br > rm fo[tab] .PP この場合はベルが鳴るだけです。 なぜなら、`fo' は、`fod' または `foo' に展開できるからです。 しかし、さらに `o' とタイプすると、 .IP "" 4 > rm foo[tab] .br > rm foo .PP `food' や `foonly' も合致するにもかかわらず、 補完は `foo' で完了します。 \fBautoexpand\fR をセットすると、補完を試みる前に、毎回、 編集コマンド \fIexpand-history\fR を実行するようになります。 \fBautocorrect\fR をセットすると、補完を試みる前に、毎回、 その単語のスペル訂正をするようになります (\fBスペル訂正\fRの項を参照)。 \fBcorrect\fR をセットすると、`return (enter)' キーを押したあと、 自動的にコマンドを補完するようになります。 \fBmatchbeep\fR をセットすると、補完に際して、状況の変化に応じて、 ベルを鳴らしたり、鳴らないようにできます。 \fBnobeep\fR をセットすると、まったくベルを鳴らさないようにできます。 \fBnostat\fR には、ディレクトリのリストやディレクトリに 合致するパターンをセットでき、これらのディレクトリで補完機構が \fIstat\fR(2) を実行しないようにすることができます。 \fBlistmax\fR や \fBlistmaxrows\fR にセットすることで、 まず問い合わせずに一覧表示する項目の数や、列の数を、それぞれ 制限することができます。 \fBrecognize_only_executables\fR をセットすると、 シェルがコマンド一覧を表示する際に、実行可能ファイルだけを 一覧表示するようにさせることができます。ただし、動作はきわめて 遅くなります。 .PP 最後に、組み込みコマンド \fIcomplete\fR を使って、ファイル名、 コマンド、変数以外の単語を補完する方法をシェルに教えることができます。 補完と一覧は、グロブパターン (\fBファイル名置換\fRの項を参照) 上では機能しませんが、編集コマンド \fIlist-glob\fR と \fIexpand-glob\fR はグロブパターンに対し同等の機能として実行されます。 .SS "スペル訂正 (+)" シェルは、補完したり一覧表示するのと同様に、ファイル名、コマンド、 変数名のスペルを訂正することができることがあります。 .PP 個々の単語は、編集コマンド \fIspell-word\fR (普通は M-s と M-S に バインドされています) でスペル訂正できます。入力バッファ全体は \fIspell-line\fR (普通は M-$ に割り付けられています) で スペル訂正できます。 シェル変数 \fBcorrect\fR に `cmd' を設定されておけば、コマンド名が スペル訂正されます。`all' を設定しておけば、リターンがタイプされる たびに行全体がスペル訂正されます。 \fBautocorrect\fR がセットされていれば、単語に補完を試みる前に その単語をスペル訂正します。 .PP スペル訂正が、ここで説明した方法のいずれかにより呼び出され、 コマンド行のどこかにスペル誤りがあると判断すると、 シェルは、次のように訂正済みのコマンド行を表示し入力を待ちます。 .IP "" 4 > set correct = cmd .br > lz /usr/bin .br CORRECT>ls /usr/bin (y|n|e|a)? .PP これに対し、`y' または空白文字で答えると、訂正済み行を実行し、 `e' で答えると、入力バッファに訂正前のコマンドを残し、 `a' で答えると、`^C' が押された場合と同様にコマンドを中止し、 それ以外の場合は、元のままの行を変えないで実行します。 .PP スペル訂正は、ユーザ定義の補完を識別します (組み込みコマンド \fIcomplete\fR を参照)。 もし、補完が実行される位置で、入力された単語が補完リストの中の単語に 似ていたとき、スペル訂正は、ミススペル記録して、見つかった単語を 訂正候補として提案します。しかし、入力された単語がその位置で、 どの補完候補にも合致しなかった時、スペル訂正は、 ミススペルを示しません。 .PP 補完と同様、スペル訂正は行のどこでも機能します。行の残りを右に 押し出したり、残りの余分な文字をカーソルの右に残したりします。 .PP 注意: スペル訂正は、意図どおりに動作する保証はありません。 そして、ほとんど実験的な機能として提供されています。 提案、改善する点があれば歓迎します。 .SS "編集コマンド (+)" `bindkey' はキーバインド一覧を表示し、 `bindkey \-l' は編集コマンドの一覧と短い解説を表示します。 ここでは、新しい編集コマンド、または、特に興味深い編集コマンドに ついてのみ解説します。 エディタのキーバインド割り付けの記述については、 \fIemacs\fR(1) と \fIvi\fR(1) を参照してください。 .PP デフォルトでそれぞれのコマンドにバインドられた文字 (あるいは複数文字) は、括弧の中に示しました。 `^\fIcharacter\fR' は制御文字を意味します。 `M-\fIcharacter\fR'はメタ文字です。 メタキーがない端末の場合は、escape-\fIcharacter\fR とタイプします。 大文字小文字の区別はありますが、 デフォルトで英文字に割り付けられるコマンドは、便宜上、 大文字、小文字の両方にキーバインドされています。 .TP 8 .B complete-word \fR(tab) \fB補完と一覧\fRの項で解説しているとおり、単語を補完します。 .TP 8 .B complete-word-back \fR(not bound) \fIcomplete-word-fwd\fR と同様ですが、単語リストの終わりから、 上へあがって行きます。 .TP 8 .B complete-word-fwd \fR(not bound) 現在の単語を、補完可能単語リスト上の始めの単語で置き換えます。 本コマンドを繰り返すことで、単語リスト上を下へ降りていくことができます。 単語リストの最後までいくと、ベルが鳴り、未補完の単語へ戻ります。 .TP 8 .B complete-word-raw \fR(^X-tab) \fIcomplete-word\fR と同様ですが、ユーザ定義した補完は無視されます。 .TP 8 .B copy-prev-word \fR(M-^_) 現在の行で、1 つ前の単語を入力バッファへコピーします。 \fIinsert-last-word\fR も参照してください。 .TP 8 .B dabbrev-expand \fR(M-/) 以前入力した単語の中で、現在の単語が先頭部分文字列であり、しかも 最近のものを見つけて、それで展開します。 必要ならば、ヒストリリストを一周回って元に戻って探します。 \fIdabbrev-expand\fR を中断せず繰り返すことで、 その次の単語に変わります。 \fIhistory-search-backward\fR と同様に、同一のマッチングは スキップします。 .TP 8 .B delete-char \fR(割り付けなし) カーソル下の文字を削除します。 \fIdelete-char-or-list-or-eof\fR も参照してください。 .TP 8 .B delete-char-or-eof \fR(割り付けなし) カーソル下に文字があれば \fIdelete-char\fR を実行し、 空行では \fIend-of-file\fR を実行します。 \fIdelete-char-or-list-or-eof\fR も参照してください。 .TP 8 .B delete-char-or-list \fR(割り付けなし) カーソル下に文字があれば \fIdelete-char\fR を実行し、 行の末尾では \fIlist-choices\fR を実行します。 \fIdelete-char-or-list-or-eof\fR も参照してください。 .TP 8 .B delete-char-or-list-or-eof \fR(^D) カーソル下に文字があれば \fIdelete-char\fR を実行し、 行の末尾では \fIlist-choices\fR を実行し、 空行では \fIend-of-file\fR を実行します。 これらの 3 つのコマンドも参照してください。 これらのコマンドは、それぞれ 1 つの動作を実行するだけです。 \fIdelete-char-or-eof\fR, \fIdelete-char-or-list\fR, \fIlist-or-eof\fR は、 それぞれ 3 つのうちの異なる 2 つを実行します。 .TP 8 .B down-history \fR(下矢印, ^N) \fIup-history\fR と同様ですが、1 つずつ下に移動し、もとの入力行で止まります。 .TP 8 .B end-of-file \fR(割り付けなし) ファイルの終端であることをシェルに通知します。 シェル変数 \fBignoreeof\fR (そちらも参照) がセットされて いない場合、その結果として、シェルは実行を終了します。 \fIdelete-char-or-list-or-eof\fR も参照してください。 .TP 8 .B expand-history \fR(M-space) 現在の単語のヒストリ置換を展開します。 \fBヒストリ置換\fRを参照してください。 \fImagic-space\fR, \fItoggle-literal-history\fR と、シェル変数 \fBautoexpand\fR も参照してください。 .TP 8 .B expand-glob \fR(^X-*) カーソルの左にグロブパターンを展開します。 \fBファイル名置換\fRを参照してください。 .TP 8 .B expand-line \fR(割り付けなし) \fIexpand-history\fR と同様ですが、入力バッファのそれぞれの単語の ヒストリ置換を展開します。 .TP 8 .B expand-variables \fR(^X-$) カーソルの左に変数を展開します。 \fB変数置換\fRを参照してください。 .TP 8 .B history-search-backward \fR(M-p, M-P) ヒストリリストを後方へ向かって、入力バッファの現在の中身 (カーソル位置まで) で始まるコマンドを検索し、 それを入力バッファへコピーします。 検索文字列は、`*', `?', `[]', `{}' を含んだグロブパターン (\fBファイル名置換\fRを参照) であってもかまいません。 \fIup-history\fR と \fIdown-history\fR は、ヒストリリストの該当する 地点から始める事ができます。 Emacs モードのみです。 \fIhistory-search-forward\fR と \fIi-search-back\fR も参照してください。 .TP 8 .B history-search-forward \fR(M-n, M-N) \fIhistory-search-backward\fR と同様ですが、前方へ検索します。 .TP 8 .B i-search-back \fR(割り付けなし) 後方へ、\fIhistory-search-backward\fR のように検索して、 最初に合致したものを入力バッファへコピーし、 カーソルをパターンの最後に位置させます。 そして、`bck: 'プロンプトと最初に合致したものを表示します。 追加の文字をタイプして、その検索を延長することができます。 \fIi-search-back\fR をタイプして、同じパターンで検索を延長する こともできます。必要があれば、ヒストリリストを一周回って 元に戻って検索を続けます。 (これを行うためには、\fIi-search-back\fR は、1 文字に バインドされていなければなりません。) あるいは、以下の特殊文字をタイプすることもできます。 .PP .RS +8 .RS +4 .PD 0 .TP 8 ^W カーソル下の単語の残りを検索パターンに加えます。 .TP 8 delete (あるいは \fIbackward-delete-char\fR にバインドされた文字) 最後にタイプされた文字の効果をとりけし、 適当なら検索パターンから文字を削除します。 .TP 8 ^G 前の検索が成功していたなら、検索全体を中止します。 そうでないなら、一番最後に成功した検索まで戻ります。 .TP 8 escape 検索を終え、入力バッファの現在の行をそのまま残します。 .RE .PD .PP この他の文字で、\fIself-insert-command\fR にバインドされている 以外のものをタイプすると、検索が終了します。入力バッファの現在の行は そのままになり、タイプした文字は通常の入力として解釈されます。 特に、キャリッジリターンの場合は、現在の行を実行に移します。 Emacs モードのみです。 \fIi-search-fwd\fR と \fIhistory-search-backward\fR も参照してください。 .RE .TP 8 .B i-search-fwd \fR(割り付けなし) \fIi-search-back\fR と同様ですが、前方へ検索します。 .TP 8 .B insert-last-word \fR(M-_) 1 つ前の入力行 (`!$') の最後の単語を入力バッファに挿入します。 \fIcopy-prev-word\fR も参照してください。 .TP 8 .B list-choices \fR(M-^D) \fB補完と一覧\fRで解説しているように、補完の可能性を一覧表示します。 \fIdelete-char-or-list-or-eof\fR と \fIlist-choices-raw\fR も 参照してください。 .TP 8 .B list-choices-raw \fR(^X-^D) \fIlist-choices\fR と同様ですが、ユーザ定義された補完を無視します。 .TP 8 .B list-glob \fR(^X-g, ^X-G) カーソルの左側のグロブパターン (\fBファイル名置換\fRを参照) に 合致したものを (組み込みコマンド \fIls\-F\fR を用いて) 一覧表示します。 .TP 8 .B list-or-eof \fR(割り付けなし) \fIlist-choices\fR を実行するか、または、空行の場合 \fIend-of-file\fR を 実行します。\fIdelete-char-or-list-or-eof\fR も参照してください。 .TP 8 .B magic-space \fR(割り付けなし) まず \fIexpand-history\fR と同様に、現在の行のヒストリ置換を展開して、 その後で空白を 1 つ付け加えます。 \fImagic-space\fR はスペースキーにバインドするように 設計されていますが、デフォルトではバインドされていません。 .TP 8 .B normalize-command \fR(^X-?) パスの中の現在の単語を検索します。そして、見つかった場合、 実行可能ファイルを指すフルパスで置き換えます。 特殊文字はクォートされます。エイリアスは展開されて、クォートされますが、 エイリアス中のコマンドは展開 / クォートされません。 このコマンドは、たとえば、`dbx' や `sh \-x' などのように、 コマンドが引数を取得する場合に役立ちます。 .TP 8 .B normalize-path \fR(^X-n, ^X-N) シェル変数 \fBsymlinks\fR の設定 `expand' の項で説明されているように、 現在の単語を展開します。 .TP 8 .B overwrite-mode \fR(割り付けられていません) 入力モードと上書きモードの間で切り替えます。 .TP 8 .B run-fg-editor \fR(M-^Z) 現在の入力行を保存します。そして、環境変数 \fBEDITOR\fR または \fBVISUAL\fR のファイル名部分の最後の構成要素 (または、どちらもセットされていなければ、`ed' か `vi') と等しい名前を持ち、ストップしているジョブを探します。 そのようなジョブが見つかれば、`fg %\fIjob\fR' とタイプしたのと 同じように、実行再開されます。 これは、エディタとシェルの間を抜けて交互に切り替えるのを容易にする ために使われます。 このコマンドを `^Z' にバインドし、もっと簡単に交互の切り替えが できるようにする人もいます。 .TP .B run-help \fR(M-h, M-H) 補完ルーチンの `現在のコマンド' と同じ概念による 現在のコマンドのドキュメントを検索し、表示します。 ページャを使う方法はありません。\fIrun-help\fR は短いヘルプファイルと のために設計されているためです。 特別なエイリアス \fBhelpcommand\fR が定義されていた場合、 コマンド名を唯一の引数としてその値が実行されます。 ほかに、ドキュメントのファイル名は、\fIコマンド名\fR.help, \fIコマンド名\fR.1, \fIコマンド名\fR.6, \fIコマンド名\fR.8, \fIコマンド名\fRのいずれかでなければなりません。 また、そのファイルは、環境変数 \fBHPATH\fR の中で、 一覧にあがっているディレクトリのうちの 1 つに入っていなければなりません。 もし、1 つ以上のヘルプファイルがある場合は、最初の 1 つのみが プリントされます。 .TP 8 .B self-insert-command \fR(テキスト文字) 挿入モード (デフォルト) では、タイプした文字を、 カーソル下の文字の後に挿入します。 上書きモードでは、タイプした文字で、カーソル下の文字を置き換えます。 入力モードは、通常、各行の間で維持されていますが、 シェル変数 \fBinputmode\fR を `insert(挿入)' あるいは、 `overwrite(上書き)' にセットしておくと、 エディタを、各行の始まりで、そのモードにすることができます。 \fIoverwrite-mode\fR も参照してください。 .TP 8 .B sequence-lead-in \fR(矢印接頭辞、メタ接頭辞、^X) 次に続く文字がマルチキーシーケンス (複数文字の連続) であることを 表します。マルチキーシーケンスをコマンドにバインドする場合、 実際には、次の 2 つのバインドを作ります。 まず、最初の文字を \fIsequence-lead-in\fR とします。そして、 シーケンス全体をそのコマンドにバインドします。 \fIsequence-lead-in\fR にバインドされた文字で始まる すべてのシーケンスは、他のコマンドにバインドされていなければ、 実質的には \fIundefined-key\fR にバインドされたのと同じことに なります。 .TP 8 .B spell-line \fR(M-$) \fIspell-word\fR と同様に、入力バッファ中の各単語のスペル訂正を 試みます。しかし、単語の最初の文字が、 `\-', `!', `^', `%' のうちのどれかの場合と、 単語中に `\\', `*', `?' のいずれかを含んでいる場合は、 スイッチや、置換などの問題を避けるために、これらの単語を無視します。 \fBスペル訂正\fRを参照してください。 .TP 8 .B spell-word \fR(M-s, M-S) \fBスペル訂正\fRの項で説明されているのと同じやり方で、現在の単語の スペルの訂正を試みます。 パス名として現れる単語の部分をそれぞれにチェックします。 .TP 8 .B toggle-literal-history \fR(M-r, M-R) 入力バッファのヒストリ置換を展開したり、`しなかったり' します。 \fIexpand-history\fR と、シェル変数 \fBautoexpand\fR も参照してください。 .TP 8 .B undefined-key \fR(割り付けのコマンドが無いキー) ベルを鳴らします。 .TP 8 .B up-history \fR(上矢印, ^P) ヒストリリストの中から 1 つ前のエントリを入力バッファにコピーします。 \fBhistlit\fR がセットされている場合、その記入された文字どおりの 形式を使います。 ヒストリリストを上の方へ 1 つずつ移動を繰り返した場合、 一番上で止まります。 .TP 8 .B vi-search-back \fR(?) 検索文字列 (\fIhistory-search-backward\fR と同様、グロブパターンでも 構いません) の入力のために `?' をプロンプト表示します。 その文字列を検索して、同じ文字列を入力バッファへコピーします。 合致するものが見つからなければ、ベルが鳴ります。 リターンキー (enter キー) を押すと、検索を終了して、入力バッファ中に 最後に合致した単語を残します。 escape キーを押すと、検索を終了して、合致したものを実行します。 \fIvi\fR モードのみです。 .TP 8 .B vi-search-fwd \fR(/) \fIvi-search-back\fR と同様ですが、前方へ検索します。 .TP 8 .B which-command \fR(M-?) 入力バッファの最初の単語に対して、\fIwhich\fR (組み込みコマンド の解説を参照) を実行します。 .SS "字句構造" シェルは入力された行をタブや空白で単語に分割します。 特殊文字 `&', `|', `;', `<', `>', `(', `)', 2 文字繰り返しの `&&', `||', `<<' , `>>' は、空白で囲まれているか どうかにかかわらず、常に単語の区切りになります。 .PP シェルの入力が端末からではないとき、文字 `#' は、コメントの始まりと して扱われます。`#' とその後ろの入力行の残りはコメントと解釈され、 文法解析されずに捨てられます。 .PP 特殊文字 (空白、タブ含む) は、その文字の直前にバックスラッシュ `\\' を置くことで、または、単一引用符 `''、二重引用符 `"'、 逆引用符 ``' で囲むことで、特殊な意味合いを持たないようにしたり、 場合によっては、他の単語の一部分にすることもできます。 他に引用がなされない限り、`\\' の直後に改行文字を置くと、改行文字は 空白扱いになります。しかし、引用中では、この文字の並びは改行文字に なります。 .PP さらに、\fBヒストリ置換\fRを除く、すべての\fB置換\fR (次項を参照) は、置換を含む文字列 (あるいは文字列の一部) を 単一引用符で囲むことで防ぐことができます。 あるいは、重大な文字 (たとえば、\fB変数置換\fR ならば `$' や、\fBコマンド置換\fRならば ``') を `\\' で クォートすることで 防ぐことができます。(\fBエイリアス置換\fRも例外ではありません。 一度定義された \fIalias\fR に対して、何らかの方法でその単語の どれかの文字をクォートすることで、そのエイリアスの置換を防ぐことが できます。エイリアスをクォートする普通の方法は、そのエイリアスの前に バックスラッシュを置くことです。) \fBヒストリ置換\fRは、バックスラッシュを用いることで防ぐことが -できますが、単一引用符では防ぐことができません。。 +できますが、単一引用符では防ぐことができません。 二重引用符、逆引用符でクォートされた文字列は、 \fB変数置換\fRと\fBコマンド置換\fRは受けますが、 その他の置換は受けません。 .PP 単一引用符、二重引用符で囲まれたテキストは 1 つの単語 (または その一部) となります。 それらの文字列中のメタ文字 (空白、タブを含む) は、単語を分割しません。 ひとつだけ特殊な場合 (次の\fBコマンド置換\fRを参照) として、 二重引用符で囲まれた文字列を 1 つ以上の単語に分けることができます。 これは、単一引用符で囲まれた文字列では決してできません。 逆引用符は特殊で、\fBコマンド置換\fR (そちらも参照) に、 影響を与え、その結果が 1 つ以上の単語になることもあります。 .PP 複雑な文字列をクォートする場合、特に、文字列自身にクォート文字が 含まれている場合は、わかりにくいかもしれません。 人間が書いたものの中では、引用符を引用のために使う必要はないことを 忘れないように! 文字列全体をクォートするのではなく、もし適当ならば異なるタイプの 引用符を用い、クォートする必要のある文字列の一部分のみをクォートする ことの方が、簡単かもしれません。 .PP シェル変数 \fBbackslash_quote\fR (そちらも参照) を セットすると、 バックスラッシュが常に `\\', `'', `"' をクォートするようにできます。(+) これによって、複雑な引用をする仕事が簡単になるかもしれません。 しかし \fIcsh\fR(1) のスクリプトでは、構文エラーの原因になります。 .SS 置換 ここで、シェルが入力に対して行うさまざまな変換を、 処理が行われる順に記述します。同時に、処理に関わるデータ構造と、 データ構造に影響を与えるコマンドと変数とにも触れておきます。 \fB字句構造\fRのところで説明する引用により、置換を抑制できることを 覚えておいてください。 .SS ヒストリ置換 端末から入力したコマンドひとつひとつ (イベント) は、ヒストリリストに 保存されます。直前のコマンドは常に保存されます。さらに、保存する コマンド数を、シェル変数 \fBhistory\fR に設定することができます。 重複するイベントを保存するかどうか、同じイベントの連続をそのまま 保存するかどうかを、シェル変数 \fBhistdup\fR に設定することが できます。 .PP 保存されたコマンドには、1 から始まる連続した番号が振られ、 タイムスタンプが打たれます。普通イベント番号を用いる必要はありませんが、 シェル変数 \fBprompt\fR の中に `!' を置くことで、現在のイベント番号を プロンプトの一部にすることができます。 .PP 実際のところ、シェルは、ヒストリを展開形式と 文字どおり (未展開) の形式とで保存しています。 シェル変数 \fBhistlit\fR を設定しておくと、 ヒストリを表示する / ヒストリに保存するコマンドで 文字どおりの形式を用いるようになります。 .PP 組み込みコマンド \fIhistory\fR により、ヒストリリストの表示、 ファイルに保存、ファイルからの読み込み、クリアをいつでも行えます。 シェル変数 \fBsavehist\fR と \fBhistfile\fR により、 ヒストリリストのログアウト時の自動保存と、ログイン時の自動読み込みを 設定することができます。 .PP ヒストリ置換により、ヒストリリストから単語の列を入力ストリームに 持ち込みます。これにより、前のコマンドの繰り返し、前のコマンドで使った 引数の繰り返し、前のコマンドで間違えたスペルの修正を わずかなキー入力で、かなり確実に 容易に行うことができるようになります。 .PP ヒストリ置換は、文字 `!' で始まります。ヒストリ置換は、 入力ストリームのどこから開始してもかまいませんが、入れ子には できません。 文字 `!' の前に `\\' を置くことで、`!' の特殊な意味を打ち消すことが できます。文字 `!' が、空白文字、タブ文字、改行文字、`='、`(' の 前にある場合は、そうした方が便利なので、無変更のまま渡されます。 入力行が `^' で始まる場合にも、ヒストリ置換が生じます。 この省略表現については後で説明します。 ヒストリ置換を示すための文字 (`!' と `^') は、 シェル変数 \fBhistchars\fR を設定することにより変更することが できます。入力行がヒストリ置換を含む場合、実行前に置換結果が 常に表示されます。 .PP ヒストリ置換には「イベント指定」、「単語指定子 (word designator)」、 「修飾子 (modifier)」を含めることができます。イベント指定は、 どのイベントから単語の列を取り出すかを指定します。単語指定子は、 選択したイベントからどの単語を選ぶかを指定します。修飾子は、 選択した単語をどう操作するかを指定します。 .PP イベント指定には、次のものがあります。 .PP .PD 0 .RS +4 .TP 8 .I n 番号: これはある特定のイベントを指定します。 .TP 8 \-\fIn\fR オフセット: これは現在のイベントの前 \fIn\fR 個目のイベントを 指定します。 .TP 8 # 現在のイベントを指定します。これは \fIcsh\fR(1) の中では注意して 扱わねばなりません。\fIcsh\fR(1) では、再帰呼び出しのチェックを していないからです。\fItcsh\fR では、再帰呼び出しは 10 レベルまで 許されています。(+) .TP 8 ! 1 つ前のイベントを指定します (`\-1' と等価)。 .TP 8 .I s 先頭の単語が \fIs\fR で始まるイベントのうち、最も新しいものを 指定します。 .TP 8 ?\fIs\fR? 文字列 \fIs\fR を含むイベントのうち、最も新しいものを指定します。 直後が改行文字の場合は、2 番目の `?' は省略可能です。 .RE .PD .PP たとえば、次のようなヒストリリストがあるとします。 .IP "" 4 \ 9 8:30 nroff \-man wumpus.man .br 10 8:31 cp wumpus.man wumpus.man.old .br 11 8:36 vi wumpus.man .br 12 8:37 diff wumpus.man.old wumpus.man .PP コマンドが、イベント番号とタイムスタンプ付きで表示されています。 現在のイベントは、まだ入力していませんが、イベント 13 です。 `!11' と `!-2' は、イベント 11 を指します。`!!' は、直前の イベントであるイベント 12 を指します。`!!' は、後ろに `:' が 付いている場合、`!' と省略することができます (`:' は後で説明します)。`!n' は、`n' から始まっている、 イベント 9 を指します。`!?old?' は、`old' を含んでいる イベント 12 を指します。単語指示子も単語修飾子もどちらも含まない場合、 ヒストリ参照はそのイベント全体を展開するだけです。ですから、 コピーコマンドを再実行したいときは `!cp' と入力しますし、`diff' の 出力が画面上端からスクロールして消えてしまう場合、`!!|more' と 入力します。 .PP 必要に応じ、中括弧で囲むことで、ヒストリ置換を前後のテキストから 分離することができます。たとえば、`!vdoc' とすると、`vdoc' で始まる コマンドを探しますが、この例で見つからないにしても、`!{v}doc' では、 あいまいさもなく `vi wumpus.mandoc' に展開されます。 中括弧の中でも、ヒストリ置換は入れ子になりません。 .PP (+) \fIcsh\fR(1) では、たとえば `!3d' は、イベント 3 の後ろに 英文字 `d' を付加して展開しますが、\fItcsh\fR では、これを `3d' で 始まるイベントのうち最新のものに展開します。つまり、完全な数値引数 だけをイベント番号と見なします。これにより、数字から始まるイベントを 呼び出すことが可能となります。`!3d' を \fIcsh\fR(1) のように 展開させるには、`!\\3d' と指定してください。 .PP イベントから単語を選択する場合、`:' と選択する単語を表す指示子を使い、 イベント指定を行うことができます。入力行の単語には、0 から始まる 番号が振られています。最初の単語 (普通、コマンドです) は 0 で、 2 番目の単語 (第 1 引数) は 1 といった具合です。基本的な単語指示子は 次のようになります。 .PP .PD 0 .RS +4 .TP 8 0 最初の単語 (コマンド) .TP 8 .I n \fIn\fR 番目の引数 .TP 8 ^ 最初の引数、`1' と等価 .TP 8 $ 最後の引数 .TP 8 % ?\fIs\fR? 検索で一致した単語 .TP 8 x\-y ある範囲の単語 .TP 8 .I \-y \fI`0\-y'\fR と等価 .TP 8 * `^\-$' と等価。但し、イベントが 1 単語しか含まない場合は何も返さない。 .TP 8 .I x* \fI`x\-$'\fR と等価 .TP 8 .I x\- \fI`x*'\fR と等価。但し、最後の単語 (`$') は除く。 .PD .RE .PP 選択した単語は、空白文字 1 つで区切られてコマンド行に挿入されます。 たとえば、`diff !!:1.old !!:1' と打ち込むことで、先の例の `diff' コマンドを入力することもできます (`:1' で、直前のイベントから 最初の引数を選択しています)。また、`diff !\-2:2 !\-2:1' と 打ち込むことで `cp' コマンドの引数を選択し、入れ換えることができます。 `diff' コマンドの引数の順番を気にしなければ、`diff !\-2:1\-2' と 打ち込んでも構いませんし、単に `diff !\-2:*' でも構いません。 `cp' コマンドは、現在のイベントを指す `#' を使い、 `cp wumpus.man !#:1.old' と書くことができます。`!n:\- hurkle.man' は、 `nroff' コマンドから最初の 2 単語を再利用し、 `nroff \-man hurkle.man' とすることになります。 .PP 文字 `:' は単語指定からイベント指定を分離しますが、引数選択子が `^', `$', `*', `%', `\-' で始まるとき、この文字 `:' は省略可能 です。たとえば、先ほどの `diff' コマンドは `diff !!^.old !!^' もしくは `diff !!$.old !!$' でも構わなかったのです。 しかし、`!!' が `!' に省略可能である場合、`\-' で始まる引数選択子は イベント指定として解釈されます。 .PP ヒストリ参照に、イベント指定のない単語指示子があっても構いません。 その場合、直前のコマンドを参照します。 .ig \" Not true, but we thought it was for a long time ... , unless a previous history reference occurred on the same line in which case this form repeats the previous reference. Thus `!?foo?^ !$' gives the first and last arguments from the command matching `?foo?'. 実際には正しくありませんが、我々は長い間そう信じていました。 ただし、これは同じ行に前のヒストリ参照が現れない場合に限ります。 この場合、この形式は直前の参照を繰り返します。よって、`!?foo?^ !$' は、`?foo?' に一致するコマンドから最初と最後の引数を与えます。 .. `diff' の例を続けるなら、単純に `diff !^.old !^' と入力することが できます。もしくは、逆順の引数を得るだけならば、単に `diff !*' で いいです。 .PP ヒストリ参照の中の単語は編集可能です。つまり、単語の後ろに 1 つまたは 複数の修飾子 (修飾子それぞれは `:' で始まります) を付けることで 「修飾」可能です。 .PP .PD 0 .RS +4 .TP 8 h 先頭のもの 1 つを残し、パス名の構成要素の後ろの部分を削除します。 .TP 8 t 末尾のもの 1 つを残し、パス名の構成要素の先頭の部分を削除します。 .TP 8 r ファイル名拡張子 `.xxx' を削除し、名前の基本部分だけを残します。 .TP 8 e 拡張子だけを残し、他をすべて削除します。 .TP 8 u 最初の英小文字を大文字に変換します。 .TP 8 l 最初の英大文字を小文字に変換します。 .TP 8 s\fI/l/r/\fR \fIl\fR を \fIr\fR で置換します。 \fIl\fR は \fIr\fR と同様に、単なる文字列です。名付け親である \fIed\fR(1) コマンドのような正規表現ではありません。 `/' の代わりに任意の文字を区切り文字として使うことができます。 `\\' を使い、\fIl\fR や \fIr\fR の中で区切り文字をクォートすることが できます。 \fIr\fR 中の文字 `&' は、\fIl\fR で置き換えられます。`\\' で `&' も クォートできます。\fIl\fR が空 (``'') の場合、以前の置換の \fIl\fR 、 または以前のイベント指定 `?\fIs\fR?' の \fIs\fR を使用します。 最後の区切り文字の直後が改行文字の場合、その区切り文字を省略できます。 .TP 8 & 以前の置換を繰り返します。 .TP 8 g 後ろの修飾子を単語それぞれに適用します。 .TP 8 a (+) 後ろの修飾子を、ある単語だけにできるだけ多くの回数、適用します。 `a' と `g' をいっしょに用いて、修飾子をグローバルに適用することが できます。現在の実装では、修飾子 `a' と修飾子 `s' を同時に使用すると、 無限ループに陥る可能性があります。たとえば、`:as/f/ff/' は決して 終わりません。この動作は今後変更されるかもしれません。 .TP 8 p 新しいコマンド行を表示しますが、実行はしません。 .TP 8 q 置換された単語をクォートし、それ以上の置換が起きないようにします。 .TP 8 x q と同じです。ただし、単語を空白 / タブ / 改行文字のところで分割します。 .PD .RE .PP 修飾子は最初に見つかった修飾可能な単語だけに適用されます (`g' を 使用しない限り)。修飾可能な単語がない場合はエラーになります。 .PP たとえば、先の例の `diff' コマンドは、`diff wumpus.man.old !#^:r' とも 書くことができます。これは、`r' を用いて、同じ行 (`!#^') の最初の 引数から `.old' を削除しています。`echo hello out there' と 言っておいてから、`echo !*:u' を使い `hello' を大文字にできます。 `echo !*:au' を使い大声で言うようにできます。`echo !*:agu' を使い 絶叫させることもできます。`mail \-s "I forgot my password" rot' の後で `!:s/rot/root' を続けることで、`root' のスペル間違いを直すこと ができます (スペル間違いの訂正については、\fBスペル訂正\fRの項に 別のやり方があります)。 .PP 置換には特別な省略記法があります。`^' が入力行の先頭にある場合、 `!:s^' と等価です。よって、先の例でスペルを訂正するには、 ^rot^root と言うこともできたわけです。これは明示的に `!' で 始まらないヒストリ置換としては唯一のものです。 .PP (+) \fIcsh\fR では、ヒストリ展開または変数展開に適用される修飾子は 1 つだけです。\fItcsh\fR では、1 つ以上の修飾子が使用される可能性が あります。たとえば、次のような場合を考えます。 .IP "" 4 % mv wumpus.man /usr/man/man1/wumpus.1 .br % man !$:t:r .br man wumpus .PP \fIcsh\fR では、この結果は `wumpus.1:r' となります。コロンが後ろに続く 置換は、中括弧を用いてコロンと区切る必要があります。 .IP "" 4 > mv a.out /usr/games/wumpus .br > setenv PATH !$:h:$PATH .br Bad ! modifier: $. .br > setenv PATH !{\-2$:h}:$PATH .br setenv PATH /usr/games:/bin:/usr/bin:. .PP 最初の試みは \fIcsh\fR では成功しますが、\fItcsh\fR では失敗します。 この理由は、\fItcsh\fR は 2 番目のコロンの後ろに、`$' ではなく 修飾子があると思っているからです。 .PP 最後に、ヒストリはここで説明してきた置換だけでなく、エディタでも 利用することができます。編集コマンド \fIup-history\fR, \fIdown-history\fR, \fIhistory-search-backward\fR, \fIhistory-search-forward\fR, \fIi-search-back\fR, \fIi-search-fwd\fR, \fIvi-search-back\fR, \fIvi-search-fwd\fR, \fIcopy-prev-word\fR, \fIinsert-last-word\fR は ヒストリリスト中のイベントを検索し、入力バッファにイベントを コピーします。編集コマンド \fItoggle-literal-history\fR は、 入力バッファでヒストリ行を展開するか文字どおりに扱うかを切り替えます。 \fIexpand-history\fR, \fIexpand-line\fR はそれぞれ、現在の単語、 または、入力バッファ全体でヒストリ置換を展開します。 .SS エイリアス置換 シェルは、エイリアスのリストを保持しています。このリストは、 \fIalias\fR, \fIunalias\fR コマンドを使って設定、削除、表示する ことができます。コマンド行を解釈し単純コマンド (\fBコマンド\fRを参照) に分割したあと、複数のコマンドを左から右へ、それぞれの最初の単語が エイリアスを持っているかをチェックします。エイリアスを持っている 場合、最初の単語をエイリアスで置き換えます。置き換えたエイリアスが ヒストリ参照を含む場合、元のコマンドを直前の入力行とみなして、 \fBヒストリ置換\fR (そちらも参照) が適用されます。 エイリアスがヒストリ置換を含まない場合、引数リストは変更されず そのままです。 .PP そのため、たとえば `ls' のエイリアスが `ls \-l' だった場合、コマンド `ls /usr' は `ls \-l /usr' になります。ここで、引数リストは 影響を受けません。`lookup' のエイリアスが `grep !^ /etc/passwd' だとすると、コマンド `lookup bill' は `grep bill /etc/passwd' に なります。エイリアスを使い、パーザのメタ記法を利用できます。 たとえば、`alias print 'pr \e!* | lpr'' は、引数を ラインプリンタに \fIpr\fR(1) する ``コマンド''(`print') を 定義します。 .PP コマンドの最初の単語がエイリアスを持たなくなるまで、エイリアス置換は 繰り返されます。(先の例のように) エイリアス置換が最初の単語を 変更しない場合、そのエイリアスに印を付けてループが生じない ようにします。それ以外のループは検出され、エラー扱いになります。 .PP シェルが参照するエイリアスがいくつかあります。\fB特殊エイリアス\fR を参照してください。 .SS 変数置換 シェルは変数のリストを管理しており、それらは 0 個またはそれ以上の 個数の単語のリストを値として持ちます。シェル変数の値は、コマンド \fIset\fR, \fIunset\fR により表示、変更することができます。システムは、 自分自身の ``環境'' 変数のリストを保持しています。環境変数は コマンド \fIprintenv\fR, \fIsetenv\fR, \fIunsetenv\fR により表示、 変更することができます。 .PP (+) `set \-r' (参照) により変数を読み出し専用にすることが できます。読み出し専用変数は、変更や unset ができません。これを 試みるとエラーになります。一度読み出し専用にした変数は、 書き込み可能に戻すことはできません。ですから、`set \-r' は 注意して使用する必要があります。環境変数は読み出し専用に することはできません。 .PP シェルが設定、参照する変数がいくつかあります。たとえば、変数 \fBargv\fR は、シェルの引数リストの複製で、この変数の値である単語は特別な方法で 参照されます。シェルが参照する変数の中には、トグルスイッチがあります。 シェルは、これらの変数が何の値を持っているかではなく、値が設定されて いるかどうかにだけ影響を受けます。たとえば、変数 \fBverbose\fR は、 コマンド入力をエコーするかどうかを制御するトグルスイッチです。 コマンド行オプション \fB\-v\fR がこの変数に値を設定します。 シェルが参照する変数すべてのリストは、\fB特別なシェル変数\fRにあります。 .PP 変数を数値として扱う操作もあります。コマンド `@' により、 数値計算を実行し、結果を変数に代入することが可能となります。 しかしながら、変数の値は常に (0 個以上の) 文字列として表現されて います。数値として扱うために、空文字列は 0 と見なされます。 複数の単語からなる値の、2 番目以後の単語は無視されます。 .PP 入力行のエイリアス処理を終え、字句解析を終えた後で、そして、 各コマンドを実行する前に、`$' 文字をキーとして変数置換が行われます。 この展開は `$' の前に `\e' を置くことで抑止できます。ただし、`"' の 中は別で、ここでは\fI常に\fR変数置換が行われます。また、`'' の中も 別で、ここでは\fI決して\fR変数置換が行われません。``' で クォートした文字列は後で解釈されますから、 (後の\fBコマンド置換\fRを参照) そこでの `$' 置換は後になるまで行われません。`$' の後ろが空白、 タブ、改行文字の場合は、`$' 置換は発生しません。 .PP 入出力リダイレクトは、変数展開の前に識別され、別々に変数展開されます。 それ以外では、コマンド名と引数リスト全体が一緒に展開されます。ですから、 (この時点での) 最初の単語 (コマンド) から 2 つ以上の単語が生成される 可能性があります。展開後の複数の単語のうち最初のものがコマンド名となり、 残りの単語は引数になります。 .PP `"' で囲まれているか、修飾子 `:q' が指定されている場合を除き、 最終的には、変数置換の結果に対し、コマンド置換とファイル名置換が 適用されます。`"' で囲まれている場合、値が複数の単語で構成される変数は、 1 つの単語 (の一部) に展開されます。 この単語には、その変数の値である単語が空白で区切られたものを 含みます。置換の際に修飾子 `:q' が適用される場合、変数は複数の単語に 展開されます。それぞれの単語は空白で区切られ、以後、コマンド置換と ファイル名置換が適用されないようにクォートされます。 .PP シェルへの入力に変数の値を持ち込むための方法として、以下の構文が あります。特に注がない限り、設定されていない値の参照はエラーになります。 .PP .PD 0 $\fIname\fR .TP 8 ${\fIname\fR} 変数 \fIname\fR の値である単語に置換します。この単語は、 それぞれが空白で区切られたものです。 中括弧は \fIname\fR とそれ以後の文字列とを分離し、以後の文字列も含めて 1 つの変数名として解釈されないようにします。シェル変数の名前は上限が 20 文字であり、先頭は英文字で、2 文字目以後は英文字か数字で 構成されます。アンダスコアは英文字と見なします。\fIname\fR が シェル変数ではないが、環境に設定されている場合、環境の値を返します (ただし、修飾子 `:' と次で示す他の形式は利用可能です)。 .PP $\fIname\fR[\fIselector\fR] .TP 8 ${\fIname\fR[\fIselector\fR]} \fIname\fR の値のうち選択した単語のみで置換します。\fIselector\fR は `$' 置換が適用され、1 つの数値または `\-' で区切った 2 つの数値で 構成することができます。変数の値の先頭の単語は 1 番目として数えます。 範囲の最初の値を省略した場合、デフォルトの値 1 になります。範囲の 最後の数値を省略した場合、デフォルトの値 `$#\fIname\fR になります。 \fIselector\fR `*' はすべての単語を選択します。2 番目の引数が 省略されるか、あるいは範囲に収まっている場合、範囲が空になっても エラーになりません。 .TP 8 $0 コマンド入力を読み込んでいるファイル名で置換します。ファイル名が 不明の場合エラーになります。 .PP $\fInumber\fR .TP 8 ${\fInumber\fR} `$argv[\fInumber\fR]' と等価です。 .TP 8 $* `$argv' と等価です。これは `$argv[*]' と等価です。 .PD .PP \fBヒストリ置換\fRのところで説明した `:' 修飾子 (`:p' を除く) が、 上記の置換に対して適用できます。2 つ以上の修飾子も適用できます。 (+) \fBヒストリ置換\fR (そちらも参照) と同様に、 変数置換とリテラルのコロンとを分離するために、中括弧が必要なことが あります。修飾子は中括弧の中に置かねばなりません。 .PP 以下の置換は `:' 修飾子で修飾することはできません。 .PP .PD 0 $?\fIname\fR .TP 8 ${?\fIname\fR} \fIname\fR が設定されているときは、文字列 `1' で置き換えられます。 設定されていないときは、文字列 `0' で置き換えられます。 .TP 8 $?0 現在の入力ファイル名がわかっているときは、`1' で置き換えられます。 わかっていないときは、`0' で置き換えられます。 対話型のシェルでは、常に `0' です。 .PP $#\fIname\fR .TP 8 ${#\fIname\fR} \fIname\fR 中の単語の数で置き換えられます。 .TP 8 $# `$#argv' と等価です。(+) .PP $%\fIname\fR .TP 8 ${%\fIname\fR} \fIname\fR の文字数で置き換えられます。(+) .PP $%\fInumber\fR .TP 8 ${%\fInumber\fR} $argv[\fInumber\fR] の文字数で置き換えられます。(+) .TP 8 $? `$status' と等価です。(+) .TP 8 $$ (親) シェルの (10 進数の) プロセス番号で置き換えられます。 .TP 8 $! 本シェルが開始したバックグラウンドプロセスのうち最新のものの (10 進数の) プロセス番号で置き換えられます。(+) .TP 8 $_ 最後に実行したコマンドのコマンド行で置き換えます。(+) .TP 8 $< 標準入力から読み込んだ 1 行を、一切解釈をせずにこの変数と置き換えます。 シェルスクリプト中で、キーボードから読み込む際に用います。(+) \fIcsh\fR は、`$<:q' と等価であるかのように、$< をクォートしますが、 \fItcsh\fR はそうしません。それだけでなく、\fItcsh\fR がユーザの 入力行を待つとき、ユーザは割り込みを入力して、置換されるべき行が 入る列を中断することができます。しかし \fIcsh\fR ではそうすることが できません。 .PD .PP 編集コマンド \fIexpand-variables\fR は、 通常は `^X-$' にバインドされていますが、 これを使って、個々の変数を対話的に展開することができます。 .SS "コマンド置換、ファイル名置換、ディレクトリスタック置換" 組み込みコマンドの引数に対し、残りの置換が選択的に適用されます。 選択的とは、行の中で評価されなかった部分は、これらの展開の対象に ならないという意味です。シェルの内部コマンドでないコマンドに対しては、 コマンド名は引数リストとは別個に置換されます。この置換は最後の方、 入出力リダイレクトを実行したあと、メインシェルの子供の中で生じます。 .SS コマンド置換 ``' で囲まれたコマンドは、コマンド置換を示します。囲まれたコマンドの 出力を、空白、タブ、改行文字のところで別々の単語に分割します。 この出力に変数置換、コマンド置換を実行し、 元の文字列があった場所に置きます。 .PP ニ重引用符 (`"') の内側のコマンド置換は、空白、タブを保存します。 改行文字だけは新しく単語分けを行います。 ただし、どのような場合でも最後の改行文字だけは新しい単語になりません。 ですから、1 行まるまる出力するようなコマンドでも、コマンド置換を 用いると単語の一部だけを生成することができます。 .SS ファイル名置換 単語が `*', `?', `[', `{' のいずれかの文字を含む場合、または先頭が `~' で始まる場合、その単語はファイル名置換 (あるいはグロブ (globbing) と 呼ばれます) の候補になります。このような単語をパターン (グロブパターン) と見なし、そのパターンにマッチするファイル名の リストをアルファベット順で整列したもので置き換えます。 .PP ファイル名マッチの際に、ファイル名の先頭、または `/' の直後の 文字 `.' は、`/' と同様に、明示的にマッチさせなければなりません。 文字 `*' は、空文字列を含むどのような文字列にもマッチします。 文字 `?' は、どのような 1 文字にもマッチします。列 `[...]' は、 括弧の中で指定した文字のいずれかにマッチします。`[...]' 内では、 文字の対を `\-' でつなぐことで、(文字順序で) その 2 文字の範囲にある 文字のいずれかにマッチします。 .PP (+) グロブパターンの中には反転を指定できるものがあります。 列 `[^...]' は、括弧内の文字 / 範囲で指定して\fIいない\fR文字 ちょうど 1 つにマッチします。 .PP `^' により、グロブパターン全体を反転させることもできます。 .IP "" 4 > echo * .br bang crash crunch ouch .br > echo ^cr* .br bang ouch .PP `?', `*', `[]' のいずれも使わないグロブパターンや、 `{}', `~' (あとで説明します) を使うグロブパターンは、 反転しても正しい結果を得られません。 .PP メタ記法 `a{b,c,d}e' は、`abe ace ade' の省略記法です。左から右への 出現順序は保存されます。`/usr/source/s1/{oldls,ls}.c' は、 `/usr/source/s1/oldls.c /usr/source/s1/ls.c' に展開します。 マッチングの結果は下位のレベルで個別に整列され、出現順序は保存 されます。 `../{memo,*box}' は、`../memo ../box ../mbox' などに 展開されるでしょう (ここで、`memo' が `*box' のマッチング結果とともに 整列されていないことに注意してください)。この指定が展開された結果 ファイルが存在しなくてもエラーになりませんが、展開結果を渡した先の コマンドでエラーになる可能性はあります。この指定は入れ子にすることが できます。特殊な場合として、単語 `{', `}', `{}' は変更されずに そのまま渡されます。 .PP ファイル名先頭の文字 `~' は、ホームディレクトリを指します。単独で 用いられた場合、つまり `~' だけの場合、シェル変数 \fBhome\fR の値に 反映されているように、呼び出したユーザの ホームディレクトリに展開されます。`~' の直後に英文字、 数字、または文字 `\-' で構成される名前が続く場合、シェルはその 名前を持つユーザを検索し、そのユーザのホームディレクトリに展開します。 ですから、`~ken' はたとえば `/usr/ken' に展開されます。 また、`~ken/chmach'は、たとえば `/usr/ken/chmach' に展開されます。 文字 `~' の後ろに英文字でもなく `/' でもない文字が続いた場合、 もしくは、文字 `~' が単語の先頭以外に現れた場合、変更されずに そのまま渡されます。ですから、 `setenv MANPATH /usr/man:/usr/local/man:~/lib/man' のようなコマンド では、期待通りのホームディレクトリ置換が起こりません。 .PP `*', `?', `[', `~' のどれかを含むグロブパターン (`^' は付いていてもいなくとも同じ) は、マッチするファイルが ひとつもないとエラーになります。 しかし、グロブパターンのリストのうちのひとつでも マッチすれば (他のものはマッチするものがなくても) エラーになりません (したがって、たとえば `rm *.a *.c *.o' は、カレントディレクトリに `.a', `.c', `.o' で終わるファイルがひとつもないときに限って エラーになります)。 また、シェル変数 \fBnonomatch\fR が設定されている場合、 どれにもマッチしないパターン (あるいはパターンの列) は エラーにならずに無変換のまま残されます。 .PP ファイル名置換を止めるために、シェル変数 \fBnoglob\fR を設定することが できます。編集コマンド \fIexpand-glob\fR は、通常は `^X-*' に結合されて いますが、これを使い、個々のファイル名置換の展開を対話的に 行うことができます。 .SS "ディレクトリスタック置換 (+)" ディレクトリスタックはディレクトリの列であり、0 から番号付けられ、 組み込みコマンド \fIpushd\fR, \fIpopd\fR, \fIdirs\fR (そちらも参照) が使用します。 \fIdirs\fR コマンドを使用すると、ディレクトリスタックを いつでも表示でき、ファイルに書き込むことができ、 ファイルから読み込むことができ、そしてクリアすることが できます。シェル変数 \fBsavedirs\fR, \fBdirsfile\fR に 値を設定することで、ログアウト時のディレクトリスタックの書き込みと、 ログイン時の読み込みを自動的に行うことができます。シェル変数 \fBdirstack\fR を使い、ディレクトリスタックの中を調べることができ、 ディレクトリスタックに任意のディレクトリを設定することができます。 .PP 文字 `=' の後ろに 1 桁以上の数字が続くと、それは ディレクトリスタック中のエントリに展開されます。特殊な場合として、 `=\-' はスタックの最新のディレクトリに展開します。たとえば、 次のようにです。 .IP "" 4 > dirs \-v .br 0 /usr/bin .br 1 /usr/spool/uucp .br 2 /usr/accts/sys .br > echo =1 .br /usr/spool/uucp .br echo =0/calendar .br /usr/bin/calendar .br > echo =\- .br /usr/accts/sys .PP シェル変数 \fBnoglob\fR, \fBnonomatch\fR と編集コマンド \fIexpand-glob\fR はファイル名置換と同様に ディレクトリスタックにも適用されます。 .SS "その他の置換 (+)" ファイル名を含む変換が他にいくつかあります。厳密には先に説明した ものと関係があるわけではありませんが、完全を期するために ここで説明しておきます。変数 \fBsymlinks\fR (そちらも参照) が `expand' に設定されている場合、\fIどのような\fRファイル名も フルパスに展開される可能性があります。クォートすることで この展開を止めることができ、編集コマンド \fInormalize-path\fR を 使用すると要求に応じて展開を止めることができます。また、編集コマンド \fInormalize-command\fR は、PATH にあるコマンドを、 要求に応じてフルパスに展開します。 最後に、\fIcd\fR と \fIpushd\fR は `\-' を以前の作業ディレクトリ (シェル変数 \fBowd\fR と等価) と解釈します。これは置換でもなんでも なく、このコマンドだけで認識される省略記法です。それでも、この表記も クォートすることでこの解釈を止めることができます。 .SS コマンド 次の 3 つのセクションでは、シェルがどのようにコマンドを実行し、 それらの入出力をどのように扱うかを説明します。 .SS 単純コマンド、パイプライン、コマンド列 単純コマンドは、単語の列であり、 その最初の単語が実行されるコマンドです。 `|' 文字によって区切られた一連の単純コマンドは パイプラインを形成します。 パイプライン内のそれぞれのコマンドの出力は次のコマンドの 入力に接続されます。 .PP 単純コマンドとパイプラインは `;' 文字を使って コマンド列に組み入れることができ、並んでいる順に実行されます。 コマンドとパイプラインは `||' や `&&' でコマンド列に 組み込むこともでき、C 言語で扱われるのと同様に、 最初のコマンドが失敗した時にだけ (`||'の場合)、 あるいは成功した時にだけ (`&&'の場合)、次のコマンドが実行されます。 .PP 単純コマンド、パイプライン、またはコマンド列は、 括弧 `()' を使って単純コマンドを形成することができ、 パイプラインやコマンド列の一部として使用できます。 コマンド、パイプライン、またはコマンド列の後に `&' を 置いて実行すると、そのコマンドの終了を待たずに 次のコマンドを実行できます。 .SS "組み込みコマンド、非組み込みコマンドの実行" 組み込みコマンドは、シェルの中で実行されます。 パイプラインの構成要素の最後以外が組み込みコマンドのとき、 パイプラインは、サブシェル内で実行されます。 .PP 括弧で括られたコマンドは、常にサブシェル内で実行されます。 .IP "" 4 (cd; pwd); pwd .PP これは、現在のディレクトリを移動することなくく\fBホーム\fR ディレクトリを表示 (その後に現在のディレクトリを表示) し、 その一方、 .IP "" 4 cd; pwd .PP この場合は\fBホーム\fRディレクトリに移動します。 括弧で括られたコマンドは、たいてい \fIcd\fR が現在のシェルに 影響するのを防ぐために使用します。 .PP 実行するコマンドが組み込みコマンドでないことが判明すると、 シェルはそのコマンドを \fIexecve\fR(2) を通じて実行しようとします。 環境変数 \fBpath\fR 内の各語は、シェルがコマンドを検索する ディレクトリを指定します。 \fB\-c\fR, \fB\-t\fR オプションのいずれも指定されていない場合、 これらのディレクトリ内の名前を内部テーブルでハッシュし、 そのコマンドが存在する可能性のあるディレクトリだけで \fIexecve\fR(2) の実行を試みます。 このことは、検索パス内のディレクトリの数が多い場合に、 コマンドの位置確定を大いに高速化します。 この機構が (\fIunhash\fR によって) オフにされ、 シェルに \fB\-c\fR または \fB\-t\fR のオプションが与えられるか、 それぞれの \fBpath\fR のディレクトリ構成要素のいずれかが `/' で始まっていない場合、シェルは現在の作業ディレクトリと 与えられたコマンド名を結合して実行するファイルのパス名を形成します。 .PP ファイルに実行許可であってシステムが実行可能ではない場合、 (例 : 実行可能バイナリ、インタプリンタを指定したスクリプト ではないとき)、それをシェルコマンドを含むファイルであるとみなし、 新しいシェルを起動してそのファイルを読み込みます。 \fIシェル\fRの特殊なエイリアスで、シェル自体ではなくインタプリタを 指定するように設定することもできます。 .PP 慣習的な‘#!' スクリプトインタプリタを理解しないシステム上では、 シェルはそれをエミュレートするようにコンパイルされます ; シェル変数 \fBversion\fR を参照してください。 その場合、シェルがファイルの最初の行をチェックし、それが `#!\fIinterpreter\fR \fIarg\fR ...' の形式であるかどうかを 確認します。 この形式であれば、シェルは与えられた\fI引数\fRとともに \fIインタプリタ\fRを起動して、そのファイルを標準入力に供給します。 .SS 入出力 コマンドの標準入力と標準出力は以下の文法に従って リダイレクトすることができます: .PP .PD 0 .TP 8 < \fIname ファイル \fIname\fR (変数、コマンド、ファイル名展開を受けます) をオープンし、コマンドの標準入力とします。 .TP 8 << \fIword \fIword\fR と同一の行が出現するまで、シェルの入力を読み込みます。 \fIword\fR は変数、ファイル名、コマンド置換を受けません。 シェル入力の行は読み込まれるとすぐ、置換を行う前に \fIword\fR と比較されます。\fIword\fR に `\e', `"', `'', ``' のクォートが出現しなければ、行の中でコマンド置換が実行されます。 この置換を抑制するために、`\e' によって `$', `\e', ``' をクォートすることができます。コマンド置換において、 すべての空白、タブ、改行は保存されますが、最後の改行は削除されます。 読み込んだ行はすべてテンポラリファイルに保存され、 コマンドの標準入力として用いられます。 .PP > \fIname .br >! \fIname .br >& \fIname .TP 8 >&! \fIname ファイル \fIname\fR を標準出力として用います。 ファイルが存在しなければ作成されます。すでにファイルが存在すれば その内容は切り捨てられ、以前の内容は失われます。 .RS +8 .PD .PP シェル変数 \fBnoclobber\fR がセットされている場合、 ファイルが存在しないか文字型特殊ファイル (端末や `/dev/null' のような) でなければ エラーになります。これは、すでに存在するファイルを間違えて 削除してしまうことを防止します。`!' を用いた形式を使うと、 この検査を抑制することができます。 .PP `&' を用いた形式では、標準出力とともに診断メッセージ 出力もファイルへリダイレクトされます。 \fIname\fR は、`<' の 入力ファイル名の場合と同様の展開を受けます。 .PD 0 .RE .PP >> \fIname .br >>& \fIname .br >>! \fIname .TP 8 >>&! \fIname `>' と同様に、ファイル \fIname\fR を標準出力として用います。 ただし、コマンドの出力はファイルへ追加されます。 変数 \fBnoclobber\fR がセットされている場合、ファイルが \fI存在しなければ\fRエラーとなります。 `!' を用いることで、この検査を抑制することができます。 .PD .PP コマンドは、シェルが起動されたときの環境を引き継ぎます。 ただしこの環境は入出力のパラメータによって変更されますし、 コマンドがパイプラインの中にあった場合も変更されます。 したがって、以前のいくつかのシェルとは異なり、シェルの コマンドファイルから起動されたコマンドは、デフォルトでは そのコマンドのテキストへアクセスできません。かわりに それらのコマンドは、シェルのもともとの標準入力をそのまま 受け継ぎます。 シェルスクリプトの内部で、コマンドにあらかじめ決まった (inline) データを渡す場合には、標準入出力の形式ではなく、 `<<' の機構を使うことができます。 このように制限することにより、シェルコマンドスクリプトを パイプラインの一部として用いることができます。 バックグラウンドで実行されているコマンドの標準入力も \fI/dev/null\fR 等にリダイレクトされること\fIなく\fR、 シェルの標準入力をそのまま受け継いでいます。 もし標準入力が端末で、コマンドが端末から読み込もうとした場合、 そのプロセスはブロックされ、シェルはユーザにそのことを通知します (\fBジョブ\fRの項を参照)。 .PP 診断メッセージ出力もパイプにリダイレクトすることが できます。単に `|' のかわりに `|&' を使います。 .PP シェルは、標準出力のリダイレクトなしで、診断メッセージ出力を リダイレクトできなくなります。 そのため、`(\fIコマンド\fR > \fI出力ファイル\fR) >& \fIエラーファイル\fR' は、無難な予備手段としてされてます。 \fI出力ファイル\fR、\fIエラーファイル\fRのどちらかが、 端末に出力を送るための `/dev/tty' です。 .SS 特徴 ここではシェルがどのようにコマンドラインを受け入れ、 解釈し、実行するかを説明しました。 次は、便利な特徴について説明します。 .SS "制御フロー" このシェルには、 コマンドファイル (シェルスクリプト) や (制約はあるものの便利な) 端末からの入力 処理の流れを制御するために使用できる 多くのコマンドを備えています。 これらのコマンドは、 入力の再読み込みや読み飛ばしを行うため シェルを強制的に操作します。 これらの実装のために、幾つかのコマンドには制限があります。 .PP \fIforeach\fR、\fIswitch\fR、\fIwhile\fR 文は、 \fIif\fR 文の \fIif-then-else\fR 形式と同様に、 後で示すように入力行の単独の単純コマンド中に 主要なキーワードが現れることを要求します。 .PP シェルの入力がシーク可能でない場合は、 ループが読み込まれると常に入力をバッファし、 この内部バッファをシークすることでループによる 再読み込みを可能にします。 (これを許可した結果、 後方へ向かう \fIgoto\fR がシーク可能でない入力についても 成功することになります。) .SS 式 組み込みコマンドの \fIif\fR, \fIwhile\fR, \fIexit\fR は 共通した文法を持った式を使います。 式には、次の 3 つのセクションの中で説明される 任意の演算子を含めることができます。 \fI@\fR 組み込みコマンド (そちらも参照) 自体は、 文法を区切るので注意してください。 .SS "論理演算子, 算術演算子, 比較演算子" これらの演算子は C の演算子と 同じ優先順位となっています。 演算子には、次のものがあります。 .IP "" 4 || && | ^ & == != =~ !~ <= >= .br < > << >> + \- * / % ! ~ ( ) .PP ここに挙げた演算子は右側のものほど優先順位が高くなっています。 ただし、`==' `!=' `=~' `!~' の 4 つ、`<=' `>=' `<' `>' の 4 つ、 `<<' `>>' の 2 つ、`+' `-' の 2 つ、`*' `/' `%' の 3 つは それぞれ同一のグループに所属しており、同じグループに所属している 演算子の優先順位は同じレベルとなっています。 演算子 `==' `!=' `=~' `!~' は引数を文字列として比較します。 他の演算子はすべて数値で比較します。 演算子 `=~' `!~' は `!=' `==' と似ていますが、 左側のオペランドにマッチするグロブパターン (\fBファイル名置換\fRを参照) を右側に置くことが異なります。 必要なものに対してだけパターンマッチを行うので、 シェルスクリプト中における \fIswitch\fR 組み込みコマンドの使用の必要を減らします。 .PP `0' で始まる文字列は 8 進数とみなされます。 空の文字列や引数がぬけているものは `0' とみなされます。 すべての式の結果は 10 進数で表される文字列になります。 特に、式の構成要素が同一の単語中に複数個現れることはないと いうことに注意してください。 例外として、パーサに文法的に特別な意味を持つ式の構成要素 (`&' `|' `<' `>' `(' `)') が隣りにくることは構いません。 ただし、これらは空白で区切られるべきです。 .SS "コマンド終了ステータス" 式の中でコマンドを実行することができ、 式を中括弧 (`{}') で囲むと 終了ステータスが返されます。 中括弧は、コマンドの単語から空白で区切ることを 忘れないでください。 コマンドの実行が成功した場合は、 真 (たとえば `1') を返します。 コマンドが 0 のステータスで終了した場合、 または実行に失敗した場合は、偽 (たとえば `0') を返します。 もっと詳しいステータスの情報が必要な場合は、 コマンドを式の外部で実行し、 シェル変数 \fBstatus\fR を調べてください。 .SS "ファイル問い合わせ演算子" これらの演算子のうち幾つかは ファイルと関連するオブジェクトについて 真/偽の判定を行います。 これらは \fB\-\fIop file\fR の形式です。 \fIop\fR は次のうちのどれか 1 つです。 .PP .PD 0 .RS +4 .TP 4 .B r 読み取りアクセス .TP 4 .B w 書き込みアクセス .TP 4 .B x 実行アクセス .TP 4 .B X パス中にある実行可能ファイルやシェル組み込みコマンド。 たとえば `\-X ls' と `\-X ls\-F' は一般に真であり、 `\-X /bin/ls' はそうではない (+) .TP 4 .B e 存在 .TP 4 .B o 所有者 .TP 4 .B z サイズ 0 .TP 4 .B s サイズが 0 でない (+) .TP 4 .B f 通常ファイル .TP 4 .B d ディレクトリ .TP 4 .B l シンボリックリンク (+) * .TP 4 .B b ブロック型特殊ファイル (+) .TP 4 .B c キャラクタ型特殊ファイル (+) .TP 4 .B p 名前付きパイプ (fifo) (+) * .TP 4 .B S ソケット型特殊ファイル (+) * .TP 4 .B u set-user-ID ビットがセットされている (+) .TP 4 .B g set-group-ID ビットがセットされている (+) .TP 4 .B k スティッキービットがセットされている (+) .TP 4 .B t \fIfile\fR (これは数字でなければならない) は 端末デバイスに対してオープンしている ファイル記述子である (+) .TP 4 .B R migrate されている (convex システムのみ有効) (+) .TP 4 .B L 多重演算子の中でこの演算子の後にくる演算子は、 シンボリックリンクが指されているファイルではなく、 シンボリックリンクそのものに適用される (+) * .RE .PD .PP \fIfile\fR はコマンドと展開されたファイル名で、 指定された実ユーザに対する関係があるかどうか テストします。 \fIfile\fR が存在していない場合、 もしくはアクセスできない場合、 `*' で示した演算子については、 指定のファイルタイプが現在のシステムに 存在していなければ すべての問い合わせは偽 (たとえば `0') を返します。 .PP s true これらの演算子は、簡潔にするために連結することができます。 `\-\fIxy file\fR' は `\-\fIx file\fR && \-\fIy file\fR' と等価です。(+) たとえば `\-fx' は 通常の実行可能ファイルに対しては真 (`1' を返す) ですが、 ディレクトリに対してはそうではありません。 .PP s \fBL\fR は多重演算子の中で使用できます。 この演算子の後にくる演算子は、 シンボリックリンクが指されているファイルではなく、 シンボリックリンクそのものに適用されます。 たとえば `\-lLo' は 呼び出しユーザが所有しているリンクに対しては真です。 \fBLr\fR, \fBLw\fR, \fBLx\fR は リンクに対しては常に真で、 リンクでないものに対しては偽です。 \fBL\fR は 多重演算子の中で最後の演算子になった場合、 異なった意味を持ちます。 以下を参照してください。 .PP s \fIfile\fR に渡すべき演算子と、そうでない演算子 (たとえば \fBX\fR と \fBt\fR) を連結することは可能ですが、 実用的ではなく、しばしば間違いの元になります。 特に、ファイルでない演算子に \fBL\fR をつけると、 妙な結果になります。 .PP 他の演算子は他の情報、つまり単なる `0' や `1' だけ ではない情報を返します。(+) これらは前に示したのと同じ書式になります。 \fIop\fR は次のうちのどれか 1 つです。 .PP .PD 0 .RS +4 .TP 8 .B A エポックからの秒数で表した、最後にファイルにアクセスした時間 .TP 8 .B A: \fBA\fR と同じで、タイムスタンプの書式。 例: `Fri May 14 16:36:10 1993' .TP 8 .B M 最後にファイルを変更した時間 .TP 8 .B M: \fBM\fR と同じで、タイムスタンプの書式 .TP 8 .B C 最後に inode を変更した時間 .TP 8 .B C: \fBC\fR と同じで、タイムスタンプの書式 .TP 8 .B D デバイス番号 .TP 8 .B I inode 番号 .TP 8 .B F \fIdevice\fR:\fIinode\fR の形式で表した 複合 \fBf\fRile 識別子 .TP 8 .B L シンボリックリンクが指しているファイルの名前 .TP 8 .B N (ハード) リンクの数 .TP 8 .B P 先頭に 0 がついていない 8 進数で表したパーミッション .TP 8 .B P: \fBP\fR と同じで、先頭に 0 がつく .TP 8 .B P\fImode `\-P \fIfile\fR & \fImode\fR' と等価。 たとえば、`\-P22 \fIfile\fR' は \fIfile\fR のグループと他者が書き込み可であれば `22' を、 グループのみであれば `20' を、何もなければ `0' を返す。 .TP 8 .B P\fImode\fB: \fBP\fImode\fB:\fR と同じで、先頭に 0 がつく .TP 8 .B U 数値で表したユーザ ID .TP 8 .B U: ユーザ名、ユーザ名が見つからなかった場合は数値で表したユーザ ID .TP 8 .B G 数値で表したグループ ID .TP 8 .B G: グループ名、グループ名が見つからなかった場合は数値で表したグループ ID .TP 8 .B Z バイト数で表したサイズ .RE .PD .PP これらの演算子のうち 1 つだけ多重演算子の中に 現れることを許されていますが、必ず最後につける必要があります。 ただし、\fBL\fR は多重演算子の中の 最後とそれ以外の箇所では違った意味になるので注意してください。 なぜなら、`0' はこれらの演算子の多くにとって正当な返り値のためです。 これらが失敗した場合、`0' を返しません。 たいていの場合、`\-1' を返し、\fBF\fR は `:' を返します。 .PP このシェルが POSIX を定義してコンパイルされている (シェル変数 \fBversion\fR を参照) 場合、ファイル問い合わせの結果は、 \fIaccess\fR(2) システムコールの結果に基づいたものではなく、 ファイルの許可ビットに基づいたものになります。 たとえば、 通常は書き込み可であるが 読み取り専用でマウントされたファイルシステム上にある ファイルを \fB\-w\fR で検査した場合、 POSIX シェルでは成功し、 非 POSIX シェルでは失敗することになります。 .PP ファイル問い合わせ演算子は \fIfiletest\fR 組み込みコマンド (そちらも参照) と等価になり得ます。(+) .SS ジョブ シェルはパイプラインの各々に対し\fIジョブ\fRを 1 つずつ関連付けます。 シェルは、現在実行中のジョブの一覧表を保持しており、 これは、\fIjobs\fR コマンドによって表示することができます。 ジョブには整数の番号が割り当てられます。 ジョブが `&' を用いて非同期に起動された場合、 シェルは以下のような出力を行います: .IP "" 4 [1] 1234 .PP これは、非同期に起動したジョブがジョブ番号 1 であり、 プロセス ID が 1234 である (トップレベルの) プロセスを 1 つ持っていることを示します。 .PP もし、あるジョブを実行中に他のことをしたくなった場合、サスペンドキー (通常 ^Z) を押すことにより実行中のジョブに STOP シグナルを送信することができます。 通常、シェルはそのジョブが一時停止した (Suspended) ことを出力し、 プロンプトを表示します。 シェル変数の \fBlistjobs\fR が設定されていると、 組み込みコマンドの \fIjobs\fR のようにすべてのジョブがリストされます。 もしそれが `long' と設定されているとリストは `jobs \-l' のような 長い形式になります。 ここで、一時停止したジョブの状態を操作することができます。 つまり、\fIbg\fR コマンドにより停止したプロセスを ``バックグラウンド'' で走行させたり、他のコマンドを実行してから、 停止していたジョブを \fIfg\fR コマンドにより ``フォアグラウンド'' で再実行させることなどができます。 (編集コマンドの \fIrun-fg-editor\fR も参照してください。) `^Z' は即座に効力を発揮し、割り込みと同様に、それまで待たされていた 出力とまだ読み込まれていない入力は捨てられます。 組み込みコマンドの \fIwait\fR はすべてのバックグラウンドのジョブが 終了するまでシェルを待機状態にさせます。 .PP `^]' キーは遅延サスペンドシグナルを現在のジョブに送信します。 この場合はプログラムが \fIread\fR(2) によって読み込もうとした時点で STOP シグナルが送信されます。 これは、実行中のジョブに対していくつかの入力を先に入力しておき、 先行入力を読み終えた時点でジョブを停止させたいときに便利です。 \fIcsh\fR(1) ではこの機能は `^Y' キーに割り当てられていました。 \fItcsh\fR では `^Y' は編集コマンドです。(+) .PP バックグラウンドで実行しているジョブが端末からの入力を試みた場合、 そのジョブは停止します。通常、バックグラウンドジョブが端末に 出力することは可能ですが、これはコマンド `stty tostop' により 禁止することができます。もしこの tty オプションを指定したなら、 バックグラウンドで実行しているジョブは、端末から入力を試みたときと 同様に、端末に出力を試みたときに停止します。 .PP シェルでジョブを参照するにはいくつかの方法があります。文字 `%' は ジョブ名を表すのに用いられます。番号 1 のジョブを参照する場合は `%1' とします。単にジョブ名を入力した場合、そのジョブは フォアグラウンドに移動されます。すなわち `%1' は `fg %1' と等価で、 ジョブ 1 をフォアグラウンドに移行します。同様に `%1 &' は、 ちょうど `bg %1' と同じようにのジョブ 1 をバックグラウンドで 再開させます。ジョブはそのジョブを起動したときにタイプされた文字列の 先頭部分によって参照することもできます。ただしこの先頭部分は あいまいでない必要があります。すなわち `%ex' は、`ex' という文字列で 始まる名前のサスペンドされたジョブが 1 つしかない場合に限り、 サスペンドされた \fIex\fR(1) のジョブを再開します。 文字列 \fIstring\fR を含むジョブが 1 つしかない場合、`%?\fIstring\fR' と 入力することでそれを指定することもできます。 .PP シェルは現在のジョブと直前のジョブを覚えています。 ジョブに関係する出力で、`+' 記号が付加されているのが現在のジョブ、 `\-' 記号が付加されているのが直前のジョブです。 `%+', `%' と (\fIヒストリ\fR機構の文法との類似から) `%%' は すべて現在のジョブ、`%\-' は直前のジョブを参照するための省略形です。 .PP ある種のシステムではジョブ制御機構を利用するために \fIstty\fR(1) の オプション `new' を設定しておく必要があります。 ジョブ制御機構は `新型の' 端末ドライバの実装の上に構築されているからで、 新型の端末ドライバによりジョブを停止させるための割り込み文字を キーボードから入力できるようになるからです。 新型の端末ドライバのオプション設定については \fIstty\fR(1) と 組み込みコマンドの \fIsetty\fR を参照してください。 .SS "状態通知" シェルは、プロセスが状態の変化を起こすとすぐにそれを検知します。 通常はプロンプトが表示される直前にのみ、あるジョブが停止して それ以上処理が進まなくなったことを通知します。これはユーザの仕事を 邪魔しないようにするためです。しかしながら、シェル変数 \fBnotify\fR を 設定することにより、シェルにバックグラウンドジョブの状態が 変化したことをただちに通知させることができます。また、 シェルコマンド \fInotify\fR により、特定のジョブの状態の変化をただちに 通知させるようにマークすることもできます。引数なしの \fInotify\fR は 現在のプロセスに対してマークをつけます。バックグラウンドジョブの 開始直後に単に `notify' と打つとそのジョブをマークします。 .PP 停止したジョブが存在する状態でシェルを終了しようとすると `You have stopped jobs.' という警告を受けます。このとき \fIjobs\fR コマンドによりどのジョブが停止中であるのかを 確認することができます。警告を受けた直後に \fIjobs\fR コマンドで 確認した場合と、警告を受けた直後に再度シェルを終了させようとした 場合には、シェルは 2 度目の警告を行わずに停止中のジョブを 終了させてからシェルを終了します。 .SS "自動イベント、定期イベント、時刻指定イベント (+)" シェルの ``ライフサイクル'' において、いろいろな時間に自動的に コマンドの実行と他のアクションを行うさまざまな方法が用意されています。 それらをここに要約し、詳しくは \fB組み込みコマンド\fR、\fB特別なシェル変数\fR、\fB特別なエイリアス\fRの 適切な場所で説明します。 .PP 組み込みコマンドの \fIsched\fR はコマンドをイベントの予定表に置き、 指定された時刻にシェルによって実行されるようにします。 .PP \fB特別なエイリアス\fRとして \fIbeepcmd\fR, \fIcwdcmd\fR, \fIperiodic\fR, \fIprecmd\fR, \fIpostcmd\fR, \fIjobcmd\fR があり、それぞれ シェルがベルを鳴らす時、作業ディレクトリが変わる時、 \fBtperiod\fR 分毎、各プロンプトの前、各コマンドの実行前、 各コマンドの実行後、ジョブの起動時またはフォアグラウンド移行時に 実行させたいコマンドを設定できます。 .PP シェル変数の \fBautologout\fR を使って、指定した分数の休止後に ログアウトまたはシェルをロックするように設定できます。 .PP シェル変数の \fBmail\fR を使って、定期的に新しいメールを チェックするように設定できます。 .PP シェル変数の \fBprintexitvalue\fR を使って、0 以外のステータスで 終了したコマンドの終了ステータスを表示するように指定できます。 .PP シェル変数の \fBrmstar\fR を使って、`rm *' が入力されたときに ユーザに間違いないかどうか確認を求めるように指定できます。 .PP シェル変数の \fBtime\fR を使って、指定した秒数より多く CPU 時間を 使ったプロセスの終了後に組み込みコマンドの \fItime\fR を実行するように 設定できます。 .PP シェル変数の \fBwatch\fR と \fBwho\fR を使って、指定したユーザが ログインまたはログアウトした時にレポートするように設定できます。 また組み込みコマンドの \fIlog\fR でいつでもそれらのユーザに ついてのレポートを得られます。 .SS "固有言語システムのサポート (+)" シェルは 8 ビットクリーンなので (そのようにコンパイルされていれば。シェル変数の \fBversion\fR を 参照)、それを必要とする文字セットをサポートします。 NLS サポートはシェルがシステムの NLS を使うようにコンパイルされているか どうかによって異なります (再び、\fBversion\fR を参照)。 どちらの場合でも 7 ビット ASCII がデフォルトの文字分類 (たとえばそれらの文字は表示可能) であり、そして順序づけです。 環境変数の \fBLANG\fR または \fBLC_CTYPE\fR を変更すると、 これらの点について変化の有無がチェックされます。 .PP システムの NLS を使う場合には、文字の適切な分類と順序づけを決定するために \fIsetlocale\fR(3) 関数が呼び出されます。この関数は典型的には 環境変数の \fBLANG\fR と \fBLC_CTYPE\fR を調べます。 より詳細についてはシステムのドキュメントを参照してください。 システムの NLS を使わない場合には、シェルは ISO 8859-1 文字セットが 使われていると仮定することでシミュレートします。 変数 \fBLANG\fR と \fBLC_CTYPE\fR のいずれかが設定されていても、 それらの値を無視します。 シミュレートされた NLS では順序づけに影響しません。 .PP 加えて、本物とシミュレートされた NLS の両方で、\e200\-\e377 の範囲、 つまり M-\fIchar\fR でバインドされているすべての表示可能文字は、 自動的に \fIself-insert-command\fR に再バインドされます。 対応する escape-\fIchar\fR へのバインドは、もしあればそのまま残ります。 これらの文字は環境変数の \fBNOREBIND\fR が設定されていれば 再バインドされません。この機能はシミュレートされた NLS や すべてが ISO 8859-1 であると仮定した原始的な本物の NLS で有効でしょう。 そうでなければ、\e240\-\e377 の範囲の M-\fIchar\fR へのバインドは 事実上解除されます。この場合でも、もちろん \fIbindkey\fR で明示的に 関連するキーに再バインドする事は可能です。 .PP 未知の文字 (つまり表示可能でも制御文字でもないような文字) は \ennn のような形式で表示されます。tty が 8 ビットモードになっていない 場合は、ASCII に変換して強調表示モードを使うことで別の 8 ビット文字が 表示されます。シェルは tty の 7/8 ビットモードを変更することはなく、 ユーザによる 7/8 ビットモードの変更に従います。NLS 利用者 (または メタキーを利用したい利用者) は、たとえば \fI~/.login\fR ファイルで 適切に \fIstty\fR(1) コマンドを呼び出すことで、 明示的に tty を 8 ビットモードに設定する必要があるかもしれません。 .SS "OS 固有機能のサポート (+)" 個々のオペレーティングシステムで提供されている機能をサポートするために、 多くの新しい組み込みコマンドが提供されています。すべて \fB組み込みコマンド\fRセクションで詳細に説明されています。 .PP TCF をサポートするシステム (aix-ibm370, aix-ps2) では、 \fIgetspath\fR と \fIsetspath\fR でシステム実行パスを取得、設定し、 \fIgetxvers\fR と \fIsetxvers\fR で試験バージョンプリフィックスを取得、 設定して、\fImigrate\fR でプロセスをサイト間で移動させます。 組み込みコマンドの \fIjobs\fR は各ジョブが実行されているサイトを表示します。 .PP Domain/OS では、\fIinlib\fR で共有ライブラリを現環境に追加し、 \fIrootnode\fR で rootnode を変更し、\fIver\fR で systype を変更します。 .PP Mach では、\fIsetpath\fR が Mach の \fIsetpath\fR(1) と等価です。 .PP Masscomp/RTU と Harris CX/UX では、\fIuniverse\fR で universe を設定します。 .PP Harris CX/UX では、\fIucb\fR か \fIatt\fR によって指定した universe で コマンドを走らせます。 .PP Convex/OS では、\fIwarp\fR で universe を表示または設定します。 .PP 環境変数の \fBVENDOR\fR, \fBOSTYPE\fR, \fBMACHTYPE\fR は、 シェルが自身が実行されていると考えているシステムの、それぞれ ベンダー、オペレーティングシステム、マシンタイプ (マイクロプロセッサのクラスまたはマシンのモデル) を表示します。 これはいろいろなタイプのマシン間でホームディレクトリを共有する場合に 特に便利です。利用者はたとえば各自の \fI~/.login\fR 中で .IP "" 4 set path = (~/bin.$MACHTYPE /usr/ucb /bin /usr/bin .) .PP とし、各マシン用にコンパイルされた実行形式を適切なディレクトリに 置くことができます。 .PP シェル変数の \fBversion\fR は、どのオプションを選択して シェルがコンパイルされたかを表示します。 .PP 組み込みの \fInewgrp\fR、シェル変数の \fBafsuser\fR と \fBecho_style\fR、そしてシステムに依存するシェルの入力ファイル (\fBファイル\fRを参照) の位置にも注意してください。 .SS "シグナル処理" ログインシェルは \fI~/.logout\fR ファイルを読んでいる間は 割り込みを無視します。 シェルは起動時に \fB\-q\fR の指定が無ければ QUIT シグナルを無視します。 ログインシェルは TERM シグナルを捕捉しますが、非ログインシェルは TERM シグナルへの挙動を親から継承します。 他のシグナルについては親からシェルに継承された値を持っています。 .PP シェルスクリプトでは、シェルの INT と TERM シグナルの扱いを \fIonintr\fR で制御できます。そして HUP の扱いを \fIhup\fR と \fInohup\fR で制御できます。 .PP シェルは HUP で終了します (シェル変数の \fBlogout\fR も参照)。 デフォルトでは、シェルの子供たちもそうしますが、シェルは終了時に HUP を子供たちに送りません。\fIhup\fR はシェルが終了時に 子供に HUP を送るようにし、\fInohup\fR は子供が HUP を無視するように 設定します。 .SS "端末管理 (+)" シェルは 3 つの異なる端末 (``tty'') モードの設定を使います。それらは 編集時に使う `edit'、文字リテラルをクォートする場合に使う `quote'、 コマンド実行時に使う `execute' です。 シェルは各モードでいくつかの設定を一定に保つので、 tty を混乱状態にして終了するコマンドがシェルに干渉することはありません。 シェルは tty のスピードとパディングの変更にも対応します。 一定に保たれる tty モードのリストは組み込みの \fIsetty\fR で 取得、設定できます。エディタは CBREAK モード (または同等のモード) を 使いますが、先行入力された文字はいつでも受け付けられます。 .PP \fIechotc\fR, \fIsettc\fR, \fItelltc\fR コマンドを使って、 コマンドラインから端末のケーパビリティを操作、デバッグすることができます。 .PP SIGWINCH か SIGWINDOW をサポートするシステムでは、シェルは ウィンドウのリサイズに自動的に適応して、環境変数の \fBLINES\fR と \fBCOLUMNS\fR が設定されていれば値を補正します。 環境変数の \fBTERMCAP\fR が li# と co# のフィールドを含んでいると、 シェルは新しいウィンドウサイズを反映するようにそれらを補正します。 .SH 参照 このマニュアルの以下のセクションでは使用可能なすべての \fB組み込みコマンド\fR、\fB特別なエイリアス\fR、 \fB特別なシェル変数\fRについて説明します。 .SS "組み込みコマンド" .TP 8 .B %\fIjob 組み込みコマンド \fIfg\fR と同義です。 .TP 8 .B %\fIjob \fB& 組み込みコマンド \fIbg\fR と同義です。 .TP 8 .B : 何もしません。常に成功します。 .PP .B @ .br .B @ \fIname\fB = \fIexpr .br .B @ \fIname\fR[\fIindex\fR]\fB = \fIexpr .br .B @ \fIname\fB++\fR|\fB-- .PD 0 .TP 8 .B @ \fIname\fR[\fIindex\fR]\fB++\fR|\fB-- 最初の形式は、すべてのシェル変数の値を表示します。 .PD .RS +8 .PP 2 番目の書式は、\fIname\fR に値 \fIexpr\fR を設定します。 3 番目の書式は、値 \fIexpr\fR を \fIname\fR の \fIindex\fR 番目の要素に 定義します。 \fIname\fR とその \fIindex\fR 番目の要素の両方が既に存在していなければ なりません。 .PP \fIexpr\fR は C と同様に、`*', `+'のような演算子を含むことがあります。 もし \fIexpr\fR が `<', `>', `&', `' を含むのであれば、少なくとも \fIexpr\fR のその部分は `()' の中に書かれる必要があります。 \fIexpr\fR の書式は、以下の \fBExpressions\fR で説明されるものとは 一切関係がないことに注意してください。 .PP 4 番目、5 番目の書式は \fIname\fR またはその \fIindex\fR 番目の要素を インクリメント (`++') またはデクリメント (`\-\-') します。 .PP `@' と \fIname\fR の間の空白は必須です。\fIname\fR と `=' の間、また `=' と \fIexpr\fR の間の空白はオプションです。\fIexpr\fR の要素は空白によって 区切られていなければなりません。 .RE .PD .TP 8 .B alias \fR[\fIname \fR[\fIwordlist\fR]] 引数がなければ、すべてのエイリアスを表示します。 \fIname\fR を与えると、そのエイリアスの内容を表示します。 \fIname\fR と \fIwordlist\fR を与えると、 \fIwordlist\fR を \fIname\fR のエイリアスとして定義します。 \fIwordlist\fR は、エイリアスされるコマンドとファイル名です。 \fIname\fR は `alias' または `unalias' であってはなりません。 組み込みコマンド \fIunalias\fR についても参照してください。 .ig \" Obsolete tcsh command .TP 8 .B aliases \fR[\fIfile\fR] (+) 引数がなければ、すべてのエイリアスを表示します。 \fIfile\fR を与えると、エイリアスのリストを \fIfile\fR から 1 行に ひとつずつ読み込みます。 後方互換性のためだけに残されています。 .. .TP 8 .B alloc 動的に取得しているメモリのうちの使用量と空き容量を表示します。 何らかの引数を与えるとブロックサイズごとの使用中 / 空きブロックの数を 表示します。このコマンドの出力はシステムによって大きく異なります。 VAX 以外のシステムでは、異なるメモリ管理を行っているかもしれない からです。 .TP 8 .B bg \fR[\fB%\fIjob\fR ...] 指定したジョブ (引数がなければ現在のジョブ) をバックグラウンドに 移動します。もしそれらが停止していれば再開されます。\fIjob\fR は 以下の \fBJobs\fR で説明するように番号、 文字列、`', `%', `+', `\-' で構成されます。 .ig \" Obsolete tcsh command .TP 8 .B bind \fR[\fBdefaults\fR|\fBemacs\fR|\fBvi\fR|\fIkey\fR|\fIkey command\fR] (+) An older version of \fIbindkey\fR, retained for only downward compatibility. Without arguments, lists all bound keys and the editor command to which each is bound. `bind defaults', `bind emacs' and `bind vi' are equivalent to `bindkey \-d', `bindkey \-e' and `bindkey \-v'. With \fIkey\fR, lists the editor command to which \fIkey\fR is bound. With \fIkey\fR and \fIcommand\fR, binds the editor command \fIcommand\fR to \fIkey\fR. .IP "" 8 \fIkey\fR may be a literal character, a control character written ^\fIcharacter\fR (e.g., `^A'), a meta character written M-\fIcharacter\fR (e.g., `M-A') or a function key written F-\fIstring\fR (e.g., `F-foo'). For the function key form to work, the function key prefix must be bound to \fIsequence-lead-in\fR and \fIstring\fR must not contain that prefix. \fIbindkey\fR の古いバージョンで、後方互換性のためだけに 残されています。引数がなければ、バインドされているキーと、 その編集コマンドの一覧を表示します。 `bind defaults', `bind emacs', `bind vi' は `bindkey \-d', `bindkey \-e', `bindkey \-v' と同じ意味を持ちます。 引数に \fIkey\fR を与えると、\fIkey\fR にバインドされている 編集コマンドの一覧を表示します。 引数に \fIkey\fR と \fIcommand\fR を与えると、編集コマンド \fIcommand\fR を \fIkey\fR にバインドします。 .IP "" 8 \fIkey\fR は通常の文字、 ^\fIcharacter\fR (たとえば `^A')のように表記される コントロールキャラクタ、M-\fIcharacter\fR (たとえば `M-A') の ように表記されるメタキャラクタ、F-\fIstring\fR (たとえば `F-foo') のように表記されるファンクションキャラクタのいずれかです。 ファンクションキーを動作するようにするには、 ファンクションキープリフィックスが \fIsequence-lead-in\fR にバインドされていて、 \fIstring\fR がそのプリフィックスを含んでいないことが必要です。 .. .PP .B bindkey \fR[\fB\-l\fR|\fB\-d\fR|\fB\-e\fR|\fB\-v\fR|\fB\-u\fR] (+) .br \fBbindkey \fR[\fB\-a\fR] [\fB\-b\fR] [\fB\-k\fR] [\fB\-r\fR] [\fB\-\-\fR] \fIkey \fR(+) .PD 0 .TP 8 \fBbindkey \fR[\fB\-a\fR] [\fB\-b\fR] [\fB\-k\fR] [\fB\-c\fR|\fB\-s\fR] [\fB\-\-\fR] \fIkey command \fR(+) .\" .B macro can't take too many words, so I used \fB in the previous tags .\" .B マクロは多くの単語を扱えないので、ここまでの部分で \fB を .\" 使っています。 オプション無しでは、第 1 の形式ではバインドされているすべてのキーと 編集コマンドを表示し、第 2 の形式では \fIkey\fR にバインドされている 編集コマンドを表示し、第 3 の形式では 編集コマンド \fIcommand\fR を \fIkey\fR にバインドします。 オプションは以下のものを含みます。 .PD .PP .PD 0 .RS +8 .TP 4 .B \-l すべての編集コマンドの一覧と、それぞれの簡単な解説を表示します。 .TP 4 .B \-d デフォルトのエディタの標準キーバインドをすべてのキーに適用します。 .TP 4 .B \-e GNU Emacs に似たキーバインドをすべてのキーに適用します。 .TP 4 .B \-v 標準の \fIvi\fR(1) に似たキーバインドをすべてのキーに適用します。 .TP 4 .B \-a 代替キーマップを表示またはそのキーバインドを変更します。 代替キーマップは \fIvi\fR コマンドモードのものです。 .TP 4 .B \-b \fIkey\fR を次のように解釈します。 ^\fIcharacter\fR (たとえば `^A')、C-\fIcharacter\fR (たとえば `C-A') のようなものはコントロールキャラクタ、 M-\fIcharacter\fR (たとえば `M-A')のようなものはメタキャラクタ、 F-\fIstring\fR (たとえば `F-string')のようなものは ファンクションキー、X-\fIcharacter\fR (たとえば `X-A') のような ものは拡張プリフィックスキーです。 .TP 4 .B \-k \fIkey\fR は矢印キーの名前、`down', `up', `left', `right' の いずれかとして解釈されます。 .TP 4 .B \-r \fIkey\fR のバインドを解除します。 `bindkey \-r' は \fIkey\fR を \fIself-insert-command\fR にバインドする のでは\fIなく\fR、そのキーのバインドを完全に解除してしまうことに 注意してください。 .TP 4 .B \-c \fIcommand\fR は編集コマンドでなく、組み込みコマンドか 外部コマンドの名前として解釈されます。 .TP 4 .B \-s \fIcommand\fR は通常の文字列として解釈され、\fIkey\fR がタイプされた 時に端末から入力されたように扱われます。\fIcommand\fR で バインドされたキー自体も再び解釈が行われ、10 レベルまで繰り返し 解釈が行われます。 .TP 4 .B \-\- オプション処理の中断を行います。したがって、次の単語が '\-' で 始まっていたとしても、\fIkey\fR として解釈されます。 .TP 4 .B \-u \fR (または何らかの無効なオプション) 使い方を表示します。 .PD .PP \fIkey\fR は 1 文字であっても、文字列であっても構いません。 もしコマンドが文字列にバインドされているならば、文字列の最初の 文字は \fIsequence-lead-in\fR にバインドされ、文字列全体が コマンドにバインドされます。 .PP \fIkey\fR に含まれるコントロール文字はコントロール文字そのもの (通常 `^V' にバインドされているエディタの \fIquoted-insert\fR コマンドで入力できるもの) であっても、`^A' のような キャレット-文字形式であっても構いません。削除文字は `^?' (キャレット-疑問符) のように表します。\fIkey\fR と \fIcommand\fR は下に示す、バックスラッシュで始まる エスケープシーケンスを含むことができます (System V の \fIecho\fR(1) で用いられる形式です)。 .RS +4 .TP 8 .PD 0 .B \ea ベル .TP 8 .B \eb バックスペース .TP 8 .B \ee エスケープ .TP 8 .B \ef 改ページ (フォームフィード) .TP 8 .B \en 改行 .TP 8 .B \er キャリッジリターン .TP 8 .B \et 水平タブ .TP 8 .B \ev 垂直タブ .TP 8 .B \e\fInnn 8 進数 \fInnn\fR で表されるアスキー文字 .PD .RE .PP `\e' は後に続く文字に特別な意味があればそれを無効にします。 特に `\\' や `^' の場合です。 .RE .TP 8 .B break 実行を一番近い \fIforeach\fR または \fIwhile\fR と \fIend\fR の 組の、\fIend\fR の後から再開します。現在の行の残りのコマンドは 実行されます。したがって、複数のレベルのブレークは、1 行にそれらを 並べることで可能になります。 .TP 8 .B breaksw \fIswitch\fR からのブレークで、\fIendsw\fR の後から 実行が開始されます。 .TP 8 .B builtins \fR(+) すべての組み込みコマンドの名前を表示します。 .TP 8 .B bye \fR(+) 組み込みコマンド \fIlogout\fR の別名です。 これが使えるようにコンパイルされている場合にのみ有効です。 シェル変数 \fBversion\fR を参照してください。 .TP 8 .B case \fIlabel\fB: 下で説明する \fIswitch\fR 文で用いられるラベルです。 .TP 8 .B cd \fR[\fB\-p\fR] [\fB\-l\fR] [\fB\-n\fR|\fB\-v\fR] [\fIname\fR] もしディレクトリ名 \fIname\fR が与えられれば、シェルの 作業ディレクトリを \fIname\fR に変更します。与えられなければ \fBhome\fR に変更します。もし \fIname\fR が `\-' であれば、 ひとつ前の作業ディレクトリとして解釈されます (\fBOther substitutions\fR を参照)。\fIname\fR が 現在のディレクトリのサブディレクトリでなく、 `/', `./' , `../' のいずれかで始まるものでもない場合、 変数 \fBcdpath\fR の要素がひとつひとつチェックされ、 サブディレクトリ \fIname\fR が探されます。最後に、そのどれもが 失敗した場合に \fIname\fR が `/' ではじまる値をもつシェル変数で あれば、その変数が指すディレクトリが探されます。 .RS +8 .PP \fB\-p\fR を付けると、\fIdirs\fR と同じように最終的な ディレクトリスタックの内容を表示します。\fIcd\fR の \fB\-l\fR, \fB\-n\fR, \fB\-v\fR フラグは \fIdirs\fR のそれと同じ意味を持ち、 \fB\-p\fR の動作を含んでいます (+)。 .PP シェル変数 \fBimplicitcd\fR についても参照してください。 .RE .TP 8 .B chdir 組み込みコマンド \fIcd\fR の別名です。 .TP 8 .B complete \fR[\fIcommand\fR [\fIword\fB/\fIpattern\fB/\fIlist\fR[\fB:\fIselect\fR]\fB/\fR[[\fIsuffix\fR] \fB/\fR] ...]] (+) 引数なしの場合は、すべての補完の候補を表示します。 \fIcommand\fR をつけると、\fIcommand\fR の補完候補を表示します。 \fIcommand\fR と \fIword\fR などをつけると、補完を定義します。 .RS +8 .PP \fIcommand\fR はコマンドのフルネームでも、何らかのパターンでも 構いません (\fBファイル名置換\fRを参照)。 補完候補がひとつでないことを示すために、`-' ではじめることができます。 .PP \fIword\fR は現在の語の補完にどの単語が関係するのかを指定する もので、以下のうちどれか 1 つです。 .PP .PD 0 .RS +4 .TP 4 .B c 現在の語の補完。 \fIpattern\fR は、コマンドライン上の現在の語にマッチするパターンで なければなりません。 \fIpattern\fR は現在の語の補完が完了すると無視されます。 .TP 4 .B C \fBc\fR に似ていますが、現在の語の補完後に \fIpattern\fR を含みます。 .TP 4 .B n 次の語の補完。 \fIpattern\fR はコマンドライン上のひとつ前の語にマッチする パターンでなければなりません。 .TP 4 .B N \fBn\fR に似ていますが、現在の語のふたつ前の語に マッチするパターンでなければなりません。 .TP 4 .B p 位置に依存した補完。 \fIpattern\fR は数値の範囲を指定するものであり、シェル変数の インデックスと同じ文法が用いられます。 現在の語を含むものでなければなりません。 .PD .RE .ig \" No longer true in 6.05.04 .PP When \fIpattern\fR is a glob-pattern (for \fBc\fR, \fBC\fR, \fBn\fR and \fBN\fR-type completion), a \fIpattern\fR of `*' does not match an empty word. 6.05.04 ではもう有効ではありません。 \fIpattern\fR がグローバルなパターンである場合 (\fBc\fR, \fBC\fR, \fBn\fR, \fBN\fR 型の補完の場合)、\fIpattern\fR の `*' は空の語には マッチしません。 .. .PP \fIlist\fR は以下のリストの中から可能な補完のリストを示します。 .PP .PD 0 .RS +4 .TP 8 .B a エイリアス .TP 8 .B b バインディング (編集コマンド) .TP 8 .B c コマンド (組み込みコマンドも外部コマンドも含みます) .TP 8 .B C 指定されたパスではじまる外部コマンド .TP 8 .B d ディレクトリ .TP 8 .B D 指定されたパスではじまるディレクトリ .TP 8 .B e 環境変数 .TP 8 .B f ファイル名 .TP 8 .B F 指定されたパスではじまるファイル名 .TP 8 .B g グループ名 .TP 8 .B j ジョブ .TP 8 .B l 制限値 .TP 8 .B n 何にも補完しません .TP 8 .B s シェル変数 .TP 8 .B S シグナル .TP 8 .B t プレイン (``テキスト'') ファイル .TP 8 .B T プレイン (``テキスト'') ファイルで、指定されたパスではじまるもの .TP 8 .B v すべての変数 .TP 8 .B u ユーザ名 .TP 8 .B x \fBn\fR に似ていますが、\fIlist-choices\fR が使われている時には \fIselect\fR を表示します。 .TP 8 .B X 補完 .TP 8 $\fIvar\fR 変数 \fIvar\fR に格納されている語 .TP 8 (...) リスト中の語 .TP 8 `...` コマンドの出力に含まれる語 .PD .RE .PP \fIselect\fR は glob パターンです (省略可能)。 これを指定すると、\fIlist\fR にある単語のうち \fIselect\fR にマッチするものだけが対象となり、 シェル変数 \fBfignore\fR は無視されます。 最後の 3 つの補完形式には \fIselect\fR パターンを与えることはできません。 また \fBx\fR は \fIlist-choices\fR 編集コマンドが用いられた時には \fIselect\fR を説明メッセージとして扱います。 .PP \fIsuffix\fR は単一の文字で、補完が成功するとそのあとに追加されます。 空の場合は何も追加されません。省略されると (この場合 4 番目のデリミタも省略できます) ディレクトリにはスラッシュ文字が、 その他の文字にはスペース文字が追加されます。 .PP ではいくつか例を示します。 コマンドによっては、ディレクトリのみを引数として取るものがあります。 (そのようなコマンドに対して) 通常ファイルを補完することは、的外れです。 .IP "" 4 > complete cd 'p/1/d/' .PP `cd' に続く最初の単語のみ (`p/1') をディレクトリで補完します。 コマンド補完を絞りこむために \fBp\fR-形式の補完を用いることもできます。 `cd' に続く最初の単語のみ (`p/1') をディレクトリで補完します。 .IP "" 4 > co[^D] .br complete compress .br > complete \-co* 'p/0/(compress)/' .br > co[^D] .br > compress .PP これは `co' で始まる (すなわち `co*' にマッチする) コマンド (位置 0 にある単語 `p/0') を補完して、 `compress' (リストにある唯一の単語) を与えたものです。 先頭にある `\-' は、 この補完がコマンドを確定できない場合にのみ用いられることを意味します。 .IP "" 4 > complete find 'n/\-user/u/' .PP これは \fBn\fR-形式の補完の例です。 `find' の後で、かつ `\-user' の直後にある単語を、 ユーザーのリストで補完します。 .IP "" 4 > complete cc 'c/\-I/d/' .PP \fBc\fR-形式の補完の例です。`cc' の後にあり、 かつ `\-I' ではじまる単語をディレクトリで補完します。 ここでは小文字の \fBc\fR を用いているので、 `\-I' はディレクトリの一部とはみなされません。 .PP コマンドに応じて、便利な \fIlist\fR も異なります。 .IP "" 4 > complete alias 'p/1/a/' .br > complete man 'p/*/c/' .br > complete set 'p/1/s/' .br > complete true 'p/1/x:Truth has no options./' .PP これらでは、 `alias' に続く単語をエイリアスで、 `man' に続く単語をコマンドで、 `set' に続く単語をシェル変数で置き換えています。 `true' はオプションを取らないので、 補完が試みられたときに何も行わず、 補完リストの選択画面には `Truth has no options.' を表示する \fBx\fR を指定しています。 .PP .ig \" Changed in 6.05.04 The \fIman\fR example, and several other examples below, use \fBp\fR-type completion, rather than \fBC\fR- or \fBn\fR-type, so that `*' will match an empty word. .. \fIman\fR の例や、以下に示すいくつかの例では、 `p/*' の代わりに `c/*' や `n/*' を用いることもできます。 .PP 単語の補完を変数で行うこともできます。これらの変数は補完の際に評価されます。 .IP "" 4 > complete ftp 'p/1/$hostnames/' .br > set hostnames = (rtfm.mit.edu tesla.ee.cornell.edu) .br > ftp [^D] .br rtfm.mit.edu tesla.ee.cornell.edu .br > ftp [^C] .br > set hostnames = (rtfm.mit.edu tesla.ee.cornell.edu uunet.uu.net) .br > ftp [^D] .br rtfm.mit.edu tesla.ee.cornell.edu uunet.uu.net .PP また補完の際にコマンドを実行し、そこから補完を行うこともできます。 .IP "" 4 > complete kill 'p/*/`ps | awk \\{print\\ \\$1\\}`/' .br > kill \-9 [^D] .br 23113 23377 23380 23406 23429 23529 23530 PID .PP \fIcomplete\fR コマンド自身は、その引数をクォートしません。 したがって `{print $1}' にある括弧、スペース、`$' は 明示的にクォートしなければなりません。 .PP 1 つのコマンドに複数の補完を指定することもできます。 .IP "" 4 > complete dbx 'p/2/(core)/' 'p/*/c/' .PP これは `dbx' の第 2 引数を `core' という単語で補完し、 他のすべての引数をコマンドで補完します。 位置指定タイプの補完は、逐次補完より前に指定することに注意してください。 補完は左から右に評価されるので、 (常にマッチする) 逐次補完が先に指定されていると、 位置指定補完は決して行われなくなってしまいます。 これは補完定義の際によくやるミスなので注意してください。 .PP \fIselect\fR パターンは、 コマンドが特定の形式を持ったファイルだけを引数にとるような場合に便利です。 以下に例を示します。 .IP "" 4 > complete cc 'p/*/f:*.[cao]/' .PP これは `cc' の引数を、`.c', `.a', `.o' で終わるファイルだけから補完します。 以下の\fBファイル名置換\fRで述べるようなやり方で グロブパターンの否定を指定すれば、 \fIselect\fR で特定のファイルを排除することもできます。 .IP "" 4 > complete rm 'p/*/f:^*.{c,h,cc,C,tex,1,man,l,y}/' .PP これは大事なソースコードを `rm' の補完に現れないようにします。 もちろんこの排除された名前を手で打ったり、 \fIcomplete-word-raw\fR や \fIlist-choices-raw\fR などの編集コマンドを用いて補完の仕組みを変更することもできます (それぞれ該当の部分を参照)。 .PP `C', `D', `F', `T' 各\fIリスト\fRは、 それぞれ `c', `d', `f', `t' と似ていますが、 \fIselect\fR の引数の解釈の仕方が異なり、 補完対象のファイルを前置パス名が特定のものに限ります。 たとえば、メールプログラム Elm は `=' を ユーザのメールディレクトリの省略名として用います。 この場合 `elm \-f =' を `elm \-f ~/Mail/' であるかのように補完するには .IP "" 4 > complete elm c@=@F:$HOME/Mail/@ .PP とすべきです。ここでは `/' の代わりに `@' を用い、 \fIselect\fR 引数を見やすくしています。 またホームディレクトリの置換は単語の先頭でのみ動作するので、 `~' の代わりに `$HOME' を用いています。 .PP \fIsuffix\fR は標準では用意されていないサフィックス (スペースやディレクトリに対する `/' 以外) を単語補完用に追加するために用います。 .IP "" 4 > complete finger 'c/*@/$hostnames/' 'p/1/u/@' .PP これは `finger' の引数を、まずユーザのリストから補完し、 それに `@' を追加し、さらに `@' の後を変数 `hostnames' のリストから 補完します。ここでも補完指定の順序に注意してください。 .PP 最後に、示唆に富む複雑な例を示しましょう。 .IP "" 4 > complete find \\ .br \'n/\-name/f/' 'n/\-newer/f/' 'n/\-{,n}cpio/f/' \e .br \'n/\-exec/c/' 'n/\-ok/c/' 'n/\-user/u/' \e .br \'n/\-group/g/' 'n/\-fstype/(nfs 4.2)/' \e .br \'n/\-type/(b c d f l p s)/' \e .br \'c/\-/(name newer cpio ncpio exec ok user \e .br group fstype type atime ctime depth inum \e .br ls mtime nogroup nouser perm print prune \e .br size xdev)/' \e .br \'p/*/d/' .PP これは `\-name', `\-newer', `\-cpio', `ncpio' に続く単語を ファイルで補完し (最後の両者にマッチするパターンに注意)、 `\-exec', `\-ok' に続く単語をコマンドで補完し、 `user' の後をユーザ名で、`group' の後をグループ名で補完し、 `\-fstype' と `\-type' の後をそれぞれに与えたリストのメンバーで補完します。 また find に与えるスイッチ達も与えたリストから補完し (\fBc\fR-型の補完を用いていることに注意)、 それ以外のものすべてをディレクトリで補完します。ふぅ。 .PP 補完指定は、対象となる単語がチルダ置換 (`~' ではじまる) や 変数 (`$' ではじまる) の場合は無視されることに留意してください。 \fIcomplete\fR は実験的な機能であり、 文法はこのシェルの将来のバージョンでは変更されるかもしれません。 組み込みコマンド \fIuncomplete\fR の説明も見てください。 .RE .TP 8 .B continue もっとも近い \fIwhile\fR または \fIforeach\fR ループの実行を継続します。 現在の行にある残りのコマンドは実行されます。 .TP 8 .B default: \fIswitch\fR 文のデフォルトの場合のラベルです。 これはすべての \fIcase\fR ラベルの後に置くべきです。 .PP .B dirs \fR[\fB\-l\fR] [\fB\-n\fR|\fB\-v\fR] .br .B dirs \-S\fR|\fB\-L \fR[\fIfilename\fR] (+) .PD 0 .TP 8 .B dirs \-c \fR(+) 最初の形式はディレクトリスタックを表示します。 スタックの上が左に来て、 スタック先頭のディレクトリは現在のディレクトリになります。 \fB\-l\fR を指定すると、出力の `~' や `~\fIname\fP' は、 \fBhome\fR や、ユーザ \fIname\fP のホームディレクトリのパス名に 明示的に展開されます。 (+) \fB\-n\fR を指定すると、エントリはスクリーンの終端に達する前に 桁折りされます。 (+) \fB\-v\fR を指定すると、各エントリが 1 行に 1 つずつ表示され、 スタック内部での位置がエントリの前に表示されます。 (+) \fB\-n\fR や \fB\-v\fR がひとつ以上指定されると \fB\-v\fR が優先されます。 .PD .RS +8 .PP \fB\-S\fR を指定した 2 番目の形式では、 ディレクトリスタックを \fIcd\fR と \fIpushd\fR からなるコマンド列として \fIfilename\fR に保存します。 \fB\-L\fR を指定すると、このシェルは \fIfilename\fR を source します。 このファイルは、以前に \fB\-S\fR オプションや \fBsavedirs\fR 機構で保存されたディレクトリスタックです。 いずれの場合でも、 \fIfilename\fR が与えられなければ \fBdirsfile\fR を用います。 \fBdirsfile\fR も指定されていなければ \fI~/.cshdirs\fR を用います。 .PP ログインシェルは `dirs \-L' と同様のことを起動時に行っており、 また \fBsavedirs\fR が設定されていれば終了前に `dirs \-S' と同様のことを行います。 通常 \fI~/.tcshrc\fR だけが \fI~/.cshdirs\fR の前に source されるので、 \fBdirsfile\fR は \fI~/.login\fR ではなく \fI~/.tcshrc\fR で設定すべきです。 .PP 最後の形式はディレクトリスタックをクリアします。 .RE .TP 8 .B echo \fR[\fB\-n\fR] \fIword\fR ... 各 \fIword\fR をスペースで区切り、改行で終端させて シェルの標準出力に書き出します。 シェル変数 \fBecho_style\fR を指定すると、 BSD や System V の \fIecho\fR のフラグやエスケープシーケンスを エミュレートする (しない) ようにできます。 詳細は \fIecho\fR(1) を見てください。 .TP 8 .B echotc \fR[\fB\-sv\fR] \fIarg\fR ... (+) \fIarg\fR で与えられた端末の機能 (\fItermcap\fR(5) を参照) を実行します。 たとえば `echotc home' はカーソルをホームポジションに移動し、 `echotc cm 3 10' はカーソルを 3 列 10 行に移動し、 `echotc ts 0; echo "This is a test."; echotc fs' は "This is a test." をステータス行に表示します。 .RS +8 .PP \fIarg\fR が `baud', `cols', `lines', `meta', `tabs' の いずれかであった場合は、その機能の値を表示します ("yes" または "no" は、端末がその機能を持っているかいないかを示します)。 遅い端末でシェルスクリプトの出力をより寡黙にしたり、 コマンドの出力をスクリーンの行数に制限したりするような場合には、 以下のコマンドを使うと良いでしょう。 .IP "" 4 > set history=`echotc lines` .br > @ history\-\- .PP termcap 文字列はワイルドカードを含むことができますが、 これは正しく echo されません。 シェル変数に端末機能文字列を設定するときには、 以下の例のようにダブルクォートを用いてください。 この例では日付をステータス行に表示しています。 .IP "" 4 > set tosl="`echotc ts 0`" .br > set frsl="`echotc fs`" .br > echo \-n "$tosl";date; echo \-n "$frsl" .PP \fB\-s\fR を指定すると、存在しない機能を指定したとき、 エラーをおこさずに空文字列を返します。 \fB\-v\fR を指定するとメッセージが冗長になります。 .RE .PP .B else .br .B end .br .B endif .PD 0 .TP 8 .B endsw 以下の \fIforeach\fR, \fIif\fR, \fIswitch\fR, \fIwhile\fI 文の説明を見てください。 .PD .TP 8 .B eval \fIarg\fR ... 引数をシェルへの入力として扱い、 残りのコマンドを現在のシェルのコンテキストで実行します。 これは通常、コマンド置換や変数置換の結果として生成されたコマンド列を 実行する場合に用いられます。 これはそれらの置換に先立って文法解析が行われてしまうためです。 \fIeval\fR の利用例は \fItset\fR(1) を見てください。 .TP 8 .B exec \fIcommand\fR 指定したコマンドを現在のシェルの代わりに実行します。 .TP 8 .B exit \fR[\fIexpr\fR] 指定した \fIexpr\fR (\fB式\fRで解説した式) の値で (\fIexpr\fR が指定されていなければ \fBstatus\fR 変数の値で) シェルを終了します。 .TP 8 .B fg \fR[\fB%\fIjob\fR ...] 指定したジョブ (あるいは引数がなければ現在のジョブ) をフォアグラウンドに移動します。停止状態にあるものは再開します。 \fIjob\fR には\fBジョブ\fRで解説されているように、 数値、文字列、`', `%', `+', `\-' のどれかを指定できます。 \fIrun-fg-editor\fI 編集コマンドも見てください。 .TP 8 .B filetest \-\fIop file\fR ... (+) (\fBファイル問合わせ演算子\fRで解説されている) ファイル問合わせ演算子 \fIop\fR を各 \fIfile\fR に適用し、 結果をスペース区切りのリストで返します。 .PP .B foreach \fIname \fB(\fIwordlist\fB) .br \&... .PD 0 .TP 8 .B end \fIwordlist\fR のメンバーを \fIname\fR に順々に代入し、 これと対応する \fIend\fR に挟まれた範囲の コマンドシーケンスを実行します。 (\fIforeach\fR と \fIend\fR は 1 行に単独で現れなければなりません。) 組み込みコマンド \fIcontinue\fR を用いると ループを途中で継続することができ、 組み込みコマンド \fIbreak\fR を用いると ループを途中で終了させることができます。 このコマンドが端末から読み込まれると、 一度ループを `foreach?' プロンプト (あるいは \fBprompt2\fR) で読み込み、全体を読み終えてからループの各文を実行します。 端末からの入力時にループの途中でタイプミスをした場合は 修正できます。 .PD .TP 8 .B getspath \fR(+) システムの実行パスを表示します。 (TCF のみ) .TP 8 .B getxvers \fR(+) 実験的バージョンのプレフィックスを表示します。 (TCF のみ) .TP 8 .B glob \fIwordlist \fIecho\fR と似ていますが、`\\' でのエスケープを認識せず、 また出力での単語区切りをヌル文字にします。 単語リストをファイル名に展開するために プログラムからシェルを利用したいような場合に便利です。 .TP 8 .B goto \fIword \fIword\fR はファイル名と `label' 形式の文字列を出力するコマンド置換です。 シェルは入力を可能なかぎりさかのぼり、 `label:' 形式の行 (空白やタブが前置されていても良い) を検索し、 その行の次から実行を継続します。 .TP 8 .B hashstat 内部のハッシュテーブルが、 これまでのコマンド探索にどの程度効率的であったか (そして \fIexec\fR 類を使わずに済んだか) を示す統計行を表示します。 \fBpath\fR の各成分のうち、 ハッシュ関数がヒットの可能性があるとしたものや、 `/' で始まらないものに対して \fIexec\fR が試みられます。 .IP \fIvfork\fR(2) のないマシンでは、 単にハッシュバケツのサイズを表示します。 .PP .B history \fR[\fB\-hTr\fR] [\fIn\fR] .br .B history \-S\fR|\fB\-L|\fB\-M \fR[\fIfilename\fR] (+) .PD 0 .TP 8 .B history \-c \fR(+) 最初の形式はイベントリストの履歴を表示します。 \fIn\fR を与えると、新しい方最大 \fIn\fR 個のイベントを 表示または保存します。 \fB\-h\fR を指定すると、行頭の数字抜きでリストを表示します。 \fB\-T\fR を指定すると、タイムスタンプもコメントのかたちで表示されます。 (これを用いると、 `history \-L' や `source \-h' でのロードに適したファイルが作成できます。) \fB\-r\fR を指定すると、 表示の順番がデフォルトの古い順ではなく新しい順になります。 .PD .RS +8 .PP 2 番目の形式で \fB\-S\fR を指定すると、履歴リストを \fIfilename\fR に保存します。シェル変数 \fBsavehist\fR の最初の単語が 数値に設定されていると、最大でその数値までの行数が保存されます。 \fBsavehist\fR の 2 番目の単語が `merge' だった場合には、 履歴リストが現存の履歴ファイルにマージされ、タイムスタンプ順にソートされます (デフォルトでは現存のファイルを置き換えます)。 (+) マージは X Window System のように、 複数のシェルを同時に用いるような場合向けのものです。 現在は、シェルが行儀良く順々に終了するような場合でないと、 マージは成功しません。 .PP \fB\-L\fR を指定すると、シェルは \fIfilename\fR を 履歴リストに追加します。\fIfilename\fR は以前に \fB\-S\fR オプションや \fBsavehist\fR 機構で保存された履歴リストファイルです。 \fB\-M\fR は \fB\-L\fR と似ていますが、 \fIfilename\fR の内容は履歴リストにマージされ、 タイムスタンプの順にソートされます。 いずれの場合でも、\fIfilename\fR が与えられなければ \fBhistfile\fR を用い、 \fBhistfile\fR も設定されていなければ \fI~/.history\fR を用います。 `history \-L' はほとんど `source \-h' と同じですが、 前者ではファイル名を省略できます。 .PP ログインシェルは `history \-L' と同様のことを起動時に行っており、 また \fBsavehist\fR が設定されていれば終了前に `history \-S' と同様のことを行います。 通常 \fI~/.tcshrc\fR だけが \fI~/.history\fR の前に source されるので、 \fBhistfile\fR は \fI~/.login\fR ではなく \fI~/.tcshrc\fR で設定すべきです。 .PP \fBhistlit\fR が設定されていると、 最初の形式と 2 番目の形式は履歴リストを 文字通りの (展開されない) かたちで表示、保存します。 .PP 最後の形式は履歴リストをクリアします。 .RE .TP 8 .B hup \fR[\fIcommand\fR] \fR(+) \fIcommand\fR を指定すると、 hangup シグナルが送られたときに終了するようにして \fIcommand\fR を実行し、 シェルが終了するときにそのコマンドに hangup シグナルを送るようにします。 コマンドによっては hangup に対するそれぞれ独自の反応を設定することがあり、 これは \fIhup\fR より優先されるかもしれません。 引数を設定しないと (シェルスクリプト内部のみで許されます)、 そのシェルは残りのスクリプトの途中で hangup シグナルを受け取ると終了するようになります。 \fBシグナル処理\fRと組み込みコマンド \fInohup\fR の部分も見てください。 .TP 8 .B if (\fIexpr\fB) \fIcommand \fIexpr\fR (\fB式\fRで解説した式) の評価結果が真なら、 \fIcommand\fR が実行されます。 \fIcommand\fR に対する変数置換は、実行に先だって \fIif\fR コマンドの残りの部分と同時に行われます。 \fIcommand\fR は単純なコマンドでなければならず、 エイリアス、パイプライン、(括弧で括られた / ていない) コマンドリストは指定できません。ただし引数は指定できます。 \fIexpr\fR が偽で、 \fIcommand\fR が\fI実行されない\fR場合でも 入出力リダイレクションは行われてしまいます。 これはバグです。 .PP .B if (\fIexpr\fB) then .br \&... .br .B else if (\fIexpr2\fB) then .br \&... .br .B else .br \&... .PD 0 .TP 8 .B endif 指定した \fIexpr\fR が真の場合、 最初の \fIelse\fI までのコマンド群が実行されます。 \fIexpr\fR が偽で \fIexpr2\fR が真の場合は、 2 番目の \fIelse\fR までのコマンド群が実行されます。以下同じです。 \fIelse-if\fR のペアはいくつでも指定できますが、 \fIendif\fR はひとつしかいりません。 また \fIelse\fR 部は省略可能です。 (\fIelse\fR と \fIendif\fR の各単語は入力行の先頭にしか置けません。 \fIif\fR は入力行の先頭に単独で置くか、 \fIelse\fR の後に置くかしなければなりません。) .PD .TP 8 .B inlib \fIshared-library\fR ... (+) 各 \fIshared-library\fR を現在の環境に追加します。 共有ライブラリを削除する方法はありません。 (Domain/OS のみ) .TP 8 .B jobs \fR[\fB\-l\fR] アクティブなジョブをリストします。 \fB\-l\fR を指定すると、 通常の情報に加えてプロセス ID もリストします。 TCF システムでは、各ジョブが実行されているサイトも表示します。 .PP .PD 0 .TP 8 .B kill \fR[\fB\-s \fIsignal\fR] \fB%\fIjob\fR|\fIpid\fR ... .PD 0 .TP 8 .B kill \-l 1 番目または 2 番目の形式は \fIsignal\fR を (何も指定されなければ TERM (terminate) シグナルを) 指定したジョブやプロセスに送ります。 \fIjob\fR には\fBジョブ\fRで解説されているように、 数値、文字列、`', `%', `+', `\-' のどれかを指定できます。 シグナルは数値または名前 (\fI/usr/include/signal.h\fR にあるものから前の `SIG' を取り除いたもの) のいずれかで与えます。 デフォルトの \fIjob\fR はありません。 単に `kill' としても、現在のジョブへはシグナルを送りません。 TERM (terminate) または HUP (hangup) シグナルを送った場合は、 そのジョブやプロセスには CONT (continue) シグナルも送信されます。 3 番目の形式はシグナルの名前をリストします。 .PD .ig \" Obsolete tcsh command .TP 8 .B linedit \fR(+) A synonym for the \fIecho\fR builtin command. .. .TP 8 .B limit \fR[\fB\-h\fR] [\fIresource\fR [\fImaximum-use\fR]] 現在のプロセスと、 現在のプロセスが生成するプロセスが消費する資源が、 指定した \fIresource\fR に対してプロセスひとつにつき \fImaximum-use\fR を越えないようにします。 \fImaximum-use\fR を指定しないと、current limit が表示されます。 \fIresource\fI を指定しないと、すべての制限値を表示します。 \fB\-h\fR フラグを指定すると、 current limit の代わりに hard limit を用います。 hard limit は current limit の限度を与えます。 hard limit はスーパーユーザーしか増やすことができませんが、 current limit は一般ユーザも可能な範囲内で増減できます。 .RS +8 .PP 現在制御できる資源は、 \fIcputime\fR (プロセスひとつにつき利用できる cpu 秒)、 \fIfilesize\fR (作成できる単一ファイルの最大サイズ)、 \fIdatasize\fR (プログラムテキストの終端を越えて sbrk(2) で増やせる データ領域+スタック領域の最大サイズ)、 \fIstacksize\fR (自動的に拡張されるスタック領域の最大サイズ)、 \fIcoredumpsize\fR (生成されるコアダンプの最大サイズ)、 \fImemoryuse\fR (プロセスひとつにいちどきに割り当てることのできる物理メモリの最大サイズ)、 です。 .PP \fImaximum-use\fR は浮動小数点値または整数値に、 単位をつけて指定します。 \fIcputime\fR 以外の制限値は、`k' または `kilobytes' (1024 バイト) をデフォルトの単位としています。 単位として `m' または `megabytes' を用いることもできます。 \fIcputime\fR のデフォルトの単位は `seconds' です。 分を表す `m', 時間を表す `h', 分 + 秒を表す `mm:ss' の形式などを用いることもできます。 .PP \fIresource\fR も単位も、他と区別がつく範囲で後半部を省略可能です。 .RE .TP 8 .B log \fR(+) シェル変数 \fBwatch\fR を表示し、そこにリストアップされている ユーザがログインしていればログインした時刻に関わらず報告します。 \fIwatchlog\fR についても参照してください。 .TP 8 .B login ログインシェルを終了して、\fI/bin/login\fR (訳注: FreeBSD では /usr/bin/login です) のインスタンスで置き換えます。これはログオフする 方法のひとつであり、\fIsh\fR(1) との互換性を保つ意味もあります。 .TP 8 .B logout ログインシェルを終了します。\fBignoreeof\fR がセットされている場合に 特に役立つでしょう。 .TP 8 .B ls\-F \fR[\-\fIswitch\fR ...] [\fIfile\fR ...] (+) `ls \-F' と同じようにファイルのリストを表示しますが、ずっと高速です。 各種の特別なファイル形式は特殊文字を用いて以下のように示されます。 .PP .RS +8 .PD 0 .TP 4 / ディレクトリ .TP 4 * 実行可能 .TP 4 # ブロック型デバイス .TP 4 % キャラクタ型デバイス .TP 4 | 名前付きパイプ (名前付きパイプのあるシステムでのみ) .TP 4 = ソケット (ソケットのあるシステムでのみ) .TP 4 @ シンボリックリンク (シンボリックリンクのあるシステムでのみ) .TP 4 + 隠しディレクトリ (AIX のみ) またはコンテキスト依存 (HP/UX のみ) .TP 4 : ネットワーク特殊型 (HP/UX のみ) .PD .PP シェル変数 \fBlistlinks\fR がセットされている場合は、 シンボリックリンクに関してより詳しく表示されます (もちろん、シンボリックリンクを持つシステムでだけです)。 .PP .PD 0 .TP 4 @ ディレクトリでないものへのシンボリックリンク .TP 4 > ディレクトリへのシンボリックリンク .TP 4 & どこへのリンクでもないシンボリックリンク .PD .PP \fBlistlinks\fR はシンボリックリンクの指し示すファイルが 存在するパーティションのマウントを引き起こすため、\fIls\-F\fR を 遅くしてしまいます。 .PP もしシェル変数 \fBlistfrags\fR が `x', `a', `A' のいずれかに セットされているか、それらの組合せ (たとえば `xA') に セットされている場合は、これが `ls \-xF' や `ls \-Fa'、 もしくは組み合わせて `ls \-FxA' のように \fIls\-F\fR の フラグとして使われます。`ls \-C' がデフォルトでないマシンでは \fBlistflags\fR が `x' を含む場合には \fIls \-xF' のように、 そうでなければ \fIls \-F\fR は `ls \-CF' のように振舞います。 \fIls \-F\fR は、何らかのスイッチが与えられた場合には \fIls\fR(1) に引数を渡すので、`alias ls ls\-F' は通常、正しく動作します。 .PP 組み込みの \fBls\-F\fR はファイルタイプや拡張子によってファイル名を 色分けすることができます。シェル変数 \fBcolor\fR \fItcsh\fR と 環境変数 \fBLS_COLORS\fR を参照してください。 .RE .PP .B migrate \fR[\fB\-\fIsite\fR] \fIpid\fR|\fB%\fIjobid\fR ... (+) .PD 0 .TP 8 .B migrate \-\fIsite\fR (+) 最初の形式では指定したプロセスまたはジョブを、指定した場所もしくは システムパスによって決定されるデフォルトの場所に移動します。 2 番目の形式は `migrate \-\fIsite\fR $$' と同じ意味を持ちます。 これは現在のプロセスを指定した場所に移動します。シェルは その tty を失わないことになっているので、シェル自身を移動することは 予期しない動作の原因となります。(TCF のみ) .PD .TP 8 .B newgrp \fR[\fB\-\fR] \fIgroup\fR (+) `exec newgrp' と同じ意味をもちます。\fInewgrp\fR(1) を 参照してください。 シェルがこれを使うことができるようにコンパイルされている場合に のみ使用可能です。シェル変数 \fBversion\fR を参照してください。 .TP 8 .B nice \fR[\fB+\fInumber\fR] [\fIcommand\fR] シェルのスケジューリング優先度を \fInumber\fR に設定するか、 \fInumber\fR が指定されていない場合は 4 に設定します。\fIcommand\fR をつけると、コマンド \fIcommand\fR を適切な優先度で実行します。 \fInumber\fR が大きいほど、そのプロセスが獲得する CPU 時間は短くなります。 スーパーユーザは `nice \-number ...' とすることにより負の値を 設定することができます。コマンドは常にサブシェルから実行され、 コマンドには単純な \fIif\fR 文の場合と同じ制限が課されます。 .TP 8 .B nohup \fR[\fIcommand\fR] \fIcommand\fR をつけると、コマンド \fIcommand\fR を ハングアップシグナルを無視して実行するようにします。 これらのコマンドが \fInohup\fR をオーバーライドして ハングアップシグナルに対して自分自身で応答するようにすることが あることに注意してください。引数のない場合 (シェルスクリプト中で のみ許されます)、スクリプトのそれ以降の部分でシェルは ハングアップシグナルを無視するようになります。 \fBシグナル処理\fRと、組み込みコマンド \fIhup\fR についても 参照してください。 .TP 8 .B notify \fR[\fB%\fIjob\fR ...] ユーザに非同期的に指定したジョブ (%\fIjob\fR が省略された場合は カレントジョブ) の状態に何らかの変化があった場合に非同期的に、 通知するようにします。この場合は通常と異なり、次のプロンプトが 出力されるまで待ちません。 \fIjob\fR は \fBJobs\fR に記述されているように番号、文字列、`', `%', `+', `\-' のどれでも許されます。 シェル変数 \fBnotify\fR も参照してください。 .TP 8 .B onintr \fR[\fB\-\fR|\fIlabel\fR] 割り込み時のシェルの動作を制御します。 引数がなければ、シェルのデフォルトの割り込み時の動作に設定されます。 この場合は、シェルスクリプトは割り込みで中断され、 コマンド実行時はコマンドの実行を中断してコマンド入力待ちに戻ります。 `-' が指定された場合はすべての割り込みが無視されます。 \fIlabel\fR を指定すると、割り込みが発生したり子プロセスが 割り込みで中断したりした場合に `goto \fIlabel\fR' を実行します。 .IP "" 8 \fIonintr\fR は、システムのスタートアップファイル (\fBFILES\fR を参照) で割り込みが禁止されている場合には無視されます。 .TP 8 .B popd \fR[\fB\-p\fR] [\fB\-l\fR] [\fB\-n\fR|\fB\-v\fR] \fR[\fB+\fIn\fR] 引数がなければ、ディレクトリスタックからひとつ値を取り出して、 そこに移動します。`+\fIn\fR' のように数値を与えると、 ディレクトリスタックの \fIn\fR' 番目のエントリを破棄します。 .IP "" 8 また、すべての形式の \fIpopd\fR は \fIdirs\fR のように ディレクトリスタックの最後のエントリを表示します。 シェル変数 \fBpushdsilent\fR はこれを抑制し、 \fB-p\fR フラグによって \fBpushdsilent\fR の動作を オーバーライドすることができます。 \fB\-l\fR, \fB\-n\fR, \fB\-v\fR フラグは \fIpopd\fR でも、\fIdirs\fR と同じ意味をもちます。 .TP 8 .B printenv \fR[\fIname\fR] (+) すべての環境変数の名前と値を表示するか、\fIname\fR を与えた場合には 環境変数 \fIname\fR の値を表示します。 .TP 8 .B pushd \fR[\fB\-p\fR] [\fB\-l\fR] [\fB\-n\fR|\fB\-v\fR] [\fIname\fR|\fB+\fIn\fR] 引数がなければ、ディレクトリスタックの一番上にあるふたつの エントリを入れ換えます。もし \fBpushdtohome\fR がセットされていれば、 引数なしの \fIpushd\fR は \fIcd\fR のように `pushd ~' を行います。 (+) \fIname\fR をつけると、現在の作業ディレクトリを ディレクトリスタックに積んで \fIname\fR に移動します。 もし \fIname\fR が `\-' であれば、ひとつ前の作業ディレクトリとして 解釈されます (\fBファイル名置換\fRを参照)。 (+) \fBdunique\fR がセットされていれば、\fIpushd\fR は、スタックに \fIname\fR を積む前にすべてのそれと同じものを指すエントリを スタックから除去します。(+) `+\fIn\fR' として番号をつけると、ディレクトリスタックの \fIn\fR 番目のエントリがトップにくるようにスタックを回転します。 \fBdextract\fR がセットされている場合、`pushd +\fIn\fR' を行うと \fIn\fR 番目のディレクトリが展開されて、 スタックのトップに移動されます。(+) .IP "" 8 また、すべての形式の \fIpushd\fR は \fIdirs\fR と同じように ディレクトリスタックの最終的な内容を表示します。シェル変数 \fBpushdsilent\fR をセットすることでこれをやめることができ、 またさらにこれは \fB-p\fR フラグによってオーバーライドすることが 可能です。\fIpushd\fR に対する \fB\-l\fR, \fB\-n\fR, \fB\-v\fR フラグの意味は \fIdirs\fR のものと同様です。(+) .TP 8 .B rehash \fBpath\fR 変数の示すディレクトリの内容を保持する 内部ハッシュテーブルを再構成します。これはログインしている間に 新しいコマンドが \fBpath\fR の示すディレクトリに追加された場合に 必要です。これはあなたが自分の個人的なディレクトリにコマンドを 追加した場合か、システム管理者がシステムディレクトリの内容を変更した 場合にのみ行われるべきです。このコマンドはまた、チルダ記号を 用いたホームディレクトリ記述のキャッシュもフラッシュします。 .TP 8 .B repeat \fIcount command\fR 指定されたコマンド \fIcommand\fR を \fIcount\fR 回 繰り返し実行します。\fIcommand\fR に指定するものは 一行 \fIif\fR 文で指定する \fIcommand\fR と同様の制限を受けます。 入出力リダイレクションは \fIcount\fR が 0 であっても、 必ず一回だけ処理されます。 .TP 8 .B rootnode //\fInodename \fR(+) ルートノードを //\fInodename\fR に変更します。結果として `/' は `//\fInodename\fR' として解釈されます。 (Domain/OS のみ) .PP .B sched \fR(+) .br .B sched \fR[\fB+\fR]\fIhh:mm command\fR \fR(+) .PD 0 .TP 8 .B sched \-\fIn\fR (+) 最初の形式は、予定されているイベントのリストを表示します。 シェル変数 \fBsched\fR は予定されているイベントのリストを 表示する形式を設定するためにセットされます。 3 番目の形式は \fIcommand\fR を予定されているイベントのリストに 追加します。たとえば、 .PD .RS +8 .IP "" 4 > sched 11:00 echo It\\'s eleven o\\'clock. .PP は、午前 11 時に `It's eleven o'clock.' を表示させます。 時間は 12 時間制の AM/PM を指定する書式でも構いません。 .IP "" 4 > sched 5pm set prompt='[%h] It\\'s after 5; go home: >' .PP また、現在時刻からの相対的な時間でも構いません。 .IP "" 4 > sched +2:15 /usr/lib/uucp/uucico \-r1 \-sother .PP 相対的な指定では AM/PM を使うべきではありません。 3 番目の書式では \fIn\fR 番のイベントをリストから削除します。 .IP "" 4 > sched .br 1 Wed Apr 4 15:42 /usr/lib/uucp/uucico \-r1 \-sother .br 2 Wed Apr 4 17:00 set prompt=[%h] It's after 5; go home: > .br > sched \-2 .br > sched .br 1 Wed Apr 4 15:42 /usr/lib/uucp/uucico \-r1 \-sother .PP 予定イベントのリストにあるコマンドは、コマンドがリストに 入れられてから最初のプロンプトが出たあとで実行されます。 実行の正確な時間を過ぎてしまうことはありますが、 次のプロンプトでは遅れたコマンドが実行されます。 シェルがユーザのコマンド入力を待っている間に実行予定時間が来た コマンドは直ちに実行されます。しかし、既に実行されているコマンドの 実行に割り込むことはできませんし、 予定されていたコマンドの実行についても同様です。 .PP この仕組みはいくつかの Unix システムに実装されている \fIat\fR(1) に 似ていますが同じではありません。 指定した時刻通りにコマンドが実行できないことがあるのは非常に大きな 短所です。しかしこの仕組みの長所は、\fIsched\fR はシェルから 直接実行でき、シェル変数やその他の資源へのアクセスが できるということです。これは時刻によってユーザの作業環境を 変化させることを可能にします。 .RE .PP .B set .br .B set \fIname\fR ... .br .B set \fIname\fR\fB=\fIword\fR ... .br .B set [\-r] [\-f|\-l] \fIname\fR\fB=(\fIwordlist\fB)\fR ... (+) .br .B set \fIname[index]\fR\fB=\fIword\fR ... .br .B set \-r \fR(+) .br .B set \-r \fIname\fR ... (+) .PD 0 .TP 8 .B set \-r \fIname\fR\fB=\fIword\fR ... (+) 1 番目の形式ではすべてのシェル変数の値を表示します。 複数の単語からなる値を持つ変数は括弧で囲まれた値のリストとして表示します。 2 番目の形式では \fIname\fR に空文字列をセットします。 3 番目の形式では \fIname\fR に単一の単語 \fIword\fR をセットします。 4 番目の形式では \fIname\fR に \fIwordlist\fR で示した単語の リストをセットします。すべての場合においてコマンド置換や ファイル名置換が値に対して行われます。\-r が指定された場合には、 値は読み取り専用でセットされます。\-f または \-l が 指定された場合には、単語リストの中での順番を保ちながら 重複した単語が取り除かれます。 \-f は最初に出てきたものをリストに残し、\-l は最後に出てきたものを リストに残します。 5 番目の書式では変数 name の \fIindex\fR 番目の要素に \fIword\fR を セットします。この場合この要素は既に存在していなければなりません。 6 番目の書式は読み取り専用にセットされているシェル変数の 名前の一覧を表示します。 7 番目の書式は \fIname\fR を、値の有無に関わらず読み取り専用に セットします。 8 番目の書式は 3 番目の書式と同じですが、同時に \fIname\fR を 読み取り専用にセットします。 .PD .IP "" 8 複数の変数をセットしたり、読み取り専用にセットするために ひとつの set コマンドへの引数を繰り返すことができます。 しかし、変数への代入処理を開始する前に変数展開処理が一度に 行われることに注意してください。また、`=' は \fIname\fR と \fIword\fRの両方と接しているか、空白で区切られているかの どちらかであり、片方だけと接してはいけないことに注意してください。 組み込みコマンド \fIunset\fR についても参照してください。 .TP 8 .B setenv \fR[\fIname \fR[\fIvalue\fR]] 引数がなければ、すべての環境変数の名前と値を表示します。 \fIname\fR を与えられた場合は、環境変数 \fIname\fR の値を \fIvalue\fR に セットするか、\fIvalue\fR がなければ空文字列にセットします。 .TP 8 .B setpath \fIpath \fR(+) \fIsetpath\fR(1) と同様です。(Mach のみ) .TP 8 .B setspath\fR LOCAL|\fIsite\fR|\fIcpu\fR ... (+) システム実行パスを設定します。(TCF のみ) .TP 8 .B settc \fIcap value \fR(+) シェルに端末ケーパビリティ \fIcap\fR (\fItermcap\fR(5) で定義されたもの) は 値 \fIvalue\fR を持つことを教えます。 妥当性のチェックは行われません。 Concept 端末のユーザは、一番右の桁で適切な折り返しを行うために `settc xn no' を行う必要があるかもしれません。 .TP 8 .B setty \fR[\fB\-d\fR|\fB\-q\fR|\fB\-x\fR] [\fB\-a\fR] [[\fB+\fR|\fB\-\fR]\fImode\fR] (+) シェルが変更してはならない tty モード (\fB端末管理\fRを参照) を制御します。 \fB\-d\fR, \fB\-q\fR, \fB\-x\fR は \fIsetty\fR に、 それぞれ `edit', `quote', `execute' 時の tty モードをセットします。 \fB\-d\fR, \fB\-q\fR, \fB\-x\fR が指定されない場合、 `execute' が使用されます。 .IP "" 8 他の引数がなければ、\fIsetty\fR はオン (`+mode') または オフ (`-mode') に固定されているモードを一覧表示します。 使用可能なモードはシステムごとに異なるため、表示も異なります。 \fB\-a\fR をつけると、固定されているかどうかにかかわらず すべての tty モードを一覧表示します。 \fB+\fImode\fR, \fB\-\fImode\fR, \fImode\fR は、それぞれモード \fImode\fR をオンに固定、オフに固定、非固定にします。 たとえば、`setty +echok echoe' は `echok' をオンに固定し、 シェルがコマンドを実行する際に `echoe' モードを オンにしたりオフにしたりできるようにします。 .TP 8 .B setxvers\fR [\fIstring\fR] (+) \fIstring\fR に試験的なバージョンプリフィックスをセットし、 \fIstring\fR が省略された場合にはそれを削除します。(TCF のみ) .TP 8 .B shift \fR[\fIvariable\fR] 引数がなければ、\fBargv\fR[1] を破棄してメンバを左にずらします。 \fBargv\fR がセットされていなかったり、 値が 1 つもなかった場合にはエラーになります。 変数名 \fIvariable\fR を指定すると、 変数 \fIvariable\fR に対して同じ動作を行います。 .TP 8 .B source \fR[\fB\-h\fR] \fIname\fR [\fIargs\fR ...] \fIname\fR からコマンドを読み取って実行します。 コマンドはヒストリリストには残されません。 もし引数 \fIargs\fR が与えられればそれは \fBargv\fR に 入れられます。(+) \fIsource\fR コマンドは入れ子にすることができます。 もし入れ子のレベルがあまりに深くなり過ぎると、 シェルはファイル記述子の不足を起こすでしょう。 \fIsource\fR でのエラーはすべての入れ子になっている \fIsource\fR の 実行を停止します。 \fB\-h\fR を付けると、コマンドを実行するかわりに `history \-L' の ようにヒストリリストに入力されます。 .TP 8 .B stop \fB%\fIjob\fR|\fIpid\fR ... 指定したバックグラウンドで実行されているジョブまたはプロセスを 停止します。\fIjob\fR は番号か、文字列か、あるいは\fBジョブ\fRに 示されている `', `%', `+', `\-' のいずれかを指定します。 デフォルトの \fIjob\fR は存在しないので、 ただ `stop' を実行するだけではカレントジョブを 停止することにはなりません。 .TP 8 .B suspend \fB^Z\fR で送られるような stop シグナルが送られたかのように、 その場でシェルを停止させます。 これは多くの場合 \fIsu\fR(1) で起動したシェルを停止するのに用いられます。 .PP .B switch (\fIstring\fB) .br .B case \fIstr1\fB: .PD 0 .IP "" 4 \&... .br .B breaksw .PP \&... .PP .B default: .IP "" 4 \&... .br .B breaksw .TP 8 .B endsw 指定された文字列 \fIstring\fR に対して、各 case ラベルを連続的に マッチさせます。\fIstring\fR にはそれに先だってコマンド置換と ファイル名置換が行われます。case ラベルには変数置換が行われ、 ファイル名メタキャラクタの `*', `?', `[...]' を用いることができます。 `default' ラベルが出てくるまでにどの case ラベルとも マッチしなかった場合、default ラベルの後から実行が開始されます。 各 case ラベルと default ラベルは行の最初になければなりません。 \fIbreaksw\fR コマンドは実行を中断して \fIendsw\fR の後から 再開させます。 \fIbreaksw\fR を使用しない場合は C 言語と同様に case ラベルや default ラベルを通過して実行が続けられます。 もしマッチするラベルも default ラベルも存在しない場合は、 実行は \fIendsw\fR の後から再開されます。 .PD .TP 8 .B telltc \fR(+) 端末ケーパビリティのすべての値を一覧表示します (\fItermcap\fR(5) を参照)。 .TP 8 .B time \fR[\fIcommand\fR] コマンド \fIcommand\fR (エイリアスやパイプライン、コマンドリストや 括弧でくくったコマンドリストでない単純なものでなければなりません) を実行し、変数 \fBtime\fR の項で説明する形式で、実行所用時間に 関する要約を表示します。必要ならば、コマンド終了時に時間を 表示するための追加のシェルが生成されます。\fIcommand\fR を 指定しなかった場合は、現在のシェルとその子プロセスが使用した時間に 関する要約が表示されます。 .TP 8 .B umask \fR[\fIvalue\fR] 8 進数で指定されたファイル作成マスクを \fIvalue\fR に設定します。 一般的なマスクの値としては、グループにすべての権限を与え、 その他には読み取りと実行のみを許可する 002 や、グループとその他に 読み取りと実行を許可する 022 があります。 \fIvalue\fR を省略すると、現在のファイル作成マスクを表示します。 .TP 8 .B unalias \fIpattern .br パターン \fIpattern\fR にマッチするすべてのエイリアスを削除します。 したがって `unalias *' とすることですべてのエイリアスを 削除できます。 \fIunalias\fR するものがなかった場合もエラーにはなりません。 .TP 8 .B uncomplete \fIpattern\fR (+) パターン \fIpattern\fR にマッチするすべての補完対象を削除します。 したがって `uncomplete *' とすることですべての補完対象を 削除します。 \fIuncomplete\fR するものがなかった場合もエラーにはなりません。 .TP 8 .B unhash 実行プログラムの検索を高速化する内部ハッシュテーブルの使用を 禁止します。 .TP 8 .B universe \fIuniverse\fR (+) universe を \fIuniverse\fR に設定します。(Masscomp/RTU のみ) .TP 8 .B unlimit \fR[\fB\-h\fR] [\fIresource\fR] リソース \fIresource\fR の制限を解除します。\fIresource\fR が 指定されない場合は、すべてのリソースに関する制限が解除されます。 \fB\-h\fR が指定されると、対応するハードリミットが解除されます。 これはスーパーユーザのみが行うことができます。 .TP 8 .B unset \fIpattern パターン \fIpattern\fR にマッチするすべての変数を、読み取り専用の 場合も含めて削除します。したがって `unset *' とすることによって 読み取り専用のものも含めてすべての変数が削除されますが、 これは良いことではありません。 \fIunset\fR するものがなかった場合もエラーにはなりません。 .TP 8 .B unsetenv \fIpattern パターン \fIpattern\fR にマッチするすべての環境変数を削除します。 したがって `unsetenv *' とすることによってすべての環境変数を 削除することができますが、これは良いことではありません。 \fIunsetenv\fR する環境変数がなかった場合もエラーにはなりません。 .TP 8 .B ver \fR[\fIsystype\fR [\fIcommand\fR]] (+) 引数が与えられなかった場合は \fBSYSTYPE\fR を表示します。 \fIsystype\fR を指定した場合は、\fBSYSTYPE\fR を \fIsystype\fR に設定します。\fIsystype\fR とコマンド \fIcommand\fR を指定した場合は、\fIsystype\fR で \fIcommand\fR を 実行します。\fIsystype\fR は `bsd4.3' か `sys5.3' のいずれかです。 (Domain/OS のみ) .TP 8 .B wait すべてのバックグラウンドジョブの終了を待ちます。対話的にシェルが 実行されている場合、割り込みにより wait を停止することが できます。この際シェルはまだ終了していないすべてのジョブの名前と その番号を表示します。 .TP 8 .B warp \fIuniverse\fR (+) universe を \fIuniverse\fR に設定します。(Convex/OS のみ) .TP 8 .B watchlog \fR(+) 組み込みコマンド \fIlog\fR の別名です (そちらも参照)。 コンパイル時に使用できるように設定されている場合にのみ使用可能です。 シェル変数 \fBversion\fR を参照してください。 .TP 8 .B where \fIcommand\fR (+) コマンド \fIcommand\fR について、エイリアスや組み込みコマンド、 \fBpath\fR にある実行可能ファイルを含めてシェルの知っている すべての実体を一覧表示します。 .TP 8 .B which\fR \fIcommand\fR (+) コマンド \fIcommand\fR が、\fBpath\fR の検索などの処理のあとで、 実際に実行されるコマンドを表示します。組み込みのものは \fIwhich\fR(1) とほとんど同じですが、 \fItcsh\fR のエイリアスや組み込みコマンドついても正しく報告し、 また 10 から 100 倍高速です。 編集コマンド \fIwhich-command\fR についても参照してください。 .PP .B while (\fIexpr\fB)\fR .br \&... .PD 0 .TP 8 .B end 指定された式 \fIexpr\fR (\fB式\fRで述べられている式) の評価結果が 0 でない限り、\fIwhile\fR とそれに対応する \fIend\fR の間のコマンド を繰り返し実行します。 \fIwhile\fR と \fIend\fR はその行に単独で書かれなければなりません。 \fIbreak\fR と \fIcontinue\fR は、ループを途中で中断したり再開する 場合に使用します。 入力が端末の場合は、\fIforeach\fR の場合と同じように、 ループの内容を一通り入力するまでユーザにプロンプトが出力されます。 .PD .SS "特別なエイリアス (+)" これらのエイリアスは、設定されている場合それぞれ指示された時刻に 自動的に実行されます。これらのエイリアスは、初期状態ではすべて 未定義です。 .TP 8 .B beepcmd シェルが端末ベルを鳴らしたいときに実行されます。 .TP 8 .B cwdcmd 作業ディレクトリが変更されるたびに実行されます。たとえば、 ユーザが X Window System 上で作業していて、 \fIxterm\fR(1) および \fItwm\fR(1) のように、 タイトルバーをサポートしている リペアレントウインドウマネージャを使用していて、 .RS +8 .IP "" 4 > alias cwdcmd 'echo \-n "^[]2;${HOST}:$cwd ^G"' .PP を実行すると、シェルは、動作中の \fIxterm\fR(1) のタイトルを ホスト名、コロン、そしてカレント作業ディレクトリのフルパスに 変更します。 これをもっと面白く実行するには、次のようにします。 .IP "" 4 > alias cwdcmd 'echo \-n "^[]2;${HOST}:$cwd^G^[]1;${HOST}^G"' .PP こうすると、ホスト名および作業ディレクトリはタイトルバーに 変更されますが、アイコンマネージャのメニューにはホスト名しか 表示されなくなります。 .PP \fIcwdcmd\fR 中に \fIcd\fR, \fIpushd\fR あるいは \fIpopd\fR を置くと、 無限ループを引き起こす可能性があることに注意してください。 そういうことをする人は、そうしてしまった代償は受けるものだというのが 作者の見解です。 .RE .TP 8 .B jobcmd 各コマンドが実行される前またはコマンドが状態を変える前に実行します。 \fIpostcmd\fR と似ていますが、組み込みコマンドでは表示しません。 .RS +8 .IP "" 4 > alias jobcmd 'echo \-n "^[]2\e;\e!#^G"' .PP として \fIvi foo.c\fR を実行すると、 コマンド文字列が xterm タイトルバーに表示されます。 .RE .TP 8 .B helpcommand \fBrun-help\fR 編集コマンドが実行します。ヘルプが探すコマンド名は、 単一の引数として渡されます。 たとえば、 .RS +8 .IP "" 4 > alias helpcommand '\e!:1 --help' .PP とすると、GNU のヘルプ呼び出し方法を使った、 コマンドそのもののヘルプ表示が実行されます。 現在のところ、たくさんのコマンドを書いたテーブルを使う以外には、 いろいろな呼び出し方法 (たとえば、Unix の `-h' オプション)を 使い分ける簡単な方法はありません。 .RE .TP 8 .B periodic \fBtperiod\fR 分おきに実行されます。このエイリアスは、 たとえば新しいメールが届いたというような、 日常的ではあってもそれほど頻繁には起こらない変更点を チェックするのに便利な手段を提供します。 たとえば、 .RS +8 .IP "" 4 > set tperiod = 30 .br > alias periodic checknews .PP とすると、30 分おきに \fIchecknews\fR(1) プログラムが起動します。 \fIperiodic\fR が設定されているが、\fBtperiod\fR が設定されていないか あるいは 0 に設定されている場合、\fIperiodic\fR は \fIprecmd\fR のように振る舞います。 .RE .TP 8 .B precmd プロンプトが表示される直前に実行されます。たとえば、 .RS +8 .IP "" 4 > alias precmd date .PP とすると、各コマンド用にシェルプロンプトが表示される直前に \fIdate\fR(1) が起動します。 \fIprecmd\fR に何を設定できるかには制限はありませんが、 慎重に選んでください。 .RE .TP 8 .B postcmd 各コマンドが実行される前に実行されます。 .RS +8 .IP "" 4 > alias postcmd 'echo \-n "^[]2\e;\e!#^G"' .PP とすると、\fIvi foo.c\fR を実行すると xterm のタイトルバーに このコマンド文字列が書かれます。 .RE .TP 8 .B shell スクリプト中でインタプリタを指定していない実行可能スクリプト用の インタプリタを指定します。 最初の単語は、使用したいインタプリタへのフルパスでなくてはなりません (たとえば、`/bin/csh' や `/usr/local/bin/tcsh')。 .SS "特別なシェル変数" このセクションで述べる変数は、シェルにとっては特別な意味のあるものです。 .PP シェルは、起動時に次の変数を設定します。\fBaddsuffix\fR, \fBargv\fR, \fBautologout\fR, \fBcommand\fR, \fBecho_style\fR, \fBedit\fR, \fBgid\fR, \fBgroup\fR, \fBhome\fR, \fBloginsh\fR, \fBoid\fR, \fBpath\fR, \fBprompt\fR, \fBprompt2\fR, \fBprompt3\fR, \fBshell\fR, \fBshlvl\fR, \fBtcsh\fR, \fBterm\fR, \fBtty\fR, \fBuid\fR, \fBuser\fR そして \fBversion\fR です。 これらの変数は、起動後はユーザが変更しない限り変更されません。 シェルは、必要があれば、\fBcwd\fR, \fBdirstack\fR, \fBowd\fR および \fBstatus\fR を更新し、ログアウト時に \fBlogout\fR を設定します。 .PP シェルは、シェル変数 \fBafsuser\fR, \fBgroup\fR, \fBhome\fR, \fBpath\fR, \fBshlvl\fR, \fBterm\fR および \fBuser\fR と同名の 環境変数との同期を取ります。 つまり、環境変数が変更されると、シェルは対応するシェル変数を合致するように 変更するのです (シェル変数が読み込み専用でない場合です)。また、その逆も 行います。ここで、\fBcwd\fR と \fBPWD\fR は同じ意味を持ちますが、 この方法では同期は行われないということに注意してください。 また、シェルは、自動的に \fBpath\fR と \fBPATH\fR の違った形式を 相互変換するということにも注意してください。 .TP 8 .B addsuffix \fR(+) これが設定されている場合、ファイル名が補完の際に完全に一致するときに、 一致したものがディレクトリの場合には末尾に `/' を付け加え、 通常のファイルの場合には末尾にスペースを加えます。 デフォルトで設定されています。 .TP 8 .B afsuser \fR(+) これが設定されている場合、\fBautologout\fR の autolock 機能は、 ローカルのユーザ名の代わりにこの値を kerberos 認証用に使います。 .TP 8 .B ampm \fR(+) これが設定されている場合、時刻が 12 時間単位の AM/PM フォーマットで すべて表示されます。 .TP 8 .B argv シェルへの引数です。位置パラメータは \fBargv\fR から取られます。 すなわち、`$1' は `$argv[1]' に置き換えられるといった具合です。 デフォルトで設定されていますが、通常対話型シェルでは空です。 .TP 8 .B autocorrect \fR(+) これが設定されている場合は、補完を試みる前に 自動的に \fIspell-word\fR 編集コマンドが実行されます。 .TP 8 .B autoexpand \fR(+) これが設定されている場合は、補完を試みる前に自動的に \fIexpand-history\fR 編集コマンドが実行されます。 .TP 8 .B autolist \fR(+) これが設定されている場合は、あいまいな補完を行った後、 可能性のあるものをリストします。 `ambiguous' が設定されている場合、可能性のあるものを リストするのは、補完によって何の文字も 追加されなかった場合に限られます。 .TP 8 .B autologout \fR(+) 1 番目の単語は、時間を分単位で表しており、 この時間以上の間、何の処理もしていなければ 自動的にログアウトされます。2 番目の単語はオプションであり、 ここで指定された時間以上の間、何の処理もしていなければ 自動ロックがかかります。 シェルが自動的にログアウトする際には、 シェルは `auto-logout' と出力し、logout 変数を `automatic' に 設定し、そして終了します。 シェルが自動的にロックされたユーザは、作業を続けたいなら 自分のパスワードを入力することが必要になります。5 回入力に 失敗すると、自動的にログアウトします。 ログインシェルおよびスーパユーザのシェルでは、デフォルトで `60'(60 分後自動的にログアウトし、ロックはかけない) に 設定されています。しかし、シェルがウインドウシステムの もとで動いていると認識した場合 (すなわち、\fBDISPLAY\fR 環境変数が設定されている) や、 tty が疑似 tty(pty) である場合、あるいは、シェルがそのようには コンパイルされていない場合 (\fBversion\fR シェル変数を参照) には設定されません。 \fBafsuser\fR および \fBlogout\fR シェル変数も 参照してください。 .TP 8 .B backslash_quote \fR(+) これが設定されている場合、バックスラッシュ (`\\') は 常に `\\', `'', および `"' でクォートされます。これによって、 複雑なクォートをする手間が緩和されますが、 \fIcsh\fR(1) スクリプト中で文法エラーをひき起こす 可能性が出てきます。 .TP 8 .B catalog メッセージカタログのファイル名です。 これが設定されている場合、 デフォルトの `tcsh' の代りに `tcsh.${catalog}' を、 メッセージカタログとして tcsh は使用します。 .TP 8 .B cdpath カレントディレクトリ中にサブディレクトリが見つからなかった場合に、 \fIcd\fR が探索すべきディレクトリのリストです。 .TP 8 .B color これが設定されている場合、組み込みコマンド \fBls\-F\fR 用の カラー表示を有効にし、\fB\-\-color=auto\fR を \fBls\fR に渡します。あるいは、ただ 1 つのコマンドに 対してカラー表示を有効にするため、\fBls\-F\fR または \fBls\fR のみに設定することができます。 何に対しても設定しない場合は、\fB(ls\-F ls)\fR に対して 設定したのと等価です。 .TP 8 .B colorcat これが設定されている場合は、NLS メッセージファイルに対して カラー用エスケープシーケンスを有効にします。これによって、 色のついた NLS メッセージが表示されます。 .TP 8 .B command \fR(+) これが設定されている場合、シェルに渡されたコマンドは、 \fB-c\fR フラグ (そちらも参照) をつけたものに なります。 .TP 8 .B complete \fR(+) これが `enhance' に設定されている場合、補完は、 1) 大文字小文字を無視し、2) ピリオド、ハイフン、および アンダスコア (`.', `-', `_') を単語の区切り文字と みなし、ハイフンとアンダスコアを等価なものとみなします。 .TP 8 .B continue \fR(+) コマンドリストに対してこれが設定されている場合、シェルは リストされているコマンドを継続実行し、新たにコマンドを 開始しません。 .TP 8 .B continue_args \fR(+) continue と同じですが、シェルは次のコマンドを実行します: .RS +8 .IP "" 4 echo `pwd` $argv > ~/._pause; % .RE .TP 8 .B correct \fR(+) `cmd' に設定されている場合、コマンドは自動的にスペル訂正されます。 `complete' に設定されている場合、コマンドは自動的に補完されます。 `all' に設定されている場合、コマンドライン全体が訂正されます。 .TP 8 .B cwd カレントディレクトリのフルパス名です。 シェル変数 \fBdirstack\fR および \fBowd\fR も参照してください。 .TP 8 .B dextract \fR(+) これが設定されている場合、`pushd +\fIn\fR' はディレクトリを先頭に 持っていくのではなく、ディレクトリスタックから \fIn\fR 番目の ディレクトリを取り出します。 .TP 8 .B dirsfile \fR(+) `dirs \-S' および `dirs \-L' がヒストリファイルを探すデフォルトの 場所です。設定していない場合は、\fI~/.cshdirs\fR が使われます。 通常、\fI~/.tcshrc\fR の方が \fI~/.cshdirs\fR よりも先に ソースとして使われるため、\fBdirsfile\fR は、\fI~/.login\fR ではなく \fI~/.tcshrc\fR 中で設定すべきです。 .TP 8 .B dirstack \fR(+) ディレクトリスタック上の全ディレクトリの配列です。 `$dirstack[1]' はカレントディレクトリであり、`$dirstack[2]' は スタック上の最初のディレクトリといった具合です。 カレントディレクトリは `$dirstack[1]' ですが、 ディレクトリスタックの置換では `=0' であるなどということに 注意してください。\fBdirstack\fR を設定することでスタックを 任意に変更することができますが、最初の要素 (カレント ディレクトリ) は常に正しいものになります。 シェル変数 \fBcwd\fR および \fBowd\fR も参照してください。 .TP 8 .B dspmbyte \fR(+) `euc' に設定されている場合、EUC-kanji(Japanese) コードで 表示および編集ができるようになります。 `sjis' に設定されている場合、Shift-JIS(Japanese) コードで 表示および編集ができるようになります。 `big5' に設定されている場合、Big5(Chinese) コードで 表示および編集ができるようになります。 次のようなフォーマットに設定されている場合、 独自のマルチバイトコードフォーマットで 表示および編集ができるようになります: .RS +8 .IP "" 4 > set dspmbyte = 0000....(256 bytes)....0000 .PP テーブルには\fBちょうど\fR 256 バイト必要です。 256 文字それぞれは、ASCII コード 0x00, 0x01, ... 0xff に (左から右に向かって) 対応しています。 各キャラクタは、 .\" (position in this table?) 数値 0, 1, 2, 3 に設定されます。各数字には次のような意味があります: .br 0 ... マルチバイト文字に対しては使われません。 .br 1 ... マルチバイト文字の最初の 1 バイトに対して使われます。 .br 2 ... マルチバイト文字の 2 バイト目に対して使われます。 .br 3 ... マルチバイト文字の 1, 2 バイト両方に対して使われます。 .\" SHK: I tried my best to get the following to be grammatically correct. .\" However, I still don't understand what's going on here. In the .\" following example, there are three bytes, but the text seems to refer to .\" each nybble as a character. What's going on here? It this 3-byte code .\" in the table? The text above seems to imply that there are 256 .\" characters/bytes in the table. If I get some more info on this (perhaps .\" a complete example), I could fix the text to be grammatically correct. .\" (steve.kelem@xilinx.com 1999/09/13) .\" SHK: 私は、次の例が文法的に正しいものになるように全力を尽くしました。 .\" しかし、いまだに何が起こっているのか理解できていません。次の例では .\" 3 バイトありますが、テキストは各ニブル (半バイト) を 1 文字とみなして .\" いるようです。ここでは何が起こっているのでしょう?テーブル中にあるのは、 .\" この 3 バイトのコードなのですか?上のテキストでは、テーブル中には .\" 256 文字/バイトあるのだと暗に言っているように思えるのです。 .\" この件についてもっと情報が得られたら (おそらくそれは完全な .\" 使用例でしょう)、このテキストを文法的に正しいものにできるでしょう。 .PP 使用例: .br `001322' に設定した場合、最初の文字 (すなわち、ASCII コードで 0x00) と 2 番目の文字 (すなわち、ASCII コードで 0x01) は `0' に設定されます。 つまり、マルチバイト文字に対してはこれらの文字は使用しません。 3 番目の文字 (0x02) は `2' に設定されます。これは、マルチバイト文字の 最初の 1 バイトにこの文字が使用されることを表しています。 4 番目の文字 (0x03) は `3' に設定されます。この文字は、 マルチバイト文字の 1 バイト目にも 2 バイト目にも使用されます。 5 番目および 6 番目の文字 (0x04, 0x05) は `2' に設定されます。 これは、これらの文字がマルチバイト文字の 2 バイト目に使用されることを 表しています。 .PP GNU fileutils バージョンの ls では、-N ( --literal ) オプションが ついていないとマルチバイト文字のファイル名を表示できません。 もし、fileutils バージョンを使っている場合は、dspmbyte の 2 番目の文字を "ls" に設定してください。そうしないと、 たとえば "ls-F -l" でマルチバイト文字のファイル名が表示できません。 .RE .TP 8 .B dunique \fR(+) これが設定されている場合、\fIpushd\fR は、ディレクトリ名を スタックに置く前に \fIname\fR である任意の要素をスタックから削除します。 .TP 8 .B echo これが設定されている場合、各コマンドは、実行される直前に 引数と一緒にエコーされます。組み込みコマンド以外のコマンドについては、 展開がすべて行われた後にエコーされます。組み込みコマンドについては、 コマンドおよびファイル名の置換が行われるよりも前にエコーされます。 これは、置換がユーザの選択によって行われるものだからです。 このシェル変数は、コマンドラインオプション \fB-x\fR で設定されます。 .TP 8 .B echo_style \fR(+) echo 組み込みコマンドのスタイルです。次のように設定できます。 .PP .RS +8 .PD 0 .TP 8 bsd 第 1 引数が `-n' である場合、改行をエコーしません。 .TP 8 sysv echo 中の文字列のバックスラッシュで始まるエスケープシーケンスを 認識します。 .TP 8 both `-n' フラグとバックスラッシュで始まるエスケープシーケンスの 両方ともを認識します。これがデフォルトです。 .TP 8 none どちらも認識しません。 .PD .PP デフォルトでは、ローカルシステムのデフォルトに設定されます。 BSD ならびに System V オプションは、適当なシステムの \fIecho\fR(1) マニュアルページに解説があります。 .RE .TP 8 .B edit \fR(+) これが設定されている場合、コマンドラインエディタが使われます。 対話型シェルではデフォルトで設定されています。 .TP 8 .B ellipsis \fR(+) これが設定されている場合、`%c'/`%.' および `%C' プロンプトシーケンス (\fBprompt\fR シェル変数を参照) は、`/' の代わりに 省略記号 (`...') つきのスキップディレクトリを示すようになります。 .TP 8 .B fignore \fR(+) 補完する際に無視されるファイル名のサフィックスリストです。 .TP 8 .B filec \fItcsh\fR では補完は常に行われますので、この変数は無視されます。 \fIcsh\fR で設定されている場合は、ファイル名の補完が使われる ようになります。 .TP 8 .B gid \fR(+) ユーザの実グループ ID です。 .TP 8 .B group \fR(+) ユーザのグループ名です。 .TP 8 .B histchars \fBヒストリ置換\fR (そちらも参照) で使われる文字を 決定する文字列です。この値の最初の文字は、デフォルトの `!' の 代わりにヒストリ置換文字として使われます。2 番目の文字は、 クイック置換の際の文字 `^' の代わりをします。 .TP 8 .B histdup \fR(+) ヒストリリスト中の重複エントリの扱いを制御します。 この値が `all' に設定されている場合、単一のヒストリイベントが ヒストリリストに入力されます。`prev' に設定されている場合、 最後のヒストリイベントは現在のコマンドと同じとなり、そのため、 現在のコマンドはヒストリには入力されません。`erase' に設定されて いる場合、ヒストリリスト中に同じイベントが見つかったときには、 古い方のイベントは消去され、現在のものが挿入されます。 `prev' および `all' オプションはヒストリイベントの番号づけを やり直しますので、すき間はあかないのだということに注意してください。 .TP 8 .B histfile \fR(+) `history \-S' および `history \-L' が探すヒストリファイルの デフォルトの場所です。これが設定されていない場合、\fI~/.history\fR が 使われます。別々のマシン間で同じホームディレクトリを共有していたり、 端末ごとにヒストリを分けて保存していたりする場合、\fBhistfile\fR は 便利なものです。通常、\fI~/.history\fR ファイルよりも前に読み込まれる のは \fI~/.tcshrc\fR だけなので、\fBhistfile\fR は\fI~/.login\fR ではなく、\fI~/.tcshrc\fR で設定してください。 .TP 8 .B histlit \fR(+) これが設定されている場合、組み込みコマンド、編集コマンド および \fBsavehist\fR 機構はヒストリリスト中のコマンド行を 文字通りの (展開しない) 形式で使用します。\fItoggle-literal-history\fR 編集コマンドも参照してください。 .TP 8 .B history 最初の単語は、記録しておくべきヒストリイベント数を表します。 オプションである 2 番目の単語 (+) は、ヒストリが どういう形式で表示されるかを示しています。 これが与えられていなければ、 `%h\\t%T\\t%R\\n' が使われます。 フォーマットシーケンスは、\fBprompt\fR 下に記述されており、 そこでは、`%R' の意味が変わることの注意がされています。 デフォルトでは `100' です。 .TP 8 .B home 起動したユーザのホームディレクトリに初期化されます。 ファイル名での `\fI~\fR の展開には、この変数が参照されています。 .TP 8 .B ignoreeof これが空文字列あるいは `0' に設定されており、 入力デバイスが端末である場合には、 \fIend-of-file\fR コマンド (通常は、ユーザが空行に `~D' を打つことで 生成されます) を入力すると、シェルは終了してしまう代わりに `Use "exit" to leave tcsh.' と表示します。 これによって、シェルがうっかり kill されてしまうのを防ぐことができます。 番号 \fIn\fR を設定している場合には、 シェルは \fIn\fR - 1 回連続した \fIend-of-file\fR を無視し、 \fIn\fR 回目の \fIend-of-file\fR があればそのときに終了します。(+) これが設定されていない場合には、`1' が使われます。 つまり、シェルは `^D' 1 回で終了します。 .TP 8 .B implicitcd \fR(+) これが設定されている場合、シェルは、コマンドとして入力された ディレクトリ名を、あたかもそのディレクトリへ移動する要求であるものと 解釈します。\fIverbose\fR に設定されている場合、ディレクトリの移動が 行われることが標準出力にエコーされるようになります。 この振る舞いは、非対話的なシェルスクリプト、あるいは 2 語以上あるコマンド行では禁止されています。 ディレクトリを移動するのは、ディレクトリ名のような名前を持ったコマンドを 実行するよりも優先されますが、エイリアスの置換よりは後になります。 チルダおよび変数の展開も動作します。 .TP 8 .B inputmode \fR(+) `insert' あるいは `overwrite' に設定されている場合、 各行の先頭でエディタが入力モードに入るようになります。 .TP 8 .B killdup \fR(+) キルリング中の重複エントリの扱いを制御します。 `all' にセットすると、一意なエントリのみがキルリングに登録されます。 `prev' にセットすると、 最後にキルされた文字列が現在のキル文字列にマッチする場合、 現在の文字列はリングに登録されません。 `erase' にセットすると、同じ文字列がキルリング中に見付かった場合、 古い文字列が削除されて現在の文字列が挿入されます。 .TP 8 .B killring \fR(+) 何個のキルされた字列をメモリ中に保持するかを示します。 デフォルトで `30' にセットされます。 セットしないか、`2' より小さい値を設定すると、 最近キルした文字列のみをシェルは保持します。 .TP 8 .B listflags \fR(+) `x', `a', `A' あるいはこれらの組合せ (たとえば、`xA') に設定されている場合、 これらの値は、\fIls\-F\fR へのフラグとして使われ、`ls \-xF', `ls \-Fa', `ls \-FA' あるいはこれらの組合せ (たとえば、`ls \-FxA') のように振る舞うようになります。 `a' はすべてのファイルを表示します (たとえ、`.' で始まるファイルで あっても)。`A' は `.' および `..' 以外のファイルすべてを表示し、 `x' は上から下に向かってではなく、左から右に向かってソートします。 \fBlistflags\fR に 2 番目の単語が設定されていれば、 それは `ls(1)' へのパスとして使われます。 .TP 8 .B listjobs \fR(+) これが設定されていれば、ジョブが一時停止したときにすべての ジョブがリストされます。`long' に設定されていれば、 リストは長い形式のものになります。 .TP 8 .B listlinks \fR(+) これが設定されていれば、組み込みコマンド \fIls\-F\fR は 各シンボリックリンクが指しているファイルの種類を表示します。 .TP 8 .B listmax \fR(+) \fIlist-choices\fR 編集コマンドがユーザに最初に尋ねてこないで リストする最大要素数です。 .TP 8 .B listmaxrows \fR(+) \fIlist-choices\fR 編集コマンドがユーザに最初に尋ねてこないで リストする要素の最大行数です。 .TP 8 .B loginsh \fR(+) シェルがログインシェルである場合に設定されます。 シェル中でこの変数を設定したり設定を解除したりしても 何の効力もありません。\fBshlvl\fR も参照してください。 .TP 8 .B logout \fR(+) 通常のログアウトの前には、シェルによって `normal' が、 自動ログアウトの前には `automatic' が、そして、 シェルがハングアップシグナルによって終了させられた場合 (\fBシグナルの扱い\fRを参照) には `hangup' が設定されます。 \fBautologout\fR シェル変数も参照してください。 .TP 8 .B mail 届けられるメールをチェックするためのファイルあるいは ディレクトリ名です。これは、スペースで区切られ、 オプションで数字を前につけます。 プロンプトを出す前に、最後にメールチェックをしてから 10 分経っていた場合、シェルは各ファイルをチェックし、 もしファイルサイズが 0 より大きいか、あるいはアクセス時刻よりも 変更時刻の方が大きかった場合には `You have new mail.' (あるいは、\fBmail\fR に複数のファイルが含まれていた場合、 `You have new mail in \fIname\fR.') と表示します。 .PP .RS +8 .PD .PP ログインシェルにいる場合には、シェルの起動時刻後にファイルが 変更されない限り、どのメールファイルも報告されません。 これは、余計に通知しないようにするためです。 大部分の login プログラムでは、ログイン時にメールが届いているかどうかを 教えてくれるものです。 .PP \fBmail\fR で指定されたファイルがディレクトリである場合、 シェルは、ディレクトリ中の各ファイルを別々のメッセージとして計算し、 `You have \fIn\fR mails.' とか `You have \fIn\fR mails in \fIname\fR.' とかと適切に報告します。この機能は、主に Andrew Mail System のように、 メールをこの方式で保存するシステム用に提供されたものです。 .PP \fBmail\fR の最初の単語が数値である場合、それはメールチェックの 間隔を変えるものとして受け取られます。秒単位です。 .PP とても稀な状況下ですが、シェルが `You have new mail.' ではなく `You have mail.' と報告することがあります。 .RE .TP 8 .B matchbeep \fR(+) これが `never' に設定されている場合、補完が行われてもビープ音は 鳴りません。 `nomatch' に設定されている場合、マッチするものがないときにのみ ビープ音が鳴ります。 `ambiguous' に設定されている場合、マッチするものが複数あるときに ビープ音が鳴ります。 `notunique' に設定されている場合、完全にマッチするものが 1 つあり、 また、それとは別にもっと長くマッチするものがあったときにビープ音が 鳴ります。 これが設定されていない場合、`ambiguous' が使われます。 .TP 8 .B nobeep \fR(+) これが設定されている場合、ビープ音は完全に無効になります。 \fBvisiblebell\fR も参照してください。 .TP 8 .B noclobber これが設定されている場合、出力リダイレクションに制限がおかれるようになり、 \fB入出力\fRセクションで述べているように、 ファイルをうっかり壊さないように、また、`>>' リダイレクションが存在する ファイルを指すように保証できます。 .TP 8 .B noding \fBprompt\fR の時刻指定子において、時間の変わり目に `DING!' と 表示するのを無効にします。 .TP 8 .B noglob これが設定されている場合、\fBファイル名置換\fRおよび、 \fBディレクトリスタック置換\fR (そちらも参照) が 禁止されます。この機能は、ファイル名を扱わないシェルスクリプトや、 ファイル名のリストを取得した後、さらに展開をされたくない スクリプトには最も有効なものです。 .TP 8 .B nokanji \fR(+) これが設定されており、シェルが漢字をサポートしている場合 (シェル変数 \fBversion\fR を参照)、漢字のサポートを無効にし、 メタキーが使えるようにします。 .TP 8 .B nonomatch これが設定されている場合、\fBファイル名置換\fRおよび \fBディレクトリスタック置換\fR (そちらも参照) の際に、 存在するファイルにマッチしなかったときに、エラーを出さずに そのまま放置するようになります。置換が機能しないときには 相変わらずエラーになります。 たとえば、`echo [' は相変わらずエラーとなります。 .TP 8 .B nostat \fR(+) 補完処理が行われている間に \fIstat\fR(2) をかけるべきではない ディレクトリのリスト (あるいは、ディレクトリにマッチする グロブパターンです。\fBファイル名置換\fRを参照) です。 この機能は、\fIstat\fR(2) を実行するととてつもない時間が かかってしまうようなディレクトリ、 たとえば \fI/afs\fR などを除外するのに通常使われます。 .TP 8 .B notify これが設定されている場合、シェルはジョブが完了したことを非同期に 通知します。デフォルトは、プロンプトが表示される直前に ジョブの完了を提示します。 .TP 8 .B oid \fR(+) ユーザの実組織 ID です (Domain/OS のみです)。 .TP 8 .B owd \fR(+) 前の作業ディレクトリで、\fIcd\fR が使う `\-' および \fIpushd\fR と等価です。 \fBcwd\fR および \fBdirstack\fR シェル変数も参照してください。 .TP 8 .B path 実行可能なコマンドを探すディレクトリのリストです。 null 文字はカレントディレクトリを示します。 \fBpath\fR 変数がない場合、フルパス名での指定のみ実行されます。 \fBpath\fR は、起動時にシェルが環境変数 \fBPATH\fR から設定するか、 あるいは \fBPATH\fR が存在しなかった場合には、システム依存の デフォルト、たとえば `(/usr/local/bin /usr/bsd /bin /usr/bin .)' のようなものに 設定します。 シェルは、`.' を \fBpath\fR の先頭あるいは末尾に置くことができ、 また、コンパイルの仕方に依存しますが、 `.' を完全に省いてしまうことも できます。\fB\-c\fR, \fB\-t\fR オプションのどちらも与えられていない シェルは、\fI~/.tcshrc\fR を読み込んだ後および \fBpath\fR が リセットされるたびにディレクトリの中身をハッシュに格納します。 シェルがアクティブである間に、ユーザが \fBpath\fR 中の ディレクトリに新しいコマンドを追加した場合、 シェルがそのコマンドを見つけられるように \fIrehash\fR を実行する必要があるかもしれません。 .TP 8 .B printexitvalue \fR(+) これが設定されており、対話型のプログラムが 0 以外のステータスで 終了した場合、シェルは `Exit \fBstatus\fR' と表示します。 .TP 8 .B prompt 端末からコマンドを読み込む前に表示される文字列です。 \fBprompt\fR には、次のフォーマット列 (+) のどれを含んでも構いません。 このフォーマット列は、与えられた情報で書き換えられます。 .PP .RS +8 .PD 0 .TP 4 %/ カレント作業ディレクトリです。 .TP 4 %~ カレント作業ディレクトリですが、`~' で表現される ユーザのホームディレクトリおよび `~user' で表現される 他のユーザのホームディレクトリを \fBファイル名置換\fRします。 `~user' の置換は、現在のセッションにおいて、 シェルがパス名に `~\fIuser\fR' を使っている場合にのみ起こります。 .TP 4 %c[[0]\fIn\fR], %.[[0]\fIn\fR] 現在の作業ディレクトリの、末尾の要素です。 数字 \fIn\fR が指定されている場合、末尾の \fIn\fR 個の要素です。 \fIn\fR が `0' で開始する場合、スキップされた要素数が 末尾要素の前に付き、次の書式となります `/<\fIスキップされた数\fR>末尾要素'。 シェル変数 \fBellipsis\fR が設定されている場合、 スキップされた要素は省略記号で置換されますので、 全体的には `...末尾要素' となります。 `~' 置換は、前述の `%~' と同様に行われますが、 `~' 要素は、末尾要素数を数える対象からは除外されます。 .TP 4 %C %c に似ていますが、`~' の置換を行いません。 .TP 4 %h, %!, ! 現在のヒストリイベント番号です。 .TP 4 %M 完全なホスト名です。 .TP 4 %m 最初の `.' までのホスト名です。 .TP 4 %S (%s) 強調表示モードを開始 (終了) します。 .TP 4 %B (%b) ボールド体表示モードを開始 (終了) します。 .TP 4 %U (%u) アンダラインモードを開始 (終了) します。 .TP 4 %t, %@ AM/PM の 12 時間表記での時刻です。 .TP 4 %T `%t' に似ていますが、こちらは 24 時間表記です (ただし、シェル変数 \fBampm\fR も参照)。 .TP 4 %p 秒まで含めた、AM/PM の 12 時間表記での `正確な' 時刻です。 .TP 4 %P `%p' に似ていますが、こちらは 24 時間表記です (ただし、シェル変数 \fBampm\fR も参照)。 .TP 4 \e\fIc\fR \fIc\fR は \fIbindkey\fR 中にあるものとしてパースされます。 .TP 4 ^\fIc\fR \fIc\fR は \fIbindkey\fR 中にあるものとしてパースされます。 .TP 4 %% `%' 1 つです。 .TP 4 %n ユーザ名です。 .TP 4 %d `Day' 形式の曜日。 .TP 4 %D `dd' 形式の日にち。 .TP 4 %w `Mon' 形式の月。 .TP 4 %W `mm' 形式の月。 .TP 4 %y `yy' 形式の年。 .TP 4 %Y `yyyy' 形式の年。 .TP 4 %l シェルの tty。 .TP 4 %L プロンプトの終わりから、 ディスプレイの終わりまたは行末までクリアします。 .TP 4 %$ `$' の直後のシェル変数または環境変数を展開します。 .TP 4 %# 普通のユーザは `>' (または \fBpromptchars\fR シェル変数の最初の文字)、 スーパーユーザは `#' (または \fBpromptchars\fR の 2 番目の文字)。 .TP 4 %{\fIstring\fR%} \fIstring\fR を文字通りのエスケープシーケンスとして取り込みます。 これは端末属性を変更するためにのみ使うべきで、 カーソル位置の移動をこれで行ってはいけません。 これは \fBprompt\fR の最後のシーケンスであってはいけません。 .TP 4 %? プロンプトの直前で実行されたコマンドの戻り値。 .TP 4 %R \fBprompt2\fR の中ではパーザの状態。 \fBprompt3\fR の中では修正された文字列。 \fBhistory\fR の中では履歴文字列。 .PD .PP `%B', `%S', `%U', `%{\fIstring\fR%}' は、 8bit クリーンなシェルでのみ利用できます。 \fBversion\fR シェル変数を参照してください。 .PP ボールド、スタンドアウト、下線といったシーケンスは、 スーパーユーザのシェルを区別するために使われることが多いです。 たとえば、 .IP "" 4 > set prompt = "%m [%h] %B[%@]%b [%/] you rang? " .br tut [37] \fB[2:54pm]\fR [/usr/accts/sys] you rang? _ .PP `%t', `%@', `%T', `%p', `%P' のどれかが使われていて、 かつ \fBnoding\fR が設定されていなければ、 毎正時 (`:00' 分) には実際の時刻の代わりに `DING!' を表示します。 .PP 対話的シェルでのデフォルトは `%# ' です。 .RE .TP 8 .B prompt2 \fR(+) \fIwhile\fR ループや \fIforeach\fR ループの中で、 また `\\' で終った行の次の行で、 プロンプトとして用いられる文字列。 \fBprompt\fR (そちらも参照) と同じ フォーマットシーケンスが使えます。 `%R' の意味が変わることに注意してください。 対話的シェルでのデフォルトは `%R?' です。 .TP 8 .B prompt3 \fR(+) 自動スペル訂正の確定時のプロンプト文字列。 \fBprompt\fR (そちらも参照) と同じ フォーマットシーケンスが使えます。 `%R' の意味が変わることに注意してください。 対話的シェルでのデフォルトは `CORRECT>%R (y|n|e|a)?' です。 .TP 8 .B promptchars \fR(+) (2 文字の文字列に) 設定すると、\fBprompt\fR シェル変数中の `%#' フォーマットシーケンスが、普通のユーザでは最初の文字で、 スーパーユーザでは 2 番目の文字で置き換えられます。 .TP 8 .B pushdtohome \fR(+) 設定すると、引数をとらない \fIpushd\fR は、 \fIcd\fR のように `pushd ~' を実行します。 .TP 8 .B pushdsilent \fR(+) 設定すると、\fIpushd\fR と \fIpopd\fR の際に ディレクトリスタックが表示されなくなります。 .TP 8 .B recexact \fR(+) 設定すると、補完の際に正確なマッチがあれば、 より長いマッチが可能な場合でも、正確なほうに補完します。 .TP 8 .B recognize_only_executables \fR(+) 設定すると、コマンドリストは パス中にある実行可能なファイルのみを表示します。遅いです。 .TP 8 .B rmstar \fR(+) 設定すると、ユーザは `rm *' を実行する前に確認を受けます。 .TP 8 .B rprompt \fR(+) (コマンド入力後) prompt が左に表示される際に、 スクリーンの右側 (コマンド入力の後ろ側) に表示される文字列。 prompt と同じフォーマット文字列が使えます。 この文字列は、コマンド入力を邪魔しないように自動的に隠れたり、 また再度現れたりします。 (左側の) プロンプト、コマンド入力、この文字列が 最初の 1 行に収まる場合に限り、この文字列は表示されます。 \fBedit\fR が設定されていなければ、 \fBrprompt\fR はプロンプトの後、コマンド入力の前に表示されます。 .TP 8 .B savedirs \fR(+) 設定すると、シェルは終了する前に `dirs \-S' を行います。 最初の単語を数字に設定すると、 その個数までディレクトリスタックのエントリを保存します。 .TP 8 .B savehist 設定すると、シェルは終了する前に `history \-S' を行います。 最初の単語を数字に設定すると、その個数までの行が保存されます。 (個数は \fBhistory\fR 以下でなければなりません。) 2 番目の単語を `merge' にすると、 履歴ファイルが存在する場合に、置換ではなく追加を行います。 そしてタイムスタンプによってソートを行い、 最近のイベントを残します。(+) .TP 8 .B sched \fR(+) \fIsched\fR 組み込みコマンドがスケジュールイベントを表示する書式。 特に指定しなければ `%h\\t%T\\t%R\\n' が使われます。 フォーマットシーケンスは上記の \fBprompt\fR 以下に書いてあります。 `%R' の意味が変わることに注意してください。 .TP 8 .B shell シェルのファイル。これはシェルをフォークして、 実行ビットが設定されているがシステムによる実行が不可能なファイルを 実行するために用いられます (\fB組み込みコマンド、非組み込みコマンドの実行\fRを参照)。 初期値は、(システム依存の) シェルの置き場所です。 .TP 8 .B shlvl \fR(+) 入れ子になったシェルの数。ログインシェルでは 1 にリセットされます。 \fBloginsh\fR も参照してください。 .TP 8 .B status 最後のコマンドによって返された状態。 コマンドが異常終了した場合には 0200 が加えられます。 組み込みコマンドは、失敗すると終了状態 `1' を返します。 その他の場合は、すべての組み込みコマンドは状態 `0' を返します。 .TP 8 .B symlinks \fR(+) いくつか異なった値に設定でき、 シンボリックリンク (`symlink') の解決を制御できます。 .RS +8 .PP `chase' に設定すると、 カレントディレクトリがシンボリックリンクを含むディレクトリになったら、 リンクをそれが指しているディレクトリの実名に展開します。 この機能はユーザのホームディレクトリでは働きません。これはバグです。 .PP `ignore' にすると、 このシェルはリンクを通ってカレントディレクトリを移動する場合、 移動先のディレクトリを現在のディレクトリに対する 相対位置として構築しようとします。 これはすなわち、シンボリックリンクを通して cd を行い、 続いて `cd ..' を行うと、 元のディレクトリに戻る、ということを意味します。 これは組み込みコマンドとファイル名補完にのみ影響します。 .PP `expand' に設定すると、シェルはパス名のように見える引き数を 実際に展開して、シンボリックリンクを元に戻そうとします。 これは組み込みコマンドのみならず、すべてのコマンドに影響します。 残念ながら、これは認識しにくいファイル名 (たとえばコマンドオプションに埋めこまれたものなど) には動作しません。 クォートすれば展開は行われません。 たいていの場合はこの設定が便利ですが、 展開すべき引き数を認識できないと、誤解や混乱の元になるかもしれません。 妥協案として、 `ignore' にしておいて、 必要な場合には編集コマンド \fInormalize-path\fR (デフォルトでは ^X-n にバインドされています) を使うのがいいかもしれません。 .PP 順にいくつか例を示します。 まずは遊び場となるディレクトリを準備しましょう。 .IP "" 4 > cd /tmp .br > mkdir from from/src to .br > ln \-s from/src to/dst .PP \fBsymlinks\fR が設定されていない場合の動作: .IP "" 4 > cd /tmp/to/dst; echo $cwd .br /tmp/to/dst .br > cd ..; echo $cwd .br /tmp/from .PP \fBsymlinks\fR が `chase' に設定されている場合の動作: .IP "" 4 > cd /tmp/to/dst; echo $cwd .br /tmp/from/src .br > cd ..; echo $cwd .br /tmp/from .PP \fBsymlinks\fR が `ignore' に設定されている場合の動作: .IP "" 4 > cd /tmp/to/dst; echo $cwd .br /tmp/to/dst .br > cd ..; echo $cwd .br /tmp/to .PP \fBsymlinks\fR が `expand' に設定されている場合の動作: .IP "" 4 > cd /tmp/to/dst; echo $cwd .br /tmp/to/dst .br > cd ..; echo $cwd .br /tmp/to .br > cd /tmp/to/dst; echo $cwd .br /tmp/to/dst .br > cd ".."; echo $cwd .br /tmp/from .br > /bin/echo .. .br /tmp/to .br > /bin/echo ".." .br \&.. .PP いくつか注意しますと、`expand' による展開は、 1) \fIcd\fR のような組み込みコマンドに対しては `ignore' のように働きます。 2) クォートすれば行われません。 3) 非組み込みコマンドの場合は、ファイル名を渡す前に行われます。 .RE .TP 8 .B tcsh \fR(+) `R.VV.PP' 形式のシェルのバージョン番号です。 `R' はメジャーリリース番号、 `VV' はカレントバージョン、 `PP' はパッチレベルです。 .TP 8 .B term 端末の種類。 \fBスタートアップとシャットダウン\fR で述べているように、通常は \fI~/.login\fR で設定されます。 .TP 8 .B time 数値を設定すると、それ以上の CPU 時間 (秒) を消費したコマンドの実行後に、 自動的に組み込みコマンド \fItime\fR (そちらも参照) を実行します。2 番目の単語があれば、 \fItime\fR 組み込みコマンドの出力フォーマット文字列として 使われます。 (u) 以下のシーケンスがフォーマット文字列で使えます。 .PP .RS +8 .PD 0 .TP 4 %U プロセスがユーザモードで消費した CPU 時間 (秒)。 .TP 4 %S プロセスがカーネルモードで消費した CPU 時間 (秒)。 .TP 4 %E (壁時計での) 経過時間 (秒)。 .TP 4 %P (%U + %S) / %E として計算される CPU 使用率。 .TP 4 %W プロセスがスワップされた回数。 .TP 4 %X (共有) テキスト空間の平均使用量。 Kbyte 単位。 .TP 4 %D (非共有) データ/スタック空間の平均使用量。 Kbyte 単位。 .TP 4 %K (%X + %D) の総使用量。 Kbyte 単位。 .TP 4 %M プロセスが使用したメモリの瞬間最大値。 Kbyte 単位。 .TP 4 %F メジャーページフォールトの回数 (ディスクから取って来る必要があったページ数)。 .TP 4 %R マイナーページフォールトの回数。 .TP 4 %I 入力操作の回数。 .TP 4 %O 出力操作の回数。 .TP 4 %r ソケットメッセージを受け取った回数。 .TP 4 %s ソケットメッセージを送った回数。 .TP 4 %k シグナルを受け取った回数。 .TP 4 %w 自発的なコンテキストスイッチの回数 (wait の回数)。 .TP 4 %c 非自発的なコンテキストスイッチの回数。 .PD .PP BSD 資源制限機能の無いシステムでは、 最初の 4 つのシーケンスだけがサポートされています。 デフォルトの時間フォーマットは、 資源使用報告をサポートしているシステムでは `%Uu %Ss %E %P %X+%Dk %I+%Oio %Fpf+%Ww' で、 そうでないシステムでは `%Uu %Ss %E %P' です。 .PP Sequent の DYNIX/ptx では、 %X, %D, %K, %r, %s が使えませんが、 以下の追加シーケンスが利用できます。 .PP .PD 0 .TP 4 %Y システムコールが実行された回数。 .TP 4 %Z 要求に応じてゼロで埋められたページ数。 .TP 4 %i プロセスの常駐サイズがカーネルによって増加させられた回数。 .TP 4 %d プロセスの常駐サイズがカーネルによって減少させられた回数。 .TP 4 %l read システムコールが実行された回数。 .TP 4 %m write システムコールが実行された回数。 .TP 4 %p raw ディスク装置から読み込んだ回数。 .TP 4 %q raw ディスク装置へ書き込んだ回数。 .PD .PP デフォルトの時間フォーマットは `%Uu %Ss $E %P %I+%Oio %Fpf+%Ww' です。 マルチプロセッサでは CPU 使用率が 100% より高くなることがあります。 .RE .TP 8 .B tperiod \fR(+) 特別なエイリアス \fIperiodic\fR の実行される周期 (分単位)。 .TP 8 .B tty \fR(+) tty の名前。端末にアタッチされていない場合は空。 .TP 8 .B uid \fR(+) ユーザの実ユーザ ID。 .TP 8 .B user ユーザのログイン名。 .TP 8 .B verbose 設定すると、ヒストリ置換後に、 各コマンドの単語を (あれば) 表示します。 コマンドラインオプション \fB\-v\fR によって設定されます。 .TP 8 .B version \fR(+) バージョン ID スタンプ。 シェルのバージョン番号 (\fBtcsh\fR を参照) 、 配布元、リリース日、ベンダー、オペレーティングシステム、 マシン (\fBVENDOR\fR, \fBOSTYPE\fR, \fBMACHTYPE\fR を参照)、 コンパイル時に設定されたオプションをカンマで区切ったリストからなります。 ディストリビューションのデフォルトとして セットされたオプションが記録されています。 .PP .RS +8 .PD 0 .TP 4 8b シェルは 8bit クリーン。デフォルト。 .TP 4 7b シェルは 8bit クリーンでない。 .TP 4 nls システムの NLS を使う。 NLS のあるシステムではデフォルト。 .TP 4 lf ログインシェルは \fI/etc/csh.cshrc\fR の後ではなく先に \fI/etc/csh.login\fR を実行し、 \fI~/.tcshrc\fR と \fI~/.history\fR の後ではなく先に \fI~/.login\fR を実行する。 .TP 4 dl セキュリティ上の理由から `.' を \fBpath\fR の最後に置く。デフォルト。 .TP 4 nd セキュリティ上の理由から `.' を \fBpath\fR に含めない。 .TP 4 vi \fIemacs\fR-形式ではなく \fIvi\fR-形式の編集をデフォルトにする。 .TP 4 dtr ログインシェルは終了時に DTR を落とす。 .TP 4 bye \fIbye\fR を \fIlogout\fR の同義語とし、 \fIlog\fR を \fIwatchlog\fR の別名として扱う。 .TP 4 al \fBautologout\fR を有効にする。デフォルト。 .TP 4 kan \fBnokanji\fR シェル変数が設定されない限り、 ロケール設定が適切であれば、漢字を使う。 .TP 4 sm システムの \fImalloc\fR(3) を使う。 .TP 4 hb シェルスクリプトの実行時に `#! ' 方式をエミュレートする。 .TP 4 ng \fInewgrp\fR 組み込みコマンドが利用可能。 .TP 4 rh シェルは \fBREMOTEHOST\fR 環境変数を設定しようとする。 .TP 4 afs シェルはもしローカルな認証が失敗したら、 kerberos サーバにパスワードを確認する。 \fBafsuser\fR シェル変数か \fBAFSUSER\fR 環境変数が 設定されていたら、その内容でローカルユーザ名を上書きする。 .PD .PP システム管理者は、文字列を追加して ローカルバージョンでの違いを示すようにできます。 .RE .TP 8 .B visiblebell \fR(+) 設定すると、音声ベルの代わりに画面をフラッシュします。 \fBnobeep\fR も参照してください。 .TP 8 .B watch \fR(+) ログイン / ログアウトの監視対象とする、「ユーザ / 端末」ペアのリスト。 ユーザに対する端末が `any' なら、指定したユーザをすべての端末で監視します。 逆にユーザが `any' なら、指定した端末ですべてのユーザを監視します。 \fBwatch\fR を `(any any)' に設定すると、 すべてのユーザと端末を監視します。 たとえば、 .RS +8 .IP "" 4 set watch = (george ttyd1 any console $user any) .PP は、ユーザ `george' の ttyd1 での行動を、 そしてあらゆるユーザのコンソールでの行動を、 そして自分自身 (または不法侵入者) のすべての端末での行動を報告します。 .PP デフォルトでは、ログインとログアウトは 10 分毎に調べられますが、 \fBwatch\fR の最初の単語に、調べる間隔を分単位で書くこともできます。 たとえば、 .IP "" 4 set watch = (1 any any) .PP は 1 分おきにあらゆるログイン / ログアウトを報告します。 我慢の効かない人は、\fIlog\fR 組み込みコマンドを用いれば、 いつでも \fBwatch\fR のレポートを見ることができます。 \fBwatch\fR が最初に設定された時には、 現在ログインしているユーザリストが (\fIlog\fR 組み込みコマンドによって) 報告されます。 .PP \fBwatch\fR の報告形式は \fBwho\fR シェル変数で制御します。 .RE .TP 8 .B who \fR(+) \fBwatch\fR メッセージのフォーマット文字列。 以下のシーケンスが得られた情報で置換されます。 .PP .RS +8 .PD 0 .TP 4 %n ログイン / ログアウトしたユーザの名前。 .TP 4 %a 観察された行動: `logged on', `logged off', `replaced \fIolduser\fR on' のいずれか。 .TP 4 %l ユーザがログイン / ログアウトした端末 (tty)。 .TP 4 %M リモートホストの完全なホスト名。 ローカルホストでのログイン / ログアウトの場合は `local'。 .TP 4 %m リモートホストの、最初の `.' までのホスト名。 IP アドレスや X Window System ディスプレイの場合は名前全体。 .PD .PP %M と %m は \fI/etc/utmp\fR にリモートホスト名を 格納するシステムでのみ利用できます。 設定しなければ `%n has %a %l from %m.' が用いられます。 ただしリモートホスト名を格納しないシステムでは `%n has %a %l.' が用いられます。 .RE .TP 8 .B wordchars \fR(+) \fIforward-word\fR, \fIbackward-word\fR 等の編集コマンドで、 単語の一部とみなされる非英数文字のリスト。 設定されなければ `*?_\-.[]~=' が使われます。 .SH 環境変数 .TP 8 .B AFSUSER \fR(+) \fBafsuser\fR シェル変数と同じです。 .TP 8 .B COLUMNS 端末の桁数です (\fB端末管理\fR を参照)。 .TP 8 .B DISPLAY X Window System によって使われます (\fIX\fR(1) を参照)。 設定されると、このシェルは \fBautologout\fR (そちらも参照) を設定しません。 .TP 8 .B EDITOR デフォルトのエディタのパス名です。 \fBVISUAL\fR 環境変数と \fIrun-fg-editor\fR 編集コマンドも参照してください。 .TP 8 .B GROUP \fR(+) \fBgroup\fR シェル変数と同じです。 .TP 8 .B HOME \fBhome\fR シェル変数と同じです。 .TP 8 .B HOST \fR(+) シェルが実行されているマシンの名前で初期化されます。 これは \fIgethostname\fR(2) システムコールで決定されます。 .TP 8 .B HOSTTYPE \fR(+) シェルが実行されているマシンのタイプで初期化されます。 これはコンパイル時に決定されます。 この変数は廃止される予定であり、将来のバージョンで削除されるでしょう。 .TP 8 .B HPATH \fR(+) \fIrun-help\fR 編集コマンドがコマンドの解説文書を探す ディレクトリのリストです。区切り文字はコロンです。 .TP 8 .B LANG 優先的に使用される文字環境を与えます。 \fB固有言語システムのサポート\fRを参照してください。 .TP 8 .B LC_CTYPE 設定されていると、ctype キャラクタの扱いだけが変更されます。 \fB固有言語システムのサポート\fRを参照してください。 .TP 8 .B LINES 端末の行数です。 \fB端末管理\fRを参照してください。 .TP 8 .B LS_COLORS この変数のフォーマットは \fBtermcap\fR(5) ファイルのフォーマットと 似ています。"\fIxx=string\fR" の形をした式をコロンで区切って並べた リストです。"\fIxx\fR" は 2 文字の変数名です。 変数とそれらのデフォルト値は以下の通りです。 .PP .RS +8 .RS +4 .PD 0 .TP 12 no 0 Normal (non-filename) text: ファイル名を除く通常のテキスト .TP 12 fi 0 Regular file: 通常のファイル .TP 12 di 01;34 Directory: ディレクトリ .TP 12 ln 01;36 Symbolic link: シンボリックリンク .TP 12 pi 33 Named pipe (FIFO): 名前付きパイプ .TP 12 so 01;35 Socket: ソケット .TP 12 bd 01;33 Block device: ブロック型デバイス .TP 12 cd 01;32 Character device: キャラクタ型デバイス .TP 12 ex 01;32 Executable file: 実行可能ファイル .TP 12 mi (none) Missing file (defaults to fi): 行方不明のファイル .TP 12 or (none) Orphaned symbolic link (defaults to ln): リンク先のないシンボリックリンク .TP 12 lc ^[[ Left code: 色指定シーケンス開始コード .TP 12 rc m Right code: 色指定シーケンス終了コード .TP 12 ec (none) End code (replaces lc+no+rc): 色出力を終えるシーケンス .PD .RE .PP デフォルトから変更したい変数だけを指定すれば OK です。 .PP ファイルの名前を、ファイル名の拡張子をもとに色づけすることもできます。 これの指定は、\fBLS_COLORS\fR 変数に \fB"*ext=string"\fR のシンタックスを用いて行います。 たとえば、ISO 6429 のコードを使いすべての C 言語のソースファイルを ブルーに色づけするには \fB"*.c=34"\fR と指定すればよいでしょう。 これは \fB.c\fR で終わるすべてのファイルをブルー (34) に色づけします。 .PP コントロールキャラクタは C スタイルのエスケープ表記か stty のような ^\- 表記のどちらかで書くことができます。C スタイルの表記では エスケープコードの記述に \fB^[\fR, スペースコードの記述に \fB\_\fR, デリートコードの記述に \fB?\fR を追加します。 さらに、\fB^[\fR エスケープキャラクタを用いると、 \fB^[\fR, \fB^\fR, \fB:\fR, \fB=\fR のデフォルトの解釈を 変更することができます。 .PP それぞれのファイルは \fB\fR \fB\fR \fB\fR \fB\fR \fB\fR のように書かれます。 \fB\fR が未定義ならば、\fB\fR \fB \fB\fR のシーケンスが代わりに使われます。 こちらの方が通常便利に使えますが、あまり一般的ではありません。 left, right, end のコードを用意した理由は、 同じシーケンスを繰り返し入力しなくてもいいように、また、 妙な端末に対応できるようにするためです。 通常は、ISO 6429 カラーシーケンスと異なるシステムを使っていない 限り、これらを変更する必要はほとんどありません。 .PP 端末が ISO 6429 color コードを使っていれば、(\fBlc\fR, \fBrc\fR, \fBec\fR コードを全く使わずに) セミコロンで区切られた数字のコマンドで タイプコードを構成することができます。 良く用いられるコマンドは以下の通りです。 .PP .RS +8 .PD 0 .TP 4 0 デフォルトの色に戻します。 .TP 4 1 高輝度色 .TP 4 4 アンダライン付きテキスト .TP 4 5 点滅テキスト .TP 4 30 前景色黒 .TP 4 31 前景色赤 .TP 4 32 前景色グリーン .TP 4 33 前景色黄 (ブラウン) .TP 4 34 前景色ブルー .TP 4 35 前景色紫 .TP 4 36 前景色シアン .TP 4 37 前景色白 (グレー) .TP 4 40 背景色黒 .TP 4 41 背景色赤 .TP 4 42 背景色グリーン .TP 4 43 背景色黄 (ブラウン) .TP 4 44 背景色ブルー .TP 4 45 背景色紫 .TP 4 46 背景色シアン .TP 4 47 背景色白 (グレー) .PD .RE .PP すべてのコマンドがすべてのシステムや表示装置で 動作するわけではありません。 .PP 少なからぬ端末プログラムではデフォルトの終了コードを正しく 認識しません。ディレクトリのリストをした後ですべてのテキストに 色を付けるためには、\fBno\fR コードと \fBfi\fR コードを、 それぞれ 0 から前景色、背景色の数値コードへ変更してみてください。 .RE .TP 8 .B MACHTYPE \fR(+) コンパイル時に決定されたマシンタイプ (マイクロプロセッサまたは、 マシンモデル) です。 .TP 8 .B NOREBIND \fR(+) 設定されていると、印刷可能文字は \fIself-insert-command\fR を 繰り返し実行されません。 \fB固有言語システムのサポート\fRを参照してください。 .TP 8 .B OSTYPE \fR(+) コンパイル時に決定されたオペレーションシステムです。 .TP 8 .B PATH 実行可能ファイルを探すディレクトリの、コロン区切り形式のリスト。 シェル変数 \fBpath\fR によく似ていますがフォーマットに違いがあります。 .TP 8 .B PWD \fR(+) シェル変数 \fBcwd\fR に似ていますが、シェル変数とは同期していません。 実際のディレクトリ変更が行われたあとでだけアップデートされます。 .TP 8 .B REMOTEHOST \fR(+) ユーザがどのホストからログインしているかを示します (リモートからのログインで、 かつこのシェルがこれらの情報を決定できる場合)。 シェルがそのようにコンパイルされている場合だけに設定されます。 \fBversion\fR シェル変数を参照してください。 .TP 8 .B SHLVL \fR(+) \fBshlvl\fR と同じです。 .TP 8 .B SYSTYPE \fR(+) 現在のシステムタイプです。 (Domain/OS のみ) .TP 8 .B TERM \fBterm\fR シェル変数と同じです。 .TP 8 .B TERMCAP 端末のケーパビリティ文字列です。 \fB端末管理\fRを参照してください。 .TP 8 .B USER \fBuser\fR シェル変数と同じです。 .TP 8 .B VENDOR \fR(+) コンパイル時に決定されたベンダ名です。 .TP 8 .B VISUAL デフォルトのフルスクリーンエディタへのパス名です。 \fBEDITOR\fR 環境変数と \fIrun-fg-editor\fR 編集コマンドも参照してください。 .SH 関連ファイル .PD 0 .TP 16 .I /etc/csh.cshrc すべてのシェルで最初に読み込まれます。 ConvexOS, Stellix, Intel では \fI/etc/cshrc\fR を使います。 NeXTs では \fI/etc/cshrc.std\fR を使います。 A/UX, AMIX, Cray, IRIX の \fIcsh\fR(1) はこのファイルを読みませんが、 いずれにせよ \fItcsh\fR ではこのファイルが読み込まれます。 Solaris 2.x もこのファイルを持ちませんが、\fItcsh\fR は \fI/etc/.cshrc\fR を読み込みます。(+) .TP 16 .I /etc/csh.login \fI/etc/csh.cshrc\fR の後にログインシェルによって読み込まれます。 ConvexOS, Stellix, Intel では \fI/etc/login\fR を使います。 NeXTs では \fI/etc/login.std\fR を使用します。 Solaris 2.x では \fI/etc/.login\fR を使います。 A/UX, AMIX, Cray, IRIX では \fI/etc/cshrc\fR を使います。 .TP 16 .I ~/.tcshrc \fR(+) \fI/etc/csh.cshrc\fR かそれに相当するファイルの後に、 すべてのシェルで読み込まれます。 .TP 16 .I ~/.cshrc \fI~/.tcshrc\fR が存在しなければ、 \fI/etc/csh.cshrc\fR かそれに相当するファイルの後に、 すべてのシェルで読み込まれます。 このマニュアルでは `\fI~/.tcshrc\fR' を 「`\fI~/.tcshrc\fR' か `\fI~/.tcshrc\fR' が見つからなかった場合の \fI~/.cshrc\fR'」 の意味で使用します。 .TP 16 .I ~/.history \fBsavehist\fR が設定されている場合は \fI~/.tcshrc\fR の後にログインシェルによって読み込まれます。 ただし \fBhistfile\fR の部分も参照してください。 .TP 16 .I ~/.login \fI~/.tcshrc\fR または \fI~/.history\fR の後にログインシェルによって 読み込まれます。シェルは\fI~/.login\fR を \fI~/.tcshrc\fR と \fI~/.history\fR の後にではなく、前に読み込むように コンパイルされているかもしれません。 \fBversion\fR シェル変数を参照してください。 .TP 16 .I ~/.cshdirs \fR(+) \fBsavedirs\fR が設定されている場合には、 \fI~/.login\fR の後にログインシェルによって読み込まれます。 ただし \fBdirsfile\fR も参照してください。 .TP 16 .I /etc/csh.logout ログアウト時にログインシェルによって読み込まれます。 ConvexOS, Stellix, Intel では、 \fI/etc/logout\fR を使います。 A/UX, AMIX, Cray, IRIX では、 \fIcsh\fR(1) はこれに対応するファイルを持ちませんが、 いずれにしても \fItcsh\fR はこのファイルを読みます。 Solaris 2.x も \fI/etc/logout\fR を持っていませんが、 \fItcsh\fR は \fI/etc/.logout\fR を読み込みます。 (+) .TP 16 .I ~/.logout \fI/etc/csh.logout\fR またはその相当ファイルが実行された後に、 ログインシェルによって読み込まれます。 .TP 16 .I /bin/sh `#' で始まらないシェルスクリプトを解釈実行するために使われます。 .TP 16 .I /tmp/sh* `<<' 用の一時ファイルです。 .TP 16 .I /etc/passwd ホームディレクトリ `~name' を代入するための情報源です。 .PD .PP スタートアップファイルの読み込みの順番は、 シェルのコンパイル時に変更されているかもしれません。 \fBスタートアップとシャットダウン\fRと \fBversion\fR を参照してください。 .SH "新規機能 (+)" このマニュアルでは、\fItcsh\fR をひとつの対象として記述してきました。 しかし \fIcsh\fR(1) の経験者は、 \fItcsh\fR の新しい機能に特に興味があるでしょう。 .PP コマンド行編集: GNU Emacs スタイルや \fIvi\fR(1)-スタイルの キーバインディングをサポートしています。 \fBコマンド行エディタ\fRと\fB編集コマンド\fRを参照してください。 .PP プログラマブルで対話的な単語補完と一覧表示。 \fB補完と一覧\fRと、組み込みコマンド \fIcomplete\fR, \fIuncomplete\fR の記述を見てください。 .PP ファイル名、コマンド、変数名の\fBスペル訂正\fR (そちらも参照)。 .PP \fBエディタ編集コマンド\fR (そちらも参照) で、 コマンドのタイプ中に他の便利な機能を実行できます。 ヘルプファイルの参照してください (\fIrun-help\fR)、 手軽にエディタの再起動 (\fIrun-fg-editor\fR)、 コマンド解決 (\fIwhich-command\fR) などができます。 .PP 高性能化されたヒストリ機能。 ヒストリリストのイベントにタイムスタンプをつけられます。 \fIhistory\fR コマンドおよびそれに関連するシェル変数、 \fBヒストリ置換\fRに記述されている、 以前には文書化されていなかった `#' イベント記述子と新しい修正子、 \fI*-history\fR, \fIhistory-search-*\fR, \fIi-search-*\fR, \fIvi-search-*\fR, \fItoggle-literal-history\fR 各編集コマンド、 シェル変数 \fBhistlit\fR なども参照してください。 .PP 高性能化されたディレクトリ解釈 (parsing) とディレクトリスタック操作。 \fIcd\fR, \fIpushd\fR, \fIpopd\fR and \fIdirs\fR コマンドとそれらに 関連するシェル変数、\fBディレクトリスタック置換\fRでの説明、 \fBdirstack\fR, \fBowd\fR, \fBsymlinks\fR シェル変数、 \fInormalize-command\fR, \fInormalize-path\fR 編集コマンドなどを参照してください。 .PP グロブパターンの否定。 \fBファイル名置換\fRを見てください。 .PP 新しいファイル問い合わせ演算子 (そちらも参照) とそれらを用いる組み込みコマンド \fIfiletest\fR。 .PP スケージューリングされたイベント、特別なエイリアス、自動ログアウト、 端末のロック、コマンド待ち、ログインとログアウトの監視などなどを含む、 各種の\fB自動イベント、定期イベント、時刻指定イベント\fR (それぞれの項目を参照)。 .PP 固有言語システムのサポート (\fB固有言語システムのサポート\fRを見てください)、 OS 固有の各種機能のサポート (\fBOS 固有機能のサポート\fRと \fBecho_style\fR シェル変数を参照)、 システム依存のファイル配置 (\fB関連ファイル\fRを参照) .PP 拡張された端末管理能力 (\fB端末管理\fRを参照)。 .PP \fIbuiltins\fR, \fIhup\fR, \fIls\-F\fR, \fInewgrp\fR, \fIprintenv\fR, \fIwhich\fR, \fIwhere\fR などの新しい 組み込みコマンド (それぞれの項目を参照)。 .PP 新しい変数。シェルから便利な情報を簡単に入手できます。 \fBgid\fR, \fBloginsh\fR, \fBoid\fR, \fBshlvl\fR, \fBtcsh\fR, \fBtty\fR, \fBuid\fR, \fBversion\fR シェル変数と、 \fBHOST\fR, \fBREMOTEHOST\fR, \fBVENDOR\fR, \fBOSTYPE\fR, \fBMACHTYPE\fR 環境変数。 それぞれの説明を見てください。 .PP 有用な情報をプロンプト文字列に埋めこむための新しいシンタックス (\fBprompt\fR を参照)。 ループとスペル訂正用の特別なプロンプト (\fBprompt2\fR と \fBprompt3\fR を参照)。 .PP 読み取り専用の変数 (\fB変数置換\fRを参照)。 .SH バグ サスペンドされたコマンドが再開されたときに、 カレントディレクトリが起動されたときと違っている場合には、 起動時のディレクトリを表示します。 ジョブが内部でディレクトリを変更することもあり得るので、 これは間違った情報を与えてしまうかもしれません。 .PP シェルの組み込み機能は停止、再開できません。 `a ; b ; c' のような形のコマンド列を停止させるときの処理も あまり上品なものではありません。 `b' コマンドをサスペンドさせると、 シェルは即座に `c' コマンドを実行してしまいます。 \fIalias\fR での展開結果を実行しているときには、 特にこの点に注意が必要です。 コマンド列を () の中に入れて、 サブシェルに押し込めてしまうのがいいでしょう。 つまり `( a ; b ; c )' のようにするのです。 .PP プロセス開始後の端末出力の制御が原始的です。 誰かが仮想端末の良いインタフェースを作ってくれるといいのですが。 仮想端末インターフェースの分野では、 出力制御に関して面白いことがたくさん行えるはずです。 .PP エイリアス置換がシェル手続きのシミュレートに大変良く用いられますが、 これはあまり気のきいたものではありません。 エイリアスよりもシェル手続きを提供すべきです。 .PP ループの中のコマンドは、ヒストリリストに追加されません。 制御構造は、組み込みコマンドとしては認識されず、単に解釈されます。 したがって制御コマンドはどこにでも置くことができ、 パイプ `|' といっしょにも、 `&' と `;' のようなメタシンタックスといっしょにも使えます。 .PP \fIforeach\fR は \fIend\fR を探しているとき ヒアドキュメントを無視しません。 .PP `:' 修飾子は、 コマンド置換の出力に使えるべきです。 .PP ダム端末のように、端末がカーソルを上に移動できない場合には、 スクリーン幅より長い行の更新が大変貧弱です。 .PP \fBHPATH\fR と \fBNOREBIND\fR は環境変数である必要はありません。 .PP `?' や `*' や `[]' を使わないグロブパターンや、 `{}' や `~' を使うグロブパターンは、否定が正しく扱われません。 .PP \fIif\fR の単一コマンド形式では、たとえ式が偽で、 コマンドが実行されなかったとしても、リダイレクト出力をしてしまいます。 .PP \fIls\-F\fR はファイル名をソートするとき、 ファイル識別キャラクタを勘定に入れてしまいます。 またファイル名の中の制御文字を正しく扱うことができません。 中断させることもできません。 .PP バグレポートは tcsh-bugs@mx.gw.com まで送ってください。 修正もいっしょに送っていただけるとありがたいです。 もし tcsh のメンテナンスとテストを手伝って下さる場合には、 本文に "subscribe tcsh " と一行書いたメールを listserv@mx.gw.com に送ってください。 "subscribe tcsh-bugs " を講読すれば すべてのバグレポートが取得できます。 "subscribe tcsh-diffs " を講読すれば 開発 ML に参加でき、各パッチレベルでの diff を入手できます。 .SH tcsh の T の由来 1964 年 DEC は PDP-6 を開発しました。 のちに PDP-10 が再実装されました。 1970 年前後に DEC がそのセカンドモデル KI10 を発表したとき、 これには DECsystem-10 という新しい名前がつけられました。 .PP TENEX は 1972 年に Bolt, Beranek & Newman (Massachusetts 州 Cambridge のシンクタンク) において、 実験的なデマンドページ型仮想記憶 OS として作られました。 彼らは DEC PDP-10 用の新しいページャを構築し、 それを使った OS を作りました。 これは学術分野で非常に大きな成功を収めました。 .PP 1975 年 DEC は PDP-10 の新しいモデル KL10 を発表しました。 DEC は BBN から TENEX のライセンスを受け、 KL10 は TENEX 版のみにするつもりでした。 DEC はそれらのバージョンを TOPS-20 と呼んでいました (大文字化は商標です)。 多くの TOPS-10 ("The OPerating System for PDP-10" の頭文字です) ユーザが これに反対しました。 こうして DEC は同じハードウエアにふたつの互換性のないシステムを サポートしなければならないことになりました。 --でもそのとき PDP-11 には 6 つの OS があったのですが! .PP TENEX の TOPS-20 はバージョン 3 までに、 ULTCMD と呼ばれるユーザコードレベルのコマンド補完機能サブルーチンを 備えていました。バージョン 3 で DEC は、 これらの機能すべてと、さらにそれ以上とをモニタ (Unix でいうところのカーネル) に追加し、 COMND& JSYS (`Jump to SYStem' 命令; スーパーバイザーを呼び出す機能 [私が IBM 上がりだってバレちゃった?]) でアクセスできるようにしました .PP tcsh の作者たちは TENEX と TOPS-20 における これらの機能に影響を受け、これを模倣した版の csh を作成したのです。 .SH 制限 単語は 1024 文字より長くできません。 .PP システムは引数並びを 10240 文字までに制限しています。 .PP コマンドに与える引き数の数 (ファイル名展開を含む) は、 引き数リストに許された文字数の 1/6 までに制限されています。 .PP コマンド置換では、 引数リストに許された文字数より多くの文字数に置換できません。 .PP シェルはループを検出するために、 \fIalias\fR 置換の回数を 1 行当たり 20 に制限しています。 .SH 関連項目 csh(1), emacs(1), ls(1), newgrp(1), sh(1), setpath(1), stty(1), su(1), tset(1), vi(1), x(1), access(2), execve(2), fork(2), killpg(2), pipe(2), setrlimit(2), sigvec(2), stat(2), umask(2), vfork(2), wait(2), malloc(3), setlocale(3), tty(4), a.out(5), termcap(5), environ(7), termio(7), Introduction to the C Shell .SH バージョン このマニュアルは tcsh 6.11.00 (Astron) 2001-09-02 に関するドキュメントです。 .SH 作者 .PD 0 .TP 2 William Joy \fIcsh\fR(1) のオリジナル作者 .TP 2 J.E. Kulp, IIASA, Laxenburg, Austria ジョブコントロールとディレクトリスタック機能 .TP 2 Ken Greer, HP Labs, 1981 ファイル名補完 .TP 2 Mike Ellis, Fairchild, 1983 コマンド名認識 / 補完 .TP 2 Paul Placeway, Ohio State CIS Dept., 1983-1993 コマンドラインエディタ、プロンプトルーチン、新しいグロブの文法、 たくさんの修正とスピードアップ .TP 2 Karl Kleinpaste, CCI 1983-4 特別なエイリアス、ディレクトリスタックの取出し機能、 ログイン / ログアウト監視、スケジュールイベント、 新しいプロンプト書式のアイデア .TP 2 Rayan Zachariassen, University of Toronto, 1984 \fIls\-F\fR と \fIwhich\fR の組み込み、たくさんのバクフィックス、 修正とスピードアップ .TP 2 Chris Kingsley, Caltech 高速ストレージアロケータルーチン .TP 2 Chris Grevstad, TRW, 1987 4.3BSD \fIcsh\fR の \fItcsh\fR へのマージ .TP 2 Christos S. Zoulas, Cornell U. EE Dept., 1987-94 HPUX, SVR2, SVR3 に移植、SysV 版 getwd.c, SHORT_STRINGS をサポート、 sh.glob.c の新バージョン .TP 2 James J Dempsey, BBN, and Paul Placeway, OSU, 1988 A/UX に移植 .TP 2 Daniel Long, NNSC, 1988 \fBwordchars\fR .TP 2 Patrick Wolfe, Kuck and Associates, Inc., 1988 \fIvi\fR モードのクリーンアップ .TP 2 David C Lawrence, Rensselaer Polytechnic Institute, 1989 \fBautolist\fR と、あいまい補完の一覧 .TP 2 Alec Wolman, DEC, 1989 プロンプト中の改行 .TP 2 Matt Landau, BBN, 1989 ファイル \fI~/.tcshrc\fR .TP 2 Ray Moody, Purdue Physics, 1989 スペースバーの魔法によるヒストリ展開 .TP 2 Mordechai ????, Intel, 1989 printprompt() の修正と追加 .TP 2 Kazuhiro Honda, Dept. of Computer Science, Keio University, 1989 自動スペル訂正と \fBprompt3\fR .TP 2 Per Hedeland, Ellemtel, Sweden, 1990- さまざまなバグフィックス、改良とマニュアルのアップデート .TP 2 Hans J. Albertsson (Sun Sweden) \fBampm\fR, \fIsettc\fR, \fItelltc\fR .TP 2 Michael Bloom 割り込みハンドリングの修正 .TP 2 Michael Fine, Digital Equipment Corp 拡張キーのサポート .TP 2 Eric Schnoebelen, Convex, 1990 Convex サポート、\fIcsh\fR の多数のバグフィックス、 ディレクトリスタックの保存と復帰 .TP 2 Ron Flax, Apple, 1990 A/UX 2.0 への (再) 移植 .TP 2 Dan Oscarsson, LTH Sweden, 1990 NLS サポートと非 NLS サイト用の NLS シミュレート機能、修正 .TP 2 Johan Widen, SICS Sweden, 1990 \fBshlvl\fR, Mach サポート、\fIcorrect-line\fR, 8 ビット表示 .TP 2 Matt Day, Sanyo Icon, 1990 POSIX termio サポート、SysV limit 修正 .TP 2 Jaap Vermeulen, Sequent, 1990-91 vi モード修正、expand-line, ウインドウ変更の修正、Symmetry 移植 .TP 2 Martin Boyer, Institut de recherche d'Hydro-Quebec, 1991 \fBautolist\fR beeping オプション、 行の先頭からカーソルまでのすべてを対象とするヒストリ検索の修正 .TP 2 Scott Krotz, Motorola, 1991 Minix に移植 .TP 2 David Dawes, Sydney U. Australia, Physics Dept., 1991 SVR4 ジョブコントロールの修正 .TP 2 Jose Sousa, Interactive Systems Corp., 1991 拡張 \fIvi\fR の修正、\fIvi\fR デリートコマンド .TP 2 Marc Horowitz, MIT, 1991 ANSIfication の修正、新しい exec ハッシュコード、 imake の修正、\fIwhere\fR .TP 2 Bruce Sterling Woodcock, sterling@netcom.com, 1991-1995 ETA と Pyramid への移植、 Makefile と lint の修正、\fBignoreeof\fR=n 追加、 その他のさまざまな移植性向上のための変更、およびバグ修正 .TP 2 Jeff Fink, 1992 \fIcomplete-word-fwd\fR と \fIcomplete-word-back\fR .TP 2 Harry C. Pulley, 1992 Coherent に移植 .TP 2 Andy Phillips, Mullard Space Science Lab U.K., 1992 VMS-POSIX に移植 .TP 2 Beto Appleton, IBM Corp., 1992 移動プロセスグループの修正、\fIcsh\fR バグ修正、 POSIX file tests, POSIX SIGHUP .TP 2 Scott Bolte, Cray Computer Corp., 1992 CSOS に移植 .TP 2 Kaveh R. Ghazi, Rutgers University, 1992 Tek, m88k, Titan と Masscomp への移植と修正、 autoconf サポートの追加 .TP 2 Mark Linderman, Cornell University, 1992 OS/2 に移植 .TP 2 Mika Liljeberg, liljeber@kruuna.Helsinki.FI, 1992 Linux に移植 .TP 2 Tim P. Starrin, NASA Langley Research Center Operations, 1993 読み取り専用変数 .TP 2 Dave Schweisguth, Yale University, 1993-4 新しいマニュアルページと tcsh.man2html .TP 2 Larry Schwimmer, Stanford University, 1993 AFS と HESIOD パッチ .TP 2 Luke Mewburn, RMIT University, 1994-6 プロンプトの中でのディレクトリ表示の拡張、 \fBellipsis\fR と \fBrprompt\fR .TP 2 Edward Hutchins, Silicon Graphics Inc., 1996 暗黙的な cd の追加。 .TP 2 Martin Kraemer, 1997 Siemens Nixdorf EBCDIC machine に移植 .TP 2 Amol Deshpande, Microsoft, 1997 WIN32 (Windows/95 and Windows/NT) に移植、 足りないライブラリすべてと、 メッセージカタログコードのすべてを作成し、 Windows と通信できるようにした .TP 2 Taga Nayuta, 1998 色つき ls の追加 .PD .PP .SH 謝辞 以下のみなさんに感謝します。 .br Bryan Dunlap, Clayton Elwell, Karl Kleinpaste, Bob Manson, Steve Romig, Diana Smetters, Bob Sutterfield, Mark Verber, Elizabeth Zwicky そして提案と応援をしてくれたオハイオ州のすべてのみなさん。 .PP あらゆるバージョンに耐え、バグレポートを送ってくれ、 提案と新規追加をしてくれたネット上のすべてのみなさん。 .PP "tcsh の T の由来" の章を執筆してくれた Richard M. Alderson III。 .SH 翻訳 t_ogawa .br おさな .br ゆ〜こ .br 森浩二 .br NOKUBI Hirotaka .br 中野武雄 (JM プロジェクト) .br 蔭山 .br 中村和志@神戸 .br 大澤千敏@岐阜 .br 熊谷典大 .br (順不同) .PP 翻訳にあたり、JM プロジェクトの方々の御協力を頂きました。 diff --git a/ja_JP.eucJP/man/man2/kqueue.2 b/ja_JP.eucJP/man/man2/kqueue.2 index 18f5a6a6bf..33d1fee389 100644 --- a/ja_JP.eucJP/man/man2/kqueue.2 +++ b/ja_JP.eucJP/man/man2/kqueue.2 @@ -1,472 +1,472 @@ .\" Copyright (c) 2000 Jonathan Lemon .\" 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 ``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" .\" %FreeBSD: src/lib/libc/sys/kqueue.2,v 1.1.2.14 2001/12/14 18:34:01 ru Exp % .\" .\" $FreeBSD$ .Dd April 14, 2000 .Dt KQUEUE 2 .Os .Sh 名称 .Nm kqueue , .Nm kevent .Nd カーネルイベント通知メカニズム .Sh ライブラリ .Lb libc .Sh 書式 .In sys/types.h .In sys/event.h .In sys/time.h .Ft int .Fn kqueue "void" .Ft int .Fn kevent "int kq" "const struct kevent *changelist" "int nchanges" "struct kevent *eventlist" "int nevents" "const struct timespec *timeout" .Fn EV_SET "&kev" ident filter flags fflags data udata .Sh 解説 .Fn kqueue は、フィルタと呼ばれる小さなカーネルコードの実行結果に基づき、 イベントの発生やある状態の成立を ユーザに通知する一般的な方法を提供します。 kevent は (ident, filter) のペアによって識別されます。 ここで、ident は識別子、filter はフィルタを表します。 1 つの kqueue には、同じ kevent が複数存在することはできません。 .Pp フィルタは、kevent の初期登録時に 以前から存在した状態を検出するために実行されます。 また、あるイベントが評価のためにフィルタに渡されるたびに実行されます。 状態を報告すべきとフィルタが決定した場合には、 その kevent はユーザが回収できるように kqueue に置かれます。 .Pp ユーザが kqueue から kevent を回収しようとしたときにも、 フィルタが実行されます。 フィルタの実行により、そのイベントをトリガした状態が成立していないこと が示された場合には、その kevent は kqueue から削除され、 ユーザに渡されません。 .Pp フィルタをトリガするイベントが複数ある場合でも、 kqueue の中に kevent が複数置かれるわけではありません。 代わりに、フィルタは複数のイベントを単一の kevent 構造体へ集めます。 ファイル記述子に対する .Fn close の呼び出しは、その記述子を参照しているあらゆる kevent を削除します。 .Pp .Fn kqueue は新規のカーネルイベントキューを生成して記述子を返します。 キューは .Xr fork 2 で生成された子プロセスには継承されません。 しかしながら、 .Dv RFFDG フラグなしで .Xr rfork 2 が呼び出された場合には、記述子テーブルが共有され、2 つの プロセス間で kqueue の共有が可能になります。 .Pp .Fn kevent は、キューにイベントを登録し、保留中のあらゆるイベントを ユーザに返すために使用されます。 .Fa changelist は .Va kevent 構造体の配列へのポインタです。この構造体は .Aq Pa sys/event.h で定義されています。 保留中のイベントをキューから読み込む前に、 .Fa changelist に含まれている全ての変更を適用します。 .Fa nchanges は .Fa changelist の大きさを与えます。 .Fa eventlist は kevent 構造体の配列へのポインタです。 .Fa nevents は .Fa eventlist の大きさを決定します。 .Fa timeout が NULL でないポインタの場合には、timespec 構造体であると解釈されて、 イベントを待つ最大待ち時間を指定します。 .Fa timeout が NULL ポインタの場合には、 .Fn kevent は無期限に待ちます。 ポーリングの効果を得るためには、 .Fa timeout 引数に、0 を示す .Va timespec 構造体を指す非 NULL のポインタを与えるべきです。 .Fa changelist と .Fa eventlist 用に同じ配列を使うことができます。 .Pp .Fn EV_SET は kevent 構造体の初期化を簡単にするマクロです。 .Pp .Va kevent 構造体は次のように定義されています。 .Bd -literal struct kevent { uintptr_t ident; /* このイベントの識別子 */ short filter; /* イベントのフィルタ */ u_short flags; /* kqueue のアクションフラグ */ u_int fflags; /* フィルタフラグ値 */ intptr_t data; /* フィルタデータ値 */ void *udata; /* 不透明なユーザデータ識別子 */ }; .Ed .Pp .Fa struct kevent のフィールドは以下の通りです。 .Bl -tag -width XXXfilter .It ident このイベントを識別するために使用される値です。 厳密な解釈は結び付けられたフィルタにより決定されますが、 普通はファイル記述子として解釈されます。 .It filter このイベントを処理するために使用されるカーネルフィルタを識別します。 あらかじめ定義されたシステムフィルタは後述してあります。 .It flags イベント発生時に実行するべきアクションです。 .It fflags フィルタ固有のフラグです。 .It data フィルタ固有のデータの値です。 .It udata 変更されずにカーネルを通して渡される不透明なユーザー定義の値です。 .El .Pp .Va flags フィールドは以下の値を含むことができます。 .Bl -tag -width XXXEV_ONESHOT .It EV_ADD イベントを kqueue に追加します。 既存のイベントを再び追加すると、元のイベントのパラメータが変更されます。 重複するエントリができるわけではありません。 イベントを追加すると、EV_DISABLE フラグによって上書きされない限りは 自動的に有効にされます。 .It EV_ENABLE イベントがトリガされた場合に、 .Fn kevent がそのイベントを返すことを許可します。 .It EV_DISABLE イベントを無効にします。これにより .Fn kevent はそのイベントを返さなくなります。 フィルタ自身は無効にされません。 .It EV_DELETE kqueue からイベントを削除します。 ファイル記述子に結び付けられているイベントは、 その記述子の最後のクローズ時に自動的に削除されます。 .It EV_ONESHOT フィルタが最初トリガされたときにのみ、イベントが返るようにします。 ユーザがイベントを kqueue から回収した後で、そのイベントは削除されます。 .It EV_CLEAR ユーザがイベントを回収した後に、その状態をリセットします。 これは現在の状態ではなく、状態の変化を報告するフィルタに有用です。 幾つかのフィルタは内部でこのフラグを自動的にセットしている かもしれないことに注意してください。 .It EV_EOF -そのフィルタ固有の EOF 状態であることをを示すために、 +そのフィルタ固有の EOF 状態であることを示すために、 フィルタがこのフラグをセットすることがあります。 .It EV_ERROR 後述の .Sx 戻り値 を参照してください。 .El .Pp あらかじめ定義されたシステムフィルタを次に示します。 引数は kevent 構造体の .Va fflags および .Va data フィールドを経由してやりとりすることができます。 .Bl -tag -width EVFILT_SIGNAL .It EVFILT_READ 識別子に記述子を引数として取ります。 読み込み可能なデータがあるときに戻ります。 このフィルタの振舞いは、その記述子の型により少し異なります。 .Pp .Bl -tag -width 2n .It ソケット 事前に .Fn listen に渡されたソケットの場合、保留中の次の接続があるときに戻ります。 .Va data には listen のバックログ (backlog) の大きさが入っています。 .Pp その他のソケット記述子の場合、ソケットバッファの .Dv SO_RCVLOWAT の値を基準にして、読み込むデータがあるときに戻ります。 フィルタを追加するときに、 .Va fflags に NOTE_LOWAT を設定し .Va data に新しい最低基準値を指定することにより、 この値を、 フィルタごとの最低基準値で上書きすることが可能です。戻るときには、 .Va data にはソケットバッファの中のバイト数が入っています。 .Pp ソケットの読み込み側が切断された場合には、フィルタは .Va flags に EV_EOF も設定します。ここでエラーが起きた場合には、 .Va fflags にソケットエラーを返します。 ソケットバッファの中に保留中のデータが残っていても、 (接続が切れたことを示す) EOF が返されることがあります。 .It v ノード ファイルポインタがファイルの最後 (EOF) でないときに戻ります。 .Va data は現在位置からファイルの最後 (EOF) までのオフセットが入っています。 この値は負であるかもしれません。 .It FIFO とパイプ 読み込むべきデータがあるときに戻ります。 .Va data には有効なバイト数が入っています。 .Pp 最後の書き込み側が切断したときに、フィルタは .Va flags に EV_EOF をセットします。 EV_CLEAR を渡すことで、このフラグをクリアすることができ、 フィルタはデータが読み込めるように なるのを戻らずに再び待ちます。 .El .It EVFILT_WRITE 識別子に記述子を引数として取ります。 その記述子が書き込み可能になるたびに戻ります。 ソケット、パイプおよび FIFO では、 .Va data には書き込みバッファの残り領域の大きさが入っています。 読み込み側が切断したときに、フィルタは EV_EOF をセットします。 FIFO の場合、EV_CLEAR を使いこれをクリアすることができます。 このフィルタは vnode をサポートしていないことに注意してください。 .Pp ソケットの場合、最低基準値およびソケットエラーの取り扱いは EVFULT_READ の場合と同じです。 .It EVFILT_AIO 非同期入出力リクエストの sigevent 部分の、 .Va sigev_notify_kqueue にはイベントを付加する kqueue の記述子を入れ、 .Va sigev_value には udata の値を入れ、 .Va sigev_notify には SIGEV_EVENT を入れて、非同期入出力リクエストを埋めます。 aio_* 関数が呼び出されたとき、そのイベントは 指定された kqueue に登録されます。aio_* 関数が返した .Fa aiocb 構造体を .Va ident 引数にセットします。 このフィルタは aio_error と同様の条件で戻ります。 .Pp 別の方法として、 .Va ident に kqueue 記述子を入れて kevent 構造体を初期化し、 そのアドレスを非同期リクエストの .Va aio_lio_opcode フィールドに置くことも可能です。 しかしながら、このアプローチは 64 ビットポインタのアーキテクチャでは 動作しないでしょうし、あてにするべきではありません。 .It EVFILT_VNODE ファイル記述子を識別子に、監視するイベントを .Va fflags に引数として取ります。 指定した記述子に対し 要求されたイベントが 1 つ以上発生したときに戻ります。 監視するイベントを以下に示します。 .Bl -tag -width XXNOTE_RENAME .It NOTE_DELETE 記述子が参照するファイルに対し .Fn unlink が呼ばれました。 .It NOTE_WRITE 記述子が参照するファイルに対し書き込みが起こりました。 .It NOTE_EXTEND 記述子が参照するファイルのサイズが拡張されました。 .It NOTE_ATTRIB 記述子が参照するファイルの属性が変更されました。 .It NOTE_LINK ファイルのリンク数が変更されました。 .It NOTE_RENAME 記述子が参照するファイルがリネームされました。 .It NOTE_REVOKE ファイルへのアクセスが .Xr revoke 2 によって無効にされたか、もしくは、下位層のファイルシステムが マウントされていません。 .El .Pp 戻るときに、 .Va fflags にフィルタをトリガしたイベントが入っています。 .It EVFILT_PROC 監視するプロセス ID を識別子に、監視するイベントを .Va fflags に引数として取ります。 要求されたイベントを 1 つ以上プロセスが実行するときに戻ります。 あるプロセスが他のプロセスを正常に見ることができる場合には、 イベントをそのプロセスに結び付けることができます。 監視するイベントを次に示します。 .Bl -tag -width XXNOTE_TRACKERR .It NOTE_EXIT プロセスが終了しました。 .It NOTE_FORK プロセスが .Fn fork を呼びました。 .It NOTE_EXEC プロセスが .Xr execve 2 または類似の呼び出しにより、新規のプロセスを実行しました。 .It NOTE_TRACK .Fn fork の呼び出しを越えて、プロセスを追跡します。 親プロセスは .Va fflags フィールドに NOTE_TRACK をセットして戻り、一方、子プロセスは .Va fflags に NOTE_CHILD を .Va data に親プロセスの PID をセットし戻ります。 .It NOTE_TRACKERR このフラグは、システムが子プロセスへのイベントを 結び付けることができなかったときに戻ります。 通常、これは資源の制限により生じます。 .El .Pp 戻るときに、 .Va fflags はフィルタをトリガしたイベントが入っています。 .It EVFILT_SIGNAL 監視するシグナル番号を識別子に引数として取ります。 与えられたシグナルがプロセスに配送されたときに戻ります。 これは .Fn signal および .Fn sigaction の仕組みと共存し、低い優先順位を持っています。 たとえそのシグナルが SIG_IGN とマークされていたとしても、 フィルタはプロセスに配送されようとしたシグナル全てを記録します。 通常のシグナル配送処理の後に、イベント通知が発生します。 .Va data には .Fn kevent を最後に呼び出してからのシグナル発生の回数が返ります。 このフィルタは内部で自動的に EV_CLEAR フラグをセットします。 .El .Sh 戻り値 .Fn kqueue は新規のカーネルイベントキューを生成し、ファイル記述子を返します。 カーネルイベントキューの生成時にエラーがあった場合には、 値 -1 が返されて errno がセットされます。 .Pp .Fn kevent は .Fa eventlist に配列されているイベントの数を返します。 この数は、最大 .Fa nevents で与えられた値までです。 .Fa changelist の要素の処理中にエラーが発生し、かつ .Fa eventlist に十分な余地がある場合には、 .Va flags に .Dv EV_ERROR がセットされ、 .Va data にシステムエラーがセットされたイベントが、 .Fa eventlist に置かれます。 さもなければ、 .Dv -1 が返され、 .Dv errno がエラー状態を示すためにセットされます。 時間切れの場合には、 .Fn kevent は 0 を返します。 .Sh エラー .Fn kqueue 関数は以下の場合に失敗します。 .Bl -tag -width Er .It Bq Er ENOMEM カーネルがカーネルキューのための十分なメモリの割り当てに失敗しました。 .It Bq Er EMFILE プロセスの記述子テーブルが満杯です。 .It Bq Er ENFILE システムファイルテーブルが満杯です。 .El .Pp .Fn kevent 関数は以下の場合に失敗します。 .Bl -tag -width Er .It Bq Er EACCES プロセスがフィルタを登録する権限を持っていません。 .It Bq Er EFAULT .Va kevent 構造体の読み込みまたは書き込みでエラーがありました。 .It Bq Er EBADF 指定された記述子が有効ではありません。 .It Bq Er EINTR 時間切れ前や、戻るための何らかのイベントが kqueue に 置かれる前に、シグナルが配送されました。 .It Bq Er EINVAL 指定されたタイムリミットまたはフィルタが無効です。 .It Bq Er ENOENT 修正または削除されるべきイベントが見つかりません。 .It Bq Er ENOMEM イベント登録のためのメモリがありません。 .It Bq Er ESRCH 結び付けるために指定したプロセスが存在しません。 .El .Sh 関連項目 .Xr aio_error 2 , .Xr aio_read 2 , .Xr aio_return 2 , .Xr poll 2 , .Xr read 2 , .Xr select 2 , .Xr sigaction 2 , .Xr write 2 , .Xr signal 3 .Sh 歴史 .Fn kqueue および .Fn kevent 関数は .Fx 4.1 で初めて登場しました。 .Sh 作者 .Fn kqueue システムと、このマニュアルページは .An Jonathan Lemon Aq jlemon@FreeBSD.org が書きました。 .Sh バグ 現在は、UFS ファイルシステムに属さない .Xr vnode 9 を監視することができません。 diff --git a/ja_JP.eucJP/man/man2/ktrace.2 b/ja_JP.eucJP/man/man2/ktrace.2 index 46f06fcc08..bbb72dd37a 100644 --- a/ja_JP.eucJP/man/man2/ktrace.2 +++ b/ja_JP.eucJP/man/man2/ktrace.2 @@ -1,164 +1,164 @@ .\" 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. .\" .\" @(#)ktrace.2 8.1 (Berkeley) 6/4/93 .\" %FreeBSD: src/lib/libc/sys/ktrace.2,v 1.9.2.7 2001/12/14 18:34:01 ru Exp % .\" .\" $FreeBSD$ .Dd June 4, 1993 .Dt KTRACE 2 .Os .Sh 名称 .Nm ktrace .Nd プロセスのトレース .Sh ライブラリ .Lb libc .Sh 書式 .In sys/param.h .In sys/time.h .In sys/uio.h .In sys/ktrace.h .Ft int .Fn ktrace "const char *tracefile" "int ops" "int trpoints" "int pid" .Sh 解説 .Fn ktrace 関数は、1 つまたは複数のプロセスのトレースを有効または無効にします。 ユーザは自分のプロセスだけを トレースできます。スーパーユーザだけが、setuid プログラムまたは setgid プログラムをトレースできます。 .Pp .Fa tracefile は、トレースに使用するファイルのパス名を指定します。 ファイルは存在していなければならず、 呼び出し側プロセスによって書き込み可能な通常ファイルである必要があります。 トレースレコードはすべてファイルの末尾に追加されるので、 直前のトレースデータを切り捨てるためにはファイルの長さを 0 にする必要が あります。トレース点が無効な場合 (後述の KTROP_CLEAR を参照)、 .Fa tracefile は NULL にできます。 .Pp .Fa ops パラメータは要求された ktrace 操作を指定します。 定義されている操作は次のとおりです。 .Bl -column KTRFLAG_DESCENDXXX -offset indent .It "KTROP_SET " .Fa trpoints で指定されたトレース点を有効にします。 .It "KTROP_CLEAR " .Fa trpoints で指定されたトレース点を無効にします。 .It "KTROP_CLEARFILE すべてのトレースを停止します。" .It "KTRFLAG_DESCEND トレースの変更が、指定のプロセスとその現在の" すべての子プロセスに適用されます。 .El .Pp .Fa trpoints パラメータは関心のあるトレース点を指定します。 定義されているトレース点は次のとおりです。 .Bl -column KTRFAC_SYSCALLXXX -offset indent .It "KTRFAC_SYSCALL システムコールをトレースします。" .It "KTRFAC_SYSRET システムコールからの戻り値をトレースします。" .It "KTRFAC_NAMEI パス名の探索操作をトレースします。" .It "KTRFAC_GENIO すべての入出力をトレースします" (このオプションが大量の出力を生成する可能性があることに注意してください)。 .It "KTRFAC_PSIG ポストされたシグナルをトレースします。" .It "KTRFAC_CSW コンテキストスイッチをトレースします。" .It "KTRFAC_INHERIT これ以降の子にトレースを継承します。" .El .Pp 各トレースイベントは、汎用のヘッダの後に -トレース点に固有の構成要素が続く形式のレコードをを出力します。 +トレース点に固有の構成要素が続く形式のレコードを出力します。 汎用のヘッダは次のとおりです。 .Bd -literal struct ktr_header { int ktr_len; /* バッファの長さ */ short ktr_type; /* トレースレコードのタイプ */ pid_t ktr_pid; /* プロセス ID */ char ktr_comm[MAXCOMLEN+1]; /* コマンド名 */ struct timeval ktr_time; /* タイムスタンプ */ caddr_t ktr_buf; }; .Ed .Pp .Va ktr_len フィールドはこのヘッダに続く .Va ktr_type データの長さを示します。 .Va ktr_pid フィールドと .Va ktr_comm フィールドは、レコードを生成したプロセスとコマンドを示します。 .Va ktr_time フィールドは、 レコードが生成された時刻を (マイクロ秒単位で) 示します。 .Va ktr_buf は、内部カーネルポインタで あって有用ではありません。 .Pp 汎用ヘッダには .Va ktr_len バイトの長さの .Va ktr_type レコードが続きます。タイプに固有のレコードは .Aq Pa sys/ktrace.h インクルードファイル内で定義されています。 .Sh 戻り値 .Rv -std ktrace .Sh エラー .Fn ktrace は次の場合に失敗します。 .Bl -tag -width Er .It Bq Er ENOTDIR パスの構成要素中にディレクトリ以外のものが含まれています。 .It Bq Er ENAMETOOLONG パス名の構成要素が 255 文字を越えているか、 またはパス名全体が 1023 文字を越えています。 .It Bq Er ENOENT 指定のトレースファイルが存在しません。 .It Bq Er EACCES 前置パス名の構成要素について検索許可が拒否されています。 .It Bq Er ELOOP パス名を変換するときに検出されたシンボリックリンクが多すぎます。 .It Bq Er EIO ファイルシステムに読み書きしている間に入出力エラーが発生しました。 .It Bq Er ENOSYS カーネルが .Nm サポートとともにコンパイルされていません。 .El .Sh 関連項目 .Xr kdump 1 , .Xr ktrace 1 .Sh 歴史 .Fn ktrace 関数は .Bx 4.4 ではじめて登場しました。 diff --git a/ja_JP.eucJP/man/man3/curs_delch.3 b/ja_JP.eucJP/man/man3/curs_delch.3 index 5e67cce8ea..28baa3d71b 100644 --- a/ja_JP.eucJP/man/man3/curs_delch.3 +++ b/ja_JP.eucJP/man/man3/curs_delch.3 @@ -1,32 +1,32 @@ .\" $FreeBSD$ .\" .TH curs_delch 3 "" .SH 名称 \fBdelch\fR, \fBwdelch\fR, \fBmvdelch\fR, \fBmvwdelch\fR - \fBncurses\fR ウィンドウのカーソルの下の文字を削除する .SH 書式 \fB#include \fR \fBint delch(void);\fR .br \fBint wdelch(WINDOW *win);\fR .br \fBint mvdelch(int y, int x);\fR .br \fBint mvwdelch(WINDOW *win, int y, int x);\fR .br .SH 解説 これらのルーチンは、カーソルの下の文字を削除します。 同じ行のカーソルの右にある文字はすべて 1 位置だけ左に移動し、 -行の最後の文字ははブランクで埋められます。 +行の最後の文字はブランクで埋められます。 カーソルの位置は変化しません (指定された場合、\fIy\fR, \fIx\fR に移動した後です)。 (これは、ハードウェアの文字削除機能の使用を意味しません)。 .SH 戻り値 ルーチンはすべて、処理失敗した場合整数 \fBERR\fR を返します。 処理が正常に完了した場合は、\fBERR\fR 以外の整数値を返します。 .SH 注釈 \fBdelch\fR, \fBmvdelch\fR および \fBmvwdelch\fR がマクロである可能性があることに注意してください。 .SH 関連項目 \fBncurses\fR(3) diff --git a/ja_JP.eucJP/man/man3/exp.3 b/ja_JP.eucJP/man/man3/exp.3 index 39ba38a8c8..0bed93d4ec 100644 --- a/ja_JP.eucJP/man/man3/exp.3 +++ b/ja_JP.eucJP/man/man3/exp.3 @@ -1,315 +1,315 @@ .\" Copyright (c) 1985, 1991 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: @(#)exp.3 6.12 (Berkeley) 7/31/91 .\" %Id: exp.3,v 1.6 1997/02/22 15:09:30 peter Exp % .\" .\" $FreeBSD$ .\" .Dd July 31, 1991 .Dt EXP 3 .Os BSD 4 .Sh 名称 .Nm exp , .Nm expf , .Nm exp2 , .Nm exp2f , .Nm exp10 , .Nm exp10f , .Nm expm1 , .Nm expm1f , .Nm log , .Nm logf , .Nm log10 , .Nm log10f , .Nm log1p , .Nm log1pf , .Nm pow , .Nm powf .Nd 指数関数、対数関数、累乗関数 .Sh 書式 .Fd #include .Ft double .Fn exp "double x" .Ft float .Fn expf "float x" .Ft double .Fn expm1 "double x" .Ft float .Fn expm1f "float x" .Ft double .Fn log "double x" .Ft float .Fn logf "float x" .Ft double .Fn log10 "double x" .Ft float .Fn log10f "float x" .Ft double .Fn log1p "double x" .Ft float .Fn log1pf "float x" .Ft double .Fn pow "double x" "double y" .Ft float .Fn powf "float x" "float y" .Sh 解説 .Fn exp 関数と .Fn expf 関数は、指定の引数 .Fa x の指数値を計算します。 .Pp .Fn expm1 関数と .Fn expm1f 関数は、小さい引数 .Fa x についてさえ正確に、exp(x)\-1 の値を計算します。 .Pp .Fn log 関数と .Fn logf 関数は引数 .Fa x の自然対数の値を計算します。 .Pp .Fn log10 関数と .Fn log10f 関数は、基底 10 について引数 .Fa x の対数を計算します。 .Pp .Fn log1p 関数と .Fn log1pf 関数は、小さい引数 .Fa x についてさえ log(1+x) の値を正確に計算します。 .Pp .Fn pow 関数と .Fn powf 関数は、指数 .Ar y に対して .Ar x の値を計算します。 .Sh エラー (丸めなどのためによる) .Fn exp x , .Fn log x , .Fn expm1 x および .Fn log1p x は、1 .Em ulp 内部で正確です。 .Fn log10 x は 2 .Em ulps 内部で正確です。1 .Em ulp は .Em Last .Em Place 内の 1 .Em 単位 です。 .Fn pow x y のエラーは、大きさが中程度のときは約 2 .Em ulps 未満です。 .Fn pow x y がオーバーフロー/アンダーフローしきい値に近づくと増大します。最後には、 ほとんどすべてのビットが浮動小数点指数フィールドによって占められれて 失われます。これは .Tn "VAX D" では 8 ビットであり、IEEE 754 Double では 11 ビットです。 このように大きな欠落は試験によって明らかにされていません。 観察された最悪のエラーは、 .Tn "VAX D" については 20 .Em ulps 未満。 .Tn IEEE 754 Double については 300 .Em ulps です。 .Fn pow 中程度の値が、 .Fn pow integer integer が正確になるために十分です。最後は、 .Tn VAX については 2**56 より大きくなり、 .Tn IEEE 754 については 2**53 より大きくなります。 .Sh 戻り値 これらの関数は、エラーが発生するか引数が範囲外の場合を除き、 適切な計算を返します。関数 .Fn exp , .Fn expm1 , .Fn pow は、計算された値がオーバーフローするかどうか検出し、 グローバル変数 .Va errno を .Er ERANGE に設定し、 .Tn VAX または .Tn Tahoe で予約済みのオペランド障害を発生させます。関数 .Fn pow x y は、 .Fa x < 0 かどうかをチェックし、 .Fa y が整数でない場合、これが真の場合でも、グローバル変数 .Va errno を .Er EDOM に設定し、 .Tn VAX と .Tn Tahoe で、予約済みのオペランド障害を生成します。 .Tn VAX と .Tn Tahoe では、 .Va errno が .Er EDOM に設定され、 .Fa x -> 0 の場合を除いて、予約済みオペランドが対数にによって返され、 +> 0 の場合を除いて、予約済みオペランドが対数によって返され、 .Fa x > \-1 の場合を除いて .Fn log1p によって返されます。 .Sh 注 関数 exp(x)\-1 と log(1+x) は、Hewlett Packard .Tn HP Ns \-71B および .Tn APPLE の Macintosh の .Tn BASIC では expm1 と logp1 と呼ばれ、Pascal では .Tn EXP1 と .Tn LN1 と呼ばれ、 .Tn APPLE Macintosh の C では exp1 と log1 と呼ばれます。 この場合、これらは ((1+x)**n\-1)/x すなわち expm1(n\(**log1p(x))/x の財政的計算が x が小さい場合に正確になることを確認するために備えられています。 これらは正確な逆双曲線関数も提供します。 .Pp 関数 .Fn pow x 0 は、すべての x について x**0 = 1 を返します。 x には、x = 0、 .if n \ infinity .if t \ \(if .Tn ( VAX にはありません)、 .Em NaN .Tn ( VAX の予約済みオペランド) が含まれます。 pow のこれまでの実現は、これらのすべての場合またはいくつかの場合に、 x**0 を未定義としてきたことがあります。 これが必ず x**0 = 1 を返す理由です。 .Bl -enum -width indent .It x**0 を計算する前に x がゼロ (または無限または \*(Na) であるかを試験するプログラムは 0**0 = 1 であるかどうかを配慮できません。 0**0 が無効であることに左右されるプログラムは、 式の意味と、無効な場合、 式の結果がコンピュータシステムごとに変化するため疑わしいものです。 .It 算術テキスト (たとえば、Sigler のもの) には、 x = 0 を含めてすべての x について x**0 = 1 を定義するものがあります。 これは、a[0] を、a[0]\(**0**0 を無効として拒絶するのではなく、多項式 .Bd -literal -offset -indent p(x) = a[0]\(**x**0 + a[1]\(**x**1 + a[2]\(**x**2 +...+ a[n]\(**x**n .Ed .Pp の値を a[0] として受け入れる慣行と互換性があります。 .It アナリストは、x と y が独立に 0 に近づくときに、 x**y が特定の値に近づくかまたは何にも近づかないかに関わらず、 0**0 = 1 を受け入れます。 0**0 = 1 を受け入れる理由は次のとおりです。 .Bd -filled -offset indent x(z) と y(z) が z = 0 付近の 0 で分析的な関数であり (拡張可能な累乗シリーズ)、 しかも x(0) = y(0) = 0 の場合、z \(-> 0 のとき x(z)**y(z) \(-> 1 です。 .Ed .It 0**0 = 1 の場合、 .if n \ infinity**0 = 1/0**0 = 1 .if t \ \(if**0 = 1/0**0 = 1 です。次いで、\*(Na**0 = 1 でもあります。 すべての有限および無限な x について、 すなわち x に独立に x**0 = 1 だからです。 .El .Sh 関連項目 .Xr math 3 .Sh 歴史 .Fn exp , .Fn log および .Fn pow 関数は .At v6 で現れました。 .Fn log10 関数は .At v7 で現れました。 .Fn log1p 関数と .Fn expm1 関数は .Bx 4.3 で現れました。 diff --git a/ja_JP.eucJP/man/man5/hosts_access.5 b/ja_JP.eucJP/man/man5/hosts_access.5 index c05f186d3a..d915fd90f9 100644 --- a/ja_JP.eucJP/man/man5/hosts_access.5 +++ b/ja_JP.eucJP/man/man5/hosts_access.5 @@ -1,448 +1,448 @@ -.\" $FreeBSD: doc/ja_JP.eucJP/man/man5/hosts_access.5,v 1.5 2001/05/14 01:09:29 horikawa Exp $ +.\" $FreeBSD$ .\" WORD: connection コネクション(tcp の;一般名詞では「接続」と訳する)[hosts_access.5] .TH HOSTS_ACCESS 5 .SH 名称 hosts_access \- ホストアクセス制御ファイルの書式 .SH 解説 本マニュアルページは、 クライアント (ホストの名前/アドレス、ユーザ名) と サーバ (プロセス名、ホストの名前/アドレス) のパターンをベースとする、 単純なアクセス制御言語を解説します。 最後に使用例を示しています。 我慢できない方は、てっとり早い導入のために、使用例の節へ進んでください。 .PP 拡張バージョンのアクセス制御言語は、 \fIhosts_options\fR(5) 文書で解説しています。 プログラム構築時に -DPROCESS_OPTIONS 付きで構築することにより、 拡張機能はオンになります。 .PP 以降の文章においては、 \fIdaemon\fR はネットワークデーモンプロセスのプロセス名であり、 \fIclient\fR はサービスを要求しているホストの名前やアドレスです。 ネットワークデーモンプロセスの名前は、inetd 設定ファイルにおいて指定されます。 .SH アクセス制御ファイル アクセス制御ソフトウェアは、2 つのファイルを参照します。 検索は、最初のマッチで終了します。つまり、 .IP \(bu (daemon,client) の組が \fI/etc/hosts.allow\fR ファイルのエントリにマッチするとき、 アクセスは許可されます。 .IP \(bu そうでない場合、(daemon,client) の組が \fI/etc/hosts.deny\fR ファイルのエントリにマッチするとき、 アクセスは拒否されます。 .IP \(bu そうでない場合、アクセスは許可されます。 .PP 存在しないアクセス制御ファイルは、そのファイルが空であるものとして扱われます。 よって、アクセス制御ファイルをなにも用意しないことにより、 アクセス制御をオフにすることが可能です。 .SH アクセス制御ルール 各アクセス制御ファイルは、0 個以上のテキスト行を持ちます。 これらの行は、出現順に処理されます。 マッチが検出されたときに、検索が終了します。 .IP \(bu 改行文字は、前にバックスラッシュ文字がある場合、無視されます。 これにより、長い行の分割が可能となり、編集が容易になります。 .IP \(bu 空行または `#\' 文字で開始する行は無視されます。 これにより、コメントや空白の挿入が可能となり、表が読み易くなります。 .IP \(bu 他のすべての行は、次の書式を満たす必要があります。[] の間のものは 省略可能です。 .sp .ti +3 daemon_list : client_list [ : shell_command ] .PP \fIdaemon_list\fR は、1 個以上のデーモンプロセス名 (argv[0] 値) またはワイルドカード (後述) からなるリストです。 .PP \fIclient_list\fR は、1 個以上のホスト名、ホストアドレス、 パターン、またはワイルドカード (後述) からなるリストです。 これが、クライアントホストの名前またはアドレスに対してマッチされます。 .PP より複雑な形式である、\fIdaemon@host\fR と \fIuser@host\fR は、 それぞれサーバ終点パターンとクライアントユーザ名検索の節で 説明します。 .PP リストの要素は、空白やコンマで区切ります。 .PP すべてのアクセス制御チェックは大文字小文字の違いは影響ありません。 ただし、NIS (YP) の netgroup の検索は例外です。 .ne 4 .SH パターン アクセス制御言語は、次のパターンを実装しています。 .IP \(bu `.\' 文字で開始する文字列。 ホスト名は、その最後の部分が指定されたパターンにマッチする場合、マッチします。 例えば、パターン `.tue.nl\' は、ホスト名 `wzv.win.tue.nl\' にマッチします。 .IP \(bu `.\' 文字で終了する文字列。 ホストアドレスは、 その最初の数値フィールドが指定された文字列にマッチする場合、マッチします。 例えば、パターン `131.155.\' は、 Eind\%hoven University ネットワーク (131.155.x.x) の (ほぼ) すべてのホストのアドレスにマッチします。 .IP \(bu `@\' 文字で開始する文字列は、NIS (以前の YP) の netgroup 名として扱われます。 ホスト名は、指定された netgroup のメンバである場合、マッチします。 デーモンプロセス名およびクライアントユーザ名では、 netgroup のマッチはサポートされていません。 .IP \(bu `n.n.n.n/m.m.m.m\' 書式の表現は、`net/mask\' ペアとして解釈されます。 `net\' が、アドレスと `mask\' とをビットごとに AND したものに等しい場合、 ホストアドレスはマッチします。 例えば、net/mask パターン `131.155.72.0/255.255.254.0\' は、 `131.155.72.0\' から `131.155.73.255\' までの範囲の すべてのアドレスにマッチします。 .IP \(bu `[n:n:n:n:n:n:n:n]/m\' 書式の表現は `[net]/prefixlen\' ペアとして解釈されます。 `net\' の `prefixlen\' ビットが、アドレスの `prefixlen\' ビットと等しい場合、 IPv6 ホストアドレスはマッチします。 例えば [net]/prefixlen パターン `[3ffe:505:2:1::]/64\' は、 `3ffe:505:2:1::\' から `3ffe:505:2:1:ffff:ffff:ffff:ffff\' までの範囲の すべてのアドレスにマッチします。 .IP \(bu 文字 `/\' で開始する文字列はファイル名として扱われます。 ホスト名またはアドレスは、 指定されたファイル中のホスト名またはアドレスのパターンのいずれかに マッチするとき、マッチします。 ファイルの書式は、ホスト名またはアドレスのパターンを 空白で区切って 0 個以上指定した行が、0 個以上存在するというものです。 ファイル名パターンは、 ホスト名またはアドレスのパターンを使用可能な場所であればどこでも使用可能です。 .SH ワイルドカード アクセス制御言語は、明示的なワイルドカードをサポートします。 .IP ALL 普遍的なワイルドカードであり、常にマッチします。 .IP LOCAL 名前にドット文字を含まない、すべてのホストにマッチします。 .IP UNKNOWN 名前が未知のすべてのユーザにマッチします。 また、名前 \fIまたは\fR アドレスの \fIいずれか一方でも\fR 未知である すべてのホストにマッチします。 このパターンの使用には注意してください。というのは、 一時的なネームサーバの問題により、ホスト名を得られなくなる場合が あるからです。また、 どのタイプのネットワークに対して話しているのかをソフトウェアが 分っていない場合、 ネットワークアドレスを得られなくなるからです。 .IP KNOWN 名前が既知のすべてのユーザにマッチします。 また、名前 \fIおよび\fR アドレスが \fIともに\fR 既知のすべてのホストに マッチします。 このパターンの使用には注意してください。というのは、 一時的なネームサーバの問題により、ホスト名を得られなくなる場合が あるからです。また、 どのタイプのネットワークに対して話しているのかソフトウェアが 分かっていない場合、 ネットワークアドレスを得られなくなるからです。 .IP PARANOID 名前がアドレスにマッチしないすべてのホストにマッチします。 tcpd が -DPARANOID (デフォルトモードです) 付きで構築された場合、 アクセス制御表を検索する前に、 このようなクライアントからの要求を落とします。 このような要求に対して更に制御を行いたい場合、 -DPARANOID なしで構築してください。 .ne 6 .SH オペレータ .IP EXCEPT `list_1 EXCEPT list_2\' という形式で使用することを意図しています。 \fIlist_1\fR にマッチするもので、 \fIlist_2\fR にマッチしないものに、この構造はマッチします。 EXCEPT オペレータは、daemon_lists と client_lists で使用可能です。 EXCEPT オペレータは、入れ子 (ネスト) にすることが可能です。これは、 仮に制御言語が括弧の使用を許すとして表記するならば、 `a EXCEPT b EXCEPT c\' は `(a EXCEPT (b EXCEPT c))\' のように解釈されます。 .br .ne 6 .SH シェルコマンド 最初にマッチしたアクセス制御ルールがシェルコマンドを含む場合、 このコマンドは % 置換 (次節参照) の対象になります。 置換結果は、標準入出力とエラー出力が \fI/dev/null\fR に接続される \fI/bin/sh\fR 子プロセスにより実行されます。 実行完了を待ちたくない場合、コマンドの最後に `&\' を指定してください。 .PP シェルコマンドは inetd の PATH の設定に依存してはなりません。 かわりに、絶対パス名を使用するか、 明示的な PATH=whatever という文で開始すべきです。 .PP シェルコマンドフィールドを、これとは異なる互換性のない方法で扱う 別の言語については、 \fIhosts_options\fR(5) 文書に解説してあります。 .SH % の展開 シェルコマンド中で、次の展開を使用可能です。 .IP "%a (%A)" クライアント (サーバ) のホストアドレス。 .IP %c クライアントの情報。これは、 user@host か、user@address か、ホスト名か、単にアドレスかのいずれかです。 このうちのどれが使えるかは、得られる情報量に依存します。 .IP %d デーモンプロセスの名前 (argv[0] 値)。 .IP "%h (%H)" クライアント (サーバ) ホストの名前、 または名前が得られない場合アドレス。 .IP "%n (%N)" クライアント (サーバ) ホストの名前 (または "unknown" または "paranoid")。 .IP %p デーモンプロセス id。 .IP %s サーバの情報。これは、 daemon@host か、daemon@address か、単にデーモン名かのいずれかです。 このうちのどれが使えるかは、得られる情報量に依存します。 .IP %u クライアントユーザの名前 (または "unknown")。 .IP %% 単一の `%\' 文字に展開されます。 .PP % 展開中の文字でシェルを混乱させ得るものは、アンダスコアに置き換えられます。 .SH サーバ終点パターン クライアントの区別のために、 クライアントが接続しているネットワークアドレスを使用するには、 次の形式のパターンを使用します。 .sp .ti +3 process_name@host_pattern : client_list ... .sp 異なったインターネットアドレスに異なったインターネットホスト名を マシンが持つ場合、 このようなパターンを使用可能です。 サービス提供者がこの機構を使用することにより、 複数のインターネットの名前を使用して、 FTP, GOPHER, WWW といったアーカイブを提供可能です。 この場合、インターネットの名前は、異なった組織に属することも可能です。 hosts_options(5) 文書の `twist' オプションも参照してください。 単一の物理インタフェースに 1 個以上のインターネットアドレスを 持てるシステムがあります (Solaris や FreeBSD)。 他のシステムでは、 専用のネットワークアドレス空間で、 SLIP や PPP といった擬似インタフェースを使用する必要があるかもしれません。 .sp host_pattern は、client_list の文脈における ホストの名前およびアドレスのものと同じ文法ルールに従います。 通常、サーバ終点情報は、コネクション指向の (connection-oriented) サービスに おいてのみ使用可能です。 .SH クライアントユーザ名検索 クライアントホストが RFC 931 プロトコルまたはその後継 (TAP, IDENT, RFC 1413) をサポートする場合、 コネクションの所有者に関する追加の情報を、ラッパプログラムが 引き出せるようになります。 クライアントのユーザ名情報が得られると、 クライアントホスト名とともに記録され、 次のようなパターンマッチに使用可能です。 .PP .ti +3 daemon_list : ... user_pattern@host_pattern ... .PP ルールにもとづいてユーザ名を検索 (デフォルト) するか、 常にクライアントホストに問い合わせるかの設定は、 デーモンラッパのコンパイル時に設定可能です。 ルールにもとづいてユーザ名を検索する場合、 前述のルールがユーザ名検索を行うのは、 \fIdaemon_list\fR と \fIhost_pattern\fR がともにマッチする場合のみです。 .PP ユーザパターンは、デーモンプロセスパターンと同じ文法であり、 同じワイルドカードが使用可能です (netgroup のメンバはサポートされません)。 しかし、ユーザ名検索に夢中になって理性を失ってはなりません。 .IP \(bu クライアントのユーザ名情報がもっとも必要とされるとき、 すなわちクライアントシステムが危なくなっているときこそ、 クライアントのユーザ名情報は信用できません。 一般的には、ALL と (UN)KNOWN のみが意味のあるユーザ名パターンです。 .IP \(bu TCP ベースのサービスにおいてのみ、 かつクライアントホストが適切なデーモンを実行しているときのみ、 ユーザ名検索を使用可能です。 他の場合には、結果は "unknown" になります。 .IP \(bu ユーザ名検索がファイアウォールにブロックされると、 UNIX カーネルの良く知られた (well-known) バグにより、 サービスを失うことがあります。 カーネルにこのバグがあるかを判断するための手順は、 ラッパの README 文書に解説しています。 .IP \(bu ユーザ名検索により、非 UNIX ユーザに対する顕著な遅延を生じることが あります。 ユーザ名検索のデフォルトのタイムアウトは 10 秒です。これは、 遅いネットワークに対しては短か過ぎますが、 PC ユーザをいらいらさせるには十分長いです。 .PP 最後の問題は、選択的なユーザ名検索により、緩和可能です。 例えば、次のようにします。 .PP .ti +3 daemon_list : @pcnetgroup ALL@ALL .PP これは、ユーザ名検索を行わずに、pc netgroup のメンバにマッチします。 しかし、他のシステムに対しては、ユーザ名検索を行います。 .SH アドレス詐称攻撃の検知 -多くの TCP/IP 実装ににあるシーケンス番号生成器の欠陥により、 +多くの TCP/IP 実装にあるシーケンス番号生成器の欠陥により、 侵入者が信頼されたホストになりすました上で、 例えばリモートシェルサービスを介して侵入することができます。 IDENT (RFC931 等) のサービスを使用することにより、 このような攻撃や別のホストアドレス詐称攻撃を検知可能となります。 .PP クライアントの要求を受け付ける前に、 ラッパが IDENT サービスを使用することにより、 そのクライアントが要求をまったく送っていなかったことを検知可能です。 クライアントホストが IDENT サービスを提供している場合、 否定的な IDENT 検索結果 (クライアントが `UNKNOWN@host' にマッチ) は、 ホスト詐称攻撃の有力な証拠となります。 .PP 肯定的な IDENT 検索結果 (クライアントが `KNOWN@host' にマッチ) は、 これより信頼性が低いです。 クライアントの接続のみを詐称するよりは難しいですが、 侵入者がクライアントの接続と IDENT 検索の両方を詐称することが可能です。 クライアントの IDENT サーバが嘘をついている可能性もあります。 .PP 注: IDENT 検索は、UDP サービスでは動作しません。 .SH 使用例 この言語は十分柔軟性があるので、 ほとんど手間もかけずに、異なったタイプのアクセス制御方針を表現可能です。 またこの言語は 2 つのアクセス制御表を使用しますが、 一方の表は単純にしつつ、場合によっては空にしても、 一般的な方針のほとんどを実装可能です。 .PP 次に示す使用例を読むときには、 許可表が拒否表の前にスキャンされること、 検索はマッチが検出されたときに終了すること、 マッチが検出されない場合にはアクセスが許可されることを認識することが 重要です。 .PP 使用例では、ホストとドメインの名前を使用します。 アドレスや network/netmask の情報を含めることにより、これらの例を改良して、 一時的なネームサーバの検索失敗による影響を減じることが可能となります。 .SH ほとんど閉じている状態 この場合、デフォルトではアクセスは拒否されます。 明示的に権限を与えられたホストのみが、アクセスを許可されます。 .PP デフォルトの方針 (アクセスを拒否) は、簡単な拒否ファイルにより実装されます: .PP .ne 2 /etc/hosts.deny: .in +3 ALL: ALL .PP これにより、全ホストに対する全サービスが拒否されます。 ただし、許可ファイルのエントリにより許可されたアクセスである場合は例外です。 .PP 明示的に権限を与えられるホストは、許可ファイルにリストします。 例えば次のようにします: .PP .ne 2 /etc/hosts.allow: .in +3 ALL: LOCAL @some_netgroup .br ALL: .foobar.edu EXCEPT terminalserver.foobar.edu .PP 最初のルールは、 ローカルドメインの (ホスト名に `.\' を含まない) ホストからのアクセスと、 \fIsome_netgroup\fP のメンバからのアクセスを、許可します。 2 番目のルールは、 \fIfoobar.edu\fP ドメイン (先頭のドットに注意) の全ホストからのアクセスを、 許可します。ただし、\fIterminalserver.foobar.edu\fP は例外です。 .SH ほとんど開いている状態 今度は、デフォルトではアクセスは許可されます。 明示的に指定されたホストのみが、サービスを拒否されます。 .PP デフォルトの方針 (アクセスを許可) では許可ファイルは冗長であり、省略可能です。 明示的に権限を与えられないホストは、拒否ファイルにリストします。 例えば次のようにします: .PP /etc/hosts.deny: .in +3 ALL: some.host.name, .some.domain .br ALL EXCEPT in.fingerd: other.host.name, .other.domain .PP 最初のルールは、あるホストとあるドメインに対する全サービスを拒否します。 2 番目のルールは、別のホストと別のドメインからの finger 要求は許可しています。 .SH ブービートラップ 次の使用例は、 ローカルドメイン (先頭のドットに注意) からの tftp 要求を許可します。 他のホストからの要求は拒否されます。 要求されたファイルの代りに、 finger プローブが攻撃元ホストに対して送られます。 結果はスーパユーザに対してメールされます。 .PP .ne 2 /etc/hosts.allow: .in +3 .nf in.tftpd: LOCAL, .my.domain .PP .ne 2 /etc/hosts.deny: .in +3 .nf in.tftpd: ALL: (/some/where/safe_finger -l @%h | \\ /usr/ucb/mail -s %d-%h root) & .fi .PP safe_finger は back-finger での使用を意図しており、 適切な場所にインストールすべきです。 これは、 リモートの finger サーバから送られるデータに起因して発生し得るダメージを 限定します。 通常の finger コマンドよりも、より良い防御となります。 .PP %h (クライアントホスト) と %d (サービス名) のシーケンスの展開については、 シェルコマンドの節に記述してあります。 .PP 警告: 自己の finger デーモンをブービートラップにかけないでください。 かけてしまうと、finger の無限ループになります。 .PP ネットワークファイアウォールシステムでは、 このトリックをさらに幅広く活用できます。 典型的なネットワークファイアウォールでは、 外部の世界に対して限定されたサービスのみを提供します。 他の全サービスは、前述の tftp の使用例と同様の方法で「監視」可能です。 その結果、素晴しい早期警戒システムができます。 .br .ne 4 .SH 診断 次の場合、エラーが報告されます。 ホストアクセス制御ルールに文法エラーがある場合、 アクセス制御ルールが内部バッファの容量を越えた場合、 アクセス制御ルールが改行文字で終端されなかった場合、 % の展開結果が内部バッファを溢れさせた場合、 失敗すべきでないシステムコールが失敗した場合です。 すべての問題は、syslog デーモンを介して報告されます。 .SH 実装に関する注 オペレーティングシステムによっては、 TCP Wrappers を基本システムの一部として配布されているものがあります。 このようなシステムでは、 ネットワークユーティリティにラッピング機能を組み込むのが一般的です。 特に、システムによっては、 \fItcpd\fR(8) が不要な \fIinetd\fR(8) を提供しているものがあります。 詳細については、システムの文書を確認してください。 .SH 関連ファイル .na .nf /etc/hosts.allow, アクセスを許可された (daemon,client) のペア。 /etc/hosts.deny, アクセスを拒否された (daemon,client) のペア。 .ad .fi .SH 関連項目 .nf tcpd(8) tcp/ip デーモンラッパプログラム。 tcpdchk(8), tcpdmatch(8), テストプログラム。 .SH バグ ネームサーバの検索がタイムアウトすると、 ホスト名が登録されていたとしても、 アクセス制御ソフトウェアはホスト名を使用できなくなります。 .PP ドメインネームサーバの検索は大文字小文字を区別しません。一方、 NIS (以前の YP) の netgroup の検索は大文字小文字を区別します。 .SH 作者 .na .nf Wietse Venema (wietse@wzv.win.tue.nl) Department of Mathematics and Computing Science Eindhoven University of Technology Den Dolech 2, P.O. Box 513, 5600 MB Eindhoven, The Netherlands \" @(#) hosts_access.5 1.20 95/01/30 19:51:46 \" %FreeBSD: src/contrib/tcp_wrappers/hosts_access.5,v 1.3 2000/02/03 10:26:57 shin Exp % diff --git a/ja_JP.eucJP/man/man5/magic.5 b/ja_JP.eucJP/man/man5/magic.5 index 03ed0b6ec6..5bdec54264 100644 --- a/ja_JP.eucJP/man/man5/magic.5 +++ b/ja_JP.eucJP/man/man5/magic.5 @@ -1,247 +1,247 @@ .\" .\" %FreeBSD: src/usr.bin/file/magic.5,v 1.11.2.7 2001/08/16 13:16:47 ru Exp % .\" .\" install as magic.4 on USG, magic.5 on V7 or Berkeley systems. .\" -.\" $FreeBSD: doc/ja_JP.eucJP/man/man5/magic.5,v 1.12 2001/08/06 03:01:42 horikawa Exp $ +.\" $FreeBSD$ .Dd December 8, 2000 .Dt MAGIC 5 "Public Domain" .Os .Sh 名称 .Nm magic .Nd file コマンドのマジック番号ファイル .Sh 解説 このマニュアルページでは .Xr file 1 コマンド バージョン 3.26 で使用されるマジックファイルのフォーマットに ついて説明します。 .Nm file コマンドは、他のテストと共に、ファイルがある .Em "マジック番号" で始まっているかどうかをテストして、ファイルのタイプを識別します。 ファイル .Pa /usr/share/misc/magic では、どのマジック番号をテストするか、 あるマジック番号が見つかったときにどのようなメッセージを出力するか、 また、そのファイルから抽出するべき追加情報について指定しています。 .Pp このファイルの各行ではテストすべき項目について指定しています。 テストは、ファイル中のある特定のオフセットで始まるデータを 1 バイト、2 バイトもしくは 4 バイトの数値あるいは文字列と 比較して行います。 もしテストが成功するとメッセージが出力されます。 各行は以下のフィールドから構成されます。 .Bl -tag -width indent .It offset テストするファイルのデータのオフセットをバイト数で指定する数字です。 .It type テストするデータの型です。指定できる値は .Bl -tag -width indent .It byte 1 バイトの値。 .It short (ほとんどのシステムにおいて) 2 バイトの値。 そのマシンの固有のバイト順で指定します。 .It long (ほとんどのシステムにおいて) 4 バイトの値。 そのマシンの固有のバイト順で指定します。 .It string バイトの文字列。 文字列タイプの指定には、後ろに /[Bbc]* を付けることが可能です。 .Dq B フラグは、ターゲットの空白を圧縮します。 圧縮対象には、少なくともひとつの空白文字が含まれることが必要です。 マジックに "n" 個の連続する空白がある場合、 マッチするためには、 ターゲットには少なくとも "n" 個の連続する空白があることが必要です。 .Dq b フラグは、すべての空白を省略可能な空白として扱います。 最後に .Dq c は、大文字小文字を区別しないマッチングを指定します。 すなわち、マジック中の小文字は、 ターゲット中の小文字と大文字の両方にマッチします。 一方、マジック中の大文字は、ターゲット中の大文字にのみマッチします。 .It date UNIX 日時として解釈される 4 バイトの値。 .It beshort (ほとんどのシステムにおいて) 2 バイトの値。 ビッグエンディアンのバイト順です。 .It belong (ほとんどのシステムにおいて) 4 バイトの値。 ビッグエンディアンのバイト順です。 .It bedate UNIX 日時として解釈される (ほとんどのシステムにおいて) 4 バイトの値。 ビッグエンディアンのバイト順です。 .It leshort (ほとんどのシステムにおいて) 2 バイトの値。 リトルエンディアンのバイト順です。 .It lelong (ほとんどのシステムにおいて) 4 バイトの値。 リトルエンディアンのバイト順です。 .It ledate UNIX 日時として解釈される (ほとんどのシステムにおいて) 4 バイトの値。 リトルエンディアンのバイト順です。 .El .El .Pp 数字の型にはオプションとして .Em & と数値を続けることができ、 これにより比較を行う前に AND をとる数値を指定します。 型の前に .Em u を付加すると比較は符号なしで行なわれます。 .Bl -tag -width indent .It test ファイル中の値と比較される値。 型が数字の場合、この値は C 言語の形式で指定されます。 これが文字列の場合、 通常のエスケープ記法 (たとえば改行では\en) が可能な C 言語文字列として 指定されます。 .It "" 数値の前には実行される操作を示す文字を付加することができます。 その文字には ファイルの値が指定された値と等価であることを指定する .Em = 、ファイルの値が指定された値より小さいことを指定する .Em < 、ファイルの値が指定された値より大きいことを指定する .Em > 、指定された値の中でセットされているすべてのビットが ファイルでの値ですべてセットされていることを指定する .Em & 、指定された値の中でセットされているどれかのビットが ファイルでの値でオフであることを指定する .Em ^ 、何らかの値がマッチすることを指定する .Em x があります。 これらの文字がない場合は .Em = が指定されているものとみなされます。 .It "" 数値は C 言語の形式で指定されます。例えば .Em 13 は 10 進数、 .Em 013 は 8 進数、 .Em 0x13 は 16 進数となります。 .It "" 文字列値については、 ファイル中のバイト文字列は指定されたバイト文字列に マッチしなければなりません。 オペレータ .Em = と .Em < と .Em > ( .Em & を除く) が文字列に適用できます。 マッチングに使用される長さは マジックファイルでの文字列の引数の長さとなります。 これは .Em >\e0 とすることにより、 その行はどの文字列にもマッチすることが可能であり、 おそらくその文字列が出力されることを意味します (すべての文字列はヌル文字列より長いため)。 .It message 比較が成立したときに出力されるメッセージです。 文字列に .Xr printf 3 指定形式が含まれている場合は、ファイルから得た値 (指定されたマスクを 適用したもの) が、そのメッセージをフォーマット文字列として用いて出力さ れます。 .El .Pp いくつかのファイルフォーマットは、ファイルタイプと共に出力される追加情報 を含んでいます。文字 .Em > で始まる行は追加テストと出力されるメッセージを指定します。 その行での .Em > の数はテストのレベルを指定します。行頭に .Em > がない行はレベル 0 とみなされます。 レベル .Em n+1 の各行はマジックファイル中でその行より前にあるもっとも近いレベル .Em n の行の制御下にあります。レベル .Em n での行のテストが成功した場合、それに続く行で指定されたすべてのレベル .Em n+1 のテストが実施され、 それらのテストが成功するとメッセージが出力されます。 次のレベル .Em n の行でこれが終了します。 最後の .Em > に続く最初の文字が .Em \&( であれば、その括弧の後の文字列は間接オフセットとして解釈されます。 これは括弧の後の数字がそのファイル中のオフセットとして使用されることを 意味します。そのオフセットでの値が読み込まれ、再度ファイルのオフセット として使用されます。間接オフセットは .Em (x[.[bslBSL]][+-][y]) の形式をとります。値 .Em x はファイル中でのオフセットとして使われます。 型指定子 .Em [bslBSL] によりそれぞれバイト、short もしくは long として読み込まれます。 大文字の型は、値をビッグエンディアンとして解釈し、 小文字の型は、値をリトルエンディアンとして解釈します。 その数字に値 .Em y が加算され、その結果はファイルの中でのオフセットとして使用されます。型 指定子がない場合は long がデフォルトの型となります。 .Pp オフセットは、その前にあるフィールドの長さに依存するため、 正確な値が分からない場合があります。 そのような場合は最後の上位レベルのフィールドの最後からの 相対的なオフセットを指定することができます。 (もちろんこれは下位レベルのテスト、すなわち .Em > で始まるテストでのみ可能です。) この場合の相対オフセットは .Em & をオフセットのプレフィックスとして使用して指定します。 .Sh バグ フォーマット .Em long , .Em belong , .Em lelong , .Em short , .Em beshort , .Em leshort , .Em date , .Em bedate , .Em ledate はシステムに依存します。 テストされるファイルは通常それらの長さが不変であるシステムのものであり、 -これらはおそらくバイト数 (2B とか 4B とか) として指定すべきででょう。 +これらはおそらくバイト数 (2B とか 4B とか) として指定すべきでょう。 .Pp 間接オフセットで使用されるエンディアンを指定したデータは (現在は) サポートされていません。 .Sh 関連項目 .Xr file 1 .\" .\" From: guy@sun.uucp (Guy Harris) .\" Newsgroups: net.bugs.usg .\" Subject: /etc/magic's format isn't well documented .\" Message-ID: <2752@sun.uucp> .\" Date: 3 Sep 85 08:19:07 GMT .\" Organization: Sun Microsystems, Inc. .\" Lines: 136 .\" .\" Here's a manual page for the format accepted by the "file" made by adding .\" the changes I posted to the S5R2 version. .\" .\" Modified for Ian Darwin's version of the file command. diff --git a/ja_JP.eucJP/man/man5/resolver.5 b/ja_JP.eucJP/man/man5/resolver.5 index 990ac86b7e..860a104410 100644 --- a/ja_JP.eucJP/man/man5/resolver.5 +++ b/ja_JP.eucJP/man/man5/resolver.5 @@ -1,188 +1,188 @@ .\" Copyright (c) 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. .\" .\" @(#)resolver.5 8.1 (Berkeley) 6/5/93 .\" %FreeBSD: src/share/man/man5/resolver.5,v 1.7.2.1 2001/08/17 13:08:47 ru Exp % -.\" $FreeBSD: doc/ja_JP.eucJP/man/man5/resolver.5,v 1.7 2001/05/14 01:09:31 horikawa Exp $ +.\" $FreeBSD$ .\" .Dd November 11, 1993 .Dt RESOLVER 5 .Os .Sh 名称 .Nm resolver .Nd リゾルバ設定ファイル .Sh 書式 .Nm resolv.conf .Sh 解説 .Xr resolver 3 はインターネットドメインネームシステムへのアクセスを提供する C ライブラリのルーチン群です。 リゾルバ設定ファイルは、はじめてリゾルバルーチンがプロセスによって呼び出 されたときに読み込まれる情報を含んでいます。 ファイルは人に可読なように設計されており、様々な種類のリゾルバ情報を 提供する、値を伴うキーワードのリストを含んでいます。 .Pp 普通に構成されたシステムでは、このファイルは必要ではありません。 問い合わせされる唯一のネームサーバはローカルマシン上にあり、ホスト名 からドメイン名が決定され、ドメインの検索パスがそのドメイン名から作成 されます。 .Pp 様々な設定オプションは以下の通りです。 .Bl -tag -width nameserver .It Sy nameserver リゾルバが問い合わせをするネームサーバのインターネットアドレス (ドット表記)です。 キーワード毎に 1 つづつ、計 .Dv MAXNS (現状では 3)台までのネームサーバが記述できます。 複数のサーバが記述されている場合、リゾルバライブラリは記述された順に 問い合わせを出します。 .Sy nameserver エントリが記述されていない場合、デフォルトではローカルマシン上のネーム サーバを使用します (ここで使われるアルゴリズムは以下のようになります。まず、あるネーム サーバに問い合わせを試みます。この問い合わせがタイムアウトになれば、 次のネームサーバに問い合わせを試み、これをネームサーバがなくなるまで 続けます。応答がない場合、この一連の問い合わせの試みをリトライ最大回 数に達するまで繰り返します)。 .It Sy domain ローカルドメイン名。 そのドメイン内での名前の問い合わせのほとんどが、ローカルドメインにおける 短い名前を使用することができます。 .Sy domain エントリが記述されていない場合、 .Xr gethostname 3 で得たローカルホスト名からドメインを決定します。 ドメイン部は最初の `.' 以降の全てとなります。 ホスト名がドメイン部を含んでいない場合、最終的にはルートドメインが使用されます。 .It Sy search ホスト名調査のための検索リスト。 通常、検索リストはローカルドメイン名から決定されます。 デフォルトでは、ローカルドメイン名のみを含みます。 検索リストは、 .Sy search キーワードの後にスペースまたはタブで区切られたドメイン検索パス名を羅列することで 変更できます。 ほとんどのリゾルバの問い合わせは、検索パスの各構成要素を一致するエントリが -見つかるまでまで順に試します。 +見つかるまで順に試します。 記述されたドメインのサーバがローカルではない場合、この処理は低速で多くの ネットワークトラフィックを発生させる可能性があることと、それらのいずれかの ドメインに関して、使用可能なサーバが 1 つも存在しない場合には問い合わせが タイムアウトすることに注意する必要があります。 .Pp 現在のところ、検索リストは 6 ドメイン、計 256 文字に制限されます。 .It Sy sortlist sortlist を用いて gethostbyname により返されるアドレスをソートできます。 sortlist は IP アドレスとネットマスクの組で指定されます。 ネットマスクはオプションであり、 デフォルトのネットマスクはネットに対する自然なネットマスク (natural netmask) です。 IP アドレスとオプションのネットマスクの組はスラッシュで区切ります。 10 組まで指定可能です。 .Pp 例 sortlist 130.155.160.0/255.255.240.0 130.155.0.0 .It Sy options options によりリゾルバの内部変数を修正できます。 文法は .Pp \fBoptions\fP \fIoption\fP \fI...\fP .Pp であり、 .Sy option は以下のいずれかです: .Pp .Bl -tag -width no_tld_query .It Sy debug _res.options の .Dv RES_DEBUG を設定します。 .It Sy ndots:n .Em 最初の絶対問い合わせ が行われる前に、 .Fn res_query ( .Xr resolver 3 参照) に与えられる名前に含まれるべきドット数の閾値を設定します。 .Em n のデフォルトは .Dq 1 です。これは、名前中にドットがあれば、 .Em search list 要素が追加される前に、 その名前がまず絶対名として試されることを意味します。 .It Sy no_tld_query リゾルバにトップレベルのドメイン名、すなわちドットを持たない名前を 解決しないようにさせます。 このオプションを使用しても、リゾルバが与えられた名前を使用して標準の .Sy domain と .Sy search のルールに従うことを防ぐことはできません。 .El .Pp options は .Dv RES_OPTIONS 環境変数を使用して、空白またはタブ区切りのリストとして指定できます。 .El .Pp .Sy domain と .Sy search キーワードは排他的です。 これらのキーワードが 1 つ以上記述されている場合、 最後のキーワードが有効になります。 .Pp キーワードと値は同一行に存在する必要があり、キーワード (例えば .Sy nameserver ) は行の先頭にある必要があります。 値はキーワードに続いて空白で区切って記述します。 .Sh 関連ファイル .Bl -tag -width /etc/resolv.conf -compact .It Pa /etc/resolv.conf .Nm resolv.conf は .Pa /etc に存在します。 .El .Sh 関連項目 .Xr gethostbyname 3 , .Xr resolver 3 , .Xr hostname 7 , .Xr named 8 .Rs .%T "Name Server Operations Guide for BIND" .Re .Sh 歴史 .Nm resolv.conf ファイルフォーマットは .Bx 4.3 から登場しました。 diff --git a/ja_JP.eucJP/man/man6/phantasia.6 b/ja_JP.eucJP/man/man6/phantasia.6 index 4433a9fcc5..838ddcb6ee 100644 --- a/ja_JP.eucJP/man/man6/phantasia.6 +++ b/ja_JP.eucJP/man/man6/phantasia.6 @@ -1,1263 +1,1263 @@ .\" %FreeBSD: src/games/phantasia/phantasia.6,v 1.6.2.1 2001/07/22 11:32:36 dd Exp % -.\" $FreeBSD: doc/ja_JP.eucJP/man/man6/phantasia.6,v 1.5 2001/05/14 01:09:39 horikawa Exp $ +.\" $FreeBSD$ .\" .de sh .br .ne 5 .PP \fB\\$1\fR .PP .. .TH PHANTASIA 6 "June 1, 1994" .UC 4 .SH 名称 phantasia \- ターミナル間ファンタジーゲーム .SH 書式 phantasia [ \-HSabmpsx ] .SH 解説 .I phantasia はロールプレイングゲームであり、 プレイヤは様々なタイプのキャラクタを演じ、 モンスターや他のプレイヤと闘います。 キャラクタの成長はモンスター(や他のプレイヤ)との戦闘から得る経験値に依ります。 .PP ゲームのほとんどはメニュー形式で進み、 (多少の差はありますが)読めば分るだけの解説がなされます。 スクリーンはカーソルにて更新されますので、 .B TERM 環境変数を設定してください。 .PP このゲームでは、オプションがさまざまな機能を提供します。 以下にそれぞれを示します: .PP .TP .5i .B \-s ヘッダ情報無しで .I phantasia を起動します。 .TP .5i .B \-m モンスター一覧を得ます。 .TP .5i .B \-a ファイル上の全キャラクタ名一覧を得ます。 .TP .5i .B \-x ファイル上の特定キャラクタを検査/変更します。 .TP .5i .B \-H ヘッダのみを表示します。 .TP .5i .B \-p 古いキャラクタを抹消します。 .TP .5i .B \-b ログイン毎のトップキャラクタのスコアボードを表示します。 .TP .5i .B \-S 許されている場合、ウィザードオプションを有効にします。 ``root'' でこのコマンドを実行する場合です。 .PP プレイヤ間で対話的なゲームとするため、 キャラクタは一つの共通ファイルに保存されます。 後でキャラクタを取り出すために、 キャラクタごとにパスワードが与えられます。 .B レベル 0 を越えたキャラクタのみ保存可能です。 しばらく使用していないキャラクタは抹消されます。 キャラクタが死ぬと、スコアボードに名前が残るのみです。 .SH 作者 Edward Estes, AT&T Information Systems, Skokie, IL .SH 詳細 .sh "通常プレイ" プレイヤにとって重要な特性情報はほぼ常にスクリーン上に表示されます。 この際、(最大値があるならば) 最大値も併せて括弧内に表示します。 .PP キャラクタはデカルト座標系の中央付近にランダムに置かれます。 ほとんどのコマンドは一文字の英数字で指定できます。 例えば、`W', `S', `N', 'E' を押すことで移動できます (このゲームは大文字小文字を区別しませんので、小文字も使用可能です)。 また .IR vi (1) のように、'H', 'J', 'K', 'L' にて移動することもできます。 特定の (x,y) 座標位置に移動するためには、 .B 移動 (move) ('1') コマンドを使用します。 キャラクタが移動可能な距離は、1 + 1.5 × .B レベル で計算されます。 方角で指定した場合、プレイヤはその方向に移動できる最大距離だけ移動します。 .PP プレイヤは他にどんなプレイヤがいるのかを .B プレイヤ (players) ('2') オプションを使用して知ることができます。 自己と原点との距離と同じ、 もしくはより近い距離にいるプレイヤを見ることが可能です。 .B 王 と .B 賢人会議メンバー は全員を見ることが可能ですし、全員から見られます。 .B パランティア はこれらの制約を除外します。 .PP 他のプレイヤと会話するには .B 会話 (talk) ('3') オプションを使用します。 一般的に、会話は一行程のテキストです。 現在のメッセージを取り除くには、 メッセージ入力のプロンプトに対して<改行> を押してください。 .PP .B 状態 (stats) ('4') オプションはプレイヤの更なる特性値を表示します。 .PP .B 終了 (quit) ('5') オプションにてゲームをやめることができます。 .PP デフォルトで休むことが可能です。 休むと、最大の .B エネルギーレベル を再獲得し、 .B マナ を得ます (レベルが高くなり、原点から離れれば、それだけ多くの .B マナ を得ることになります)。 .PP モンスターを呼ぶには、'9' か 'C' を押します。 .PP 他のプレイヤを調べるには 'X' を押します。 .PP 割り込みキーを押すことにより、終了したり、サブシェルを実行可能です。 戦闘中に中断すると死にます。この理由は明かです。 .PP プレイヤの .B レベル (level) と .B 魔力 (magic) が上昇するかゲーム上での他の地位( .B バラー、賢人会議、王 )に就任すると、別のオプションをいくつか使用することが できるようになります。 これらについては項を改めて説明します。 一般的にコントロール L でスクリーンを再描画します。 .PP 他に起り得る事柄は、多少の差はあれ自明でしょう。 .sh "モンスターとの戦い" モンスターとの戦闘中にプレイヤが使えるオプションがいくつかあります。 以下に示します: .TP 1.5i .B 混戦 (melee) .B 強さ を基に、モンスターにダメージを加えます。 また、モンスターの .B 強さ をいくらか減らします。 .TP 1.5i .B 小競合 (skirmish) .B 混戦 よりは与えるダメージは少ないですが、その代わりに、モンスターの .B 素早さ を減らします。 .TP 1.5i .B 回避 (evade) 逃走を試みます。成功率はプレイヤとモンスターの .B 知能 と .B 素早さ に依ります。 .TP 1.5i .B 呪文 (spell) 呪文を投げるいくつかのオプション(別の場所で記述します)。 .TP 1.5i .B 切り刻み (nick) モンスターにプレイヤの .B 剣 の値プラス1の打撃を与え、 プレイヤにモンスターの .B 経験値 の 10% を与えます。 モンスターの .B 経験値 を、得た値に応じて減らします。 また、モンスターの素早さを増します。 麻痺したモンスターは切り刻まれると非常に素早く起き上がります。 .TP 1.5i .B 運試し (luckout) 本質的にモンスターとの智恵比べです。成功率はプレイヤとモンスターの .B 知能 に依ります。 モンスターを倒すことに成功すると、プレイヤは名声 (credit) を得ます。 失敗するとなにも起りません。 .B 運試し の機会が失われるだけです。 .sh "キャラクタの状態" .TP 1.5i .B 強さ (strength) キャラクタが与えるダメージを決定します。 .TP 1.5i .B 素早さ (quickness) 戦闘中、キャラクタが何回意思決定を行なう機会があるかを決定します。 .TP 1.5i .B エネルギーレベル (energy level) キャラクタが死ぬまでにどれほどのダメージに耐えるかを決定します。 .TP 1.5i .B 魔法レベル (magic level) キャラクタが投げられる呪文とその効果を決定します。 .TP 1.5i .B 知能 (brains) 基本的にキャラクタの知性です; 種々の戦闘オプションと呪文で使用されます。 .TP 1.5i .B マナ (mana) 呪文を投げる際の力の源として使用されます。 .TP 1.5i .B 経験値 (experience) モンスターや他のキャラクタと戦うことにより得られます。 .TP 1.5i .B level (レベル) キャラクタがどれだけの経験を積んだかを示します; .B 経験値 の増加に応じて幾何的に増加します。 .TP 1.5i .B 毒 (poison) キャラクタの能力を低下させる病気です ( .B エネルギーレベル と .B 強さ に影響します)。 .TP 1.5i .B 罪 (sin) キャラクタが悪事を行なうと累積されます; 通常のゲーム中ではめったに使用されません。 .TP 1.5i .B 年齢 (age) プレイヤの年齢; ターン数におおよそ等しいです。 .B 年齢 が増加すると、キャラクタの能力の多くが低下します。 .sh "キャラクタのタイプ" キャラクタの特性情報は、キャラクタタイプに依存して、 上記リストからランダムに振られます。 タイプは以下のものがあります: .TP 1.5i .B 魔法使い (magic user) .B 魔法レベル と .B 知能 が強いですが、他は弱いです。 生き延びるには、智恵と魔法に頼る必要があります。 .TP 1.5i .B 戦士 (fighter) .B 強さ と .B エネルギーレベル が良好ですが、他もまあまあ良好です。 よく装備された戦士となります。 .TP 1.5i .B エルフ (elf) 非常に高い .B 素早さ と平均以上の .B 魔法レベル は .B エルフ のセールスポイントです。 .TP 1.5i .B ドワーフ (dwarf) 非常に高い .B 強さ と .B エネルギーレベル を持ちますが、比較的遅く、あまり賢くない傾向があります。 .TP 1.5i .B ハーフリング (halfling) 比較的素早くて賢く、高い .B エネルギーレベル を持ちますが、 .B 魔法 と .B 強さ は貧弱です。 いくばくかの .B 経験値 を持って誕生します。 .TP 1.5i .B experimento 全領域において、まさに並です。しかし、 .B experimento は遊戯座標領域のいずれの領域にも置かれ得ます。 .PP 開始時の能力値の範囲を以下の表にまとめます。 .PP .TS l c c c c c c l c c c c c c. タイプ 強さ 素早さ マナ エネルギー 知能 魔法 _ 魔法使い 10-15 30-35 50-100 30-45 60-85 5-9 戦士 40-55 30-35 30-50 45-70 25-45 3-6 エルフ 35-45 32-38 45-90 30-50 40-65 4-7 ドワーフ 50-70 25-30 25-45 60-100 20-40 2-5 ハーフリング 20-25 34 25-45 55-90 40-75 1-4 Experimento 25 27 100 35 25 2 .TE .PP 開始時の能力特性がキャラクタタイプによって異なるのみならず、 キャラクタの .B レベル が上昇するごとに得られる能力特性の成長速度も キャラクタタイプによって異なります。 .B experimento の特性成長は他のタイプのいずれかからランダムに選ばれます。 .B レベル が1上昇する際のキャラクタの成長を以下の表にまとめます。 .PP .TS l c c c c c l n n n n n. タイプ 強さ マナ エネルギー 知能 魔法 _ 魔法使い 2.0 75 20 6 2.75 戦士 3.0 40 30 3.0 1.5 エルフ 2.5 65 25 4.0 2.0 ドワーフ 5 30 35 2.5 1 ハーフリング 2.0 30 30 4.5 1 .TE .PP プレイヤが運べる金の量、 .B 指輪 がプレイヤを支配するまでの期間、 プレイヤが耐えられる .B 毒 の量もまた、キャラクタタイプにより決まります。 .sh "呪文" ゲームを進めてゆく中で、プレイヤは魔力を鍛えることができます。 機会を以下に示します。 .TP 1.5i .B クローク (cloak) .I 必要魔法レベル: 20 (そしてレベル 7) .br .I 使用マナ: 35 マナ プラス 3 マナ(1休憩期間ごとに) .br 通常プレイで使用。モンスターがキャラクタを発見することを防ぎ、 他のプレイヤからも隠します。 他のプレイヤが .B プレイヤ オプションで見ると、そのプレイヤの座標は '?' と見えます。 クロークされているプレイヤは .B マナ を集めることも、交易所をみつけることも、 .B 聖杯 を探すこともできません。 モンスターを呼んだり、クローク中にこのオプションを選択すると、 クロークは解除されます。 .br .TP 1.5i .B テレポート (teleport) .I 必要魔法レベル: 40 (そしてレベル 12) .br .I 使用マナ: 30 マナ / 75 移動ごとに .br 通常プレイで使用。 マナを使用することにより、 .B 移動 オプションよりもはるかに自由な移動をプレイヤが行えるようになります。 最大移動可能距離は、 .B レベル と .B 魔法レベル に依存します。 .TP 1.5i .B パワーブラスト (power blast) .I 必要魔法レベル: 無し .br .I 使用マナ: 5 × .B レベル .br ターミナル間戦闘で使用。 ダメージは .B 魔法レベル と .B 強さ に依存します。 通常の打撃よりもあたりにくいです。 .TP 1.5i .B 全てか無か (all or nothing) .I 必要魔法レベル: 無し .br .I 使用マナ: 1 .br モンスターとの戦闘で使用。 動作確率は 25% です。 動作すると、モンスターを殺すだけの打撃を与えます。 失敗すると、モンスターには打撃を与えず、 モンスターの .B 素早さ と .B 強さ を倍にします。 麻痺したモンスターは、この呪文の結果、より素早く起きます。 .TP 1.5i .B 魔法の雷撃 (magic bolt) .I 必要魔法レベル: 5 .br .I 使用マナ: 可変 .br モンスターとの戦闘で使用。 モンスターへの打撃は、費した .B マナ と .B 魔法レベル に依存します。 .B マナ あたり最低 10 の打撃を与えられることが保証されています。 .TP 1.5i .B 力場 (force field) .I 必要魔法レベル: 15 .br .I 使用マナ: 30 .br モンスターとの戦闘で使用。 ダメージから守る盾を急造します。 盾は実際のエネルギーレベルに加えられるもので、固定値であり、 最大エネルギーに依存します。 通常、ダメージはまず盾に与えられ、 その後プレイヤの実際の .B エネルギーレベル に与えられます。 .TP 1.5i .B 変身 (transform) .I 必要魔法レベル: 25 .br .I 使用マナ: 50 .br モンスターとの戦闘で使用。 モンスターを、 モンスターファイルの 100 のモンスターのうちの一つにランダムに変身させます。 .TP 1.5i .B 力の増加 (increase might) .I 必要魔法レベル: 35 .br .I 使用マナ: 75 .br モンスターとの戦闘で使用。 強さを最大まで上昇させます。 .TP 1.5i .B 不可視 (invisibility) .I 必要魔法レベル: 45 .br .I 使用マナ: 90 .br モンスターとの戦闘で使用。 一時的にプレイヤの .B 素早さ を増し、モンスターの攻撃があたりにくくします。 この呪文は複数回使用することが可能ですが、いつかは最大レベルに達します。 .TP 1.5i .B 移送 (transport) .I 必要魔法レベル: 60 .br .I 使用マナ: 125 .br モンスターとの戦闘で使用。 プレイヤの居る場所からモンスターを遠くへ移動します。 成功率はプレイヤの .B 魔法 と .B 知能 およびモンスターの .B 経験値 に依存します。 失敗した場合にはプレイヤが代りに移動されます。 60% の確率でモンスターは持っていた宝物を置いていきます。 .TP 1.5i .B 麻痺 (paralyze) .I 必要魔法レベル: 75 .br .I 使用マナ: 150 .br モンスターとの戦闘で使用。 モンスターの .B 素早さ を少し負にすることで、モンスターを「凍らせ」ます。 モンスターはゆっくりと起きます。 成功率はプレイヤの .B 魔法 とモンスターの .B 経験値 に依存します。 失敗すると何もおきません。 .TP 1.5i .B 指定 (specify) .I 必要魔法レベル: 無し .br .I 使用マナ: 1000 .br モンスターとの戦闘において、 .B バラー もしくは .B 賢人会議 が使用。 プレイヤが戦うモンスターを選択できるようになります。 .sh "モンスター" 原点 (0,0) から遠くに行くほどモンスターは大きくなります。 原点から 125 の距離の輪が大きさを決定します。 モンスターの .B 経験値、エネルギーレベル、知能 は、大きさをかけたものになります。 .B 強さ は、1 を越える大きさごとに 50% 増します。 .B 素早さ は、大きにかかわらず同一です。 .PP また、原点を離れるほど、悪いモンスターにでくわします。 モンスターは群れているかもしれません。 群れている確率のパーセントは、モンスターリストの .B flock% に書いてあります。 最初の輪より外に居るモンスターは宝物を持っているかもしれません。 これは各モンスターの宝物タイプにより決定されます。 群れているモンスターおよび大きいモンスターは、 宝物を持っている確率が高いです。 .PP 特殊能力を持つモンスターも居ます; 以下に示します: .TP 1.5i .B Unicorn プレイヤが .B 処女 を所持している時のみ征服可能です。 .TP 1.5i .B Modnar ランダムな特性を持ちます。これは宝物タイプも同様です。 .TP 1.5i .B Mimic モンスターリスト中の他の名前を取り、混乱させます。 .TP 1.5i .B Dark Lord とても悪い奴です。 打撃はほとんど当たりません (特に nick) し、 呪文はうまく作用しません (またはまったく作用しません)。 .B Dark Lord. からは、常に .B 回避 可能です。 .TP 1.5i .B Leanan-Sidhe これもとても悪い奴です。彼女は永続的に .B 強さ を抜き取ります。 .TP 1.5i .B Saruman .B パランティア を盗む .B Wormtongue と伴に彷っています。 また、 .B Saruman はプレイヤの宝石を金に変えたり、 プレイヤの状態をごちゃまぜにすることがあります。 .TP 1.5i .B Thaumaturgist プレイヤを移送可能です。 .TP 1.5i .B Balrog .B エネルギー ではなく .B 経験値 を奪うことでダメージを与えます。 .TP 1.5i .B Vortex .B マナ を奪います。 .TP 1.5i .B Nazgul .B 指輪 を盗もうとしたり、 .B 知能 の一部を中和しようとします。 .TP 1.5i .B Tiamat プレイヤの .B 金 と .B 宝石 の半分を奪って逃げようとします。 .TP 1.5i .B Kobold 意地悪く金を一かけら盗み逃げようとします。 .TP 1.5i .B Shelob 噛んで、 .B 毒 と同じ被害を与えます。 .TP 1.5i .B Assorted Faeries .B 聖水 を所持するものを攻撃すると、これらは死にます。 これらには .B Cluricaun, Fir Darrig, Fachan, .B Ghille Dhu, Bogle, Killmoulis, .B Bwca が含まれます。 .TP 1.5i .B Lamprey 噛んで、 .B 毒 の 1/2 のダメージを与えます。 .TP 1.5i .B Shrieker 拾うと、(より大きな) 仲間を呼びます。 .TP 1.5i .B Bonnacon 戦いに飽き、放屁して逃げます。 .TP 1.5i .B Smeagol 機会があれば、プレイヤから .B 指輪 を盗もうとします。 .TP 1.5i .B Succubus .B 力場 を越えてダメージを与えることがあります。 プレイヤが展開している盾に対してでなく、 .B エネルギーレベル にダメージを与えます。 これにより、容易に死に至ります。 .TP 1.5i .B Cerberus 金属が好きで、可能であればプレイヤから金属の宝物を盗みます。 .TP 1.5i .B Ungoliant 噛んで毒を与えます。 .B 毒 5 つ分の被害があり、プレイヤの .B 素早さ を 1 減らします。 .TP 1.5i .B Jabberwock 戦いに疲れると、友人 ( .B Jubjub Bird または .B Bandersnatch ) を呼んだ後で逃げます。 .TP 1.5i .B Morgoth 実際には .B Modnar ですが、 .B 賢人会議、バラー、 .B 前バラー のために予約されています。 .B Morgoth との戦闘は、彼かプレイヤのいずれかが死ぬまで終わりません。 彼の特質はプレイヤの特質をもとに計算されます。 プレイヤは彼と同盟する機会が与えられます。 .B 力場 以外の魔法は、 .B Morgoth との戦闘中は作用しません。 .TP 1.5i .B Troll 戦闘中に .B エネルギー と .B 強さ が再生することがあります。 .TP 1.5i .B Wraith プレイヤの目を見えなくすることがあります。 .sh "宝物" 様々な宝物のタイプを以下に示します: .TP 1.5i .B タイプ 0 .I 無し .TP 1.5i .B タイプ 1 .I パワーブースター (power booster) \- マナを加えます。 .br .I ドルイド (druid) \- 経験を加えます。 .br .I ホーリーオーブ (holy orb) \- 罪を 0.25 減らします。 .TP 1.5i .B タイプ 2 .I 護符 (amulet) \- 呪われた宝物から身を守ります。 .br .I 聖水 (holy water) \- .B assorted faeries を殺します。 .br .I 隠者 (hermit) \- 罪を 25% 減じ、マナをいくらか増します。 .TP 1.5i .B タイプ 3 .I 盾 (shield) \- 最大の .B エネルギーレベル とします。 .br .I 処女 (virgin) \- .B ユニコーン を征服するのに使用したり、多くの .B 経験 (そしていくつかの .B 罪 )を得るために使用します。 .br .I アセラス (athelas) \- .B 毒 を 1 減じます。 .TP 1.5i .B タイプ 4 (巻物) .I 盾 (shield) \- 通常の .B 力場 より大きな力場を展開します。 .br .I 不可視 (invisible) \- 発見者の .B 素早さ を一時的に 1000,000 にします。 .br .I 10 倍力 (ten fold strength) \- 発見者の強さを 10 倍にします。 .br .I モンスターの選択 (pick monster) \- 発見者は次に戦うモンスターを選ぶことができます。 .br .I 一般知識 (general knowledge) \- 発見者の .B 知能 と .B 魔法レベル を増加させます。 .PP .B 一般知識 以外の巻物は、自動的にモンスターを呼びます。 既に効果がある呪文はそのままにしますが、戦闘の期間のみ効果があります。 .TP 1.5i .B タイプ 5 .I 短剣 (dagger) \- .B 強さ を増加させます。 .br .I 鎧 (armour) \- .B 盾 と同じですが、盾より効果が大きいです。 .br .I 石板 (tablet) \- 知能を増加させます。 .TP 1.5i .B タイプ 6 .I 司祭 (priest) \- 最大値まで回復させます; .B マナ、知能 を増加させます; .B 罪 を半分にします。 .br .I ロビンフッド (Robin Hood) \- .B 盾 を増加させ、永続的に .B 強さ を増加させます。 .br .I 斧 (axe) \- .B 短剣 と同様ですが、短剣より効果が大きいです。 .TP 1.5i .B タイプ 7 .I 魅惑 (charm) \- 呪われた宝物から守ります ( .B 護符 の前に使用した場合 ); .B Dark Lord と戦う際に、 .B 祝福 と共に使用します。 .br .I マーリン (Merlyn) \- .B 知能、魔法、マナ を増加させます。 .br .I ウォーハンマ (war hammer) \- .B 斧 と同様ですが、斧より効果が大きいです。 .TP 1.5i .B タイプ 8 .I 癒し薬 (healing potion) \- .B 毒 を -2 にするか、 .B 毒 を 2 減じます。 より良い方の効果が採用されます。 .br .I 移送機 (transporter) \- 発見者をどこかに移送します。 .br .I 剣 (sword) \- .B ウォーハンマ と同様ですが、効果が大きいです。 .TP 1.5i .B タイプ 9 .I 金の王冠 (golden crown) \- (0,0) に移動することにより、プレイヤを .B 王 にします。 .br .I 祝福 (blessing) \- .B 罪 を 1/3 にし、 .B マナ を加え、 最大まで休み、 .B 魅惑 と共に使用することで .B Dark Lord を殺します。所持者は全モンスターに最初の打撃を与えることができます。 .br .I 素早さの銀 (quicksilver) \- .B 素早さ を増加させます。 .TP 1.5i .B タイプ 10 .I エルフのブーツ (elven boots) \- 永続的に .B 素早さ を増加させます。 .TP 1.5i .B タイプ 11 .I パランティア (palantir) \- 他の全プレイヤを見ることができるようにします; .B 賢人会議 が使用すると .B 聖杯 を探すことができます。 .TP 1.5i .B タイプ 12/13 .I 指輪 (ring) \- 戦闘時に大きなダメージを与える等。 .PP 宝物タイプ 10-13 のモンスターはタイプ 9 の宝物を持つこともあります。 .PP モンスターは .B 金 または .B 宝石 も持っていることもあります。 これらは .B 交易所 で物を買うために使用します。 .B 宝石 の価値は金 1000 です。多くの .B 金 を持っているとプレイヤは遅くなります。 プレイヤが持てる .B 金 は 1000 + 200 × .B レベル です。 .B 宝石 の重さは金の 1/2 です。 宝物タイプ 7 以上のモンスターは .B 宝石 を持つことがあります。 .PP 宝物が呪われている確率は、宝物のタイプに依存します。 より価値がある宝物ほど呪われている確率が高いです。 呪われている宝物は .B エネルギーレベル を非常に低下させ、 .B 毒 に 0.25 を加えます。 .sh "指輪" .B 指輪 は .B nazguls および .B Dark Lord のみが持っています。 指輪には 4 種類あります。 全ての .B 指輪 はプレイヤを最大まで休ませ、 モンスターとの戦闘中、持ち主が相手に与える打撃を強くします ( .B 指輪 を戦闘に使用している場合を仮定)。 .PP 2 タイプの .B 指輪 は呪われており、 .B nazguls もしくは .B Dark Lord から得られます。 これらのタイプのものを数回使用すると、 プレイヤは .B 指輪 の制御下におかれ、奇妙な出来事がランダムに起ります。 ときにはプレイヤは死に至り、そのプレイヤの名前が モンスターファイルに登録されます。 .B 指輪 を使い切る前に死んだ場合でも、モンスターに変身させます。 .PP 残りの 2 タイプの .B 指輪 は良性のものです。 .B nazgul から得られるものは、 限られた回数の戦闘ラウンドで、 プレイヤが死んだ時に指輪を使っている場合、プレイヤを死から回復させます。 .B Dark Lord から得られるものも同様ですが、使い切るということはありません。 .B 指輪 は誰かを死から回復させると消滅します。 一般的には、呪われている .B 指輪 は通常のものよりもはるかに高い頻度で発生します。 通常は拾わない方が良いでしょう。 .B 指輪 を取り除くための唯一の方法は、モンスターに盗ませることです。 .sh "王" プレイヤは .I 王冠 を見つけ、(0,0) に移動することにより .B 王 になります。 .I 王冠 を見つけるためには .B レベル が 10 から 1000 の範囲にある必要があります。 1 個以上の .I 王冠 を持つプレイヤが .B レベル 1000 になると、 .I 王冠 は .I 金 になります。 .PP プレイヤが一度王になると、王の部屋 (0,0) に居る間は特別なことが出来るようになります。 これは .B 布告 (decree) ('0') オプションで実行できます。 .TP 1.5i .I 移送 (transport) 他のプレイヤに作用します。影響を受けるプレイヤをランダムに移動します。 .B 魅惑 は移送を防ぎます。 .TP 1.5i .I 呪い (curse) 他のプレイヤに作用します。呪われている宝物と似ていますが、 より悪いです。2 の .B 毒 の効果があり、 .B エネルギーレベル を非常に低下させ、最大エネルギーを低下させます。 .B クローク も取り去ります。 .B 祝福 は王の呪いを防ぎます。 .TP 1.5i .I エネルギーの虚無 (energy void) 王は、好きなようにこれらを王国に広くばらまくことが可能です。 プレイヤが当たると、プレイヤは .B マナ、エネルギー、金 を失います。 エネルギーの虚無は、打撃を受けた後、消滅します。 .TP 1.5i .I 授与 (bestow) これも他のプレイヤに作用します。王は、富 ( .B 金 ) を複数の忠実な国民に報酬として分け与えることが可能です。 不要な荷物を捨てるための便利な方法と言うこともできますが。 .TP 1.5i .I 徴税 (collect taxes) 全員が、所有する全 .B 金 と .B 宝石 に対して 7% の税を支払います。これは .B 王 の存在には無関係です。王はこのオプションで税を集めます。 .PP .B 王 は、何も失うことなく、原点を始点として任意の場所に .B テレポート が可能です。 .sh "賢人会議、バラー" .pl +0.5 プレイヤがレベル 3000 になると自動的に .B 賢人会議 のメンバになります。賢人会議のメンバは .B 指輪 を持てません。賢人会議メンバは実行可能なオプションが増えます。 実行には .B 介入 (intervene) ('8') オプションを使用します。 .B 介入 オプションはどれも 1000 マナを消費します。 第一の .B 介入 オプションは他のプレイヤを .I 癒す (heal) ことです。 そのプレイヤを最大まで休ませ、少し .B 毒 を減らすための、早い方法です。 賢人会議メンバの人生の主目的は .B 聖杯 (Holy Grail) の探索です。これは .B パランティア を所持して .I 聖杯探索 (seek grail) オプションを使用することによりなされます。 聖杯を探すのが簡単になりすぎないよう、 聖杯探索により表示される距離の精度は 10% 以内となっています。 プレイヤが持つ .B 罪 は、ごくごくわずかでなければなりません。 さもないと、聖杯発見時に全てが終ってしまいます。 賢人会議メンバの聖杯探索の助けとして、彼等は .I テレポート がより容易にできるようになっています。 .pl -0.5 .sp 1 .fM .ne 1i .PP 聖杯を見つけると、プレイヤは .B バラー の地位に進みます。 そうするとプレイヤは、 .I 介入 の際に、より多くのすばらしいオプションを使えるようになります。 賢人会議メンバが使用可能なオプションに加えて、 他のプレイヤの移動、他のプレイヤの祝福、 他のプレイヤへのモンスターの差し向けがあります。 .BR バラー の祝福は宝物の .I 祝福 と同様の効果がありますが、影響を受けるプレイヤの .I 祝福 フラグがセットされるわけではありません。 他のプレイヤに影響する全 .I 介入 オプションは、使用者の年齢を増加させます。 .B バラー は本来は不死ですが、ここでは命を 5 つ持ちます。 これを使い切ると、プレイヤは死に、 .B 前バラー になります。 .B バラー は .I 移動、テレポート 、モンスターの召喚のいずれもできません (例外は .I バラー が .I 移送機 を発見した場合のみです。これによりプレイヤは余分の .I 金 を捨てることが可能です)。 .B バラー が出会うモンスターは、プレイヤのサイズに依存します。 同時には唯一のバラーしか存在し得ません。 現在のバラーは、他のプレイヤが聖杯を見付けると交代されます。 現在のバラーは賢人会議の地位に戻されます。 .sh "ウィザード" 通常、 .I ウィザード はゲームの所有者であり、関連ファイルを管理します。 ゲームを'\-S' オプション付きで起動した場合、 .I ウィザード はそのゲームで特殊な力を持ちます。 そうでなければ .I ウィザード は他のプレイヤと同様に扱われます。 .I ウィザード の能力をざっと説明すると以下のようになります。 .TP .I プレイヤの交代 (change players) プレイヤを検査する時 ('-x' でゲームを起動、または 'X' をゲーム中で使用)、 .I ウィザード は、検査だけでなくプレイヤを変更できます。 .TP .I 介入 .I ウィザード は .I 介入 オプションの全てを使用可能で、更に、 .I 蒸発 (vaporize) が使用可能です。これで攻撃的なプレイヤを殺せます。 .TP .I 超越キャラクタタイプ (super character type) キャラクタタイプが一つ追加されます。 開始時の全能力が、他のキャラクタタイプから選択した最大値になります。 .B 超越 キャラクタの能力の向上速度も、他のキャラクタタイプから選択した 最大の速度になります。 .sh "特殊な場所" ゲーム世界の領域は、それぞれある名前を持ちます。 一般に、プレイヤがいる場所についてのイメージを与えるためだけの 意味しかありませんが、 特殊な場所もいくつかあります。 .TP 1.5i .I 交易所 (Trading Posts) 位置は |x| == |y| == n*n*100 ただし n = 1, 2...1000 にあります。 遠くにある交易所程、売り物が沢山あります。 商人は短気ですので騙さないように注意してください。 商人は 5% の確率で不誠実です。 .TP 1.5i .I 王の部屋 (Lord's Chamber) 位置は (0,0) です。 .B 王冠 を持つプレイヤのみが入れます。 .TP 1.5i .I 帰らずの場所 (Point of No Return) 任意の方角の 1.2e+6 を越えた処にあります。 ここから帰るための方法は .B 移送機 もしくは .B バラー に移動してもらうことです。 .TP 1.5i .I 死の沼 (Dead Marshes) この帯は原点からかなり遠くにあります。 最初の 14 のモンスター(水のモンスター) は、通常はここでのみ遭遇できます。 .TP 1.5i .I ワルハラ (Valhala) .B バラー -ががいる場所のことです。ゲーム世界の特定の座標についた名前ではありません。 +がいる場所のことです。ゲーム世界の特定の座標についた名前ではありません。 .sh "その他" プレイヤが一度 .B レベル 5 になると、入力待ちのタイムアウトにより ゲームが再開するようになります。 これはゲームのペースを早く保つための試みです。 .PP .B 罪 が 1 未満である場合、 .I 導師 (guru) 罪に嫌気をさすということはありません。 .PP .I 医者 (medic) はプレイヤの .B 金 の半分で満足します。所有するより多くの量、もしくは負の量を与えると、 .I 医者 を怒らせてしまい、プレイヤを悪化させます ( .B 毒 が 1 増えます)。 .PP .B 聖杯 は、これを見る準備ができていないものにとってはほとんどなにも作用しません。 これを誰かが見つけたときには、移動してしまいます。 原点からの任意の方向で、1e+6 以内の距離に常に位置します。 .PP プレイヤが所持できる .B マナ および .B 魅惑 には、 .B レベル による最大値が存在します。 .I 素早さの銀 の限界は常に最大 99 です。 .PP .B 交易所 で買う .I 本 (book) は、購入数に基づき、 .B 知能 を増加させます。 しかしながら、一時に .B レベル の 1/10 より多くの本を購入するのはうまいやりかたではありません。 .PP レベル 10000 を越えたプレイヤは自動的に引退します。 .PP .I 目が見えない状態 (blindness) からはランダムな期間の後に回復します。 .PP .I 王冠 を所持するプレイヤは、キャラクタタイプの前に '*' が付いて区別されます。 .sh "ターミナル間戦闘" 2 人のプレイヤの座標が一致すると、戦闘を行うことができます。 一般的に、最大の .B 素早さ をもつ者が最初の打撃を与えます。 2 人のプレイヤの格が違い過ぎる場合、 強いプレイヤには戦闘に際して強烈なハンディキャップが課せられます。 無限ループにはまってしまうことを避けるために、 プレイヤの応答はタイムアウトすることがあります。戦闘のオプションを示します: .TP 1.5i .I 戦闘 (fight) 他のプレイヤにダメージを与える。 .TP 1.5i .I 逃走 (run away) 戦闘から逃げる。75% の成功率です。 .TP 1.5i .I パワーブラスト (power blast) 戦闘呪文。 .TP 1.5i .I 運試し (luckout) 相手に打ち勝とうとする一度きりの機会。10% の成功率です。 .PP 他のプレイヤを待つ時間が多大になることがあります。 これは、相手がモンスターと戦っている場合です。 戦闘で他のプレイヤを倒すと、勝者は敗者の .B 経験値 と宝物を得ます。 .B 指輪 はターミナル間戦闘では動作しません。 .SH バグ スクリーン形状は最低限 24 行と 80 桁はあることを想定しています。 本プログラムは、いずれかのデータ項目が スクリーン上に割り当てられた空間よりも大きくなり過ぎることを想定した 作りにはなっていません。 .\" Amended by kuma, 98-04-29 .\"ZZZ: 3.0-RELEASE complianted by N. Kumagai, 99-1-16 diff --git a/ja_JP.eucJP/man/man8/cvsbug.8 b/ja_JP.eucJP/man/man8/cvsbug.8 index 67b76693f0..0e5f392d72 100644 --- a/ja_JP.eucJP/man/man8/cvsbug.8 +++ b/ja_JP.eucJP/man/man8/cvsbug.8 @@ -1,246 +1,246 @@ .\" -*- nroff -*- .\" --------------------------------------------------------------------------- .\" man page for send-pr (by Heinz G. Seidl, hgs@cygnus.com) .\" updated Feb 1993 for GNATS 3.00 by Jeffrey Osier, jeffrey@cygnus.com .\" .\" This file is part of the Problem Report Management System (GNATS) .\" Copyright 1992 Cygnus Support .\" .\" This program is free software; you can redistribute it and/or .\" modify it under the terms of the GNU General Public .\" License as published by the Free Software Foundation; either .\" version 2 of the License, or (at your option) any later version. .\" .\" This program is distributed in the hope that it will be useful, .\" but WITHOUT ANY WARRANTY; without even the implied warranty of .\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU .\" General Public License for more details. .\" .\" --------------------------------------------------------------------------- .\" %FreeBSD: src/contrib/cvs/man/cvsbug.8,v 1.2.6.2 2001/10/28 21:32:05 peter Exp % .\" $FreeBSD$ .nh .TH CVSBUG 8 xVERSIONx "February 1993" .SH 名称 cvsbug \- CVS に関する Problem Report (PR) をサポートサイトに送る .SH 書式 .B cvsbug [ .I site ] [ .B \-f .I problem-report ] [ .B \-t .I mail-address ] .br .in +0.8i [ .B \-P ] [ .B \-L ] [ .B \-\-request-id ] [ .B \-v ] .SH 解説 .\" .\" 以下の日本語訳は、同じく FreeBSD jpman にて既に訳されていた .\" send-pr.1 から かなりの部分を流用している。sakai@jp.freebsd.org 1997.6.16 .\" .B cvsbug は、サポートサイトに対して .I problem reports .\" SITE ADMINISTRATORS - change this if you use a local default (PR) を送るために使うツールです。大抵の場合は正しい .I site がデフォルトとなっているはずです。この引数は、問題を引き起こした事象 のカテゴリに対して責任をもつサポートサイトを指し示します。いくつかの サイトはデフォルトとしてローカルアドレスを使っていることでしょう。 .I site は、 .BR aliases (5) を使って定義されます。 .LP .B cvsbug を実行すると、エディタが起動されて用意されているテンプレートを (いくつ かのフィールドにもっともらしいデフォルトの値をあてはめてから) 読み込ま れます。エディタを終了すると、 .B cvsbug はサポートサイトの .I Problem Report Management System (\fBGNATS\fR) に完了した形式のレポートをメールで送ります。サポートサイトで は、PR は問題のカテゴリと \fIsubmitter-id\fR とに従って唯一の番号が 割り当てられ、\fBGNATS\fR データベースに保存されています。 \fBGNATS\fR はメールを受け取ったことを知らせるために、 問題のカテゴリの引用と PR 番号とを自動的に返送します。 .LP PR が速やかに処理されるようにするためには、 あなた(独自)の \fIsubmitter-id\fR と、 問題分野を識別する有効なカテゴリを記入する必要があります。(カテゴリは .B `cvsbug -L' で見ることができます。) .LP あなたのサイトにある .B cvsbug テンプレートは、あらかじめ submitter-id をカスタマイズしておく 必要があります (そのために `\|\fBinstall-sid\fP \fIsubmitter-id\fP\|' を 実行することは .B cvsbug のインストール手順の一部になっています )。 もしこれがまだ設定されていなければ、 あなたのシステム管理者に submitter-id 設定をお願いするか、次のコマンド .B `cvsbug \-\-request\-id' を実行してあなたのサポートサイトに submitter-id を要求して下さい。 あなたのサイトがユーザサイト間で区別できない、あるいは あなたがサポートサイトと結び付きを持っていない場合は、このフィールドに .B `net' と指定して下さい。 .LP より正確な問題の記述やより完全な情報があればあるほど、 サポートチームは問題をより早く解決することができます。 .SH オプション .TP .BI \-f " problem-report" すでに記入した PR ファイルを \fIproblem-report\fR に指定できます。 .B cvsbug はエディタを起動せずにファイルを送ります。 .I problem-report が .BR `\|\-\|' のときは .B cvsbug は、標準入力から読み込みます。 .TP .BI \-t " mail-address" PR を送るサイトのメールアドレスを変更します。 デフォルトのメールアドレスは、 デフォルトサイトのものが使われます。特殊な状況を除き、このオプションではなく、 .I site を使って下さい。 .TP .B \-P 環境変数 .B PR_FORM で指定されたテンプレートを標準出力に出力します。 .B PR_FORM が定義されていないときは、標準のブランク PR テンプレートが使われます。 メールは送られません。 .TP .B -L 使用できるカテゴリが表示されます。メールは送られません。 .TP .B \-\-request\-id デフォルトサイトか、 .I site が指定されればそのサイトに .IR submitter-id を要求します。もしユーザがそのサイトと関係なければ、 .I submitter-id として .BR net を使って下さい。 .TP .B \-v .B cvsbug のバージョンを表示します。 .LP 注: PR を提出するためには、PR を直接メールするのではなく、 .B cvsbug を使いましょう。テンプレートと .B cvsbug の両方を使うことによって、すべての必要な情報がサポートサイトに確実に届きます。 .SH 環境変数 .B EDITOR テンプレートに対して起動するエディタ .br デフォルト: .B vi .sp もし .B PR_FORM が設定されていれば、編集する PR のテンプレートのファイル名として 使われます。 部分的に完成したテンプレートから始めるために これを使うことができます (たとえば、すでに identification フィールドを 埋めてあるテンプレートなどです)。 .SH PR の記入方法 PR が形式に従っていれば、 プログラムは簡単に PR を扱うことができます。 以下のガイドラインを覚えておきましょう: .IP \(bu 3m それぞれの PR には .B 一つの問題 だけを記述しましょう。 .IP \(bu 3m フォローアップメールには、 自動返送されて来るメールと同じサブジェクトを使いましょう。サブジェクトは、 カテゴリ、PR 番号、元の概要の行から構成されています。 これによってサポートサイト は、特定の PR を複数のメールメッセージと結びつけ、またそれらを自動的に 記録することができます。 .IP \(bu 3m サブジェクトや、概要の行はできるだけ正確するようにしましょう。 .IP \(bu 3m サブジェクトや概要の行は機密扱いではありません。 公開されるバグリストはサブジェクトと概要の行から編集するので、 機密情報はここに書かないでください。 .LP 詳しくは、GNU .B Info ファイルの .B cvsbug.info か、RP について詳しく書かれている \fIReporting Problems With cvsbug\fR\ のドキュメントなどを参照してください。 .SH テストケース、コード、その他の記入方法 小さなサンプルコードを送りましょう。 -大きなテストケースや問題となっているソースコードを送りたい場合にには、 +大きなテストケースや問題となっているソースコードを送りたい場合には、 サポートサイトに連絡を取り、指示を受けて下さい。 .SH 関連ファイル .ta \w'/tmp/pbad$$ 'u /tmp/p$$ 編集しているときに使う PR のコピー .br /tmp/pf$$ テスト目的で使う、空の PR テンプレートコピー .br /tmp/pbad$$ 捨てられた PR のファイル .SH インストールとコンフィギュレーション .B INSTALL インストールガイドを参照してください。 .SH 関連項目 .BR gnats (l), .BR query-pr (1), .BR edit-pr (1), .BR gnats (8), .BR queue-pr (8), .BR at-pr (8), .BR mkcat (8), .BR mkdist (8). .SH 作者 Jeffrey Osier, Brendan Kehoe, Jason Merrill, Heinz G. Seidl (Cygnus Support) .SH COPYING Copyright (c) 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. diff --git a/ja_JP.eucJP/man/man8/disklabel.8 b/ja_JP.eucJP/man/man8/disklabel.8 index 420ecf1d8f..fb9ffa6028 100644 --- a/ja_JP.eucJP/man/man8/disklabel.8 +++ b/ja_JP.eucJP/man/man8/disklabel.8 @@ -1,955 +1,955 @@ .\" Copyright (c) 1987, 1988, 1991, 1993 .\" The Regents of the University of California. All rights reserved. .\" .\" This code is derived from software contributed to Berkeley by .\" Symmetric Computer Systems. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" 3. All advertising materials mentioning features or use of this software .\" must display the following acknowledgment: .\" This product includes software developed by the University of .\" California, Berkeley and its contributors. .\" 4. Neither the name of the University nor the names of its contributors .\" may be used to endorse or promote products derived from this software .\" without specific prior written permission. .\" .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" .\" @(#)disklabel.8 8.2 (Berkeley) 4/19/94 .\" %FreeBSD: src/sbin/disklabel/disklabel.8,v 1.15.2.16 2002/01/09 14:39:06 ru Exp % .\" .\" $FreeBSD$ .\" .Dd July 30, 1999 .Dt DISKLABEL 8 .Os .Sh 名称 .Nm disklabel .Nd ディスクラベルの読み書きを行う .Sh 書式 .Nm .Op Fl r .Ar disk .Nm .Fl w .Op Fl r .Op Fl n .Ar disk Ar disktype .Oo Ar packid Oc .Nm .Fl e .Op Fl r .Op Fl n .Ar disk .Nm .Fl R .Op Fl r .Op Fl n .Ar disk Ar protofile .Nm .Op Fl NW .Ar disk .Pp .Nm .Fl B .Oo .Fl b Ar boot1 .Fl s Ar boot2 .Oc .Ar disk .Oo Ar disktype/auto Oc .Nm .Fl w .Fl B .Op Fl n .Oo .Fl b Ar boot1 .Fl s Ar boot2 .Oc .Ar disk Ar disktype/auto .Oo Ar packid Oc .Nm .Fl R .Fl B .Op Fl n .Oo .Fl b Ar boot1 .Fl s Ar boot2 .Oc .Ar disk Ar protofile .Oo Ar disktype/auto Oc .Sh 解説 .Nm はディスクドライブやディスクパックにラベルを書き込んだり、 確認したり、修正したりするために使われます。 ラベルを書き込む際には、ドライブの識別子を変更したり、 ディスクのパーティションを変更したり、 異常のあるラベルを置き換えたりすることができます。 コマンドには、ディスク上のラベルを読んだり (表示したり)、書き込んだり、 編集したりするいくつかの書式があります。 また .Nm は同時にブートストラップコードを インストールすることもできます。 .Ss メモリ内のラベルとディスク上のラベル .Pp ディスクラベルは各ディスクパーティションの先頭、 もしくは先頭付近に存在します。 より速くアクセスするために、カーネルは 常にメモリ内にコピーを保持します。 デフォルトでは、 .Nm による操作のほとんどは メモリ内にあるラベルのコピーに対してアクセスします。 (ディスク上に存在する) ラベルにアクセスするためには .Fl r オプションを使用します。 このオプションにより、 カーネルのサポート無しでラベルをディスクにインストール することが可能になります。 例えばラベルがはじめてシステムにインストールされる時など、 ディスクにはじめてラベルを書き込む際に指定されなければなりません。 .Fl r オプションによる固有の効果は以下の 各コマンドの説明で示します。 .Pp .Ss ディスクデバイス名 .Pp 全ての .Nm の書式で、ディスクのデバイス名が必要です。 ディスクのデバイス名は、 ディスクまたはスライスを示すローデバイス名でなければなりません。 例えば .Pa da0 は DOS パーティションに無関係でディスク全体を表し、 .Pa da0s1 はスライスを表します。 デバイスによっては、特に .Ar ccd では、 .Dq ディスク全体を示す (または .Dq c ) パーティションを必要とします。 例えば .Pa ccd0c です。 デバイス指定時には、 .Pa /dev/ のパスプレフィックスを付ける必要はありません。 .Nm は自動的にこれを前に付けます。 .Ss ディスクラベルの読み込み .Pp ディスクドライブ上のラベルを確認するためには オプションを指定せずに .Nm を使用します。 .Pp .Nm .Op Fl r .Ar disk .Pp .Ar disk は対象とするローディスクを示します。 また .Pa da0 や .Pa /dev/da0c のような書式でも指定することができます。 これによってドライブに関するすべてのパラメータとパーティションのレイアウトを 表示します。 .Fl r フラグを指定しない場合には、カーネルのメモリ内にあるラベルのコピーが 表示されます。 もしディスクにラベルが書き込まれていなかったり、ディスクのパーティション形式が 正しくない場合には、カーネルが作り直したり、修正するかもしれません。 .Fl r フラグが与えられると、 ディスク上の実際のラベルが表示されます。 通常は、どちらでも同じ結果となりますが、 ラベルが未初期化の場合とまたは壊れている場合には、違う結果となります。 .Ss 標準的なラベルの書き込み .Pp 標準的なラベルを書き込むには、 以下の書式を使います。 .Pp .Nm .Fl w .Op Fl r .Op Fl n .Ar disk Ar disktype/auto .Oo Ar packid Oc .Pp .Nm .Fl w .Op Fl r .Op Fl n .Ar disk auto .Pp コマンドには引数として、ラベルを書き込むドライブ名および .Xr disktab 5 に書かれているドライブタイプが必要です。 ドライブのパラメータとパーティション情報は、このファイルから得られたもの が使われます。 もし、同じ型のディスクに異なるパーティション情報を持たせたい場合には、 disktab にそれぞれ別々のエントリを書いておくか、ラベルを書き込んだあとで 後述する方法でそれを編集する必要があります。 オプションの引数として、16 文字までのパック識別用文字列を指定します。 パック名に空白を含める場合にはそれをクォートする必要があります。 .Pp .Fl n フラグが与えられると、データはデバイスに書き込まれません。 代りに、書き込まれるはずだったディスクラベルが、標準出力に表示されます。 .Pp .Fl r フラグが与えられると、ディスクのラベルとブートストラップが 直接書き換えられます。 この副作用として、すでにあるブートストラップ用コードが上書きされてしまうため、 ディスクがブート不能にされてしまいます。 ラベルとブートストラップを同時に書き込む方法は 後述のブートオプションを参照してください。 .Fl r が指定されない場合には、ラベルはメモリ内のコピーを通して書き換えられる ため、ブートストラップコードは影響されません。 もしまだディスクがラベル付けされていなければ、 .Fl r フラグをつけなければなりません。 どちらの方法でも、カーネルのメモリ内コピーは変更されます。 .Pp .Xr disktab 5 に記載されていない未使用のディスクに対しては、 .Ar disktype として .Dq auto を指定できます。 この場合、ディスクの最初のラベルを生成するようにドライバに要求します。 これは成功するかも知れないし成功しないかも知れません。 これはディスクドライバがディスクを全く読む事無く 必要なデータを取得できるか否かに依存します。 全ての SCSI ディスクとほとんどの IDE ディスクと vnode デバイスにおいて 成功するでしょう。 ディスクに対するラベルの書き込みは唯一サポートされた操作であり、 .Ar disk 自身は標準の名前 (フルパス名であってはなりません) で提供される必要があります。 .Pp ほとんどのハードディスクでは、パーセントベースのラベル (および大きさに .Ql * を指定する単一のパーティション) で、もっともな設定を出力するでしょう。 .Pp PC ベースのシステムでは、 BIOS に正しく .Fx ディスクラベルを認識させるために、特別な要件があります。 古いシステムでは、 .Dq 危険な方法で専用化された ディスクラベルが必要かもしれません。 これは、偽の DOS パーティションを作成することにより、 最近のディスクのジオメトリに対して古い BIOS が引き起す問題を 回避するというものです。 新しいシステムでは、通常の DOS スライスを .Ar fdisk で作成して、このスライス中に .Fx ディスクラベルを作成すれば良いでしょう。 本件についてはこのマニュアルで後述します。 .Pp 新規ディスクラベルをインストールするだけでは、 このラベルでシステムをブートさせることは出来ません。 ブートブロックもまたインストールする必要があります。 本件についてはこのマニュアルで後述します。 .Ss 既存のディスクラベルの編集 .Pp 既存のディスクラベルを編集するには、 以下の書式を使います。 .Pp .Nm .Fl e .Op Fl r .Op Fl n .Ar disk .Pp このコマンドはラベルを カーネルのメモリ内コピーから、または .Fl r フラグが与えられた場合には直接ディスクから 読み込まれます。 ラベルは ASCII でファイルにかかれ、 編集するためのエディタへ渡されます。 .Ev EDITOR 環境変数によるエディタの指定がない場合には、このエディタには .Xr vi 1 が使用されます。 エディタを終了すると、ラベルファイルはディスクラベルを 再書き込みするために使われます。 .Fl r フラグの指定の有無にかかわらず、 すでにあるブートストラップコードは変更されません。 .Fl n フラグが与えられると、データはデバイスに書き込まれません。 代りに、書き込まれるはずだったディスクラベルが、標準出力に表示されます。 特定のディスクに対して、 パーティション方式がどのように動作するかを見るのに有用です。 .Ss ファイルからのディスクラベルの復元 .Pp ファイルからディスクラベルを復元するには、 以下の書式を使います。 .Pp .Nm .Fl R .Op Fl r .Op Fl n .Ar disk Ar protofile .Pp .Nm は以前の操作により ASCII ファイルとして保存されているディスクラベル をディスクへ書き戻します。 ラベルを作成するときに使われるプロトタイプファイルは、ラベルを読み込んだり 編集したりするときのものと同じフォーマットである必要があります。 コメントは .Ar \&# と改行で区切られます。 新しいラベルを書き込む際に .Fl r が指定されているとブートストラップコードは使えなくなってしまいますが、 指定されていない場合には影響ありません。 ラベルの復元とブートストラップの書き込みを同時に行う方法は 後述のブートオプションを参照してください。 .Fl n フラグが与えられると、データはデバイスに書き込まれません。 代りに、書き込まれるはずだったディスクラベルが、標準出力に表示されます。 特定のディスクに対して、 パーティション方式がどのように動作するかを見るのに有用です。 .Ss ディスクラベル領域への書き込みの有効化および無効化 .Pp デフォルトでは、 ディスクの先頭領域にあるディスクラベル領域への書き込みは不可能です。 ディスクドライバはいかなる操作も無視します。 もし (例えばラベルを消去するなど) この領域への書き込みを行う必要があるならば、 以下の書式を使います。 .Pp .Nm .Op Fl W .Ar disk .Pp ラベルの書き込みを可能にした後に不可能にするには 以下のコマンドを使います。 .Pp .Nm .Op Fl N .Ar disk .Ss ブートストラップのインストール .Pp .Nm の最後の 3 つの書式は、ブートストラップコードを インストールするために使われます: .Pp .Nm .Fl B .Oo .Fl b Ar boot1 .Fl s Ar boot2 .Oc .Ar disk .Oo Ar disktype Oc .Pp この書式ではブートストラップのみインストールします。 ディスクラベルは変更しません。 .Pp .Nm .Fl w .Fl B .Op Fl n .Oo .Fl b Ar boot1 .Fl s Ar boot2 .Oc .Ar disk Ar disktype .Oo Ar packid Oc .Pp この書式は前述の .Dq ラベルの書き込み コマンドと一致します。 新しいボリュームラベルを書き込むとともに ブートストラップのインストールもおこないます。 ベースディスクに対して本コマンドを実行すると、 .Dq 危険な方法で専用化された ラベルを作成します。 本コマンドは、通常、ベースディスクではなくスライスに対して実行します。 .Fl n フラグが与えられると、データはデバイスに書き込まれません。 代りに、書き込まれるはずだったディスクラベルが、標準出力に表示されます。 .Pp .Nm .Fl R .Fl B .Op Fl n .Oo .Fl b Ar boot1 .Fl s Ar boot2 .Oc .Ar disk Ar protofile .Oo Ar disktype Oc .Pp この書式は前述の .Dq ラベルの復元 コマンドと一致します. ボリュームラベルを復元するとともに ブートストラップのインストールもおこないます。 .Pp ブートストラップコマンドは常にディスクに直接アクセスするため、 .Fl r フラグを指定する必要はありません。 .Fl n フラグが与えられると、データはデバイスに書き込まれません。 代りに、書き込まれるはずだったディスクラベルが、標準出力に表示されます。 .Pp ブートストラップコードは 2 つのブートプログラムより構成されます。 インストールされるブートプログラムの名前は 以下の 3 つの方法の中の 1 つより指定します。 .Bl -enum .It .Fl b フラグと .Fl s フラグを用いて明示的に名前を指定します。 .Fl b フラグで指定するのが最初のブートプログラムで、 .Fl s フラグで指定するのが 2 段階目のブートプログラムになります。 ブートプログラムは、 .Pa /boot に置かれます。 .It .Fl b フラグと .Fl s フラグが指定されておらず .Ar disktype が指定された場合、 disktab のエントリが存在しこれらのパラメータが含まれるならば プログラムの名前は このディスクに対する .Xr disktab 5 エントリの .Dq b0 および .Dq b1 パラメータより得られます。 .It そうでない場合、デフォルトのブートイメージ名は 標準のステージ 1 およびステージ 2 のブートイメージとして .Pa /boot/boot1 と .Pa /boot/boot2 になります (詳細はアーキテクチャによって異なり、 Alpha においては単一ステージのブートが使用されます)。 .El .Ss スクラッチからの、ブート可能ディスクの初期化/フォーマット .Pp ディスクをスクラッチから初期化するには、次の手順をお勧めします。 この手順は、FreeBSD 以外のスライスを含む、 ディスク上のすべてを削除してしまうことに注意してください。 .Bl -enum .It .Ar fdisk を使用して、DOS パーティションテーブルを作成します。 これにより、 .Fx ディスクラベルを保持するディスク全体のスライスを作成し、 マスタブートレコードをインストールします。 .It .Ar disklabel を使用して、最初の .Fx ディスクラベルを初期化し、 .Fx ブートブロックをインストールします。 .It .Ar disklabel を使用して、新規に作成したラベルを編集し、適切なパーティションを追加します。 .It 最後に、ラベル中に作成したファイルシステムパーティションを newfs します。 典型的なディスクラベルのパーティショニング方式では、 .Dq a パーティションは約 128MB でルートファイルシステムを、 .Dq b パーティションはスワップを、 .Dq d パーティションは /var を (通常 128MB)、 .Dq e パーティションは /var/tmp を (通常 128MB)、 .Dq f パーティションは /usr を (通常 2G くらい)、 .Dq g パーティションは /home を (通常、残り)、 それぞれ割り当てます。 これは、システムによって異なります。 .El .Pp .Nm fdisk Fl BI Ar da0 .Pp .Nm .Fl w .Fl B .Ar da0s1 auto .Pp .Pp .Nm .Fl e .Ar da0s1 .Sh 関連ファイル .Bl -tag -width Pa -compact .It Pa /etc/disktab .It Pa /boot/ .It Pa /boot/boot .El .Sh 保存されたファイルの書式 .Nm は ディスクラベルを確認、編集、または復元する際に ASCII 形式のラベルを使用します。 フォーマットは以下のとおりです。 .Bd -literal -offset 4n # /dev/da1c: type: SCSI disk: da0s1 label: flags: bytes/sector: 512 sectors/track: 51 tracks/cylinder: 19 sectors/cylinder: 969 cylinders: 1211 sectors/unit: 1173930 rpm: 3600 interleave: 1 trackskew: 0 cylinderskew: 0 headswitch: 0 # milliseconds track-to-track seek: 0 # milliseconds drivedata: 0 8 partitions: # size offset fstype [fsize bsize bps/cpg] a: 81920 0 4.2BSD 1024 8192 16 # (Cyl. 0 - 84*) b: 160000 81920 swap # (Cyl. 84* - 218*) c: 1173930 0 unused 0 0 # (Cyl. 0 - 1211*) h: 962010 211920 vinum # (Cyl. 218*- 1211*) .Ed .Pp # で始まる行はコメントです。 他の項目のほとんども既に使われていません。 正しく設定されてなければならない項目は以下のとおりです: .Pp .Bl -hang -width 20n .It Nm label オプションのラベルです。 ラベルを書き込む際に .Ar packid オプションにより設定されます。 .It Nm flags flags は .Ar removable 、 .Ar ecc もしくは .Ar badsect が指定可能です。 .Ar removable はリムーバブルメディアドライブに対して設定されますが、 現在の .Fx のドライバはこのフラグを 評価しません。 .Ar ecc はサポートされていません。 .Ar badsect はドライブが不良セクタの代替を行える場合に 指定します。 .It Nm sectors/unit ディスクの全体の大きさを示します。 この値は正しくなければなりません。 .It Nm パーティションテーブル これは .Ux のパーティションテーブルであり、 .Xr fdisk 8 で述べられている Microsoft のパーティションテーブルではありません。 .El .Pp パーティションテーブルは 8 つまでエントリを持つことができ、 以下の情報を含みます: .Bl -hang -width 10n .It identifier パーティションの識別子は .Dq a から .Dq h の 1 文字です。 慣例的な理由により、 .Dq c パーティションは ディスク全体を表すために予約されています。 .It size セクタ単位でのパーティションの大きさです。 .Cm K (キロバイト - 1024), .Cm M (メガバイト - 1024*1024), .Cm G (ギガバイト - 1024*1024*1024), .Cm % ( .Dq c 以外の固定長のパーティションを取り除いた後の空間に対するパーセントか、 .Cm * (固定長のパーティションとパーセント指定のパーティションを取り除いた後 の空間すべて)。 .Dq c に対して .Cm * を指定すると、ディスク全体を意味します 小文字の .Cm K , M , .Cm G も許されます。 大きさと型の間には空白を入れてはなりません。 .Pp 例: 2097152, 1g, 1024m, 1048576k はすべて同じ大きさです (512 バイトセクタを仮定)。 .It offset ドライブの先頭からのオフセットによるパーティションの開始位置を、 セクタ単位で指定します。 .Cm * は、使用すべき正しいオフセット -(直前のパーティションの終端にに 1 を加えたもの) を、 +(直前のパーティションの終端に 1 を加えたもの) を、 .Nm に計算させます。ただしパーティション .Dq c は無視します。 パーティション .Dq c に対しては、 .Cm * はオフセット 0 と解釈されます。 .It fstype パーティションの使用目的を表します。 例では現在使用されているパーティション型を示します。 UFS ファイルシステムおよび ccd では .Cm 4.2BSD が使われます。 Vinum ドライブでは .Cm vinum が使われます。 他の一般的な型は .Cm unused と .Cm swap です。 取り決めでは、パーティション .Dq c はスライス全体を表し、型 .Cm unused であるべきですが、 .Nm はこの取り決めを強制しません。 .Nm は多くの他のパーティション型を知っていますが、 それらは現在使用されていません。 詳細は、 .Pa /usr/include/sys/disklabel.h で .Dv FS_UNUSED で開始する定義を参照してください。 .It fsize .Cm 4.2BSD と LFS のファイルシステムに対してのみ有効です。 フラグメントの大きさを意味します。 1 GB 未満のパーティションに対するデフォルトは 1024 で、 1 GB 以上に対するデフォルトは 4096 です。 .It bsize .Cm 4.2BSD と LFS のファイルシステムに対してのみ有効です。 ブロックの大きさを意味します。 1 GB 未満のパーティションに対するデフォルトは 8192 で、 1 GB 以上に対するデフォルトは 16384 です。 .It bps/cpg .Cm 4.2BSD ファイルシステムに対しては、 シリンダグループ中のリシンダ数を意味します。 LFS ファイルシステムに対しては、 セグメントシフト値を意味します。 1 GB 未満のパーティションに対するデフォルトは 16 で、 1 GB 以上に対するデフォルトは 64 です。 .El .Pp 行の残りの部分はコメントで、 ドライブの 一般的には使われていない (しかし多分正確な) ジオメトリ情報に 基づいたシリンダの割り当て情報を示しています。 アスタリスク (*) はパーティションがシリンダ境界で 厳密にはじまっていない、もしくは終っていないことを意味します。 .Sh 使用例 .Dl disklabel da0s1 .Pp .Pa da0s1 のラベルとしてカーネル内のコピーを .Pa /dev/da0s1 から得られたものとして表示します。 ラベルを読み込み時には、ラベルがスライス上に存在する場合でも、 FreeBSD はベースディスク名を指定することを許しています。 しかしながら、厳密には、 ベースディスク名を指定するのは .Dq 危険な方法で専用化された ラベルを使用する場合に限定してください。 通常は、スライスを指定してください。 .Pp .Dl disklabel da0s1 > savedlabel .Pp .Pa da0s1 に対する カーネル内のコピーをファイルに .Pa savedlabel に保存します。 このファイルは後で .Fl R フラグを用いてラベルを復元する際に使用できます。 .Pp .Dl disklabel -w -r /dev/da0s1 da2212 foo .Pp .Pa /etc/disktab に書かれている .Dq da2212 の情報を .Pa da0s1 のラベルとして書き込みます。 存在したブートストラップコードは使えなくなります。 .Pp .Dl disklabel -e -r da0s1 .Pp .Pa da0s1 のディスク上のラベルを読み込み、編集し、再び書き込みます。 ディスク上のラベルとともにカーネル内コピーも書き換えられます。 存在したブートストラップコードは影響を受けません。 .Pp .Dl disklabel -e -r -n da0s1 .Pp .Pa da0s1 のディスク上のラベルを読み、編集し、新規ラベルがどのようになるかを (セクタ単位で) 表示します。 新規ラベルは、メモリにもディスクにもインストールしません。 .Pp .Dl disklabel -r -w da0s1 auto .Pp .Pa da0s1 から必要な情報を自動検出し、新しいラベルをディスクに書こうとします。 パーティションおよびファイルシステム情報を編集するために、 この後で disklabel -e コマンドを使って下さい。 .Pp .Dl disklabel -R da0s1 savedlabel .Pp .Pa savedlabel に書かれている情報を .Pa da0s1 のラベルとして書き込みます。 ディスク上のラベルとともにカーネル内コピーも書き換えられます。 存在したブートストラップコードは影響を受けません。 .Pp .Dl disklabel -R -n da0s1 label_layout .Pp パーティションレイアウト .Pa label_layout を使用すると、 .Pa da0s1 のラベルがどのようになるかを表示します。 .Cm % と .Cm * に基くパーティションの大きさ指定を使用するラベル方式を使用した場合に、 各パーティションにどれだけ割り当てられるかを判定するのに有用です。 .Pp .Dl disklabel -B da0s1 .Pp .Pa da0s1 に新たにブートストラップコードを書き込みます. ブートストラップコードは .Pa /boot/boot1 、およびもし必要ならば .Pa /boot/boot2 です。 ディスク上のラベルおよびカーネル内コピーは影響を受けません。 .Pp .Dl disklabel -w -B /dev/da0s1 -b newboot1 -s newboot da2212 .Pp 新たなラベルとブートストラップコードを書き込みます。 ラベルは disktab の .Dq da2212 の情報を使用し、 ディスク上のラベルとともにカーネル内コピーも書き換えられます。 ブートストラップコードは .Pa /boot/newboot1 と .Pa /boot/newboot2 です。 .Pp .Dl dd if=/dev/zero of=/dev/da0 bs=512 count=32 .Dl fdisk -BI da0 .Dl dd if=/dev/zero of=/dev/da0s1 bs=512 count=32 .Dl disklabel -w -B da0s1 auto .Dl disklabel -e da0s1 .Pp ディスク上の既存の情報を完全に削除し、 単一の .Dq ディスク全体 スライスを含む DOS パーティションテーブル付きの、 ブート可能ディスクを新規に作成します。 次にスライスを初期化し、編集します。 .Pa dd はオプションですが、 BIOS によっては正しくディスクを認識するために必要です。 .Pp これは、 .Cm % , M , G , .Cm * といった新規パーティションサイズ型を使用する、ディスクラベルの例です。 次のコマンドラインのソースファイルとして使用可能です: .Pp .Dl disklabel -R ad0s1c new_label_file .Bd -literal -offset 4n # /dev/ad0s1c: type: ESDI disk: ad0s1 label: flags: bytes/sector: 512 sectors/track: 63 tracks/cylinder: 16 sectors/cylinder: 1008 cylinders: 40633 sectors/unit: 40959009 rpm: 3600 interleave: 1 trackskew: 0 cylinderskew: 0 headswitch: 0 # milliseconds track-to-track seek: 0 # milliseconds drivedata: 0 8 partitions: # size offset fstype [fsize bsize bps/cpg] a: 400M 0 4.2BSD 4096 16384 75 # (Cyl. 0 - 812*) b: 1G * swap c: * * unused e: 204800 * 4.2BSD f: 5g * 4.2BSD g: * * 4.2BSD .Ed .Sh 関連項目 .Xr ccd 4 , .Xr disklabel 5 , .Xr disktab 5 , .Xr boot0cfg 8 , .Xr fdisk 8 , .Xr vinum 8 .Sh 診断 デバイスドライバは、 オープンされているパーティションに関して、 サイズが小さくなることおよびオフセットが変化することを許しません。 デバイスドライバの中には、 ラベルを持たないディスクに対して 1 パーティションのみからなる ラベルを作成するものがあります。 そのため、 オープンされているディスクのラベルは .Dq a パーティションに書く必要があります。 このような理由で、 次の 2 ステップにより、 所望のラベルを作成する必要がある場合があります。 第 1 ステップは少なくとももう 1 つのパーティションを作成することであり、 第 2 ステップは .Dq a パーティションを小さくしながら 新たなパーティションのラベルを設定することです。 .Pp ファイルシステムによっては、 用意された領域にブートストラップコードが収まり切らないような マシンがあるかも知れません その結果として、 .Dq ブート可能な ディスクのパーティションに ファイルシステムを作成できない場合があります。 ブートストラップコードを書き込む時に、 .Nm はこのようなケースをチェックします。 FS_UNUSED タイプのパーティションに重なるように ブートストラップコードが書き込まれる場合には、 そのパーティションは FS_BOOT とマークされます。 .Xr newfs 8 ユーティリティは、 FS_BOOT パーティションにファイルシステムを作成することを禁止します。 また逆に、 パーティションのタイプが FS_UNUSED もしくは FS_BOOT では無い場合、 .Nm はそのパーティションに重なるようなブートストラップコードを書き込みません。 .Sh バグ ディスク名がフルパスで指定されない場合には、 デバイス名は .Dq c パーティションになります。 .Pp i386 アーキテクチャでは、プライマリブートストラップセクタに、 組み込みの .Em fdisk テーブルを持ちます。 .Nm は、 ブートストラップのみをインストールする時 .Pq Fl B もしくはラベルを編集する時 .Pq Fl e にこれを壊さないように気を付けます。 しかし、 .Fl w や .Fl R を指定した時には、 無条件でプライマリブートストラッププログラムをディスクに書き込みますので、 .Em fdisk テーブルをブートストラッププログラム内のダミーに置き換えます。 これはディスク全体を専用に使う場合、 すなわち .Bx ディスクラベルがディスクの絶対ブロック 0 から始まる場合 のみ関係あります。 .Pp .Nm はすべての実施可能なエラーチェックは行いません。 次の場合、警告が表示されます: パーティションが重なる場合、 絶対的なオフセットが期待したオフセットと異る場合、 .Dq c パーティションが 0 から開始しないかディスク全体を覆わない場合、 パーティションがデバイスの終端を越える場合、 その他のエラー。 ただし、未使用空間があっても警告は表示されません。 diff --git a/ja_JP.eucJP/man/man8/fdisk.8 b/ja_JP.eucJP/man/man8/fdisk.8 index 7b97afa21c..bb0049bd43 100644 --- a/ja_JP.eucJP/man/man8/fdisk.8 +++ b/ja_JP.eucJP/man/man8/fdisk.8 @@ -1,464 +1,464 @@ .\" %FreeBSD: src/sbin/i386/fdisk/fdisk.8,v 1.17.2.10 2001/08/16 11:35:43 ru Exp % .\" -.\" $FreeBSD: doc/ja_JP.eucJP/man/man8/fdisk.8,v 1.20 2001/08/05 02:45:49 horikawa Exp $ +.\" $FreeBSD$ .Dd October 4, 1996 .Dt FDISK 8 .Os .Sh 名称 .Nm fdisk .Nd PC パーティションのメンテナンスプログラム .Sh 書式 .Nm .Op Fl BIaistu .Op Fl b Ar bootcode .Op Fl 1234 .Op Ar disk .Bl -tag -width time .Nm .Fl f Ar configfile .Op Fl itv .Op Ar disk .Sh 前置き BIOS がカーネルをブートするために、 一定の約束をちゃんと守らねばなりません。 ディスクのセクタ 0 はブートコード、パーティションテーブル、 マジックナンバを含んでいなければならないのです。 BIOS パーティションはディスクをいくつかの部分に分けるのにも使われます。 BIOS はセクタ 0 を読み込み、マジックナンバを確認します そして、セクタ 0 のブートコードはパーティションテーブルを探し、 どのパーティションが .Em アクティブ と印されているか判定します。 そして、このブートコードはブートストラップを .Em アクティブ パーティションから読み込み、ブート可能の印が付いていればこれを実行します。 DOS では、1 個以上のパーティションと 1 個の .Em アクティブ を持てます。 DOS の .Nm プログラムは、 ディスク空間を 1 個以上のパーティションに分割して、1 個の .Em アクティブ を設定することができます。 .Sh 解説 .Fx のプログラム .Nm は、DOS のそれと似た目的に役立ちます。 第 1 の形は、パーティション情報の表示や、 パーティションテーブルの対話的な編集に使われます。 第 2 の形は、 .Ar configfile を使ってパーティションテーブルを書き込むという使い方であり、 他のスクリプト/プログラムから利用するよう設計されています。 .Pp オプション: .It Fl a アクティブパーティションの変更のみを行ないます。 .Fl f があるときには無視されます。 .It Fl b Ar bootcode ブートコードをファイル .Ar bootcode から取得します。 デフォルトは .Pa /boot/mbr です。 .It Fl B ディスクのセクタ 0 に含まれるブートコードを再初期化します。 もし .Fl f があると、無視されます。 .It Fl f Ar configfile パーティションの値をファイル .Ar configfile を使って設定します。 .Fl i もあるときには、 .Ar configfile が読み込まれるに先立って、 存在するパーティションは全部消され(つまり「未使用」の印をつけられる) ますが、この場合を除いて、 .Ar configfile はいつも存在するパーティションの変更を行ないます。 .Ar configfile は "-" であってもよく、この場合 .Ar 標準入力 が読まれます。 ファイルの構文は、以降の .Sx 設定ファイル の節をご覧下さい。 .Pp .Em 警告 : .Fl f が使われたときには、 (対話モードで尋ねられるように) 本当にパーティションテーブルを書き込むのかどうかを尋ねられません。 用心して使うこと! .It Fl i ディスクのセクタ 0 を初期化します。 もし .Fl f がなければ、 .Fl u の意味も含みます。 .It Fl I 単一の FreeBSD スライスがディスク全体となるように、 セクタ 0 の内容を初期化します。 .It Fl s サマリ情報を表示し、終了します。 .It Fl t テストモード; パーティションテーブル値を書き込みません。一般に .Fl f オプションを付けて、パーティションテーブルに書き込まれるはずのものを 見るのに使われます。 .Fl v の意味を含みます。 .It Fl u ディスクのセクタ 0 を更新 (編集) するのに使われます。 .Fl f があるときには無視されます。 .It Fl v 冗長になります。 .Fl f が使われたときには、 .Nm はディスクに書き込まれるパーティションテーブルを表示します。 .It Fl 1234 1 個の fdisk エントリの操作だけを行ないます。 .Fl f があるときには無視されます。 .El .Pp 最後のディスク名 .Ar disk は、 .Sq 裸の ディスク名だけ、 つまり .Ql da0 か、あるいは .Pa /dev の下に完全に限定されたデバイスノードで与えることができます。 もし省略された場合、ディスク .Ql ad0 , .Ql da0 が、どれか 1 個が応答して見付かるまで この順序で検索されます。 .Pp 引数なしで呼び出されたときには、 セクタ 0 パーティションテーブルを表示します。 例えば: .Bd -literal ******* Working on device /dev/ad0 ******* 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 つのパーティションに分割されています。 2 つ目のパーティションは最初のパーティションの最後に重なっています。 (デバッグ目的に使われます) .Bl -tag -width "cyl, sector と head" .It Em "sysid" パーティションのラベル付に使われます。 .Fx ではマジックナンバ 165 (10進) A5 (16進)を予約しています。 .It Em start No と Em size パーティションのセクタ単位での 開始アドレスとサイズです。 .It Em "flag 80" これがアクティブパーティションであることを指定します。 .It Em cyl , sector No と Em head パーティションの 開始アドレスと終了アドレスを指定するのに使われます。 .It Em 注 : これらの数字は、 BIOS の理解するディスクジオメトリを使って計算され、 ブートブロックに保存されます。 .El .Pp フラグ .Fl i または .Fl u は、 もし .Fl f オプションが使われていない限り、 パーティションデータを更新すべきであることを指示します。 もし .Fl f がなければ、 .Nm プログラムは対話モードに入ります。 このモードでは明示的に指示しない限り、どんなデータも変更しないように 設計されています。 .Nm はこのような振舞いを保証するよう、質問のデフォルトを選択しています。 .Pp .Nm は各々のパーティションを表示し、 それを編集したいかどうかを尋ねます。 yes と答えたら、 古い値を表示し、新しい値を尋ねて 各々のフィールドを進みます。 1 個のパーティションが終了したら、 .Nm はそれを表示して、それで正しいかどうかを尋ねます。 そして .Nm は次のエントリに進みます。 .Pp .Em cyl , sector , .Em head のフィールドを正しく得るにはちょっとした芸当が要ります。 そのためデフォルトでは、 .Nm が代わって計算しますが、選択してそれらの値を指定することもできます。 .Pp 全てのパーティションが進行した後、 .Em アクティブ パーティション変更をすることができます。 最後に、 -最初のセクタのデータが全部集めれらたときに、 +最初のセクタのデータが全部集められたときに、 本当にセクタ 0 を書換えても良いか尋ねられます。 yes と答えた場合だけ、データはディスクに書き込まれます。 .Pp .Fl u フラグと .Fl i の間の違いは、 .Fl u フラグはディスク上にあるフィールドの値を編集するだけですが、 一方 .Fl i フラグはセクタ 0 を "初期化" するのに使われます; ディスク全体を .Fx 用に使えるように、 最後の BIOS パーティションをセットアップして、それをアクティブにします。 .Sh 注 開始シリンダ等の自動計算は、 BIOS がそのドライブのジオメトリであると思っている数字をもとに行なわれます。 これらの数字はデフォルトでは、メモリ上のディスクラベルから取りますが、 プログラムの起動時にそれらを変更する機会が与えられます。 このおかげでユーザは、 BIOS がジオメトリ変換を行なうドライブでも動作できるブートブロックを 作ることができます。 .Pp もしディスクのレイアウトを手作業で変更するのなら、 どうか .Fx パーティションがシリンダ境界から開始することを確認してください。 その後のたくさんの決定がこのことを仮定しています。 (これは必要ではなかったのかもしれませんが) .Pp すでにあるパーティションを編集すると、 たぶんそのパーティションのデータを失うことになるでしょう。 .Pp このプログラムがどう働くかを調べるために、 1 度か 2 度は対話的に実行するべきです。 これは、最後の質問に否定で答える限り完全に安全です。 このマニュアルでは完全に説明されていませんが、 プログラムが検出する微妙な点があります。 .Sh 設定ファイル .Fl f オプションが与えられたとき、 .Ar configfile の値を使ってディスクのパーティションテーブルを書換えることができます。 このファイルの構文はたいへん単純です。 各行はコメントか仕様のどちらかで、空白 (改行を除く) は無視されます。 .Bl -tag -width Ds .It Xo .Ic # .Ar comment ... .Xc \&"#" で開始している行はコメントで無視されます。 .It Xo .Ic g .Ar spec1 .Ar spec2 .Ar spec3 .Xc パーティション計算で使う BIOS ジオメトリを設定します。 前に文字を伴った数字で、3 つの値を指定することが必要です。 .Bl -tag -width Ds .Sm off .It Cm c Ar num .Sm on シリンダの数を .Ar num に設定します。 .Sm off .It Cm h Ar num .Sm on ヘッドの数を .Ar num に指定します。 .Sm off .It Cm s Ar num .Sm on トラックあたりのセクタの数を .Ar num に設定します。 .El .Pp これらの指定はどんな順序でもよく、先頭の文字がどの値かを決定します; しかし、3 つ全てを指定することが必要です。 .Pp この行はパーティション情報を指定するどんな行よりも前に現れなくてはなりません。 .Pp 次の条件が真でなければ、エラーです: .Pp .Bd -literal -offset indent 1 <= シリンダの数 1 <= ヘッドの数 <= 256 1 <= トラックあたりのセクタの数 < 64 .Ed .Pp シリンダの数は 1024 以下でなければなりませんが、 しかしこれは強制されるものではなく、警告が出力されるでしょう。 ブート可能な .Fx パーティション ("/" ファイルシステム) は 最初の 1024 シリンダ以内に収まっていなといけません; もしそうでなければ、ブートに失敗するかもしれません。 ブートしないパーティションには、この制限はありません。 .Pp 1019 シリンダ、39 ヘッド、63 セクタのディスクの例 (これらの全てはみな等価): .Pp .Bd -literal -offset indent g c1019 h39 s63 g h39 c1019 s63 g s63 h39 c1019 .Ed .It Xo .Ic p .Ar partition .Ar type .Ar start .Ar length .Xc .Ar partition (1-4) で与えられたパーティションに、タイプ .Ar type 、開始セクタ .Ar start 、長さ (セクタ数) .Ar length を設定します。 .Pp これらの行で明示的に言及されたパーティションだけが変更されます; \&"p" 行で参照されていないパーティションは変更されません。 しかし、無効なパーティションテーブルがあるか、 .Fl i オプションが指定されているなら、 存在するパーティションエントリは全て取り除かれ (未使用の印がつけられ)、 パーティション情報を明示的に設定するのに、 \&"p" 行が使われなければなりません。 もし複数のパーティションを設定する必要があるなら、 複数の "p" 行が指定されなければなりません; 1 行で 1 個のパーティションを設定します。 .Pp これらのパーティション行は、もしあればジオメトリ指定行の後に現れなければ なりません。 .Pp .Fx パーティションの .Ar type は 165 です。0 のパーティションタイプを指定すると、 パーティションを取り除き未使用の印をつけたのと同じことになります; しかし、("0" とかの) ダミーの値が .Ar start と .Ar length に指定されなければなりません。 .Pp 注: パーティションの開始オフセットはヘッド境界まで必要なら繰り上げられ、 終了オフセットはシリンダ境界まで必要なら繰り下げられます。 .Pp 例: パーティション 4 を取り除いて、未使用の印をつける: .Pp .Bd -literal -offset indent p 4 0 0 0 .Ed .Pp 例: パーティション 1 を .Fx パーティションであって、 セクタ 1 から始まって 2503871 セクタの長さに設定する (注: これらの値は、 対応するヘッドとシリンダ境界に繰り上げ/繰り下げられます): .Pp .Bd -literal -offset indent p 1 165 1 2503871 .Ed .Pp .It Xo .Ic a .Ar partition .Xc .Ar partition パーティションをアクティブにします。 設定ファイルのどこに現われても構いませんが、 1 個だけ存在することが必要です。 .Pp 例: パーティション 1 をアクティブパーティションにします: .Pp .Bd -literal -offset indent a 1 .Ed .El .Sh 関連ファイル .Bl -tag -width /boot/mbr -compact .It Pa /boot/mbr デフォルトのブートコード .El .Sh 関連項目 .Xr boot0cfg 8 , .Xr disklabel 8 .Sh バグ デフォルトのブートコードは、 必ずしもすべてのパーティションタイプを正しく扱いません。 特に MS-DOS 6.x 以降に導入されたものについてはそうです。 .Pp プログラム全体をよりユーザフレンドリにするべきです。 .Pp このマニュアルを通して使われている術語 .Sq パーティション は、他で使われる術語に一致させるため、 本当は .Sq スライス であるべきです。 .Pp ディスク全体を .Fx に捧げるためには、このコマンドは使えません。 これには .Xr disklabel 8 コマンドを使わなればなりません。 diff --git a/ja_JP.eucJP/man/man8/moused.8 b/ja_JP.eucJP/man/man8/moused.8 index dd23b604ea..0388443839 100644 --- a/ja_JP.eucJP/man/man8/moused.8 +++ b/ja_JP.eucJP/man/man8/moused.8 @@ -1,662 +1,662 @@ .\" Copyright (c) 1996 .\" Mike Pritchard . 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 Mike Pritchard. .\" 4. Neither the name of the author 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 AUTHOR AND CONTRIBUTORS ``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" .\" %FreeBSD: src/usr.sbin/moused/moused.8,v 1.27.2.8 2001/08/16 15:56:07 ru Exp % .\" -.\" $FreeBSD: doc/ja_JP.eucJP/man/man8/moused.8,v 1.24 2001/08/05 02:45:49 horikawa Exp $ +.\" $FreeBSD$ .Dd April 1, 2000 .Dt MOUSED 8 .Os .Sh 名称 .Nm moused .Nd マウスデータをコンソールドライバに渡す .Sh 書式 .Nm .Op Fl DPRacdfs .Op Fl I Ar file .Op Fl F Ar rate .Op Fl r Ar resolution .Op Fl S Ar baudrate .Op Fl a Ar X Ns Op , Ns Ar Y .Op Fl C Ar threshold .Op Fl m Ar N=M .Op Fl w Ar N .Op Fl z Ar target .Op Fl t Ar mousetype .Op Fl 3 Op Fl E Ar timeout .Fl p Ar port .Pp .Nm .Op Fl Pd .Fl p Ar port .Fl i Ar info .Sh 解説 マウスデーモン .Nm とコンソールドライバは協力し、 テキストコンソールやユーザプログラムにおけるマウス操作をサポートします。 マウスの仮想化とユーザプログラムへのマウスデータの提供は標準フォーマット にて行われます ( .Xr sysmouse 4 を御覧ください)。 .Pp マウスデーモンはマウスデータの読みとりのために指定されたポートを監視し、 解釈したデータを ioctl を介してコンソールドライバに渡します。 マウスデーモンは、移動、ボタンの押し/離しイベント、 存在するならばローラやホイールの移動も報告します。 ローラ/ホイールの移動は ``Z'' 軸での移動として報告されます。 .Pp マウスポインタが .Xr vidcontrol 1 によって有効にされていれば、 コンソールドライバはマウスポインタをスクリーンに表示し、 カットとペーストの機能を提供します。 .Xr sysmouse 4 をユーザプログラムがオープンすると、コンソールドライバは マウスデータをこのデバイスに送るので、 ユーザプログラムはこのデータを使用できます。 .Pp マウスデーモンがシグナル .Dv SIGHUP を受けとると、マウスポートを再オープンし、自己を再初期化します。 システムがサスペンドされている間にマウスの挿抜を行なった場合に有用です。 .Pp 以下のオプションがあります: .Bl -tag -width indent .It Fl 3 2 ボタンマウスで 3 番目(中)のボタンをエミュレートします。 物理的なボタンで左と右のものを同時に押すとエミュレートされます。 .It Fl C Ar threshold ダブルクリック速度をボタンクリック間最大インターバルとしてミリ秒で指定します。 このオプションを指定しないと、デフォルト値は 500 ミリ秒が仮定されます。 このオプションは、 テキストモードコンソールのカットとペーストの操作においてのみ有効です。 .Xr sysmouse 4 を介してマウスデータを得るユーザプログラムは影響を受けません。 .It Fl D シリアルポートの DTR を下げます。 このオプションが有効なのは、 .Ar mousesystems がマウスプロトコルとして選択されている場合のみです。 .Ar mousesystems モードで 3 ボタンマウスを操作するためには、 DTR ラインを落とすことが必要かもしれません。 .It Fl E Ar timeout 第 3 ボタンエミュレーション (前述) が有効なとき、2 つのボタンが同時に押されたかを判定する前に .Nm デーモンは最長 .Ar timeout ミリ秒待ちます。 デフォルトのタイムアウトは 100 ミリ秒です。 .It Fl F Ar rate サポートされていれば、デバイスのレポート頻度(秒あたりの回数)を設定します。 .It Fl I Ar file .Nm デーモンのプロセス ID を、指定されたファイルに書きます。 このオプションを指定しないと、プロセス ID は .Pa /var/run/moused.pid に格納されます。 .It Fl P シリアルマウス識別時に、 プラグアンドプレイ COM デバイス列挙処理を開始しません。 .Fl i オプションと共にこのオプションが指定された場合、 .Nm はシリアルマウスに関する有用な情報を表示できません。 .It Fl R シリアルポートの RTS を下げます。 このオプションが有効なのは .Ar mousesystems がプロトコルタイプとして、後述する .Fl t オプションで指定されている場合のみです。 これは前記 .Fl D オプションと共によく使用されます。 .Ar mousesystems モードで 3 ボタンマウスを操作するためには、 RTS と DTR のラインを共に下げる必要があるかもしれません。 .It Fl S Ar baudrate シリアルポートの速度を指定します (1200 から 9600)。 全シリアルマウスがこのオプションをサポートするわけではありません。 .It Fl a Ar X Ns Op , Ns Ar Y マウスの入力を加速または減速します。 線型加速のみです。 1.0 より小さい値は、しばらく減速します。 1.0 より大きい値は、加速します。 1 個の値だけを指定した場合、両方の座標軸での加速を設定します。 .It Fl c マウスによっては、中ボタンを押したイベントを、 左右ボタンが押されたかのようにレポートするものがあります。 このオプションはこれを扱うものです。 .It Fl d デバッグ用のメッセージを有効にします。 .It Fl f デーモンにならずに、フォアグラウンドプロセスとして実行します。 テストやデバッグに有用です。 .It Fl i Ar info 指定された情報を表示し終了します。指定可能な情報を以下に示します: .Pp .Bl -tag -compact -width modelxxx .It Ar port ポート(デバイスファイル)名、例えば .Pa /dev/cuaa0 , .Pa /dev/mse0 , .Pa /dev/psm0 です。 .It Ar if インタフェースタイプ: serial, bus, inport, ps/2 です。 .It Ar type プロトコルタイプ。 .Fl t オプションの説明の後でリストされているものか、 ドライバが .Ar sysmouse データフォーマット標準をサポートする場合には .Ar sysmouse です。 .It Ar model マウスモデル。 .Nm コマンドは常にモデルを識別できるわけではありません。 .It Ar all 上記全部。ポート、インタフェース、タイプ、モデルをこの順に一行に表示します。 .El .Pp .Nm は要求された情報を判別できない場合、``unknown'' か ``generic'' を表示します。 .It Fl m Ar N=M 物理ボタン .Ar M に論理ボタン .Ar N を割当てます。 このオプションは任意個数指定可能です。 複数の物理ボタンを単一の論理ボタンに割り当て可能です。 この場合、指定された物理ボタンのいずれかが押されている場合、 論理ボタンが押されていることになります。`=' の周りにスペースを入れてはなりません。 .It Fl p Ar port マウスと通信するためのポートとして .Ar port を使います。 .It Fl r Ar resolution デバイスの解像度を設定します; インチあたりのドット数または、 .Ar low , .Ar medium-low , .Ar medium-high , .Ar high のいずれかです。 全デバイスにてこのオプションがサポートされているわけではありません。 .It Fl s シリアルラインのために 9600 ボーを選びます。 全シリアルマウスがこのオプションをサポートしているわけではありません。 .It Fl t Ar type ポートに接続されているマウスのプロトコルタイプを指定します。 以下に列挙されるタイプを陽に指定するか、 .Ar auto を指定して .Nm コマンドに適切なプロトコルを自動選択させることができます。 コマンドラインにてこのオプションを指定しないと、 .Fl t Ar auto が仮定されます。 通常では、 .Nm コマンドがプロトコルの自動検出ができない場合に必要です ( .Sx マウスデーモンの構成 ) を参照。 .Pp このオプションでプロトコルタイプを指定した場合、 前記 .Fl P オプションが暗示され、プラグアンドプレイ COM デバイス列挙処理が無効になります。 .Pp また、マウスを PS/2 マウスポートに接続している場合、 常に .Ar auto か .Ar ps/2 を選択すべきです。 これは、マウスのブランドやモデルとは関係ありません。 同様に、マウスをバスマウスポートに接続している場合、 .Ar auto か .Ar busmouse を選択してください。 これらのマウスではシリアルマウスプロトコルは動作しません。 .Pp USB マウスでは、プロトコルは .Ar auto であることが必要です。他のプロトコルは USB マウスで動作しません。 .Pp このオプションにおける有効なタイプを以下に列挙します。 .Pp シリアルマウス: .Bl -tag -compact -width mousesystemsxxx .It Ar microsoft Microsoft シリアルマウスプロトコル。 大抵の 2 ボタンマウスはこのプロトコルを使用します。 .It Ar intellimouse Microsoft IntelliMouse プロトコル。 Genius NetMouse, ASCII Mie Mouse, Logitech MouseMan+, FirstMouse+ もこのプロトコルを使用します。 他のローラ/ホイールを持つマウスもこのプロトコル互換でしょう。 .It Ar mousesystems MouseSystems の 5 バイトプロトコル。 3 ボタンマウスはこのプロトコルを使用するかもしれません。 .It Ar mmseries MM Series マウスプロトコル。 .It Ar logitech Logitech マウスプロトコル。 これは古い Logitech モデルであることに注意。 新しいモデルには .Ar mouseman もしくは .Ar intellimouse を指定します。 .It Ar mouseman Logitech MouseMan と TrackMan のプロトコル。 3 ボタンマウスによってはこのプロトコル互換かもしれません。 MouseMan+ と FirstMouse+ は、このプロトコルではなく、 .Ar intellimouse プロトコルを使用します .It Ar glidepoint ALPS GlidePoint プロトコル。 .It Ar thinkingmouse Kensington ThinkingMouse プロトコル。 .It Ar mmhitab Hitachi タブレットプロトコル。 .It Ar x10mouseremote X10 MouseRemote。 .It Ar kidspad Genius の Kidspad と Easypad のプロトコル。 .It Ar versapad Interlink VersaPad プロトコル。 .El .Pp バスおよび InPort マウス: .Bl -tag -compact -width mousesystemsxxx .It Ar busmouse バスおよび InPort マウスはこのプロトコルのみ使用可能であり、 バスおよび InPort マウスはブランドに依らずこのオプションを 指定する必要があります。 .El .Pp PS/2 マウス: .Bl -tag -compact -width mousesystemsxxx .It Ar ps/2 PS/2 マウスはこのプロトコルのみ使用可能であり、 PS/2 マウスはブランドに依らずこのオプションを 指定する必要があります。 .El .Pp USB マウスでは、 .Ar auto が使用可能な唯一のプロトコルであり、 ブランドにかかわらず USB マウスにはこれを指定すべきです。 .It Fl w Ar N 物理ボタン .Ar N が、ホイールモードボタンとして動作するようにします。 このボタンが押されている間、X 軸および Y 軸の移動は 0 と報告され、 Y 軸の移動は Z 軸の移動に割り付けられます。 後述する .Fl z オプションを使用することにより、 Z 軸の移動を更に仮想ボタンに割り付けることができます。 .It Fl z Ar target Z 軸(ローラ/ホイール)動作を別の軸や仮想ボタンに割り付けます。 有効な .Ar target は以下のいずれかです: .Bl -tag -compact -width x__ .It Ar x .It Ar y X または Y 軸の移動として、検知した Z 軸移動を報告します。 .It Ar N 仮想ボタン .Ar N および .Ar N+1 を押したイベントとして、検知した負/正の Z 軸移動をそれぞれ報告します。 物理ボタン .Ar N と .Ar N+1 が存在する必要はありません。 論理ボタンへの割り付けは Z 軸移動を仮想ボタンへ割り付けた後に行われます。 .It Ar N1 N2 仮想ボタン .Ar N1 および .Ar N2 を押したイベントとして、検知した負/正の Z 軸移動をそれぞれ報告します。 .It Ar N1 N2 N3 N4 2 個のホイールがあり 2 番目のホイールが水平スクロール動作を生成するために使用されるマウス、 およびユーザが加えた水平の力を検知するノブまたはスティック付きのマウスで 有用です。 .Pp 2 番目のホイールの動きは、負の向きが .Ar N3 にマップされ、正の向きが .Ar N4 にマップされます。 ボタン .Ar N3 および .Ar N4 がマウスに実在する場合、このアクションは検出されません。 .Pp 水平移動や 2 番目のローラ/ホイールの動きは常に検出されるわけではないことに 注意してください。 なぜなら、 これらをエンコードするための受け入れられた標準が無いように見えるからです。 .Pp また、水平方向において、左が負であると考えるマウスもいれば、 逆だと考えるマウスもいることにも注意してください。 更に、2 個のホイールが両方とも垂直に塔載されており、 -一方の方向ががもう一方の方向とはマッチしないものもあります。 +一方の方向がもう一方の方向とはマッチしないものもあります。 .El .El .Ss マウスデーモンの構成 まず、使用予定マウスのインタフェースタイプを知ることが必要です。 これはマウスのコネクタを見れば分かります。 シリアルアウスは D-Sub の 9 ピンまたは 25 ピンのメスです。 バスおよび InPort のマウスは D-Sub 9 ピンのオスか丸い DIN 9 ピンコネクタです。 PS/2 マウスは小さくて丸い DIN 6 ピンコネクタです。 マウスによってはコネクタを別の形状に変換可能なコネクタが附属しています。 このようなアダプタを使用する場合には、 マウスから一番遠いコネクタの形状を見てください。 USB マウスは、平らな長方形のコネクタを持ちます。 .Pp 次に決めねばならないことは、インタフェースのために使用するポートです。 バス、InPort、PS/2 マウスでは、選択肢はありません: バスおよび InPort マウスは常に .Pa /dev/mse0 を使用し、 PS/2 マウスは常に .Pa /dev/psm0 を使用します。 シリアルマウスの場合、接続可能なポートが複数ありえます。 多くの人が組み込みのシリアルポート .Pa /dev/cuaa0 をマウスに割当てます。 複数の USB マウスをシステムまたは USB ハブに接続可能です。 それらは .Pa /dev/ums0 , /dev/ums1 のようにアクセス可能です。 .Pa シンボリックリンク .Pa /dev/mouse でマウスの実際のポートを指すようにして、 どのマウスポートか後で簡単に分かるようにするのが良いかもしれません。 .Pp 次に適切なマウスプロトコルを選択します。 .Nm コマンドはマウスタイプを自動決定可能かもしれません。 .Nm コマンドを .Fl i オプションを付けて実行し、表示を見ます。 コマンドがプロトコルタイプを識別した場合、あなたは何も調べる必要はありません。 プロトコルタイプを指定せずにデーモンを起動可能です ( .Sx 使用例 ) を参照。 .Pp コマンドは、マウスドライバが .Ar sysmouse プロトコルをサポートする場合、 .Ar sysmouse と表示するかもしれません。 .Pp 表示される .Dv type と .Dv model は、対象のポインティングデバイスの製品名では必ずしもありませんが、 互換性のあるデバイスの名前でしょう。 .Pp .Fl i オプションがなにも表示しない場合、 .Nm に対して .Fl t オプションを使用し、プロトコルタイプを指定する必要があります。 予測して試行する必要があります。 以下に経験則を示します: .Pp .Bl -enum -compact -width 1.X .It バスおよび InPort マウスはブランドに依らず .Ar busmouse プロトコルを使用します .It PS/2 マウスはブランドに依らず .Ar ps/2 プロトコルを使用します .It USB マウスには .Ar auto プロトコルを指定する必要があります。 .It ほとんどの 2 ボタンシリアルマウスは .Ar microsoft プロトコルをサポートします。 .It 3 ボタンシリアルマウスは .Ar mousesystems プロトコルで動作するかもしれません。動作しない場合には、 三番目(中)ボタンが機能せずに .Ar microsoft プロトコルで動作するでしょう。 3 ボタンシリアルマウスは、期待通り三番目のボタンが動作しつつ .Ar mouseman プロトコルで動作するかもしれません。 .It 3 ボタンマウスには小さなスイッチが付いていて、 ``MS'' と ``PC'' または ``2'' と ``3'' とで選択できるできるようになっている かもしれません。 ``MS'' と ``2'' は通常 .Ar microsoft プロトコルを意味します。 ``PC'' と ``3'' は .Ar mousesystems プロトコルを選択します。 .It マウスにローラやホイールが付いている場合、 .Ar intellimouse プロトコル互換でしょう。 .El .Pp マウスのために選択したプロトコルタイプが正しいかどうかテストする目的で、 現在の仮想コンソールでマウスポインタを有効にします。 .Pp .Dl vidcontrol -m on .Pp マウスデーモンをフォアグラウンドで開始します。 .Pp .Dl moused -f -p Ar _selected_port_ -t Ar _selected_protocol_ .Pp マウスポインタがマウスの移動に伴い、 正しく移動することを確認してください。 そして、カットとペーストの機能を左、右、中のボタンを使用して確認してください。 ^C をタイプすると、コマンドは停止します。 .Ss 複数のマウス システムに接続したマウスと同じ数だけ、マウスデーモンを同時実行可能です; 一つのマウスデーモンが一つのマウスに対応します。 ラップトップコンピュータ組み込みの PS/2 ポインティングデバイスを移動中使用し、 オフィスではドッキングステーション接続のシリアルマウスを使用する 場合に有用です。 マウスデーモンを二つ実行し、アプリケーションプログラム (例えば X Window System) に .Xr sysmouse を使用させます。 するとアプリケーションプログラムは常に両マウスからマウスデータを受け取ります。 シリアルマウスが取り付けられていない場合、 対応するマウスデーモンは移動やボタン状態の変化を検出しませんので、 アプリケーションプログラムは PS/2 マウスのデーモンからのマウスデータ のみを使います。 一方この構成で両方のマウスを接続し同時に両方を動かした場合、 マウスの移動をすべて組み合わせたようにマウスポインタがスクリーン上を移動します。 .Sh 関連ファイル .Bl -tag -width /dev/consolectl -compact .It Pa /dev/consolectl コンソール制御デバイス .It Pa /dev/mse%d バスおよび InPort マウスのドライバ .It Pa /dev/psm%d PS/2 マウスドライバ .It Pa /dev/sysmouse 仮想化されたマウスドライバ .It Pa /dev/ttyv%d 仮想コンソール .It Pa /dev/ums%d USB マウスドライバ .It Pa /var/run/moused.pid 現在実行中の .Nm デーモンのプロセス ID .It Pa /var/run/MouseRemote X10 MouseRemote のイベントのための UNIX ドメインストリームソケット .El .Sh 使用例 .Dl moused -p /dev/cuaa0 -i type .Pp .Nm コマンドにシリアルポート .Pa /dev/cuaa0 に接続されたマウスのプロトコルタイプを識別させます。 成功すると、コマンドはタイプを表示しますが、 失敗すると ``unknown'' が表示されます。 .Pp .Dl moused -p /dev/cuaa0 .Dl vidcontrol -m on .Pp .Nm が指定されたポートのマウスプロトコルタイプを識別可能な場合、 .Fl t オプション無してデーモンを起動可能であり、 前記のようにマウスポインタをテキストコンソール上で有効にできます。 .Pp .Dl moused -p /dev/mouse -t microsoft .Dl vidcontrol -m on .Pp シリアルポート .Pa /dev/mouse に対してマウスデーモンを起動します。 プロトコルタイプは .Ar microsoft を .Fl t オプションにて陽に指定しています。 .Pp .Dl moused -p /dev/mouse -m 1=3 -m 3=1 .Pp 物理ボタン 3 (右ボタン) を論理ボタン 1 (論理的に左) に、 物理ボタン 1 (左ボタン) を論理ボタン 3 (論理的に右) に、 それぞれ割当てます。 左右のボタンを事実上交換します。 .Pp .Dl moused -p /dev/mouse -t intellimouse -z 4 .Pp Z 軸(ローラ)における負の移動をボタン 4 が押されたものとし、 Z 軸における正の移動をボタン 5 が押されたものとします。 .Sh 警告 .Nm コマンドは現在別のコンソールドライバ .Xr pcvt 4 では動作しません。 .Pp パッドデバイスの多くは、 ユーザがパッド表面を ``タップ'' した場合に最初の(左) ボタンが 押されたものとします。 また、ALPS GlidePoint および Interlink VersaPad のモデルによっては、 タップ動作を 4 番目のボタンのイベントとして扱います。 このようなモデルでは、オプション ``-m 1=4'' を使用して、 他のパッドデバイスと同様の効果を得られます。 .Pp 仮想コンソールでのカットとペーストの機能は、 マウスに 3 ボタンあることを仮定しています。 論理ボタン 1 (論理的に左) は、 コンソールのテキスト領域を選択してカットバッファにコピーします。 論理ボタン 3 (論理的に右) は、 選択された領域を拡張します。 論理ボタン 2 (論理的に中) は、 選択されたテキストをテキストカーソル位置にペーストします。 マウスに 2 つしかボタンが無い場合、中央の `ペースト' ボタン は使用できません。 ペースト機能を使用するためには、 .Fl 3 オプションを使用して中ボタンをエミュレートするか、 .Fl m オプションを ``-m 2=3'' のように使用して 物理右ボタンに論理中ボタンを割当てます。 .Sh 関連項目 .Xr kill 1 , .Xr vidcontrol 1 , .Xr keyboard 4 , .Xr mse 4 , .Xr pcvt 4 , .Xr psm 4 , .Xr screen 4 , .Xr sysmouse 4 , .Xr ums 4 .Sh 規格 .Nm コマンドは .Dq Plag and Play External COM Device Specification の一部を サポートし、PnP シリアルマウスをサポートします。 しかしながら、シリアルマウスごとに仕様充足の度合が異なりますので、 標準のバージョン 1.0 に完全に従ってはいません。 このように厳密さを欠いた方法でも、シリアルマウスの適切なプロトコルタイプ を常に決定できるわけではありません。 .Sh 作者 .An -nosplit .Nm コマンドは、 .An Michael Smith Aq msmith@FreeBSD.org によって書かれました。 このマニュアルは、 .An Mike Pritchard Aq mpp@FreeBSD.org によって書かれました。 コマンドとマニュアルページを、 .An Kazutaka Yokota Aq yokota@FreeBSD.org が更新しました。 .Sh 歴史 .Nm コマンドは、 .Fx 2.2 から導入されました。 diff --git a/ja_JP.eucJP/man/man8/periodic.8 b/ja_JP.eucJP/man/man8/periodic.8 index 2998e27096..240d772164 100644 --- a/ja_JP.eucJP/man/man8/periodic.8 +++ b/ja_JP.eucJP/man/man8/periodic.8 @@ -1,265 +1,265 @@ .\" Copyright (c) 1997 FreeBSD, Inc. .\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" .\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" .\" %FreeBSD: src/usr.sbin/periodic/periodic.8,v 1.11.2.13 2001/12/14 16:48:11 ru Exp % .\" .\" $FreeBSD$ .\" .\" WORD: registry レジストリ .\" WORD: script fragment スクリプトフラグメント .\" .Dd November 28, 2001 .Os .Dt PERIODIC 8 .Sh 名称 .Nm periodic .Nd 定期的なシステム機能を実行する .Sh 書式 .Nm .Ar directory ... .Sh 解説 .Nm プログラムは指定されたディレクトリにあるシェルスクリプトを実行するために、 .Xr cron 8 に呼び出されることを意図しています。 .Pp 以下の引数から一つ以上を指定しなければいけません : .Bl -tag -width ".Pa monthly" .It Pa daily 標準的な 1 日周期の実行ファイルを実行します。 これはよく (その地域の時刻で) 朝早くに行なわれます。 .It Pa weekly 標準的な 1 週間周期の実行ファイルを実行します。 これはよく日曜日の朝に行なわれます。 .It Pa monthly 標準的な 1 ヶ月周期の実行ファイルを実行します。 これはよく月の 1 日目に行なわれます。 .It Ar path 実行すべき一連の実行ファイルがある任意のディレクトリを指定します。 .El .Pp 引数が絶対パスのディレクトリ名の場合はそれがそのまま使われます。 それ以外の場合は .Pa /etc/periodic の下と .Xr periodic.conf 5 (以下を参照) の中の .Va local_periodic で指定されたディレクトリが検索されます。 .Pp .Nm プログラムは指定されたディレクトリ (複数指定可) にある 各実行可能ファイルを実行します。もし実行可能ビットが セットされていないファイルがあっても、無視するだけで それに関するメッセージも表示しません。 .Pp 各スクリプトは以下のいずれかの値とともに終了することが要求されます。 .Bl -tag -width 4n .It 0 スクリプトの出力に注目すべき点はありません。 変数 .Ao Ar basedir Ac Ns Va _show_success で出力のマスクを制御します。 .It 1 スクリプトから注意すべき情報が出力されています。 変数 .Ao Ar basedir Ac Ns Va _show_info でこの出力をマスクするかどうかを制御します。 .It 2 スクリプトは無効な設定による警告を発しました。 変数 .Ao Ar basedir Ac Ns Va _show_badconfig でこの出力をマスクするかどうかを制御します。 .It >2 スクリプトからマスクされない出力が出されています。 .El .Pp もし、 .Pa periodic.conf 中の関連のある変数 ( .Aq Ar basedir はスクリプトが置かれた基準となるディレクトリ) が .Dq Li NO に設定されているなら、 スクリプトの出力はマスクされます。 その変数が .Dq Li YES か .Dq Li NO のどちらにも設定されていなければ、 .Xr periodic.conf 5 に記述されたデフォルトの値が採用されます。 .Pp 残った出力は .Ao Ar basedir Ac Ns Va _output に設定された値に基づいて送られます。 .Pp もし、これにパス名 ( .Ql / で始まります) が設定されているなら、出力は単純にそのファイルに記録されます。 .Xr newsyslog 8 は .Pa /var/log/daily.log , .Pa /var/log/weekly.log , .Pa /var/log/monthly.log というファイルを知っており、 -これらのファイルがが存在するなら、 +これらのファイルが存在するなら、 適当な回数でローテートされます。 したがって、 .Nm の出力を記録しようとするなら、 これらを設定するのが適切です。 .Pp .Ao Ar basedir Ac Ns Va _output の値が .Ql / で始まっておらず、空でもない場合には、 メールのアドレスのリストが含まれているとみなされ、 出力はメールで送られます。 .Pp .Ao Ar basedir Ac Ns Va _output が設定されていないか、空である場合には 出力は標準出力に送られます。 .Sh 環境変数 .Nm コマンドは環境変数 .Ev PATH をすべての標準的なシステムディレクトリを含むように設定します。 ただし、 .Pa /usr/local/bin のような追加的なディレクトリは含めません。もし他のパスに 依存するような実行ファイルを加えるなら、それぞれの実行ファイルが 自己の環境変数を適切に設定する責任を負う必要があります。 .Sh 関連ファイル .Bl -tag -width ".Pa /etc/periodic.conf" .It Pa /etc/crontab 典型的な .Nm プログラムの呼び出しはシステムのデフォルト .Xr cron 8 テーブル内の エントリから行なわれます。 .It Pa /etc/periodic サブディレクトリとして .Pa daily , .Pa weekly , .Pa monthly を含む上層のディレクトリです。これらのサブディレクトリには システムの標準的な定期的実行ファイルが置かれます。 .It Pa /etc/defaults/periodic.conf .Pa periodic.conf システムレジストリは .Nm と標準の .Pa daily , .Pa weekly , .Pa monthly スクリプト の振舞を制御する変数を保持します。 .It Pa /etc/periodic.conf このファイルはデフォルトの .Nm の設定の 一部を置き換えるものです。 .El .Sh 使用例 システム crontab には下の例のような .Nm のエントリが記述されているはずです : .Pp .Bd -literal -offset indent # do daily/weekly/monthly maintenance 0 2 * * * root periodic daily 0 3 * * 6 root periodic weekly 0 5 1 * * root periodic monthly .Ed .Pp 典型的なシステムレジストリ .Pa /etc/defaults/periodic.conf には変数 .Va local_periodic について次のように記述してあるでしょう : .Pp .Dl local_periodic="/usr/local/etc/periodic /usr/X11R6/etc/periodic" .Pp .Nm の出力をメールで受け取る代わりにログにとるには 以下のような行を .Pa /etc/periodic.conf に追加します : .Pp .Bd -literal -offset indent daily_output=/var/log/daily.log weekly_output=/var/log/weekly.log monthly_output=/var/log/monthly.log .Ed .Pp 毎日実行される periodic のジョブから 重要な情報のみを見るためには、 以下の行を .Pa /etc/periodic.conf に追加します : .Bd -literal -offset indent daily_show_success=NO daily_show_info=NO daily_show_badconfig=NO .Ed .Sh 関連項目 .Xr sh 1 , .Xr crontab 5 , .Xr periodic.conf 5 , .Xr cron 8 , .Xr newsyslog 8 .Sh 診断 終了状態は成功時には 0 です。もし以下のいずれかの理由で コマンドが失敗すれば、終了状態は 1 になります : .Bl -diag .It usage: periodic スクリプトフラグメントがどこにあるかを指定する ディレクトリパス引数が .Nm に渡されませんでした。 .It not found 説明するまでもありません。(訳注: 指定したディレクトリが見つかりません。) .El .Sh 歴史 .Nm プログラムは .Fx 3.0 に初めて登場しました。 .Sh バグ ディレクトリの情報を、文字列を含むシェル変数 .Aq Ar basedir で指定するので、 .Aq Ar basedir は .Xr sh 1 において有効な名前である必要があります。 すなわち、アルファベット、数値、アンダスコアであることが必要であり、 最初の文字は数値であってはなりません。 .Sh 作者 .An Paul Traina Aq pst@FreeBSD.org .An Brian Somers Aq brian@Awfulhak.org diff --git a/ja_JP.eucJP/man/man8/vinum.8 b/ja_JP.eucJP/man/man8/vinum.8 index 2937c0ef2e..c3e7e99bff 100644 --- a/ja_JP.eucJP/man/man8/vinum.8 +++ b/ja_JP.eucJP/man/man8/vinum.8 @@ -1,2798 +1,2798 @@ .\" Hey, Emacs, edit this file in -*- nroff-fill -*- mode .\"- .\" Copyright (c) 1997, 1998 .\" Nan Yang Computer Services Limited. All rights reserved. .\" .\" This software is distributed under the so-called ``Berkeley .\" License'': .\" .\" 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 Nan Yang Computer .\" Services Limited. .\" 4. Neither the name of the Company 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 ``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 company 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: vinum.8,v 1.48 2001/01/15 22:15:05 grog Exp % .\" %FreeBSD: src/sbin/vinum/vinum.8,v 1.33.2.8 2001/04/27 10:35:19 ru Exp % .\" -.\" $FreeBSD: doc/ja_JP.eucJP/man/man8/vinum.8,v 1.23 2001/05/05 18:59:09 horikawa Exp $ +.\" $FreeBSD$ .\" WORD: attach 結合 (する) .Dd December 20, 2000 .Dt VINUM 8 .Sh 名称 .Nm vinum .Nd 論理ボリュームマネージャの制御プログラム .Sh 書式 .Nm .Op Ar command .Op Fl options .Sh コマンド .Bl -tag -width indent .It Ic attach Ar plex volume Op Cm rename .It Xo .Ic attach Ar subdisk plex .Op Ar offset .Op Cm rename .Xc プレックスをボリュームに、またはサブディスクをプレックスに結合します。 .It Xo .Ic checkparity Ar plex .Op Fl f RAID-4 または RAID-5 のプレックスのパリティブロックを検査します。 .Xc .It Xo .Ic concat .Op Fl f .Op Fl n Ar name .Op Fl v .Ar drives .Xc 指定したドライブからコンカチネート化ボリュームを作成します。 .It Xo .Ic create .Op Fl f .Ar description-file .Xc .Ar description-file の記述に従ってボリュームを作成します。 .It Ic debug ボリュームマネージャをカーネルデバッガに移行させます。 .It Ic debug Ar flags デバッグフラグを設定します。 .It Xo .Ic detach .Op Fl f .Op Ar plex | subdisk .Xc 結合されていたボリュームやプレックスから、プレックスやサブディスクを分離します。 .It Ic dumpconfig Op Ar drive ... 指定されたドライブに格納されている設定情報を表示します。 ドライブ名を指定しないと、システムの全ドライブの情報を表示します。 .It Xo .Ic info .Op Fl v .Op Fl V .Xc ボリュームマネージャの状態を表示します。 .It Xo .Ic init .Op Fl S Ar size .Op Fl w .Ar plex | subdisk .Xc .\" XXX サブディスクまたはプレックスの全サブディスクの内容をすべて 0 に初期化します。 .It Ic label Ar volume ボリュームラベルを作成します。 .It Xo .Ic l | list .Op Fl r .Op Fl s .Op Fl v .Op Fl V .Op Ar volume | plex | subdisk .Xc 指定したオブジェクトの情報を表示します。 .It Xo .Ic ld .Op Fl r .Op Fl s .Op Fl v .Op Fl V .Op Ar volume .Xc ドライブの情報を表示します。 .It Xo .Ic ls .Op Fl r .Op Fl s .Op Fl v .Op Fl V .Op Ar subdisk .Xc サブディスクの情報を表示します。 .It Xo .Ic lp .Op Fl r .Op Fl s .Op Fl v .Op Fl V .Op Ar plex .Xc プレックスの情報を表示します。 .It Xo .Ic lv .Op Fl r .Op Fl s .Op Fl v .Op Fl V .Op Ar volume .Xc ボリュームの情報を表示します。 .It Ic makedev .Ar /dev/vinum にデバイスノードを再作成します。 .It Xo .Ic mirror .Op Fl f .Op Fl n Ar name .Op Fl s .Op Fl v .Ar drives .Xc 指定したドライブからミラー化ボリュームを作成します。 .It Xo .Ic move | mv .Fl f .Ar drive object ... .Xc 指定したドライブにオブジェクトを移動します。 .It Ic printconfig Op Ar file 現在の設定のコピーを .Ar file へ書き込みます。 .It Ic quit 対話モード時に、 .Nm プログラムを終了します。通常 .Dv EOF 文字を入力することにより実現できます。 .It Ic read Ar disk ... 指定したディスクから .Nm の設定を読み出します。 .It Xo .Ic rename Op Fl r .Op Ar drive | subdisk | plex | volume .Xc 指定したオブジェクトの名前を変更します。 .\" XXX .\".It Ic replace Ar drive newdrive .\"指定したドライブから新しいドライブ上へすべてのサブディスクを移動します。 .It Xo .Ic rebuildparity Ar plex Op Fl f .Op Fl v .Op Fl V .Xc RAID-4 または RAID-5 のプレックスのパリティブロックを再構築します。 .It Ic resetconfig すべての .Nm の設定をリセットします。 .It Xo .Ic resetstats .Op Fl r .Op volume | plex | subdisk .Xc 指定したオブジェクトの統計情報をリセットします。指定がない場合はすべての オブジェクトが対象です。 .It Xo .Ic rm .Op Fl f .Op Fl r .Ar volume | plex | subdisk .Xc オブジェクトを削除します。 .It Ic saveconfig 設定失敗後に、 .Nm の設定をディスクへ保存します。 .\" XXX .\".It Xo .\".Ic set .\".Op Fl f .\".Ar state .\".Ar volume | plex | subdisk | disk .\".Xc .\"オブジェクトの状態をに設定します。 .\".Ar state .\"に設定します。 .It Ic setdaemon Op Ar value デーモンの設定を与えます。 .It Xo .Ic setstate .Ar state .Op Ar volume | plex | subdisk | drive .Xc 他のオブジェクトに影響を与えずに状態を設定します。 診断のためだけに使用します。 .It Ic start 全 vinum ドライブから設定を読み込みます。 .It Xo .Ic start .Op Fl i Ar interval .Op Fl S Ar size .Op Fl w .Ar volume | plex | subdisk .Xc システムがオブジェクトへアクセスできるようにします。 .It Xo .Ic stop .Op Fl f .Op Ar volume | plex | subdisk .Xc オブジェクトへのアクセスを終了させます。 パラメータを指定しないと、 .Nm を停止させます。 .It Xo .Ic stripe .Op Fl f .Op Fl n Ar name .Op Fl v .Ar drives .Xc 指定したドライブからストライプ化ボリュームを作成します。 .El .Sh 解説 .Nm は .Xr vinum 4 論理ボリュームマネージャと通信するための ユーティリティプログラムです。 .Nm は対話形式と、単独のコマンドを実行する形式のいずれも実行可能になっています。 コマンドライン引数を伴わずに .Nm を起動すると対話形式になる一方、 コマンドラインでコマンドを指定するとそのコマンド だけを実行します。 対話モードでは、 .Nm はコマンドラインヒストリを保持します。 .Sh オプション .Nm のコマンドにはオプションを付加することができます。どのコマンドにも 下記オプションのどれでも指定することができますが、 オプションが無視される場合があります。例えば、 .Ic stop コマンドは .Fl v オプションと .Fl V オプションを無視します。 .Bl -tag -width indent .It Fl f .Fl f Pq Dq force: 強制 オプションは安全性の確認を無効にします。細心の注意を払って 使用して下さい。 このオプションは緊急時にのみ使用するものです。例えば、 コマンド .Pp .Dl rm -f myvolume .Pp は .Ar myvolume がオープンされていたとしても削除します。以降、このボリュームに アクセスすると、ほぼ確実にパニックを起こします。 .It Fl i Ar millisecs .Ic init または .Ic start のコマンドを実行時、各ブロックのコピーの間に .Ar millisecs ミリ秒待ちます。 これにより、システム負荷を軽減できます。 .It Fl n Ar name ボリューム名を指定するために .Fl n オプションを使用します。単純な設定コマンド .Ic concat , .Ic mirror , .Ic stripe 用です。 .It Fl r .Fl r .Pq Dq recursive: 再帰的 オプションは表示系のコマンドで使い、 指示したオブジェクト だけでなく、下位のオブジェクトの情報も表示します。 例えば、 .Ic lv コマンドとともに使われる場合、 .Fl r オプションは対象のボリュームに属するプレックスとサブディスクの情報も表示します。 .It Fl s .Fl s .Pq Dq statistics: 統計 オプションは表示系のコマンドで統計情報を表示するために使います。 .Ic mirror コマンドもこのオプションを使用し、 ストライプ化プレックスを作成すべきことを示します。 .It Fl S Ar size .Fl S オプションは、 .Ic init と .Ic start コマンドのための転送サイズを指定します。 .It Fl v .Fl v .Pq Dq verbose: 冗長 オプションは、 さらに詳細な情報を要求するために使用します。 .It Fl V .Fl V .Pq Dq Very verbose: とても冗長 オプションは、 .Fl v オプションが提供するものよりもさらに詳細な情報を要求するために使用します。 このフラグは .Nm init コマンドではベリファイを意味します。 .It Fl w .Fl w .Pq Dq wait: 待ち オプションは、 .Ic init のように通常はバックグラウンドで実行するコマンドの完了を、 .Nm に待たせます。 .El .Sh コマンドの詳細 .Nm コマンドは以下の機能を実行します。 .Pp .Bl -tag -width indent -compact .It Ic attach Ar plex volume Op Cm rename .It Xo .Ic attach Ar subdisk plex .Op Ar offset .Op Cm rename .Xc .Nm Ic attach .Nm Ic attach は指定されたプレックスやサブディスクをそれぞれボリュームやプレックスに 組み込みます。サブディスクに ついては、プレックス中の始点 (オフセット) を指定することができます。 指定がない場合、 サブディスクは有効な最初の位置に結合されます。空でないボリュームにプレックスが 結合されると、 .Nm はそのプレックスを再統合します。 .Pp .Cm rename キーワードが指定されると、 .Nm はオブジェクトの (プレックスの場合には下位のサブディスクの) 名前を変更して デフォルトの .Nm 命名規則に合わせます。 オブジェクトを他の名前に変更するには、 .Ic rename コマンドを使用します。 .Pp サブディスク結合に際しては、いくつか考慮すべきことがあります: .Bl -bullet .It サブディスクの結合対象は、通常、コンカチネート化プレックスのみです。 .It ストライプ化プレックスおよび RAID-5 プレックスにおいて サブディスクが失われた場合 (例えばドライブの故障後など)、 当該サブディスクを置き換えられるのは同じ大きさのサブディスクだけです。 .It ストライプ化または RAID-5 のプレックスに更にサブディスクを追加するには、 .Fl f (強制) オプションを使用します。プレックス内のデータを破壊します。 .\" ストライプ化および RAID-5 のプレックスに対しては、 .\" 別のサブディスクを結合することは、現在許されていません。 .It コンカチネート化プレックスに対しては、 .Ar offset パラメータが、プレックスの先頭からのブロック単位のオフセットを指定します。 ストライプ化プレックスおよび RAID-5 プレックスに対しては、 本パラメータは、サブディスクの最初のブロックのオフセットを指定します。 別の表現をするなら、オフセットは、 サブディスクの数値指定による位置とストライプの大きさとの積になります。 例えば、ブロックの大きさが 271k のプレックスでは、 最初のサブディスクはオフセット 0 に、2 番目のオフセットは 271k に、 3 番目は 542k に、などとなります。 この計算では、RAID-5 プレックスのパリティブロックは無視されます。 .El .Pp .It Xo .Ic checkparity .Ar plex .Op Fl f .Op Fl v .Xc 指定した RAID-4 または RAID-5 プレックスのパリティブロックをチェックします。 この操作はプレックス中のポインタを維持しますので、 望むならば、一時停止して後で同じ場所から再開可能です。 さらに、このポインタは .Ic rebuildparity コマンドも使用します。 最初にパリティの問題が検出された箇所から、 パリティブロックの再構築を開始可能です。 .Pp .Fl f フラグが指定されると、 .Ic checkparity はプレックスの先頭からチェックを開始します。 .Fl v フラグが指定されると、 .Ic checkparity は進捗報告を表示します。 .Pp .It Xo .Ic concat .Op Fl f .Op Fl n Ar name .Op Fl v .Ar drives .Xc .Ic concat コマンドは、単一のコンカチネート化プレックスからなるボリュームを作成する .Ic create コマンドの、単純な代替手段です。 各ドライブ中の最大の連続空間が、 プレックスのサブディスク作成のために使用されます。 .Pp 通常、 .Ic concat コマンドは任意の名前をボリュームと構成要素に付けます。 名前はテキスト .Dq Li vinum および小さな整数からなり、例えば .Dq Li vinum3 となります。 ボリュームに対して指定した名前を割り当てる .Fl n Ar name オプションで、上書きすることが可能です。 プレックスとサブディスクの名前は、通常の作法で、ボリューム名からとられます。 .Pp ドライブの名前には選択の余地はありません。 ドライブが既に .Nm ドライブとして初期化されていた場合、名前はそのままになります。 そうでない場合、ドライブにはテキスト .Dq Li vinumdrive と小さな整数から始まる名前が与えられ、例えば .Dq Li vinumdrive7 となります。 .Ic create コマンドと同様、 .Fl f オプションを使用して、以前の名前の上書きを指定可能です。 .Fl v オプションは、冗長な出力のために使用します。 .Pp このコマンドの例は、後述の .Sx 単純な設定 の節を参照してください。 .Pp .It Xo .Ic create .Op Fl f .Ar description-file .Xc .Nm Ic create はどのオブジェクトの作成にも使われます。相互の関連性が比較的複雑で .Nm オブジェクトの作成には潜在的に危険があることを考慮して、この機能には対話的な インタフェースはありません。 ファイル名を指定しないと、 .Nm は一時ファイルに対してエディタを起動します。 環境変数 .Ev EDITOR が設定されている場合、 .Nm はこのエディタを起動します。設定されていない場合のデフォルトは .Nm vi です。 詳細は後述の .Sx 設定ファイル の節を参照して下さい。 .Pp .Nm Ic create 機能は加法的であることに注意してください: 複数回実行すると、名前付けしていない全オブジェクトのコピーを、 複数生成することになります。 .Pp 通常 .Ic create は既存の .Nm ドライブの名前を変更しません。これは、誤って消去してしまうのを避けるためです。 不要な .Nm ドライブを破棄する正しい方法は、 .Ic resetconfig コマンドで設定をリセットすることです。 しかし、起動できない .Nm ドライブ上に新規データを生成する必要がある場合があります。 この場合、 .Ic create Fl f を使用してください。 .Pp .It Ic debug 引数無しの .Nm Ic debug は、リモートカーネルデバッガに入るために使用します。これは .Nm が .Dv VINUMDEBUG オプション付きで作成されている場合にのみ実行可能です。 このオプションはカーネルデバッガから抜け出るまでオペレーティング システムの実行を停止させます。 リモートデバッグが設定されており、 カーネルデバッガへのリモートコネクションがないと、 デバッガから抜け出るためにはシステムをリセットしてリブート することが必要になります。 .Pp .It Ic debug Ar flags 内部デバッグフラグのビットマスクを設定します。 本製品が改良されるにつれ、このビットマスクは警告無しに変更されるでしょう。 確認のために、ヘッダファイル .Aq Pa sys/dev/vinumvar.h を見てください。 ビットマスクは次の値から構成されます: .Bl -tag -width indent .It Dv DEBUG_ADDRESSES Pq No 1 リクエスト中のバッファ情報を表示します。 .\".It Dv DEBUG_NUMOUTPUT Pq No 2 .\".Va vp->v_numoutput .\" の値を表示します。 .It Dv DEBUG_RESID Pq No 4 .Fn complete_rqe においてデバッガに移行します。 .It Dv DEBUG_LASTREQS Pq No 8 最新のリクエストのリングバッファを保存します。 .It Dv DEBUG_REVIVECONFLICT Pq No 16 再生における衝突に関する情報を表示します。 .It Dv DEBUG_EOFINFO Pq No 32 ストライププレックスで .Dv EOF を返すとき、内部状態の情報を表示します。 .It Dv DEBUG_MEMFREE Pq No 64 最後にメモリアロケータが解放したメモリ領域に関する循環リストを管理します。 .It Dv DEBUG_REMOTEGDB Pq No 256 .Ic debug コマンドが発行されたときに、リモート .Nm gdb に移行します。 .It Dv DEBUG_WARNINGS Pq No 512 実装内のミラーの問題に関する警告を表示します。 .El .Pp .It Xo .Ic detach Oo Fl f Oc Ar plex .Xc .It Xo .Ic detach Oo Fl f Oc Ar subdisk .Xc .Nm Ic detach は指定されたプレックスやサブディスクを、 結合されているボリュームやプレックスから 分離します。分離するとボリュームのデータが欠ける可能性のある 場合、この操作は .Fl f オプションを指定しない限り実行されません。 オブジェクトが上位のオブジェクトに従った名前になっている場合 (例えば、プレックス .Li vol1.p7 に結合されているサブディスク .Li vol1.p7.s0 の場合)、 その名前は頭に .Dq Li ex- がついたものに変更されます (例えば .Li ex-vol1.p7.s0 に変更されます)。 その後の処理で必要であれば、その名前から頭の部分が外されます。 .Pp ストライプ化プレックスおよび RAID-5 プレックスにおいては、 .Ic detach はサブディスク数を減らしません。 その代わり、サブディスクには存在しないという印が付けられ、後で .Ic attach コマンドを使用して交換可能となります。 .Pp .It Ic dumpconfig Op Ar drive ... .Nm Ic dumpconfig は、指定されたドライブ上に保管された設定情報を表示します。ドライブ名が 指定されていない場合、 .Ic dumpconfig はシステム上にあるすべてのドライブから vinum パーティションを探し出し、 その情報をダンプします。設定の更新を無効にしている場合、このコマンドが 返す情報と .Ic list コマンドが返す情報とが同じにならないことがあります。このコマンドは、 主に保守およびデバッグ用に使用されるものです。 .Pp .It Ic info .Nm Ic info は .Nm のメモリ使用に関する情報を表示します。これは主にデバッグのためのものです。 .Fl v オプションを付けると、使用中のメモリ領域についての詳細な情報を表示します。 .Pp .Fl V オプションを付けると、 .Nm ドライバが扱った最大 64 個までの最近の I/O リクエストに関する情報を、 .Ic info は表示します。 この情報は、デバッグフラグ 8 が設定されているときのみ収集されます。 書式は次のようになります: .Bd -literal vinum -> info -V Flags: 0x200 1 opens Total of 38 blocks malloced, total memory: 16460 Maximum allocs: 56, malloc table at 0xf0f72dbc Time Event Buf Dev Offset Bytes SD SDoff Doffset Goffset 14:40:00.637758 1VS Write 0xf2361f40 91.3 0x10 16384 14:40:00.639280 2LR Write 0xf2361f40 91.3 0x10 16384 14:40:00.639294 3RQ Read 0xf2361f40 4.39 0x104109 8192 19 0 0 0 14:40:00.639455 3RQ Read 0xf2361f40 4.23 0xd2109 8192 17 0 0 0 14:40:00.639529 3RQ Read 0xf2361f40 4.15 0x6e109 8192 16 0 0 0 14:40:00.652978 4DN Read 0xf2361f40 4.39 0x104109 8192 19 0 0 0 14:40:00.667040 4DN Read 0xf2361f40 4.15 0x6e109 8192 16 0 0 0 14:40:00.668556 4DN Read 0xf2361f40 4.23 0xd2109 8192 17 0 0 0 14:40:00.669777 6RP Write 0xf2361f40 4.39 0x104109 8192 19 0 0 0 14:40:00.685547 4DN Write 0xf2361f40 4.39 0x104109 8192 19 0 0 0 11:11:14.975184 Lock 0xc2374210 2 0x1f8001 11:11:15.018400 7VS Write 0xc2374210 0x7c0 32768 10 11:11:15.018456 8LR Write 0xc2374210 13.39 0xcc0c9 32768 11:11:15.046229 Unlock 0xc2374210 2 0x1f8001 .Ed .Pp .Ar Buf フィールドは、ユーザバッファヘッダのアドレスを常に含みます。 ユーザリクエストに関連付けられるリクエスト (複数可) を識別するために 使用できますが、100% 信頼できるものというわけではありません: 理論的には、シーケンス中の 2 個のリクエストが同じバッファヘッダを使い得ますが、 これは一般的ではありません。 リクエストの先頭は、イベント .Ar 1VS または .Ar 7VS で識別可能です。 前述の 1 番目の例は、ユーザ要求に関連するリクエストを示しています。 2 番目は、ロックを伴うサブディスク I/O リクエストです。 前記の例では、複数のリクエストが単一のユーザリクエストに含まれています。 .Pp .Ar Event フィールドは、 リクエストチェーン中のイベントシーケンスに関連する情報を含みます。 .Ar 1 から .Ar 6 までの数字はイベントの大まかなシーケンスを示し、 2 文字の省略形は位置のニーモニックです。 .Bl -tag -width Lockwait .It 1VS (vinum の strategy) .Fn vinumstrategy の入口にある、ユーザリクエストに関する情報を表示します。 デバイス番号は .Nm デバイスであり、オフセットと長さはユーザパラメータです。 本ニーモニックは、常にリクエストシーケンスの先頭になります。 .It 2LR (リクエスト発行) 関数 .Fn launch_requests において低レベル .Nm リクエストを発行する直前の、ユーザリクエストを表示します。 パラメータは .Ar 1VS の情報と同じはずです。 .El .Pp ここから後のリクエストでは、利用可能である場合、 .Ar Dev は関連付けられたディスクパーティションのデバイス番号であり、 .Ar Offset はパーティションの先頭からのオフセットであり、 .Ar SD は .Va vinum_conf 中のサブディスクインデックスであり。 .Ar SDoff はサブディスクの先頭からのオフセットであり、 .Ar Doffset は関連付けられたデータリクエストのオフセットであり、 .Ar Goffset は関連付けられたグループリクエストのオフセットです。 .Bl -tag -width Lockwait .It 3RQ (リクエスト) 高レベルのリクエストを満たすために発行される、 いくつかありうる低レベル .Nm リクエストのうちのひとつを表示します。 この情報は、 .Fn launch_requests においても記録されます。 .It 4DN (完了) .Fn complete_rqe から呼ばれ、リクエストの完了を表示します。 この完了は、ステージ .Ar 4DN において .Fn launch_requests から発行されたリクエストか、またはステージ .Ar 5RD か .Ar 6RP の .Fn complete_raid5_write から発行されたリクエストにマッチするはずです。 .It 5RD (RAID-5 データ) .Fn complete_raid5_write から呼ばれ、 パリティ計算後に RAID-5 データストライプへ書き込まれたデータを表現します。 .It 6RP (RAID-5 パリティ) .Fn complete_raid5_write から呼ばれ、 パリティ計算後に RAID-5 パリティストライプへ書き込まれたデータを表現します。 .It 7VS サブディスク I/O リクエストを表示します。 通常、これらのリクエストは .Nm 内部のものであり、プレックスの初期化や再構築といった操作に使用します。 .It 8LR サブディスク I/O リクエストのために生成した、低レベル操作を表示します。 .It Lockwait プロセスがレンジロックを待っていることを示します。 パラメータは、リクエストに関連付けられたバッファヘッダと、 プレックス番号と、ブロック番号です。 内部的な理由で、ブロック番号は、 ストライプ開始アドレスよりも 1 個大きくなっています。 .It Lock レンジロックを取得済みであることを示します。 パラメータはレンジロックと同じです。 .It Unlock レンジロックを解放済みであることを示します。 パラメータはレンジロックと同じです。 .El .\" XXX .Pp .It Xo .Ic init .Op Fl S Ar size .Op Fl w .Ar plex | subdisk .Xc .Nm Ic init は指定したサブディスクに 0 を書き込んで初期化します。 プレックスが指定された場合はプレックス内の全サブディスクを初期化できます。 これはプレックス中のデータに矛盾のないことを確実にする唯一の方法です。 RAID-5 プレックスの使用前には、この初期化が必要です。 他の新規プレックスに対しても、この初期化を推奨します。 .Nm はプレックス中のすべてのサブディスクを並行して初期化します。 この操作には長い時間が かかるため、通常バックグラウンドで実行されます。 このコマンドの完了を待ちたい場合、 .Fl w (待ち) オプションを使用してください。 .Pp .Fl S オプションでデフォルト値の 16 kB と異なるサイズの書き込みブロックを 指定できます。 .Nm は初期化が完了するとコンソールメッセージを出力します。 .Pp .It Ic label Ar volume .Ic label コマンドは、ボリュームに .Em ufs 形式のボリュームラベルを書き込みます。これは適切に .Ic disklabel を呼び出すことに対しての、単純な代替方法です。 いくつかの .Em ufs コマンドはラベルを入手するために正規の .Xr ioctl 2 コールを使わず、依然としてラベルを捜してディスクの読み込みを行う ため、このコマンドは必要になります。 .Nm はボリュームのデータとは別にボリュームラベルを保持しているため、この コマンドは .Xr newfs 8 用には必要ありません。 このコマンドの価値は低下しています。 .Pp .It Xo .Ic list .Op Fl r .Op Fl V .Op Ar volume | plex | subdisk .Xc .It Xo .Ic l .Op Fl r .Op Fl V .Op Ar volume | plex | subdisk .Xc .It Xo .Ic ld .Op Fl r .Op Fl s .Op Fl v .Op Fl V .Op Ar volume .Xc .It Xo .Ic ls .Op Fl r .Op Fl s .Op Fl v .Op Fl V .Op Ar subdisk .Xc .It Xo .Ic lp .Op Fl r .Op Fl s .Op Fl v .Op Fl V .Op Ar plex .Xc .It Xo .Ic lv .Op Fl r .Op Fl s .Op Fl v .Op Fl V .Op Ar volume .Xc .Ic list は指定したオブジェクトの情報を表示するために使われます。引数が省略されると .Nm が認識しているすべてのオブジェクトについての情報が表示されます。 .Ic l コマンドは .Ic list と同じものです。 .Pp .Fl r オプションはボリュームとプレックスに関連します。 指定されると、そのオブジェクト下位のサブディスクと (ボリュームに対しては) プレックスの情報を再帰的に表示します。 .Ic lv , .Ic lp , .Ic ls , .Ic ld のコマンドは、それぞれボリューム、プレックス、サブディスク、そしてドライブの 情報だけを表示します。これはパラメータを指定しないで使う場合に特に有用です。 .Pp .Fl s オプションで .Nm は装置の統計情報を出力するようになり、 .Fl v (verbose: 饒舌な) オプションはいくらかの付加情報を出力させ、 そして .Fl V は数多くの付加情報を出力させます。 .Pp .It Ic makedev .Ic makedev コマンドは、ディレクトリ .Pa /dev/vinum を除去した上で、 現在の設定を反映するようなデバイスノードと共にこのディレクトリを再作成します。 本コマンドは、通常の場合に使用されることを意図していません。 非常時にのみ使用するために提供しています。 .Pp .It Xo .Ic mirror .Op Fl f .Op Fl n Ar name .Op Fl s .Op Fl v .Ar drives .Xc .Ic mirror コマンドは、ミラー化ボリュームを作成する .Ic create コマンドの、単純な代替手段です。 オプションを指定しないと、RAID-1 (ミラー化) ボリュームを、 2 つのコンカチネート化ボリュームで作成します。 各ドライブ中の最大の連続空間が、 プレックスのサブディスク作成のために使用されます。 1 番目のプレックスは、リストの奇数番号のドライブから構築され、 2 番目のプレックスは、リストの偶数番号のドライブから構築されます。 ドライブの大きさが異なる場合、プレックスの大きさは異なるでしょう。 .Pp .Fl s オプションを指定すると、 .Ic mirror はストライプの大きさが 256 kB のストライプ化プレックスを構築します。 各プレックスのサブディスクの大きさは、 プレックスを構成するドライブの中で、最小の連続ストレージの大きさです。 ここでもまた、プレックスの大きさは異なるかもしれません。 .Pp 通常、 .Ic mirror コマンドは任意の名前をボリュームと構成要素に付けます。 名前はテキスト .Dq Li vinum および小さな整数からなり、例えば .Dq Li vinum3 となります。 ボリュームに対して指定した名前を割り当てる .Fl n Ar name オプションで、上書きすることが可能です。 プレックスとサブディスクの名前は、通常の作法で、ボリューム名からとられます。 .Pp ドライブの名前には選択の余地はありません。 ドライブが既に .Nm ドライブとして初期化されていた場合、名前はそのままになります。 そうでない場合、ドライブにはテキスト .Dq Li vinumdrive と小さな整数から始まる名前が与えられ、例えば .Dq Li vinumdrive7 となります。 .Ic create コマンドと同様、 .Fl f オプションを使用して、以前の名前の上書きを指定可能です。 .Fl v オプションは、冗長な出力のために使用します。 .Pp このコマンドの例は、後述の .Sx 単純な設定 の節を参照してください。 .Pp .It Ic mv Fl f Ar drive object ... .It Ic move Fl f Ar drive object ... 指定したオブジェクトから新しいドライブへすべてのサブディスクを移動します。 オブジェクトは、サブディスク、ドライブあるいはプレックスです。ドライブ またはプレックスが指定された場合、オブジェクトに関係するすべての サブディスクが移動されます。 .Pp この機能は現在サブディスク中のデータを保存しないため .Fl f オプションが必要です。 この付加機能は、後日追加されます。しかしながら、この状態でも、故障した ディスクドライブを復旧させるのには十分です。 .Pp .It Ic printconfig Op Ar file 現在の設定のコピーを、 .Nm 設定を再生成可能な書式で、 .Ar file に書き込みます。 ディスク上に保存された設定とは違い、ドライブの定義を含みます。 .Ar file を指定しないと、 .Nm は一覧を .Dv stdout へ書き込みます。 .Pp .It Ic quit 対話モードで実行中のときに、 .Nm プログラムを終了します。通常は、文字 .Dv EOF を入力することで実現できます。 .Pp .It Ic read Ar disk ... .Ic read コマンドは、指定したディスクを走査し、作成済の設定情報を含む .Nm パーティションを探します。 そして、最近更新されたものから過去に更新されたものの順番で、 設定を読み込みます。 .Nm は最新のすべての設定情報を各ディスクパーティションに保持しています。 このコマンドの パラメータとして、設定の中の全スライスを指定する必要があります。 .Pp .Ic read コマンドは、他の .Nm パーティションを持つシステム上で、 .Nm 設定を選択的にロードすることを意図しています。 システム上の全パーティションを起動したい場合、 .Ic start コマンドを使用する方が簡単です。 .Pp 本コマンド実行時に .Nm がエラーになると、 ディスク上のコピーが壊れないようにするため、自動的な設定更新を無効にします。 これは、ディスク上の設定が、設定エラーを示す (例えば、有効な空間指定を持たないサブディスク) 場合にも同様です。 再度更新をオンにするには、 .Ic setdaemon と .Ic saveconfig のコマンドを使用してください。 デーモンオプションマスクのビット 2 をリセットして、 設定保存を再度有効にしてください。 .Pp .It Xo .Ic rebuildparity .Ar plex .Op Fl f .Op Fl v .Op Fl V .Xc 指定した RAID-4 または RAID-5 プレックスのパリティブロックを再構築します。 この操作はプレックス中のポインタを維持しますので、 望むならば、一時停止して後で同じ場所から再開可能です。 さらに、このポインタは .Ic checkparity コマンドも使用します。 最初にパリティの問題が検出された箇所から、 パリティブロックの再構築を開始可能です。 .Pp .Fl f フラグが指定されると、 .Ic rebuildparity はプレックスの先頭から再構築を開始します。 .Fl v フラグが指定されると、 .Ic rebuildparity はまず既存のパリティブロックをチェックし、 再構築前に、不整合情報を表示します。 .Fl V フラグが指定されると、 .Nm rebuildparity は進捗報告を表示します。 .Pp .It Xo .Ic rename .Op Fl r .Ar [ drive | subdisk | plex | volume ] .Ar newname .Xc 指定したオブジェクトの名前を変更します。 .Fl r オプションが指定されると、下位のオブジェクトがデフォルトの規則に従って命名され ます。プレックスの名前はボリューム名に .Li .p Ns Ar number を付加して作られ、 サブディスクの名前はプレックス名に .Li .s Ns Ar number を付加して作られます。 .\" .It Xo .\" .Ic replace .\" .Ar drive .\" .Ar newdrive .\" .Pp .\" 指定したドライブから新しいドライブへすべてのサブディスクを移動します。 .\" これは回復可能なサブディスクを回復しようとします。そして、回復不可能な .\" サブディスクを最初から作ります。 .\" もし、新しいドライブにこの操作のための容量が不足する時は、できるだけ .\" 多くのサブディスクを新しいドライブ上に組み込み、残りを元のドライブに .\" 残します。 .Pp .It Ic resetconfig .Ic resetconfig コマンドはシステム内の .Nm 設定を完全に削除します。設定を完全に消去したい場合にだけ使って下さい。 .Nm は確認を求めます。 .Li "NO FUTURE" (前途なし) という語句を以下の通りに入力する必要が あります。 .Bd -unfilled -offset indent .No # Nm Ic resetconfig WARNING! This command will completely wipe out your vinum configuration. All data will be lost. If you really want to do this, enter the text NO FUTURE .No "Enter text ->" Sy "NO FUTURE" Vinum configuration obliterated (訳注: ここから上記テキストの翻訳です) 警告! このコマンドはあなたの vinum 設定を完全に消し去ります。 全データは失われます。本当にこれを実行したい場合は、語句 NO FUTURE を入力して下さい。 入力してください -> \f(BINO FUTURE\fP vinum の設定は削除されました。 (訳注: ここまで上記テキストの翻訳です) .Ed .Pp メッセージが示すように、どたん場のコマンドです。 既存の設定をもう見たくもないとき以外は、このコマンドを使わないでください。 .Pp .It Xo .Ic resetstats .Op Fl r .Op Ar volume | plex | subdisk .Xc .Nm は各オブジェクトについて多数の統計カウンタを保持しています。詳細は ヘッダファイル .Aq Pa sys/dev/vinumvar.h を参照して下さい。 .\" XXX 仕上がったらここに入れる これらのカウンタをリセットするためには .Ic resetstats コマンドを使って下さい。 .Fl r オプションも共に指定すると、 .Nm は下位のオブジェクトのカウンタもリセットします。 .Pp .It Xo .Ic rm .Op Fl f .Op Fl r .Ar volume | plex | subdisk .Xc .Ic rm はオブジェクトを .Nm 設定から消去します。ひとたびオブジェクトが消去されるとそれを復旧する方法は ありません。通常 .Nm はオブジェクトを消去する前に数多くの一貫性確認を行います。 .Fl f オプションを指定すると、 .Nm はこの確認を省略し、オブジェクトを無条件に消去します。このオプションは細心の 注意を払って使用して下さい。ボリューム上のすべてのデータを失うことも あり得ます。 .Pp 通常、 .Nm は下位にプレックスを持つボリュームや、下位にサブディスクを持つプレックスを 消去することを拒否します。 .Fl f フラグを指定すると、 .Nm は無条件にオブジェクトを消去します。または .Fl r (recursive: 再帰的) フラグを使うことで、同様に下位のオブジェクトを 消去することができます。 .Fl r フラグを付けてボリュームを消去すると、プレックスとそれに属するサブディスクも 消去します。 .Pp .It Ic saveconfig 現在の設定をディスクに保存します。 .Nm は自動的に設定変更を保存するので、通常これは不要です。 起動時にエラーが発生した場合、更新は無効化されます。 .Ic setdaemon コマンドで再度有効化しても、 .Nm は設定を自動的にはディスクへ保存しません。 このコマンドを使用して設定を保存してください。 .\".It Xo .\".Ic set .\".Op Fl f .\".Ar state .\".Ar volume | plex | subdisk | disk .\".Xc .\".Ic set .\"は指定したオブジェクトに、妥当な状態 (下記 .\".Sx オブジェクト状態 .\"参照) のひとつを .\"セットします。 .\"通常、 .\".Nm .\"は変更を加える前に非常に多くの一貫性の調査を実行します。 .\".Fl f .\"オプションを指定すると、 .\".Nm .\"はこの調査を省略し、無条件に変更を行います。このオプションは大いに注意して .\"使って下さい。ボリューム上のすべてのデータを失うこともあり得ます。 .Pp .It Ic setdaemon Op Ar value .Ic setdaemon は .Nm デーモンの変数ビットマスクを設定します。 本コマンドは一時的なものであり、将来置き換えられます。 現在、ビットマスクにはビット 1 (全アクションを syslog へ記録する) と ビット 4 (設定を更新しない) があります。 オプションビット 4 はエラー回復時に有用かもしれません。 .Pp .It Xo .Ic setstate Ar state .Op Ar volume | plex | subdisk | drive .Xc .Ic setstate は、指定したオブジェクトの状態を指定した状態に設定します。 .Nm の通常の一貫性機構はバイパスされます。回復の目的でのみ使用すべきです。 このコマンドを誤って使用すると、システムを破壊する可能性があります。 .Pp .It Xo .Ic start .Op Fl S Ar size .Op Fl w .Op Ar plex | subdisk .Xc .Ic start は 1 つまたはそれ以上の .Nm オブジェクトを起動します ( .Em up 状態に移行させます)。 .Pp オブジェクト名を指定しないと、システムが .Nm ドライブであると知っているディスクを、 .Nm は走査します。その後、 .Ic read コマンドのところに書いてあるように、設定を読み込みます。 .Nm ドライブにはそのドライブ中のデータについてのすべての情報を持つヘッダが 入っており、その情報としてはプレックスとボリュームを表現するために必要な 他のドライブの名前を含んでいます。 .Pp 本コマンド実行時に .Nm がエラーになると、 ディスク上のコピーが壊れないようにするため、自動的な設定更新を無効にします。 これは、ディスク上の設定が、設定エラーを示す (例えば、有効な空間指定を持たないサブディスク) 場合にも同様です。 再度更新をオンにするには、 .Ic setdaemon と .Ic saveconfig のコマンドを使用してください。 デーモンオプションマスクのビット 4 をリセットして、 設定保存を再度有効にしてください。 .Pp オブジェクト名が指定されると、 .Nm はそれらを起動します。 通常、この操作はサブディスクに対してのみ行います。 動作はオブジェクトの現在の状態に依存します: .Bl -bullet .It オブジェクトが既に .Em up 状態の場合、 .Nm はなにもしません。 .It オブジェクトがサブディスクであり、 .Em down または .Em reborn の状態の場合、 .Nm は .Em up 状態に変更します。 .It オブジェクトがサブディスクであり、 .Em empty 状態の場合、変更はサブディスクに依存します。 サブディスクがプレックスの一部であり このプレックスが他のプレックスを含むボリュームの一部である場合、 .Nm はサブディスクを .Em reviving 状態にし、データをボリュームからコピーしようとします。 操作完了時に、サブディスクは .Em up 状態に設定されます。 サブディスクがプレックスの一部であり このプレックスが他のプレックスを含まないボリュームの一部である場合、 またはサブディスクがプレックスの一部ではない場合、 .Nm は即時にサブディスクを .Em up 状態にします。 .It オブジェクトがサブディスクであり、 .Em reviving 状態である場合、 .Nm は 再生 操作をオフラインにて継続します。 操作完了時に、サブディスクは .Em up 状態に設定されます。 .El .Pp サブディスクが .Em up 状態になると、 .Nm は自動的に、 サブディスクが属す可能性のあるプレックスとボリュームの状態をチェックし、 これらの状態を適切に更新します。 .Pp オブジェクトがプレックスの場合、 .Ic start は下位のサブディスクの (ボリュームの場合にはこれに加えてプレックスの) 状態を チェックし、起動可能なサブディスクを起動します。 .Pp マルチプレックスボリュームの中の 1 つのプレックスを起動するには、 ボリューム中の他のプレックスからデータをコピーする必要があります。 これにはしばしば長い時間がかかるため、バックグラウンドで実行されます。 この操作が完了することを待ちたい場合 (例えば、この操作をスクリプト中で実行している場合)、 .Fl w オプションを使用してください。 .Pp データのコピーにはたいして時間がかかりません。それは、さらに重大な負荷を システムにかけ得ます。 .Fl S オプションで転送サイズを、 .Fl i オプションで各ブロックを転送する間隔を (ミリ秒で) 指定可能です。 どちらもシステム負荷を軽減します。 .Pp .It Xo .Ic stop .Op Fl f .Op Ar volume | plex | subdisk .Xc パラメータを指定しないと、 .Ic stop は .Nm KLD を削除し、 .Xr vinum 4 を停止します。 活動状態のオブジェクトが存在しない場合のみ、行うことが可能です。 特に、 .Fl f オプションはこの要求に優先しません。 通常、 .Ic stop コマンドは、終了前に現在の設定をディスクへ書き戻します。 設定の更新が無効になっている場合にはこれはできませんので、 設定の更新が無効になっている場合には .Nm は停止しません。 これを上書きするには .Fl f オプションを指定します。 .Pp .Ic stop コマンドは .Nm が KLD としてロードされている場合のみ動作します。 静的に構成されたドライバをアンロードすることはできないからです。 .Nm が静的に構成されている場合、 .Nm Ic stop は失敗します。 .Pp オブジェクト名が指定されると、 .Ic stop はそのオブジェクトへのアクセスを無効化します。 オブジェクトに下位オブジェクトがある場合、 それらのサブオブジェクトは既に非活動状態 (stop また error) となっているか、 .Fl r と .Fl f のオプションが指定されていることが必要です。 このコマンドは、オブジェクトを設定から取り除きません。 .Ic start コマンドの後で再度アクセスができるようになります。 .Pp デフォルトでは .Nm は動作中のオブジェクトは停止しません。例えば、動作中のボリュームに結合 されているプレックスは停止できないし、オープン中のボリュームは停止できません。 .Fl f オプションは .Nm にこの確認を省略して無条件に削除するよう指示します。このオプションは 大いに注意し、よく理解した上で使って下さい。もし間違って使うとひどい データ破壊を起こすことがあります。 .Pp .It Xo .Ic stripe .Op Fl f .Op Fl n Ar name .Op Fl v .Ar drives .Xc .Ic stripe コマンドは、単一のストライプ化プレックスからなるボリュームを作成する .Ic create コマンドの、単純な代替手段です。 サブディスクの大きさは、 全ドライブで利用可能な最大の連続空間の大きさです。 ストライプの大きさは 256 kB に固定されています。 .Pp 通常、 .Ic stripe コマンドは任意の名前をボリュームと構成要素に付けます。 名前はテキスト .Dq Li vinum および小さな整数からなり、例えば .Dq Li vinum3 となります。 ボリュームに対して指定した名前を割り当てる .Fl n Ar name オプションで、上書きすることが可能です。 プレックスとサブディスクの名前は、通常の作法で、ボリューム名からとられます。 .Pp ドライブの名前には選択の余地はありません。 ドライブが既に .Nm ドライブとして初期化されていた場合、名前はそのままになります。 そうでない場合、ドライブにはテキスト .Dq Li vinumdrive と小さな整数から始まる名前が与えられ、例えば .Dq Li vinumdrive7 となります。 .Ic create コマンドと同様、 .Fl f オプションを使用して、以前の名前の上書きを指定可能です。 .Fl v オプションは、冗長な出力のために使用します。 .Pp このコマンドの例は、後述の .Sx 単純な設定 の節を参照してください。 .El .Sh 単純な設定 この節では、 .Ic concat , .Ic mirror , .Ic stripe コマンドを使用する、 .Nm 設定の単純なインタフェースを説明します。 これらのコマンドは、大概の通常状況では便利な設定を作成しますが、 .Ic create コマンド程の柔軟性はありません。 .Pp コマンドの解説は前述を参照してください。 ここでは例を示します。どれも同じディスクを使用しています。 最初のドライブ .Pa /dev/da1h は他のドライブよりも小さいことに注意してください。 各サブディスクの大きさに影響があります。 .Pp 次に示す例ではすべて .Fl v オプションを使用することにより、システムに渡すコマンドを見せ、 ボリュームの構造を列挙します。 .Fl v オプションを使用しないと、これらのコマンドは何も出力しません。 .Ss 単一コンカチネート化プレックスのボリューム 単一コンカチネート化プレックスのボリュームを使用し、 最大のストレージ容量を得ます。 ただし、ドライブ故障への耐性はありません。 .Bd -literal vinum -> concat -v /dev/da1h /dev/da2h /dev/da3h /dev/da4h volume vinum0 plex name vinum0.p0 org concat drive vinumdrive0 device /dev/da1h sd name vinum0.p0.s0 drive vinumdrive0 size 0 drive vinumdrive1 device /dev/da2h sd name vinum0.p0.s1 drive vinumdrive1 size 0 drive vinumdrive2 device /dev/da3h sd name vinum0.p0.s2 drive vinumdrive2 size 0 drive vinumdrive3 device /dev/da4h sd name vinum0.p0.s3 drive vinumdrive3 size 0 V vinum0 State: up Plexes: 1 Size: 2134 MB P vinum0.p0 C State: up Subdisks: 4 Size: 2134 MB S vinum0.p0.s0 State: up PO: 0 B Size: 414 MB S vinum0.p0.s1 State: up PO: 414 MB Size: 573 MB S vinum0.p0.s2 State: up PO: 988 MB Size: 573 MB S vinum0.p0.s3 State: up PO: 1561 MB Size: 573 MB .Ed .Pp この場合、4 ディスクすべての空間を使用し、 ボリュームの大きさは 2134 MB になります。 .Ss 単一ストライプ化プレックスのボリューム 単一ストライプ化プレックスのボリュームは コンカチネート化プレックスよりも性能が良いかもしれません。 しかし、ストライプ化プレックスの制約により、 ボリュームは小さいかもしれません。 これもまたドライブ故障の耐性はありません。 .Bd -literal vinum -> stripe -v /dev/da1h /dev/da2h /dev/da3h /dev/da4h drive vinumdrive0 device /dev/da1h drive vinumdrive1 device /dev/da2h drive vinumdrive2 device /dev/da3h drive vinumdrive3 device /dev/da4h volume vinum0 plex name vinum0.p0 org striped 256k sd name vinum0.p0.s0 drive vinumdrive0 size 849825b sd name vinum0.p0.s1 drive vinumdrive1 size 849825b sd name vinum0.p0.s2 drive vinumdrive2 size 849825b sd name vinum0.p0.s3 drive vinumdrive3 size 849825b V vinum0 State: up Plexes: 1 Size: 1659 MB P vinum0.p0 S State: up Subdisks: 4 Size: 1659 MB S vinum0.p0.s0 State: up PO: 0 B Size: 414 MB S vinum0.p0.s1 State: up PO: 256 kB Size: 414 MB S vinum0.p0.s2 State: up PO: 512 kB Size: 414 MB S vinum0.p0.s3 State: up PO: 768 kB Size: 414 MB .Ed .Pp この場合、サブディスクの大きさは利用できるディスクの最小に制限され、 ボリュームの大きさは 1659 MB になります。 .Ss 2 つのコンカチネート化プレックスのミラー化ボリューム 信頼性を向上するため、ミラー化およびボリューム化を使用します: .Bd -literal vinum -> mirror -v -n mirror /dev/da1h /dev/da2h /dev/da3h /dev/da4h drive vinumdrive0 device /dev/da1h drive vinumdrive1 device /dev/da2h drive vinumdrive2 device /dev/da3h drive vinumdrive3 device /dev/da4h volume mirror setupstate plex name mirror.p0 org concat sd name mirror.p0.s0 drive vinumdrive0 size 0b sd name mirror.p0.s1 drive vinumdrive2 size 0b plex name mirror.p1 org concat sd name mirror.p1.s0 drive vinumdrive1 size 0b sd name mirror.p1.s1 drive vinumdrive3 size 0b V mirror State: up Plexes: 2 Size: 1146 MB P mirror.p0 C State: up Subdisks: 2 Size: 988 MB P mirror.p1 C State: up Subdisks: 2 Size: 1146 MB S mirror.p0.s0 State: up PO: 0 B Size: 414 MB S mirror.p0.s1 State: up PO: 414 MB Size: 573 MB S mirror.p1.s0 State: up PO: 0 B Size: 573 MB S mirror.p1.s1 State: up PO: 573 MB Size: 573 MB .Ed .Pp この例ではボリューム名を .Ar mirror と指定しています。 1 つのドライブの大きさが他のドライブよりも小さいため、 2 つのプレックスの大きさは異なり、 ボリュームの最後の 158 MB には耐性がありません。 このような状況で完全な信頼性を保証するためには、 .Ic create コマンドを使用して 988 MB のボリュームを作成します。 .Ss 2 つのストライプ化プレックスのミラー化ボリューム 今度は、2 つのストライプ化プレックスのミラー化ボリュームを作成するために .Fl s オプションを使用します: .Bd -literal vinum -> mirror -v -n raid10 -s /dev/da1h /dev/da2h /dev/da3h /dev/da4h drive vinumdrive0 device /dev/da1h drive vinumdrive1 device /dev/da2h drive vinumdrive2 device /dev/da3h drive vinumdrive3 device /dev/da4h volume raid10 setupstate plex name raid10.p0 org striped 256k sd name raid10.p0.s0 drive vinumdrive0 size 849825b sd name raid10.p0.s1 drive vinumdrive2 size 849825b plex name raid10.p1 org striped 256k sd name raid10.p1.s0 drive vinumdrive1 size 1173665b sd name raid10.p1.s1 drive vinumdrive3 size 1173665b V raid10 State: up Plexes: 2 Size: 1146 MB P raid10.p0 S State: up Subdisks: 2 Size: 829 MB P raid10.p1 S State: up Subdisks: 2 Size: 1146 MB S raid10.p0.s0 State: up PO: 0 B Size: 414 MB S raid10.p0.s1 State: up PO: 256 kB Size: 414 MB S raid10.p1.s0 State: up PO: 0 B Size: 573 MB S raid10.p1.s1 State: up PO: 256 kB Size: 573 MB .Ed .Pp この場合、使用可能なボリュームはより小さくなります。 なぜなら、最小のドライブに適合するように、 第 1 プレックスが小さくなったためです。 .Sh 設定ファイル .Nm では、 .Ic create コマンドに渡すすべての引数は設定ファイルに入っている必要があります。 設定ファイルのエントリは、ボリュームやプレックスやサブディスクを定義します。 エントリは 1 行に 1 つということ以外には決まった書式はありません。 .Ss スケールファクタ これらの値は、バイトで指定しても良いですし、 次のスケールファクタのいずれか 1 つを後に付けても良いです: .Bl -tag -width indent .It s 値が 512 バイトのセクタ数であることを示します。 .It k 値がキロバイト数であることを示します (1024 バイト)。 .It m 値がメガバイト数であることを示します (1048576 バイト)。 .It g 値がギガバイト数であることを示します (1073741824 バイト)。 .It b .Tn VERITAS との互換性のために使用します。 これは、512 バイトのブロック数を意味します。 .Dq ブロック という語を別の意味で使用していますので、 この短縮形は混乱させるものです。 この短縮形の価値は低下しています。 .El .Pp 例えば、16777216 バイトという値は、 .Em 16m , .Em 16384k , .Em 32768s のいずれの表記も可能です。 .Pp 設定ファイルには以下のエントリを記述することができます。 .Pp .Bl -tag -width 4n .It Ic drive Ar name devicename Op Ar options ドライブを定義します。オプションは次の通りです: .Bl -tag -width 18n .It Cm device Ar devicename ドライブが乗るデバイスを指定します。 .Ar devicename は、例えば .Pa /dev/da1e や .Pa /dev/ad3s2h といったパーティションである必要があり、タイプ .Em vinum である必要があります。 .Dq Li c パーティションを使用してはなりません。 これはディスク全体のために予約されているからです。 .It Cm hotspare ドライブを .Dq ホットスペア ドライブであると定義します。 これは、故障したドライブと自動的に交換するために管理されます。 .Nm はこのドライブを他の用途に使用することを許しません。 特に、サブディスクをこの上に作成できません。 この機能はまだ完全には実装されていません。 .El .It Ic volume Ar name Op Ar options .Ar name という名前でボリュームを定義します。 オプションには次のものがあります。 .Bl -tag -width 18n .It Cm plex Ar plexname .It Nm plex Ar plexname 指定したプレックスをボリュームに追加します。 .Ar plexname が .Ar * として指定されると、 .Nm は設定ファイル中のボリューム定義の後で、次の妥当なエントリとなり得るプレックス の定義を捜します。 .It Cm readpol Ar policy ボリュームの .Em read policy (読み込み方針) を定義します。 .Ar policy は .Cm round か .Cm prefer Ar plexname のどちらかです。 .Nm は読み込み要求を、ただ 1 つのプレックスによって満たします。 .Cm round 読み込み方針は、読み込みを別々のプレックスから .Em ラウンドロビン 方式で 行うように指定します。 .Ar prefer 読み込み方針では、指定したプレックスから毎回読み込みを行います。 .It Cm setupstate マルチプレックスボリュームを作成する際に、すべてのプレックスの内容に一貫性が あると仮定します。通常こうなることはないため、デフォルトでは、 最初のプレックスを除いたすべてのプレックスを .Em faulty 状態に設定します。 .Ic start コマンドを使って、最初に一貫性のある状態にする必要があります。しかし ストライプ化プレックスとコンカチネート化プレックスの場合には、普通は一貫性が ないままでも問題にはなりません。ボリュームをファイルシステムや スワップパーティションとして使う場合にはディスク上の以前の内容は どうでもよいため、それは無視されます。この危険を受け入れる場合には、 .Cm setupstate キーワードを使って下さい。 設定ファイル中でボリュームの直後で定義されるプレックスに対してのみ 適用されます。 後でプレックスをボリュームに追加する場合には、 これらのプレックスを .Ic start コマンドで統合する必要があります。 .Pp RAID-5 プレックスには .Ic init を使うことが .Em 必要 なことに注意して下さい。さもないと 1 つのサブディスクに障害が起きた時、大きくデータが破壊されます。 .El .It Ic plex Op Ar options プレックスを定義します。ボリュームとは違い、名前は不要です。 オプションには次のものを指定可能です: .Bl -tag -width 18n .It Cm name Ar plexname プレックスの名前を指定します。プレックスやサブディスクに名前をつける場合には .Cm name キーワードが必要になることに注意して下さい。 .It Cm org Ar organization Op Ar stripesize プレックスの編成を指定します。 .Ar organization は .Cm concat か .Cm striped か .Cm raid5 のいずれかです。 .Cm striped と .Cm raid5 のプレックスに対しては .Ar stripesize 引数を指定する必要がありますが、 .Cm concat のプレックスに対しては省略する必要があります。 .Ar striped タイプについては各ストライプの幅を指定します。 .Ar raid5 については、グループの大きさを指定します。 グループとはプレックスの一部分であり、 同じサブディスクに入っているすべてのデータのパリティが入っています。 それはプレックスの大きさの約数である必要があり (つまり、プレックスの大きさをストライプの大きさで割ったものは 整数である必要があり)、 ディスクセクタ長 (512バイト) の倍数である必要があります。 .Pp 最適な性能のためには、ストライプの大きさは少なくとも 128kB であるべきです。 これより小さくすると、 個々のリクエストが複数のディスクに対して割り当てられることにより、 I/O のアクティビティが非常に増加します。 本マッピングによる並行転送数増加に起因する性能向上は、 レイテンシ増加に起因する性能劣化を引き起しません。 ストライプの大きさの目安は、256 kB から 512 kB の間です。 2 の羃乗は避けるべきです。 2 の羃乗を使用すると、すべてのスーパブロックを 最初のサブディスクに置く傾向があるからです。 .Pp ストライプ化プレックスは最低 2 つのサブディスクを持つ必要がありますし (そうでないとコンカチネート化プレックスになります)、 それぞれは同じ大きさである必要があります。 RAID-5 プレックスは最低 3 つのサブディスクを持つ必要があり、 それぞれは同じ大きさである必要があります。 実際には RAID-5 プレックスは最低 5 つのサブディスクから構成されるべきです。 .It Cm volume Ar volname プレックスを、指定したボリュームに追加します。 .Cm volume キーワードが指定されないと、プレックスは設定ファイル中の最後に記述された ボリュームに追加されます。 .It Cm sd Ar sdname offset 指定したサブディスクをプレックスの .Ar offset の位置に追加します。 .El .It Ic subdisk Op Ar options サブディスクを定義します。オプションには次のものを指定可能です: .Bl -hang -width 18n .It Cm name Ar name サブディスクの名前を指定します。これは必ずしも指定する必要は ありません。 上記の .Sx オブジェクトの命名 を参照してください。 サブディスクに名前をつける場合には .Cm name キーワードを指定する必要があることに注意して下さい。 .It Cm plexoffset Ar offset プレックス内のサブディスクの始点を指定します。指定がないと、 .Nm はすでにサブディスクがあればその直後の領域を割り当て、なければ プレックスの先頭から割り当てます。 .It Cm driveoffset Ar offset ドライブ内のサブディスクの始点を指定します。指定がないと、 .Nm はドライブ中で最初の .Ar length バイト連続の空き領域を割り当てます。 .It Cm length Ar length サブディスクの大きさを指定します。このキーワードは必須です。 デフォルト値はありません。 値 0 を指定すると、 .Dq ドライブ上で最大限利用可能な連続空き領域を使用 という意味になります。 ドライブが空の場合、サブディスクとしてドライブ全体を使用することを意味します。 .Cm length は .Cm len と短縮することもできます。 .It Cm plex Ar plex サブディスクが属すプレックスを指定します。デフォルトでは、サブディスクは 最後に記述されたプレックスに属します。 .It Cm drive Ar drive サブディスクが乗るドライブを指定します。デフォルトでは最後に記述された ドライブ上に位置します。 .El .El .Sh 設定ファイル例 .Bd -literal # vinum 設定ファイル例 # # ドライブ drive drive1 device /dev/da1h drive drive2 device /dev/da2h drive drive3 device /dev/da3h drive drive4 device /dev/da4h drive drive5 device /dev/da5h drive drive6 device /dev/da6h # 1 つのストライプ化プレックスをもつボリューム volume tinyvol plex org striped 512b sd length 64m drive drive2 sd length 64m drive drive4 volume stripe plex org striped 512b sd length 512m drive drive2 sd length 512m drive drive4 # 2 つのプレックス volume concat plex org concat sd length 100m drive drive2 sd length 50m drive drive4 plex org concat sd length 150m drive drive4 # 1 つのストライプ化プレックスと 1 つのコンカチネート化プレックスを持つボリューム volume strcon plex org striped 512b sd length 100m drive drive2 sd length 100m drive drive4 plex org concat sd length 150m drive drive2 sd length 50m drive drive4 # 1 つの RAID-5 プレックスと 1 つのストライプ化プレックスを持つボリューム # RAID-5 ボリュームの方が 1 つのサブディスク分だけ大きいことに注意 volume vol5 plex org striped 64k sd length 1000m drive drive2 sd length 1000m drive drive4 plex org raid5 32k sd length 500m drive drive1 sd length 500m drive drive2 sd length 500m drive drive3 sd length 500m drive drive4 sd length 500m drive drive5 .Ed .Sh ドライブレイアウト上の考慮点 現在、 .Nm ドライブは .Bx ディスクパーティションです。それは 他の用途で使用されているデータの上書きを避けるために .Em vinum タイプである必要があります。 .Nm disklabel Fl e を使用して、パーティションタイプ定義を編集してください。 次の表示は、 .Xr disklabel 8 が示す典型的なパーティションレイアウトです: .Bd -literal 8 partitions: # size offset fstype [fsize bsize bps/cpg] a: 81920 344064 4.2BSD 0 0 0 # (Cyl. 240*- 297*) b: 262144 81920 swap # (Cyl. 57*- 240*) c: 4226725 0 unused 0 0 # (Cyl. 0 - 2955*) e: 81920 0 4.2BSD 0 0 0 # (Cyl. 0 - 57*) f: 1900000 425984 4.2BSD 0 0 0 # (Cyl. 297*- 1626*) g: 1900741 2325984 vinum 0 0 0 # (Cyl. 1626*- 2955*) .Ed .Pp この例では、パーティション .Dq Li g を .Nm パーティションとして使用可能です。パーティション .Dq Li a , .Dq Li e , .Dq Li f は、 .Em UFS ファイルシステムまたは .Em ccd パーティションとして使用可能です。パーティション .Dq Li b はスワップパーティションであり、パーティション .Dq Li c はディスク全体を表現するため他の用途に使用できません。 .Pp .Nm は各パーティションの先頭から 265 セクタを設定情報に使用するため、 サブディスクの最大の大きさはドライブよりも 265 セクタ小さくなります。 .Sh ログファイル .Nm はログファイルを管理します。 ログファイルは、デフォルトでは .Pa /var/tmp/vinum_history であり、 .Nm に対して発行したコマンドの履歴を保持します。 環境変数 .Ev VINUM_HISTORY をファイルの名前に設定することにより、 このファイルの名前をオーバライド可能です。 .Pp ログファイル中のメッセージの前には日付が付きます。 デフォルトの書式は .Qq Li %e %b %Y %H:%M:%S です。書式の文字列に関するさらなる詳細については .Xr strftime 3 を参照してください。 これは環境変数 .Ev VINUM_DATEFORMAT でオーバライド可能です。 .Sh VINUM 設定法 本節では、 .Nm システムの実装方法に関する、現実的なアドバイスを行います。 .Ss データを何処に置くか まず決定が必要な選択は、データを何処に置くかです。 .Nm 専用のディスクパーティションが必要です。 これらは、デバイスやパーティション .Dq Li c -ではなく、パーティションであるべきでです。 +ではなく、パーティションであるべきです。 例えば、適切な名前とは、 .Pa /dev/da0e や .Pa /dev/ad3s4a です。 不適切な名前とは、パーティションではなくデバイスを表現する .Pa /dev/da0 , .Pa /dev/da0s1 や、ディスク全体を表現しタイプ .Em unused であるべき .Pa /dev/ad1c です。 前述の、 .Sx ドライブレイアウト上の考察点 下にある使用例を参照してください。 .Ss ボリュームのデザイン .Nm ボリュームの設定方法は、あなたの意図に依存します。 次のように多くの可能性があります: .Bl -enum .It 多くの小さなディスクを結合して、 適切な大きさのファイルシステムを作成したいと考えるかもしれません。 例えば、小さなディスクを 5 個持っていて、 全空間を単一ボリュームとして使用したい場合、次のような設定ファイルを書きます: .Bd -literal -offset indent drive d1 device /dev/da2e drive d2 device /dev/da3e drive d3 device /dev/da4e drive d4 device /dev/da5e drive d5 device /dev/da6e volume bigger plex org concat sd length 0 drive d1 sd length 0 drive d2 sd length 0 drive d3 sd length 0 drive d4 sd length 0 drive d5 .Ed .Pp この場合、サブディスクの長さを 0 と指定します。 これは、 .Dq ドライブ上にある空き空間のうち、最大領域を使用する ことを意味します。 指定するサブディスクが、ドライブ上の唯一のサブディスクである場合、 このサブディスクは使用可能な空間全体を使用します。 .It ディスク故障に対する追加の回復力 (レジリエンス; resilience) を .Nm に与えたい場合を考えます。 選択肢としては、 .Dq ミラーリング とも呼ばれる RAID-1 か、 .Dq パリティ とも呼ばれる RAID-5 があります。 .Pp ミラーリングの設定のためには、 単一ボリュームの中に複数のプレックスを作成する必要があります。 例えば、 2 GB のミラー化ボリュームを作成するには、 次のような設定ファイルを作成します: .Bd -literal -offset indent drive d1 device /dev/da2e drive d2 device /dev/da3e volume mirror plex org concat sd length 2g drive d1 plex org concat sd length 2g drive d2 .Ed .Pp ミラー化ドライブを作成するときには、 各プレックスからのデータが、 違う物理ディスク上にあることを保証することが重要です。 これにより、単一ドライブ故障においても、 .Nm はボリュームの完全なアドレス空間にアクセス可能となります。 各プレックスが、 完全なボリュームと同じだけのデータを必要とすることに注意してください: この例では、ボリュームは 2 GB の大きさですが、各プレックス (と各サブディスク) は 2 GB を必要としますので、全体のディスクストレージ要求は 4 GB となります。 .Pp RAID-5 の設定をするには、タイプ .Cm raid5 の単一プレックスを作成します。 例えば、回復力を持つ 2 GB に相当するボリュームを作成するには、 次のような設定ファイルを使用します: .Bd -literal -offset indent drive d1 device /dev/da2e drive d2 device /dev/da3e drive d3 device /dev/da4e drive d4 device /dev/da5e drive d5 device /dev/da6e volume raid plex org raid5 512k sd length 512m drive d1 sd length 512m drive d2 sd length 512m drive d3 sd length 512m drive d4 sd length 512m drive d5 .Ed .Pp RAID-5 プレックスは、最低 3 個のサブディスクを必要とします。 これらのうち 1 個には、パリティ情報を格納するので、 データストレージとしては使用しません。 より多くのディスクを使用すると、 より多くの割合のディスクストレージを、 データストレージとして使用可能となります。 この例では、総ストレージ使用量は 2.5 GB です。 これに対し、ミラー設定での総ストレージ使用量は 4 GB です。 最小の 3 個のディスクだけを使用する場合、 情報格納のために次のように 3 GB を必要とします: .Bd -literal -offset indent drive d1 device /dev/da2e drive d2 device /dev/da3e drive d3 device /dev/da4e volume raid plex org raid5 512k sd length 1g drive d1 sd length 1g drive d2 sd length 1g drive d3 .Ed .Pp ミラー化ドライブを作成するときには、 各サブディスクからのデータが、 違う物理ディスク上にあることを保証することが重要です。 これにより、単一ドライブ故障においても、 .Nm はボリュームの完全なアドレス空間にアクセス可能となります。 .It また、 .Nm の設定により、 ファイルシステムへのアクセスの並行性を増したいと考えるかもしれません。 多くの場合、単一のファイルシステムへのアクセスは、 ディスク速度により制限されます。 ボリュームを複数のディスクに分散することにより、 複数アクセス環境でのスループットを増すことが可能です。 この技術は、単一アクセス環境では、 ほとんど効果がないかまったく効果がありません。 .Nm は .Dq ストライピング または RAID-0 とも呼ばれる技術を使用し、アクセスの並行性を増します。 RAID-0 という名称は誤解を生じさせるものです: なぜなら、ストライピングは冗長性も更なる信頼性も提供しないからです。 実際、信頼性は低下します。 なぜなら、単一ディスクの故障はボリュームを使用不可とし、 多くのディスクを使うほどこれらのうち 1 個が故障する確率は増加するからです。 .Pp ストライピングの実装のためには、 .Cm striped (ストライプ化) プレックスを使用します: .Bd -literal -offset indent drive d1 device /dev/da2e drive d2 device /dev/da3e drive d3 device /dev/da4e drive d4 device /dev/da5e volume raid plex org striped 512k sd length 512m drive d1 sd length 512m drive d2 sd length 512m drive d3 sd length 512m drive d4 .Ed .Pp ストライプ化プレックスの最低サブディスク数は 2 個です。 多くのディスクを使用するほど、性能が向上します。 .It 両方の最良点を得ることにより、回復力と性能の両方を得ることを考えます。 これは、RAID-10 (RAID-1 と RAID-0 の組み合わせ) と呼ばれることがあります。 この名称もまた誤解を生じさせるものです。 .Nm では、次のような設定ファイルを使用可能です: .Bd -literal -offset 4n drive d1 device /dev/da2e drive d2 device /dev/da3e drive d3 device /dev/da4e drive d4 device /dev/da5e volume raid setupstate plex org striped 512k sd length 512m drive d1 sd length 512m drive d2 sd length 512m drive d3 sd length 512m drive d4 plex org striped 512k sd length 512m drive d4 sd length 512m drive d3 sd length 512m drive d2 sd length 512m drive d1 .Ed .Pp ここでは、プレックスはストライプ化され、性能を向上しています。 そして、このようなプレックスが 2 個あり、回復力を向上しています。 この例で、2 番目のプレックスのサブディスクの順番が、 1 番目のプレックスの逆になっていることに注意してください。 これは性能のためであり、後で議論します。 更に、ボリューム指定にキーワード .Cm setupstate を含み、全プレックスが作成後に .Em up となることを保証しています。 .El .Ss ボリュームの作成 ひとたび設定ファイルを作成した後は、 .Nm を起動し、ボリュームを作成します。 この例では、設定ファイルは .Pa configfile です: .Bd -literal -offset 2n # vinum create -v configfile 1: drive d1 device /dev/da2e 2: drive d2 device /dev/da3e 3: volume mirror 4: plex org concat 5: sd length 2g drive d1 6: plex org concat 7: sd length 2g drive d2 Configuration summary Drives: 2 (4 configured) Volumes: 1 (4 configured) Plexes: 2 (8 configured) Subdisks: 2 (16 configured) Drive d1: Device /dev/da2e Created on vinum.lemis.com at Tue Mar 23 12:30:31 1999 Config last updated Tue Mar 23 14:30:32 1999 Size: 60105216000 bytes (57320 MB) Used: 2147619328 bytes (2048 MB) Available: 57957596672 bytes (55272 MB) State: up Last error: none Drive d2: Device /dev/da3e Created on vinum.lemis.com at Tue Mar 23 12:30:32 1999 Config last updated Tue Mar 23 14:30:33 1999 Size: 60105216000 bytes (57320 MB) Used: 2147619328 bytes (2048 MB) Available: 57957596672 bytes (55272 MB) State: up Last error: none Volume mirror: Size: 2147483648 bytes (2048 MB) State: up Flags: 2 plexes Read policy: round robin Plex mirror.p0: Size: 2147483648 bytes (2048 MB) Subdisks: 1 State: up Organization: concat Part of volume mirror Plex mirror.p1: Size: 2147483648 bytes (2048 MB) Subdisks: 1 State: up Organization: concat Part of volume mirror Subdisk mirror.p0.s0: Size: 2147483648 bytes (2048 MB) State: up Plex mirror.p0 at offset 0 Subdisk mirror.p1.s0: Size: 2147483648 bytes (2048 MB) State: up Plex mirror.p1 at offset 0 .Ed .Pp .Fl v フラグは、設定に従ってファイルをリストするよう、 .Nm に指示します。その後、 .Ic list Fl v コマンドと同じ書式で、現在の設定をリストします。 .Ss より多くのボリュームを作成する ひとたび .Nm ボリュームを作成した後は、 .Nm はこれらの情報を内部の設定ファイルにて管理します。 再度作成する必要はありません。 特に、 .Ic create コマンドを再実行すると、追加のオブジェクトを作ることになります: .Bd -literal # vinum create sampleconfig Configuration summary Drives: 2 (4 configured) Volumes: 1 (4 configured) Plexes: 4 (8 configured) Subdisks: 4 (16 configured) D d1 State: up Device /dev/da2e Avail: 53224/57320 MB (92%) D d2 State: up Device /dev/da3e Avail: 53224/57320 MB (92%) V mirror State: up Plexes: 4 Size: 2048 MB P mirror.p0 C State: up Subdisks: 1 Size: 2048 MB P mirror.p1 C State: up Subdisks: 1 Size: 2048 MB P mirror.p2 C State: up Subdisks: 1 Size: 2048 MB P mirror.p3 C State: up Subdisks: 1 Size: 2048 MB S mirror.p0.s0 State: up PO: 0 B Size: 2048 MB S mirror.p1.s0 State: up PO: 0 B Size: 2048 MB S mirror.p2.s0 State: up PO: 0 B Size: 2048 MB S mirror.p3.s0 State: up PO: 0 B Size: 2048 MB .Ed .Pp この例では (今回は .Fl f フラグを付けています)、 .Ic create の再実行により 4 個の新規プレックスを作成し、 それぞれが新規サブディスクを持ちます。 他のボリュームを追加したい場合、これらのための新規設定ファイルを作成します。 .Nm が既に知っているドライブを参照する必要はありません。 例えば、ボリューム .Pa raid を 4 個のディスク .Pa /dev/da1e , .Pa /dev/da2e , .Pa /dev/da3e , .Pa /dev/da4e 上に作成するには、他の 2 個についてのみ記述するだけで良いです: .Bd -literal -offset indent drive d3 device /dev/da1e drive d4 device /dev/da4e volume raid plex org raid5 512k sd size 2g drive d1 sd size 2g drive d2 sd size 2g drive d3 sd size 2g drive d4 .Ed .Pp この設定ファイルでは、次のようになります: .Bd -literal # vinum create newconfig Configuration summary Drives: 4 (4 configured) Volumes: 2 (4 configured) Plexes: 5 (8 configured) Subdisks: 8 (16 configured) D d1 State: up Device /dev/da2e Avail: 51176/57320 MB (89%) D d2 State: up Device /dev/da3e Avail: 53220/57320 MB (89%) D d3 State: up Device /dev/da1e Avail: 53224/57320 MB (92%) D d4 State: up Device /dev/da4e Avail: 53224/57320 MB (92%) V mirror State: down Plexes: 4 Size: 2048 MB V raid State: down Plexes: 1 Size: 6144 MB P mirror.p0 C State: init Subdisks: 1 Size: 2048 MB P mirror.p1 C State: init Subdisks: 1 Size: 2048 MB P mirror.p2 C State: init Subdisks: 1 Size: 2048 MB P mirror.p3 C State: init Subdisks: 1 Size: 2048 MB P raid.p0 R5 State: init Subdisks: 4 Size: 6144 MB S mirror.p0.s0 State: up PO: 0 B Size: 2048 MB S mirror.p1.s0 State: up PO: 0 B Size: 2048 MB S mirror.p2.s0 State: up PO: 0 B Size: 2048 MB S mirror.p3.s0 State: up PO: 0 B Size: 2048 MB S raid.p0.s0 State: empty PO: 0 B Size: 2048 MB S raid.p0.s1 State: empty PO: 512 kB Size: 2048 MB S raid.p0.s2 State: empty PO: 1024 kB Size: 2048 MB S raid.p0.s3 State: empty PO: 1536 kB Size: 2048 MB .Ed .Pp RAID-5 プレックスの大きさに注意してください: 6 GB しかありませんが、 これを構成するためにディスク空間を 8 GB 使用しています。 これは、サブディスク 1 個分相当をパリティデータ格納に使用しているからです。 .Ss Vinum の再起動 システムのリブート時に、 .Ic start コマンドで .Nm を起動します: .Pp .Dl "# vinum start" .Pp これにより、システム中の全 .Nm ドライブが起動します。 なんらかの理由で一部のドライブのみを起動したい場合、 .Ic read コマンドを使用してください。 .Ss 性能関連 最高性能の RAID アレイ設定に関する、多くの誤った考えが存在しています。 特に、ほとんどのシステムで使用しているストライプの大きさは、小さ過ぎます。 以降の議論は、 .Nm だけでなく、全 RAID システムにあてはまります。 .Pp .Fx のブロック I/O システムは、.5 kB から 128 kB までの要求を発行します; .\" mix = workload mix ? 典型的なミックスでは、ほぼ 8 kB です。 どんなストライピングシステムにおいても、 ある要求が 2 個の物理要求に分割されることを避けることはできませんし、 ストライプを十分細かくするならばより多くに分割されてしまいます。 これにより、甚大な性能劣化となります: ディスクあたりの転送時間の削減は、 より大きなオーダで増加するレイテンシによって相殺されてしまいます。 .Pp 最近のディスクの大きさと .Fx のブロック I/O システムでは、 ストライプの大きさを 256 kB から 512 kB にすると、 適度に少数な要求に分割されることを期待できます; 正しい RAID の実装では、 大きなディスクでのストライプの大きさを 2 または 4 MB に増さない 明確な理由はありません。 .Pp ストライプサイズを選択するときには、 最新の UFS ファイルシステムのシリンダグループの大きさは 32 MB であることを 認識していてください。 ストライプサイズとディスク数が共に 2 の累乗の場合、 すべてのスーパブロックと inode が同一のサブディスクに置かれる可能性があります。 これは、性能に重大な影響を与えます。 代りに奇数、例えば 479 kB を選択してください。 .Pp 複数アクセスシステムでの転送のインパクトを考えるためのもっとも容易な方法は、 潜在的なボトルネック、すなわちディスクサブシステムの観点から見ることです: つまり、転送に要するディスク時間の総計はいくらか?です。 ほとんどすべてがキャッシュされているので、 要求と完了との時間的な関係はそれほど重要ではありません: 重要なパラメータは、要求がディスクを活動状態にする総時間であり、 この間ディスクは他の転送ができなくなります。 この結果、転送が同時に発生しても違う時に発生しても、 実際には問題とはなりません。 実際的には、我々が見ている時間は、レイテンシの総和 (位置決定時間と回転遅延、 言い替えるとデータがディスクヘッド下に来るまでの時間) と総転送時間です。 同じ速度のディスクへの転送においては、 転送時間は転送の大きさの合計のみに依存します。 .Pp 24 kB の典型的なニュースの記事やウェブページを考えると、 これは 1 回の I/O で読み込めます。 ディスクが転送レート 6 MB/s で平均位置決定時間 8 ms であり、 ファイルシステムを 4 kB ブロックであるとします。 24 kB ですから、断片化を考慮する必要はなく、 ファイルは 4 kB 境界から開始します。 必要な転送回数はブロック開始位置に依存します: 式は (S + F - 1) / S となり、 S はファイルシステムブロック数でのストライプの大きさ、 F はファイルシステムブロック数でのファイルの大きさです。 .Bl -enum .It ストライプの大きさは 4 kB。転送回数は 6 回。 サブシステムの負荷: レイテンシ 48 ms、転送 2 ms、合計 50 ms。 .It ストライプの大きさは 8 kB。転送回数は 3.5 回。 サブシステムの負荷: レイテンシ 28 ms、転送 2 ms、合計 30 ms。 .It ストライプの大きさは 16 kB。転送回数は 2.25 回。 サブシステムの負荷: レイテンシ 18 ms、転送 2 ms、合計 20 ms。 .It ストライプの大きさは 256 kB。平均転送回数は 1.08 回。 サブシステムの負荷: レイテンシ 8.6 ms、転送 2 ms、合計 10.6 ms。 .It ストライプの大きさは 4 MB。平均転送回数は 1.0009 回。 サブシステムの負荷: レイテンシ 8.01 ms、転送 2 ms、合計 10.01 ms。 .El .Pp ハードウェア RAID システムによっては、 大きなストライプでは問題があるものがあるようです: このようなシステムでは完全なストライプを常にディスクとの間で転送するようで、 大きなストライプは性能に逆効果となります。 .Nm ではこの問題の被害を受けません: すべてのディスク転送を最適化し、不要なデータを転送しないからです。 .Pp 良く知られたベンチマークプログラムで真の複数アクセス状態 (100 を越える同時ユーザ) をテストするものはないので、 この主張の正しさを証明することは困難であることに注意してください。 .Pp これらのことを考えると、次の事項が .Nm ボリュームの性能に影響します: .Bl -bullet .It ストライピングは、複数アクセスのみの性能を向上します。 各要求が違うディスク上にある確率が増加するからです。 .It 複数ドライブにまたがるコンカチネート化 UFS ファイルシステムもまた、 複数ファイルアクセスの性能を向上します。 UFS は、ファイルシステムをシリンダグループに分割し、 ファイルを単一のシリンダグループに置こうとするからです。 一般的に、ストライピングほどは効果がありません。 .It ミラーリングは、読み込み複数アクセスの性能を向上可能です。 デフォルトでは .Nm は、連続する複数の読み込みを、 連続する複数のプレックスに対して発行するからです。 .It ミラーリングは、複数アクセスか単一アクセスかに関わらず、 すべての書き込みの性能を劣化させます。 両方のプレックスに対し、データを書き込む必要があるからです。 これが、前述のミラーリング設定におけるサブディスクのレイアウトの説明です: 各プレックス中の対応するサブディスクが別の物理ディスクにある場合、 書き込みコマンドは並列に発行可能です。 しかし、同じ物理ディスクにある場合、逐次的に実行されてしまいます。 .It RAID-5 の読み込みは、 ストライプ化の読み込みと本質的に同じ考慮すべき点があります。 ただし、ストライプ化プレックスがミラー化ボリュームの一部である場合を除きます。 この場合、ミラー化ボリュームの方が性能が良くなります。 .It RAID-5 の書き込みは、ストライプ化の書き込みの約 25% の速度です: 書き込みを行うには、 .Nm はまずデータブロックと対応するパリティブロックを読み込み、 いくばくかの計算を行い、 パリティブロックとデータブロックを書き戻す必要がありますので、 ストライプ化プレックスに対する書き込みの 4 倍の転送回数となります。 一方、これはミラーリングのコストにより相殺されますので、 単一 RAID-5 プレックスのボリュームへの書き込みは、 2 個のストライプ化プレックスからなる正しく設定されたボリュームへの 書き込み速度の半分となります。 .It .Nm の設定が変わると (例えば、オブジェクトの追加や削除、またはオブジェクトの状態変更)、 .Nm は 128 kB までの更新された設定を各ドライブに書き込みます。 ドライブ数が増加すると、この時間が長くなります。 .El .Ss Vinum ボリューム上にファイルシステムを作成する .Nm ボリューム上にファイルシステムを作成する前に .Xr disklabel 8 を実行する必要はありません。 .Xr newfs 8 だけを実行してください。 .Fl v オプションを使用して、 デバイスがパーティションに分割されないようにしてください。 例えば、ボリューム .Pa mirror 上にファイルシステムを作成するには、次のコマンドを入力します: .Pp .Dl "# newfs -v /dev/vinum/mirror" .Pp .Nm の設定に関係する数個のその他のことがらがあります: .Bl -bullet .It 複数のドライブを単一ディスク上に作成しても、利益はありません。 各ドライブは 131.5 kB のデータをラベルと設定情報に使用し、 設定変更時に性能が劣化します。 適切な大きさのサブディスクを使用してください。 .It コンカチネート化 .Nm プレックスの大きさを増すことはできますが、 現在のところストライプ化プレックスと RAID-5 プレックスでは増せません。 現在のところ既存の UFS ファイルシステムの大きさを増すこともできません。 プレックスおよびファイルシステムを拡張可能とする計画はあります。 .El .Sh 状態管理 (STATE MANAGEMENT) Vinum オブジェクトは .Em state の概念を持ちます。 詳細は .Xr vinum 4 を参照して下さい。もしそれらの状態が .Em up なら、それらは完全にアクセス可能なだけです。 オブジェクトの状態を .Em up に変更するには .Ic start コマンドを使います。オブジェクトの状態を .Em down に変更するには .Ic stop コマンドを使います。 通常、他の状態はオブジェクト間の関係によって自動的に作られます。 例えば、もしあなたがボリュームにプレックスを追加したら、プレックスの サブディスクは、ハードウェアがアクセス可能であるけれども、サブディスク上の データは不正であることを示す .Em empty 状態に設定されるでしょう。この状態の結果として、プレックスは .Em faulty 状態に設定されるでしょう。 .Ss `reviving' 状態 多くの場合、あなたがサブディスクを起動する時に、システムはサブディスクに データをコピーしなければなりません。 サブディスクの大きさによりますが、これは長い時間かかります。この間、 サブディスクは .Em reviving 状態に設定されます。コピー操作が正しく終了すれば、それは自動的に .Em up 状態に設定されます。 プロセスが、回復 (revive) を停止させ、そして再開させることがあります。 システムはサブディスクの回復の進み具合を保持し、そして .Ic start コマンドが再発行された時、その時点からコピーを再開します。 .Pp ボリュームのプレックスが一つ以上が回復している間はボリュームの整合性を 保つために、 .Nm は書き込む場所まで回復させたサブディスクに書きます。もし読みとる領域が すでに回復しているならば、プレックスから読み出すことができます。 .Sh 分かりにくい仕様 (GOTCHAS) 次の事柄はバグではありませんし、存在する理由があるのですが、 混乱を引き起こすものです。 各項目は適切な節において議論されています。 .Bl -enum .It .Nm ドライブは .Ux ディスクパーティションであり、パーティションタイプ .Em vinum であることが必要です。 これは、パーティションタイプが .Em 4.2BSD であることを期待する .Xr ccd 4 とは異なります。 この .Nm ccd の動作は、自分の足元をすくうことになります: .Nm ccd では、用意にファイルシステムを上書きできてしまいます。 .Nm ではそのようなことは許しません。 .Pp 同様の理由で、 .Nm Ic start コマンドは、パーティション .Dq Li c 上のドライブを受け付けません。 パーティション .Dq Li c は、ディスク全体を表現するためにシステムが使用し、タイプ .Em unused である必要があります。 ここには明確な矛盾があるので、 .Dq Li c パーティションを使用しないことにより .Nm は問題を解決しています。 .It 複数のプレックスからなるボリューム作成時に、 .Nm はプレックスを自動的には初期化しません。 これは、内容については分からなくても、 これらの間には確かに一貫性がないということを意味しています。 その結果デフォルトでは、 新規作成されたプレックスのうち最初のものを除いたすべての状態を、 .Nm は .Em faulty (誤り) 状態に設定します。 これらを最初のプレックスと同期させるには、 これらのサブディスクを .Ic start させる必要があります。 これにより、 .Em up 状態のプレックスから .Nm にデータをコピーさせます。 関係するサブディスクの大きさに依存して、必要な時間は長くなり得ます。 .Pp 実際上は、プレックス作成時にその内容に多大な興味を持つ人はいないので、 他のボリュームマネージャはどんなときでも .Ar up に設定して騙します。 .Nm は、新規作成されたプレックスが .Em up 状態であることを保証するために、2 つの方法を提供します: .Bl -bullet .It プレックスを作成し、それらを .Nm Ic start で同期します。 .It キーワード .Cm setupstate 付きでボリューム (プレックスではありません) を作成します。 このキーワードは、矛盾が存在しても無視してプレックスの状態を .Em up 状態にするように、 .Nm に指示します。 .El .It 現在 .Nm がサポートしているコマンドには、実際には不要なものがあります。 私には理解できない理由があるのでしょうが、 .Ic label および .Ic resetconfig のコマンドを使おうとするユーザをしばしば見掛けます。特に .Ic resetconfig は、あらゆる種類の恐しいメッセージを表示するにもかかわらずです。 正当な理由無しに、これらのコマンドを使わないでください。 .It 状態遷移には非常に分り難いものがあります。 事実、これがバグであるのか仕様であるのかは明かではありません。 .Em reborn サブディスクなどの、奇妙な状態になったオブジェクトを起動できない場合には、 .Ic stop または .Ic stop Fl f のコマンドを使用して、まず .Em stopped 状態に遷移させてください。 これが上手くいけば、オブジェクトを起動できるはずです。 簡単な方法では上手くいかなくて、これが唯一の回復手段である場合、 その状況を報告してください。 .It カーネルモジュールを .Fl D Ns Dv VINUMDEBUG オプション付きで構築した場合、 .Nm もまた .Fl D Ns Dv VINUMDEBUG オプション付きで構築する必要があります。 なぜなら、両方のコンポーネントで使用されるデータオブジェクトに、 大きさが本オプションに依存しているものがあるからです。 前記のようにしないと、 .Sy Invalid argument というメッセージを表示してコマンドは失敗し、 次のようなコンソールメッセージが記録されます: .Bl -diag .It "vinumioctl: invalid ioctl from process 247 (vinum): c0e44642" .El .Pp 古いバージョンの KLD やユーザランドプログラムを使うと、 このエラーが発生することがあります。 .It .Nm Ic read コマンドの文法は、吐き気を催すものです。 これが唯一の .Nm 起動のためのコマンドでしたが、今の好ましい方法は .Nm Ic start です。 .Nm Ic read は整備のみに使用すべきです。 文法が変更されたので、引き数が .Pa /dev/da0 のようなディスクスライスであり .Pa /dev/da0e のようなパーティションではないことに注意してください。 .El .\"XXX.Sh BUGS .Sh 関連ファイル .Bl -tag -width /dev/vinum/control -compact .It Pa /dev/vinum .Nm オブジェクトのデバイスノードがあるディレクトリ .It Pa /dev/vinum/control .Nm の制御デバイス .It Pa /dev/vinum/plex .Nm プレックスのデバイスノードがあるディレクトリ .It Pa /dev/vinum/sd .Nm サブディスクのデバイスノードがあるディレクトリ .El .Sh 環境変数 .Bl -hang .It VINUM_HISTORY ログファイルの名前です。デフォルトでは /var/log/vinum_history です。 .It VINUM_DATEFORMAT ログファイル中の日付の書式です。デフォルトは %e %b %Y %H:%M:%S です。 .It EDITOR 設定ファイルの編集に使用するエディタの名前です。デフォルトは .Nm vi です。 .El .Sh 関連項目 .Xr strftime 3 , .Xr vinum 4 , .Xr disklabel 8 , .Xr newfs 8 .Pp .Pa http://www.vinumvm.org/vinum.html , .Pa http://www.vinumvm.org/vinum-debugging.html .Sh 作者 .An Greg Lehey Aq grog@lemis.com .Sh 歴史 .Nm コマンドは .Fx 3.0 から登場しました。 .Nm の RAID-5 コンポーネントは、 NetMAX 製品のために Cybernet Inc.\& .Pq Pa www.cybernet.com が開発しました。