日本語 man コマンド類 (ja-man-1.1j_5) と日本語 man ドキュメント (ja-man-doc-5.4 (5.4-RELEASE 用) など) をインストールすると、以下のような man コマンド閲覧、キーワード検索が コンソールからできるようになります。
4.11-RELEASE-K, 5.4-RELEASE-K, 5.5-RELEASE-K, 6.0-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K, 12.1-RELEASE-K は、 プライベート版 (小金丸が編集してまとめたもの) ですが、 より多くの翻訳したファイルが含まれています。 (5.4-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K から 12.4-RELEASE-K, 13.0-RELEASE-K から 13.3-RELEASE-K, 14.0-RELEASE-K から 14.1-RELEASE-K は、全翻訳済み)
13.3-STABLE-K, 15.0-CURRENT-K は現在、作成中で日々更新されています。
Table of Contents
DC(1) FreeBSD 一般コマンドマニュアル DC(1) 名称 dc -- 卓上計算機 書式 dc [-hxV] [-e expression] [-f filename] [filename] 解説 dc は、任意精度の演算パッケージです。dc の全体構造は、スタック (逆ポーラ ンド) 計算機です、すなわち、数値は、スタックに格納されます。数を追加する と、それはスタックにプッシュされます。算術演算は、スタックから引数をポッ プアップし、結果をプッシュします。また、中置記法 (infix notation) とプロ グラムのための関数と適度な制御構造を実装している、C 風の構文を提供してい る、dc のためのプリプロセッサである bc(1) ユーティリティを参照してくださ い。オプションは、次の通りです: -e expr, --expression expr expression (式) を評価します。複数の -e オプションが指定されるな ら、それらは、与えられた順序で処理されます。 -f filename, --file filename 更なる計算が完了する前に、与えられたファイルの内容を処理します。 複数の -f オプションが指定されるなら、それらは、与えられた順序で 処理されます。 -h, --help 短い使用法の情報を印刷 (表示) します。 -V, --version バージョン情報を印刷 (表示) します。 -x 拡張登録モードを有効にします。このモードは、256 以上のレジスタを 許容する bc(1) によって使用されます。より詳細な説明については、登 録を参照してください。 expression (式) も file もコマンド行で指定されないなら、dc は、標準入力か ら読み込みます。そうでなければ、expression と file は、処理され dc は、終 了します。 通常、dc は、10 進整数で動作しますが、入力ベース、出力ベースと維持される 多くの小数の桁 (スケール) を指定できます。空白類は、数の終わり、行の終 り、またはレジスタ名が予想されるとき、そのシグナルが起こるところを除い て、無視されます。次の構造が、認識されます: number 数の値は、スタックにプッシュされます。数は、数値 0-9 と文字 A-F の連続した文字列です。負の数を入力するために、下線 (`_') によって 先導されます。数は、単一の小数点を含むことができます。また、数 は、値 10-15 がある、文字 A-F を含むことができます。 + - / * % ~ ^ スタックの最上部 2 つの値は、追加され (+)、引き算され (-)、掛け算 され (*)、割算され (/)、剰余され (%)、割算と剰余され (~) るか、ま たはべき乗 (^) されます。2 つのエントリがスタックから取り出されま す。結果は、それらの場所でスタックにプッシュされます。指数の小数 部分は、無視されます。 足し算と引き算に関して、結果のスケールは、オペランドのスケールの 最大値です。割算に関しては、結果のスケールは、k 演算でスケール セットによって定義されます。掛け算に関して、スケールは、式 min(a+b,max(a,b,scale)) によって定義されます、ここで a と b は、 オペランドのスケールであり、scale は、k 演算によって定義されたス ケールです。負でない指数があるべき乗に関して、結果のスケールは、 min(a*b,max(scale,a)) です、ここで a は、スケールのベースで、b は、指数の value です。指数が負であるなら、結果のスケールは、k 演 算によって定義されたスケールです。 割算とモジュロ演算子 (~) の場合では、結果の商は、剰余が続いて最初 にプッシュされます。これは、シーケンスの省略表現です: x y / x y % 割算とモジュロ演算子は、移植性のない拡張です。 a スタックから最上位の値をポップアウトします。その値が数値であるな ら、数値のモジュロ 256 の整数部を計算します。結果が 0 であるな ら、空の文字列をプッシュします。そうでなければ、ASCII 文字として 計算された値を解釈することによって、1 つの文字列をプッシュしま す。 最上位の値が文字列であるなら、元の文字列の最初の文字を含む文字列 をプッシュします。元の文字列が空であるなら、空の文字列がプッシュ バックされます。a 演算子は、移植性のない拡張です。 c スタックのすべての値が、ポップアップされます。 d スタックの最上位の値は、重複されます。 e 出力が標準エラーストリームに書き込まれることを除いて、p と同様で す。 f 改行によって区切られ、スタックのすべての値が印刷されます。 G 最上位の 2 つの数値がスタックからポップアップされ、比較されます。 スタックの最上位がスタックの 2 番目の数と等しいなら、それは、プッ シュされます。そうでなければ、0 がプッシュされます。これは、移植 性のない拡張す。 I スタックの最上位で入力ベースをプッシュします。 i スタックの最上位の値は、更なる入力のためのベースとしてポップアッ プされて、使用されます。最初の入力ベースは、10 です。 J スタックから最上位の値をポップアップします。再帰レベルは、その値 によってポップアップされ、それに続いて、入力は、M 演算子の最初の 出現までスキップされます。J 演算子は、bc(1) コマンドで使用され る、移植性のない拡張です。 K 現在のスケールファクタが、スタックにプッシュされます。 k スタックの最上位は、ポップアップされ、その値は、負でないスケール ファクタとして使用されます: 適切なけた数は、出力に印刷され、掛け 算、割り算、べき乗の間に維持されます。スケールファクタ、入力ベー スと出力ベース相互作用は、すべてが一緒に変更されるなら、妥当とな ります。 Lx レジスタ x は、スタックとして扱われ、最上位の値は、メインスタック でポップアップされます。 lx レジスタ x の値は、スタックにプッシュされます。レジスタ x は、変 更されません。最初に、すべてのレジスタは、値 0 を含んでします。 M J 演算子によって使用されマークされます。M 演算子は、bc(1) コマン ドで使用される、移植性のない拡張です。 N スタックの最上位が、0 に等しいなら、スタックの最上位は、1 で置き 換えられます。スタックの最上位が 0 と等しくないなら、それは、0 に 置き換えられます。これは、移植性のない拡張す。 n スタックの最上位の値は、ポップアップされ、改行なしで印刷されま す。これは、移植性のない拡張す。 O スタックの最上位で出力ベースをプッシュします。 o スタックの最上位の値は、ポップアップされ、後の出力のためのベース として使用されます。最初の出力ベースは、10 です。 P スタックの最上位がポップアップされます。スタックの最上位が文字列 であるなら、それは、後続する改行なしで印刷されます。スタックの最 上位が数値であるなら、それは、ベース 256 の数値として解釈され、こ のベース 256 数値の各桁は、後続する改行なしで、ASCII 文字として印 刷されます。 p スタックの最上位の値は、後続する改行をつけて印刷されます。最上位 の値は、変更されないままとなります。 Q スタックの最上位の値は、ポップアップされ、文字列の実行レベルは、 その値によってポップアップされます。 q プログラムは、終了します。文字列を実行するなら、再帰レベルは、2 つポップアップされます。 R スタックの最上位は、削除されます (ポップアップされます)。これは、 移植性のない拡張す。 r スタックの最上位 2 つの値は、逆にされます (交換されます)。これ は、移植性のない拡張す。 Sx レジスタ x は、スタックとして扱われます。メインスタックの最上位の 値は、ポップアップされ、それをプッシュします。 sx スタックの最上位は、ポップアップされ、x という名前のレジスタに、 格納されます。 v スタックの最上位の要素を平方根によって置き換えます。結果のスケー ルは、引数のスケールとスケールの現在値の最大です。 X スタックの最上位の数値をスケールファクタに置き換えます。スタック の最上位が文字列であるなら、それを整数 0 に置き換えます。 x スタックの最上位の要素を文字列として扱い、dc コマンドの文字列とし て実行します。 Z スタックの最上位の数値を長さに置き換えます。文字列の長さは、その 文字の数値です。数値の長さは、マイナス記号と小数点を数えるのでは なく、そのけた数です。 z スタックレベルは、スタックにプッシュされます。 [...] 括弧が付けられた ASCII 文字列をスタックの最上位に置きます。文字列 が括弧を含んでいるなら、これらは、適切にバランスがとられなければ なりません。バックスラッシュ文字 (`\') は、エスケープ文字として使 用され、文字列のバランスのとれない括弧を含むことを可能にします。 文字列にバックスラッシュを含むためには、2 つのバックスラッシュを 使用します。 <x >x =x !<x !>x !=x スタックの最上位 2 つの要素は、ポップアップして、比較されます。レ ジスタ x は、それらが定められた関係に従うなら、実行されます。 <xey >xey =xey !<xey !>xey !=xey これらの演算は、上記の比較演算の変異型です。最初のレジスタ名は、 文字 `e' と別のレジスタ名が続きます。レジスタ x は、関係が真であ るなら、実行され、レジスタ y は、関係が偽であるなら、実行されま す。これは、移植性のない拡張す。 ( 最上位の 2 つの数値は、スタックからポップアップして、比較されま す。スタックの最上位がスタックの 2 番目の数値以下であるなら、1 が、プッシュされます。そうでなれれば、0 がプッシュされます。これ は、移植性のない拡張す。 { 最上位の 2 つの数値は、スタックからポップアップされ、比較されま す。スタックの最上位がスタックの 2 番目の数値以下であるなら、1 が プッシュされます。そうでなければ、0 がプッシュされます。これは、 移植性のない拡張す。 ! UNIX コマンドとして行の残りを解釈します。 ? 入力行は、入力ソース (通常端末) から取られて、実行されます。 :r スタックから 2 つの値をポップアップします。スタックの 2 番目の値 は、スタックの最上位によってインデックス付けられた配列 r として格 納されます。 ;r スタックから値をポップアップします。値は、レジスタ r にインデック スとして使用されます。このレジスタの値は、スタックにプッシュされ ます。 最初に配列の要素は、値 0 となっています。スタックされたレジスタの 各レベルには、それに関連しているそれ自体の配列があります。コマン ドシーケンス [first] 0:a [dummy] Sa [second] 0:a 0;a p La 0;a p は、次のように印刷され、 second first 続いて、文字列 `second' は、`first' が格納された配列をあらわにす るために、後でポップアップされる配列に書き込まれます。 # 行の残りをスキップします。これは、移植性のない拡張す。 レジスタ レジスタには、単一の文字名 x があります、ここで x は、空白、タブまたは他 の特殊文字も含んで、任意の文字を指定できます。拡張レジスタモードが、-x オ プションを使用して有効にされ、レジスタ識別子 x に値 255 があるなら、次の 2 つの文字は、2 バイトのレジスタインデックスとして解釈されます。標準の単 一文字のレジスタの組と拡張レジスタの組は、オーバラップしません。拡張レジ スタモードは、移植性のない拡張です。 使用例 次は、n! の最初の 10 個の値を印刷する例です: [la1+dsa*pla10>y]sy 0sa1 lyx 現在の入力ベースと無関係に、次のコマンド Ai は、入力ベースを 10 進数の 10 にリセットします。 診断 %c (0%o) is unimplemented 未定義の演算が呼び出されました。 stack empty 何か問い合わせを行うとき、スタックに十分な要素がない。 stack register '%c' (0%o) is empty スタックレジスタからの L 演算におい て、それは、空です。 Runtime warning: non-zero scale in exponent 指数の端数部分において、それ は、無視されています。 divide by zero 試みにおいて、0 除算しました。 remainder by zero 試みにおいて、残り 0 を取りました。 square root of negative number 試みにおいて、符の数値の平方根を取りまし た。 index too big 配列インデックスにおいて、それは、2048 より大きいです。 negative index 符の配列インデックスとなりました。 input base must be a number between 2 and 16 試みにおいて、不正な入力 ベースが設定されている。 output base must be a number greater than 1 試みにおいて、不正な出力ベー スが設定されている。 scale must be a nonnegative number 試みにおいて、負または 0 のスケールが 設定されている。 scale too large 試みにおいて、あまりに大きなスケールが設定されている。ス ケールは、32 ビットの符号なしの数値として表現可能でなければなりません。 Q command argument exceeded string execution depth 試みにおいて、現在の 再帰レベルより大きな再帰レベルがポップアップされた。 Q command requires a number >= 1 試みにおいて、不正な数の再帰レベルが ポップアップされた。 recursion too deep ネストされた実行のレベルが多すぎます。 x または ? 演算またはレジスタの実行で比較演算の結果の一つが実行されたな ら、再帰レベルは、1 つ増加されます。例外として、演算が文字列の最後のコマ ンドとして実行されるなら、再帰レベルは、増加されません。例えば、コマンド [lax]sa 1 lax は、永久ループを実行し、一方、次のコマンド [laxp]sa 1 lax は、再帰レベルが深過ぎるので、終了します。 J command argument exceeded string execution depth 試みにおいて、現在の 再帰レベルより大きい再帰レベルがポップアップされました。 mark not found M 演算子の発生のためにスキャンが失敗しました。 関連項目 bc(1) L. L. Cherry, R. Morris "DC - An Interactive Desk Calculator" /usr/share/doc/usd/05.dc/. 規格 dc ユーティリティの算術演算は、IEEE Std 1003.2 (``POSIX.2'') 仕様の bc(1) セクションにリストされた定義に適合するはずです。 歴史 dc コマンドは、Version 6 AT&T UNIX ではじめて登場しました。bn(3) 大きい数 のルーチンを使用する dc コマンドの完全な書き直しは、OpenBSD 3.5 ではじめ て登場しました。 作者 dc コマンドのオリジナルバージョンは、Robert Morris と Lorinda Cherry に よって書かれました。dc ユーティリティの現在の版は、Otto Moerbeek によって 書かれました。 FreeBSD 11.4 February 27, 2017 FreeBSD 11.4