が用意されています。このコマンドでは、コマンドを使用 したところに行ぶんの空白が置かれます。 % cat data . pl 5 .11 40 どうでしようか ? . sp 2 2 行、空白が空きましたね ? 2 行、空白が空きましたね ? どうでしようか ? % nroff data ー cat ーⅡ 4 3 2 1 ですが、皆さんの都合は以下のとおりでした。 5 月 1 日にサーカスを見に行こうという計画 . p1 1 .11 50 % cat data 全員揃わないと、 . f 土 あや たかし : みのる : 〇 : 〇 UN Ⅸへの招待⑩ 、ゝ nroff コマンドー行を追い込まない nroff の基本的な約束ごとに、、行を追い込むクというのが ありました。しかし、状況によってはこの機能を無効にし たいこともあります。この場合は、 . nf コマンドを使いま す。 . nf コマンドを発行すると、その場所から追込みがおこ なわれなくなります。追込みを再開する場合には、 . fi コマ ンドを使います。つまり、 . nf と . fi に囲まれた文章は、追込 みをおこなわないことになります。 行けないよね、やつばり。 % nroff data 5 月 1 日にサーカスを見に行こうという計画ですが、皆さ んの都合は以下のとおりでした。 みのる : 〇 たかし : あや nroff コマンド 改行したい 全員揃わないと、行けないよね、やつばり。 : 〇 い場合には、 . br コマンドを使います。 . br は、ここで強制 のまま残ってしまいます。行頭に空白を置かすに改行した 合には、行頭に空白を置けばよいのですが、その空白はそ が追い込まれます。そこで、ここで改行したい〃という場 nroff では、 ( . nf コマンドを使わないかぎり ) 次々と行 UNIX MAGAZINE 1992.7 改行するんだもん。 . br ここで、 .11 20 . pl 1 % cat data 的に改行したい〃という場合に使用します。 % nroff data ここで、 改行するんだもん。 nroff コマンドーセンタリンク nroff では、行をセンタリング ( 中央寄せ ) することも可 能です。この場合には、 . れ 165 行から〃行ぶんがセンタリングされます。 というコマンドを使います。すると、このコマンドの次の
マウスあれこれ ます、自分が使っているマウスをよーく見てください。下に ポールが付いていて、コロコロしていますか ? それとも、光を 発していますか ? マシンによってマウスもさまざまですが、大別すると、、機械 tar 十 compress で保存されています。これらのファイ るファイルは、 ( 簡単に推測できると思いますが ) たとえば、、 xx. tar. Z" のような拡張子が付けられてい ません。 まで出てきた 3 つのコマンドを糸蝕カ員しなければなり ですからこれらのファイルを利用するときには、いま いは tar 十 compress 十 uuencode で配布しています。 このような場合、 tar 十 compress で保存したり、ある サイズを小さくするさまざまな努力がなされています。 ディスクの容量や通信容量に制限があるため、ファイル ニュースを通した PDS ソースのファイルの配布では、 ftp サーバーと呼ばれる PDS を提供している計算機や 2. PDS などのソースを利用する もファイル名を打っと手の筋がつりそうになります : ー ) 20 個 ます。こうすると簡単でとっても便利ですよ 度のコピーで終るように、 tar で 1 つにまとめてしまい ミか詰まっていると動かなくなることがあるので、定期的なお い原因になります。機オもにマウスの場合も、ポールの部分にゴ また、マウスパッドが兮れていたりすると、。マウスか動かな 入れ替わってしまうこともあるので、気をつけましよう。 スはウンともスンともいいません。大掃除などでいつの間にか パッドと Sun3 のマウスを組み合わせて使おうとしても、マウ 見ると縦横の線の間隔も違います。 SPARCstation のマウス SPARC 系のマシンに付いているものより大きめですが、よく ために使われます。同し Sun でも、 Sun3 のマウスパッドは の線はたんなるデザインではなく、マウスの移動量を読み取る 光学式マウスの場合、マウスパッドはとても重要です。縦横 模様となっています。 で、マウスの下嗷 ( 、マウスパッド " と呼びます ) は縦横の縞 式 " と、光学式 " の 2 不頁があります。 sun のマウスは光学式 ルは、次のような手順でもとに戻します。 26 できます。 あるいは zcat コマンドを使って、 1 回ですますことも % tar xf xx. tar % uncompress xx. tar. Z 図 A xeyes ウスカーソルの位置に注意を払うしかなさそうですが・・・・・・ ) 。 リーとして動かしておくのもいいでしよう ( 結局は、自分でマ ます。効果のはどは定かではありませんが、かわいいアクセサ ような目玉か表示され、マウスの動きにつれてキョロキョロし カーソルのおおよその位置が分かります。起動すると、図 A の このようなとき、 xeyes というコマンドを使えば、マウス ソルがあるのか、一 -- 瞬分からなくなることもあります。 レイ上でウインドウがごっ区していると、どこにマウスカー り、とてもむなしい気分になってしまいます。また、ディスプ はありませんか ? 作業ロ頁していると安仂ゞつかないことがあ こんなこと の間にか外れているのに必死に入力している・・ X ウインドウを使っていると、マウスのフォーカスがいつ 掃除をお勧めします。 UNIX MAGAZINE 1992.7 -p オプションをイ寸けれは更新日日ゞ保存されます。 ィレクトリをコピー、移動する場合、更新日日ゞ変わっ 日時に変わってしまいます 9 。ソースファイルのあるデ イルをもってくると、更新日時がファイルを移動した オプションを付けすに cp 、 mv コマンドを使ってファ ・ cp だとシンポリック・リンクカイ呆存されない ・ tar を使うとファイルの更新日日ゞ保存される ら tar を使うことがあります。 cp や mv を使うガ去もありますが、次のような理由か ます。 tar を使うと、ディレクトリごと別の場所に簡単に移せ 3. ディレクトリごとファイルを別の場所に移す これで xx. tar. Z も怖くなくなりました。 コマンドの標準入力に渡す役割をしています。 です。中央にあるⅡま、左のコマンドの標準出力を右の ( ー ) は、入力を標準入力から取ってきなさいという意味 準出力に出力するのです。また、 tar xf ーのハイフン わち、 ) 宿されたファイルをもとに戻し、その結果を標 zcat は、 uncompress -c と同じ働きをします。すな % zcat xx. tar . Z ー tar xf 9
は、いったん文字配列などに代入してから mktemp 関 数に渡すようにしてください。 mktemp 関数からの戻り値は、指定した文字列の先 頭アドレスです。このとき、文字列の内容は書き換えら れています。 6 個の x のうち、最初の 1 個は文字 a に、 後ろの 5 個はプロセス ID になっているはすです。 5 文字のプロセス ID は、この関数を実行したプロ セスのものなので変わりませんが、最初の 1 文字は変 わることがあります。この文字は、 1 つのコマンドで複 数の一時ファイルを作成する場合や、不幸にもプロセ ス ID と同しファイル名が存在していた場合に対応する ために設けられています。 mktemp は一時ファイルを 作成するための関数なので、作成した名前が既存のファ イル名と重複するときはその名前をそのまま返すので はなく、ファイルシステム上に存在しないファイル名 に変更してからユーザーに返します。この機能のおか げで、一時ファイルを安心していくつでも使えるので す。最初に mktemp でファイル名を作成し、ファイル をオープンします。次に同しテンプレートを使ってファ イル名を作成すると、さきほど返された名前とは異なる 名前が返されます。つまり、同しテンプレートからいく つでもファイル名を作成することができるのです。 ただし、同名のファイルが存在するかどうかは調べ ますが、 mktemp 関数が以前に同し名前を返したかど うかは調べません。つまり、同しテンプレートに対して mktemp 関数を ( ファイルをオープンせすに ) 続けて呼 び出すと、返されるファイル名はすべて同じものとなり ます。同しテンプレートで複数の一時ファイルを作成す る場合には、 mktemp を呼び出すごとに fopen などで ファイルをオープンすることを忘れないでください。 もう 1 つ注意してほしいのは、 mktemp 関数を複 数回呼び出す場合のテンプレートの与え方です。 mk- temp 関数は、テンプレート自身を変更します。した がって、 1 つのテンプレートから複数の一時ファイル名 を作成することはできません。同じテンプレートから複 数の一時ファイル名を作成したいときは、次に示すよう に strcpy 関数などを利用してテンプレートをコピーし てから mktemp 関数を使ってください。 #include く stdio . h> 138 char main() def-temp ロ " /tmp/TESTXXXXXX " char FILE int *templ , *temp2; *fpl , *fp2; def_len; def—len = strlen(def—temp) + 1 ; templ = malloc(def—len) ; strcpy(templ , def—temp) ; mktemp (templ) ; fopen(templ, "w + ") ; fpl temp2 = malloc(def—len) ; strcpy(temp2 , def—temp) ; mktemp (temp2) ; UNIX MAGAZINE 1992.7 2 L-tmpnam は stdio. h のなかで定義されています。 バッフアに一時ファイル名をオ褓内します。 tmpnam 関 指定することも可能で、その場合 tmpnam は内部の ーこには NULL を トは確保しなければなりません 2 。 れます。バッフアとしては、最低でも L-tmpnam バイ 成された一時ファイル名を格納する場所として使用さ となっています。引数の s は、 tmpnam 関数により作 Char *S ; char *tmpnam (s) の呼出し形式は、 ファイル名を作成するために使います。 tmpnam 関数 関数は ANSI C でも採用されたもので、やはり一時 として tmpnam が準備されています。この tmpnam System V 系の UNIX では、 mktemp と同様な関数 しませんから、この誤りは見逃しやすいので注意しま ンプレート文字列が間違っていてもなんのエラーも出 関数自身が失敗してしまいます。 mktemp 関数は、テ 存在しないファイル名を作ることができす、 mktemp 2 回目の呼出しでは同しファイル名しか作れないので 呼出しでテンプレートそのもののファイル名が作られ、 の x の後ろにはかの文字を付けたりすると、 1 回目の ぶものとなっています。しかし、これを間違えて 6 個 さい。テンプレート文字列は、最後に文字 X が 6 個並 として誤った文字列を使用しないように注意してくだ mktemp 関数については、もう 1 つ、テンプレート
図 2 ps u の実行 co S % ps u USER monkey 23133 27.0 monkey 279 monkey 306 P ID %CPU %MEM 0 . 4 85 . 0 SZ 168 1928 14.3 3040 2208 RS S TT STAT START 2 . 6 5 . 9 400 928 p2 p3 R R TIME COMMAND 0 : 00 ps Ⅱ Apr 30 47 : 30 X : 0 6 : 03 greedy だし、自分カ畤ち主であるプロセスしか殳ません。この 例の場合、 PID が 306 のプロセスを殺したいのですから 次のようにします。 % kill 306 このようにしたあとで ps を使って、プロセスがいなく なったかどうか再確認します。場合によっては、これでは 死なない場合があります。そんなときには、確実に死んで もらうために - KILL ・オプションを付けてもう 1 度実 行します。すると、普通では死なないプロセスもほとんど か死んでしまいます。 間違ったプロセスを殺さないように くどいはど石忍し てからリターンキーを押しましよう。たとえば X を使っ ているときに、 kterm のなかで起動したプロセスのつもり で、 xinit を kill してしまったらとっても悲しい・・ プロセスを見るプログラムには、 ps のほかに top もあ ります 3 。これは、一番にしいプロセスを順番に一定間隔 で表示します。 top で見て、つねに最初に表示されるプロ セスがもっとも多にで、場合によっては暴走していること もあります。そういう意味では、 ps より分かりやすいか もしれません。見方は ps とほとんど同しですからすぐに 分かるでしよう。 いま何してるの ( ユーサー編 ) 1 台のワークステーションを共有している場合、誰カ可 をしているのか知りたいですよこれはけして出歯亀根 性ではなく、たとえばワークステーションを停止しなくて はならないときなど、誰カ可をしているのかを知る必要が あるからです。ここでは、ワークステーションを利用して いるユーザーカ可人いて、どんなことをしているのか知る ためのガ去を紹介します。 3 これは PDS (Public Domain Software) で、電子ニュースなど で手に入れることかできます。管理者に訊いてみてください。 UNIX MAGAZINE 1992.7 00 : 17 Apr 30 あまりありませんが、 たとえば jserver が正常に動い ているかなどは自分で調べることがあるでしよう。 2. ワークステーションが重くなった理由を調べる いままで機嫌のよかったワークステーションが、急にレ スポンスか懇くなることがあります。原因はさまざまで すが、たいていやたらと CPU を喰うプロセスか突見 れているときです。原因を突き止めて管理者に報告する と、やがてもとどおりになることでしよう 2 3. なんとなく なんだか手持ちぶさたのときによく使われるコマンドの 1 つです : ー ) これを見るとなんとなく落ち着くなんてい っている人は、もう UNIX から抜けられませんよ : ー ) 2 に挙げたように、プログラムによってはなんらかの原 因で異常にメモリや CPU を消費することがあります。そ のプロセスが他人のものなら対処のしようがないのです が、自分のプロセスの場合は自分でなんとかしなければ なりません。そのためのガ去をここで紹介しておきましょ う。物騒な言葉カ々と出てきますが、どうかご容赦くだ さい。 たとえば、図 2 のような結果か表示されたとします。ど うも、 PID=306 の greedy の様子か変ですれメモリや CPU をこれはど使うはすはないプログラムなのです。暴 走しているようですこうなると自分だけでなく、同し ワークステーションを使っているほかの人たちにも迷惑が かかります。なんとかして greedy を亡き者にしなくては なりません。 そのためのコマンドが kill です。使い方は、 kill [ ー s 朝れ ] 2 記 です。このコマンドは、その名のとおりプロセスに、、死ん でもらいます " 信号を送って、殺してしまうものです。た 2 原因が自分にある場合は、自分で対処しなければなりませんそのガ去は このすぐあとで。 20
PVCS If you love ( 0 ー hate) UNIX, ネットワーク対応 バージョン管理システム ソフトウェア開発か次第に大規模になり組織化されるにつれて、ドキュメントやソースプログラムなどのファイルか幾何級数的に増大していきま す。その結果、各工程で作成されるファイルの管理方法も複雑にならざるをえません。出荷済バージョンと修正中バージョン、 A 社向けパージョ ンと B 社向けパージョン等か複数存在するような場合には、さらにファイルの管理か困難になります。このような状況では、新旧のモジュールや 別システムの同一名モジュールを入れ違えてしまうことも起こりかねません。 2 つのバージョンを別々のディレクトリで管理した場合には、多く のティスクスペースを消費することになります。このような、大量のファイルを安全に時系列に管理するのかバージョン管理システム PVCS です。 PVCS を導入することで、同しファイル名で複数のファイルをティスクスペースを無駄にすることなく効率よく管理することかできます。また、 日々更新されるテータベースを PVCSC 管 理すれは 1 回の履歴ファイルのバックアッ プロジェクトレポート出力 プにより数日分のテータのバックアップを作 成したことと同しになります。 このようにプロジェクトて生成されるドキュ メント : ソースプログラム、テータなとのリソ ースを PVCS で一括管理することでそれそ れのファイルを効率良く管理でき、突発的な ファイル破壊に対処したり、ファイルの内容 を以前の状態に戻したりすることか簡単に行 えます。 特に、最近のネットワーク環境における開発・ データ運営には必須のシステムとして、 PVCS は既に世界中で数多くの機関に導入されてい ます。 ファイルサーノヾ Rev 2 」 PVCS/LAN 日 ev2.0 日 evl . 1 Rev 1 .0 履歴ファイル テスト用 WS ロジェクト 管理者用 WS テスト用 WS プログラム用 プログラム用 WS WS ■任意のバージョンの登録 / 取り出しか可能 ー同時変更防止機能 同一ファイルの同し八一ジョンに対して、一複数のユーサーがアクセスする場合でも、一人の PVCS にファイルを登録するとそのフーアイルに対応した歴ファイル ( ログファイル ) が ユーサーがファイルを変更している場合には、他のユーサーか変更しようとしても PVCS 作成され、このファイルに変更履歴か順次格納されていきます。登録されたファイルには、 ユーサか自由にバージョンを設定可能て、即座に指定した八一ジョンを取り出すことか可能 のチェック機能により、ファイルが変更中てあるため修正か禁止されている旨いメッセージ て知らせます。 です。 ー各種ファイル形式をバ—ジョン管理可能 ■ファイルのマージ機能 同一ファイルの同しバージョンに対する複数ユーサーの変更を許可している場合、各ユーザ 一般的なバージョン管理システムでは、テキスト , ファイルだけが八一ション管理の対象に なっていましたか、 PVCS では、テキスト、ファイルのほかにワープロの文書ファイルや ーの変更内容をマージ機能を利用することて統合することができます。また、変更内容に競 合か生した場合ても、との部分に競合が生しているかを PVCS が示すのて、どちらの変更 テータベース、ファイル等の各種ファイル形式をバージョン管理可能てす。 を採用するかを選択することかできます。 ■変更履歴のレポト出力 ■進行中のプロジェクトに容易に導入可能 変更履歴の情報として、バーション番号登録日時、修正日時、登録者、追加 / 削除 / 移動 行数、変更内容のコメントなとを八一ション毎にレポート形式で出力します。この他にも、 現在進行中のプロジェクトであっても、取り敢えす PVCS を導入した後に、開発環境に合 歴ファイル ( ログファイル ) に設定されている属性やユーサによってロックされているバ せて設定を変更することができます。また、ハックアップしてあるファイルを一括して PV CS に登録してから利用したり、最新のバ—ジョンから導入すことも簡単にてきます。 ションなとの情報も出力可能ですを ■変更履歴のメンテナンス ■システム構成に応じた様々な設定か可能 履歴ファイル ( ロクファイル ) に保存されているオーナー名、八一ジョン名、コメントを変更 あらゆる環境に対応てきるように、数々の設定を行うことかてきます。たとえは、履歴ファ イルを作成するディレクトリをプロシェクト毎に設定したり、 = バージョン登録の際に使用す したり、保護ロックの設定 / 解除やファイルに設定されている属性の設定 / 解除か簡単に行 ~ るエデイタを設定したり、ワークファイルを作成するティレクトリを設定したり、等様々な うことがてきます 0 また、不要になったバージョンの削除をすることもできます。 環境に合せてきめ細かく設定することができます。 ■バージョンの枝分れ ■ネットワーク・サポート (PVCS/LAN のみレ 基本的に同一のシステムから技分れさせて、他の OS に対応した八一ションを作成したり、 パソコンて標準的に使用されている MS - NETWO 日 KS. Nove 広 3Com. 凵 FELAN. 以前のバージョンの不具合を修正したハージョンを枝分れの機能を利用して作成したり、機 STA 日 LAN 等の各種ネットワークに対応しています。実際、米国 Nove Ⅱ社、 3 Com 社 能追加や機能修正を枝分れのバージョンで作成し、追加 / 修正内容か安定してきた時点て、 の社内 LA 忖システムに於ても PVCS か使用されて製品の開発が行われています。 元のシステムに統合したりするこにがてきます o PVCS ノヾワーノヾック ネットワークをフルサポート PVCS パワーバックには、 PVCS とコミュニケーション可能なメイク機 能 PO ⅸ Make かバンドルされています。 ■指定のバージョンやリヒジョンによる、実行モジュールの自動生成、状況に応し た各種ツールの起動により、結合テストに威力を発揮します。 ■最終ターケットが生成されれば、メイクファイルを PVCS に登録しておくこと によって実行モジュールがいつ、とのような方法で作成されたかを保存しておくこ ともできます。 価格 PVCS (LJNIX 版 ) 5 ユーサー : ¥ 480 , 000 10 ユーサー : ¥ 640 , 000 PVCS パワーバック (IJNIX 版 ) 5 ユーザー・¥ 48 圧 000 1 0 ユーサー : ¥ 640 , 000 、国内各機種対応作業中 IJN Ⅸ版 PVCS および PVCS パワーバックはネットワークによるマルチ ユーサ環境での開発に対応する次の機能を提供します。 ・プロジェクト管理者により、ファイル毎にプログラマのアクセス権を設定するこ とがてきます。 ーヒマフォ処理のサポートにより、複数のプログラマが同時にファイルを保管した 場合でも安全にファイルをセープすることができます。 ・アクセス管理データベースのサポートにより、プログラマあるいはそれ以外のユ ーザに対して、 PVCS コマンドで利用できる機能の範囲を制限することができま す。たとえば、開発部門 / テスト部門 / 管理部門による区分けが可能です。 ーユーサ毎に PVCS システムへのログイン一 D とバスワードを発行できます。これ により、部外者によるアクセスを制限することが可能です。 PVCS 対応機種 Sun-4. SPARC Station シリーズ 旧 M RS 6000 シリーズ 株式会社 LIFEBOAT 〒 1 田東京都千代田区神田錦町 3-6 PHONE : 03-3293-4 刀 6 FAX: 03-3219-2868 * PVCS, PoIyMake は INTERSOLV.lncv の製品です。
連載 / 0 ADVISOR 1 ong strtol( const char int char *num bas e これはポインタⅡⅧカ鮨し示す文字列を long 型の 直に変換し、 end に数表現の直後の文字へのポインタ か NULL を代入する。もし base が 0 ならば、 strtol() は C 言語スタイル妾頭子を認識し変換する。すなわち、 、 0 " から始まる数字は 8 進数だと判断し、、 ox " あるい は、 OX " なら 16 進数として読み込む。 base は、 0 また は 2 ~ 36 の値しかとりえない。基数が 10 以丘の場合、 strtod() はアルファベットの大文字、小文字を数字の 表現として受け付ける。基数が 16 の場合、知寬こ、、 ox あるいは、 OX " を付けることができる。もし値カ範囲外な ら、 strtol() は LONG-MIN あるいは LONGNAX( これら はく lim 土 ts. h > で定義されている ) を返す。 long strtoul ( const char int char *num base トに、、 2 分探索 (binary search)" という手法を用いるの が速い、というのカ吠きな理由だろう。 この手法は基本的に、捜している要素 ( ん e のの値が、 ソートされたリストの中央に位置する要素より大きいか 小さいかを調べる。もし小さければ、ん e はリストから 取り出した要素より前方にあり、さもなけれは後方にあ るはずである ( 取り出した要素がん e リと合致したなら探 索をすぐに中断する ) 。そして目的の要素があると思われ る半分のリストにこのアルゴリズムを再び適用し、ん e が みつかるか、あるいはん e リカ鱗り合う 2 つの要素のあい だに挟まってしまう、つまりリスト中にん e リがない、の どちらかの状態になるまで再帰的にテする。念のために 記しておくが、このようなアルゴリズムの手数のオーダー は、たかだか log れである。 ここまでの説明がよく分からなくても、心配すること はない。これを理解する必要がないことは、 qsort() を 使うためにクイックソートのアルゴリズムを理解する必 要がないのと同しである。 ANSI は、ソートされたリス トに対して 2 分探索をおこなう bsearch() というルー チンを用意している。 VOid * bsearch( void void SIze_t size_t int これは返り値が unsigned long である点を除き、 strtol() と同し働きをする。数値か範囲外のエラーの とき、 ULONG-MIN あるいは ULONG-MAX カ区される。 もし 1 。 cale の設定 ( これも同しく ANSIC ライプラリ の回に述べている ) がデフォルトの、 C " でない場合、変 抛レーチンは locale に見合った数の表記を認識すること かできる。たとえば 1 。 cale がの設定になっている場 10 , 000 " という文字列を数値の 10 , 000 に変換 合は、 する。 bsearch ( ) C ライプラリには古くから、 qsort() というソート ( 整列 ) ルーチンが含まれている。ソートされたリストを 必要とする理由はさまざまだが、リストのなかからある 要素を取り出したい場合、あらかしめソートされたリス UNIX MAGAZINE 1992.7 *key, *base , num_ele , size, (*compare) (const VOid * , VOid * ) 捜したいデータ key を与えると、 bsearch() はアド レス base から始まる長さ num-ele のソートされたリス トのなかを調べていく ( 各要素の大きさは size バイト ) 。 このルーチンは、 2 つの要素を上罅交するときに、ポインタ compare で示された上友関数を用いる。 bsearch() は一 致する要素をみつけるとそれへのポインタを返し、みつか らなければ NULL を返す。 こで使われる上罅友関数は、 qsort() で使われるもの とまったく同しセマンティクスをもっことを仮定してい る。すなわち、第 1 要素カ睇 2 要素より小さい場合は負 の整数、等しい場合は 0 、大きい場合は正の整数を返すよ うな関数だ。 81
ニューフェイスを プロにする、 DZ ー XCt) 日間、 td O 一一日間。→ 誰か教えるのか、どのように指導すれは効果か得られるのか 技術者教育に頭を悩ます担当の方々に、 富士ゼロックス総合教育研究所はお応えします Daemons and Dragons ムの管理を妨げると感じないかぎり、ユーザーが本当に 秘密にしておきたいファイルを暗号化するのを止めるこ とはできない。場合によっては、ごく単純な暗号であっ ても管理者が「今晩までにそれを普通のテキストファイ ルに戻しておくように」と命しるかもしれない。なにし ろ、彼はパイロットのように絶大な権限をもっているの である。もっとも、ファイルが異常に大きかったり、シ ステム資源を濫用するものでなければ、管理者がそのよ うなことを言いだすとは思えない。セキュリティ上、重 要なファイルであっても、暗号化するときは圧縮するく らいの気遣いはしてほしいものである。 権力をもっことに不安を感しそれを慎重かっ秘密裡 に行使できない者は、システム管理者を含むいっさいの 管理業務に携わるべきではない。 私の主張は、大規模システムにおける、、コンピュータ のオペレータ " や、、プログラマー " にまで適用されるも のではない。しかし、これらの職種に就く人びとは、機 密やプライバシー保護についてシステム管理者と話し合 っておくべきである。もちろん、むやみに覗き見をして はならないとか、それによって解雇される場合もあるこ とを知っておかなければならない。誰かを雇う際にあら かしめすこしでも説明しておけば、誤解されるようなこ とはないであろう。大規模なサイトでは、このような方 針はうまく機能しないかもしれない。だが、結果的に誰 かが解雇されれは、教訓はさらに強く全員に浸透するだ ろう。そして、管理者は新入社員に対して「これは理論 ではなく、現実なんだ。実際に解雇されたオペレータも いる」と言えるようになるのである。 春の大掃除を終え、約 100 立方フィートの、ゴミ " がガレージからなく なった。空いた場所には米国製の自俥が鏸坐している。原文を提供して いただいた lrving Wolfe 氏に感謝の意を表したい。 「 Privacy and P01icy 」 UNIX REVIEW 1991 年 8 月号より ◎ 1991 , UNIX REVIEW (). S. A. ) ミ - ・開催日 ・ C 言語入門 6 月 22 日 ( 月 ) ~ 25 日木 ・ C プロクラミング 5 月 27 日水 ~ 29 日金 ・ライプラリ入門 6 月 9 日火 ~ 10 日水 ・プログラム開発ツール入門 6 月 11 日木 ~ 12 日金 ・オプジェクト指向入門 6 月 22 日 ( 月 ) ~ 23 日火 ・オプジェクト指向実用 6 月 24 日水 ・オプジェクト指向分析 5 月 20 日水 ~ 21 日木 ・オプジェクト指向設計 6 月 18 日木 ~ 19 日金 ・ SmaII talk グラフィックスライプラリ 6 月 3 日水 ~ 4 日木 ・ Small talk-MVC 6 月 15 日 ( 月 ) ~ 17 日水 ■開催場所 ( 東京・新宿 ) ソフトウェア技術研修所セミナー・ルーム ※ UNIX は AT & T ( 米国電話電信会社 ) のベル研究所 が開発した OS て、す。 ※セミナーのお中し込み、お間い仆わせはト記へ。 URob Kolstad FWI XEROX LEARNI NG INSTITUTE INC. 富士ゼロックス総合教育研究所 人材開発 3 部担当 : ) 〒 170 東京都豊島区東池袋 3 ート 1 サンシャイン 60.17 階 話 03 ( 5391 ) 3311 FAX().'} ( 5 : い 2550 資料請求 N 。 00A 65 UNIX MAGAZINE 1992.7
UN Ⅸへの招待⑩ 、、、う大雑把な指示ではなく ) 細かい指示ができます。この指 いかがですか ? 見栄えは悪いけど、ちゃんと表らしいも のが書けますよね ? ところで、前の例で使用したオプション tab() は、カラ ムとカラムのあいだに置く 1 文字を指定するものです。 ( 前 述したように ) 省略時はタブ文字と決まっていますが、それ をなんらかの 1 文字に変更する場合に使用します。次に、 パイプラインの最後で使用した colcrt コマンドですが、 これは nroff からの出力を専門に処理するフィルタブロ グラムです。 nr 。 ff では、逆改行をして表の罫線を引いてい ます ( おそらく、最初にデータを書いてしまい、逆改行して あとで線を引いているのでしよう ) 。 colcrt は、これを処理 して結果を端末に表示するコマンドです。 という感しです。では、例を見てみましよう。 ・横罫線の指示 示は、 ・・・データ中でおこなう ・縦罫線の指示・・・・フォーマット中でおこなう の罫線は、罫線を引きたい行間で、下線 ( ー ) 記号を使って定 のように、引きたいところで縦棒を使って定義します。横 1 ににに . ことになっています。縦の罫線は、フォーマットの部分で、 義します。 ここと ここに もっと自由に罫線 もっと罫線を自由に引きたい場合は、 % cat data .11 40 . pl 20 . TS tab(@) ,box; c lc c lc 1 r . 適用@単価@数量@合計 (allbox などとい / 92 年度年会費 ( 法人 ) 800 , 00g2 ロ 00 , 000. ー 92 年度年会費 ( 個人 ) , 合計@ー9ー 9612 , 000. ー % tbl data ー nroff ー 適用 22 年度年会費 ( 個人月 22 年度年会費 ( 法人月 ー合計 0083 人 912 , 000. ー colcrt 単価 38 , 000 4 , 000 数量ー 2 ロー 3 入ー 合計 600 , 80. ー 12 , 80. ー 612 , 80. ー オプションの box で、表に外枠が付けられます。 UNIX MAGAZINE 1992.7 うに記述したい場合を考えます。 というコマンドを使います。たとえば前例の表を、次のよ 表の途中でフォーマットを変更したい場合には、 途中でフォーマットを変える 171
連載 //UNIX Communication Notes—O いずれにせよ圧縮率は記事ごとに変動しますし、 1 つの 通常は batcher を使用します。このほか Cnews に 記事をバッチ作成時に分割することはないので、第 2 フ は batchsm と batchih が付属していますが、これらは ィールド窈旨定はあくまでも目安だと思ったほうか無難で ihave/sendme のためのものであり、通常は使いません。 す。 第 3 フィールドは、 1 回の sendbatches 実行で送る デー列宿やコード化など、各通信手段 (sender) に合 バッチの数を指定します。ただし UUCP(uux) で送る場 わせた記事バッチの変型をおこないます。 Cnews に付属 合、 UUCP キューに溜まったジョブの数を調べて差し引 してくる muncher は以下のとおりです。 きます。たとえば第 3 フィールドが 10 で、 sendbatches の起動第にすでにメールジョブが 5 つあるときは、バッ 圧縮 符合化 する チは 5 個だけ送出されます。 なし comp 第 4 ~ 6 フィールド (builder 、 muncher 、 sender) 対 Bnews 用 compcun は、しつは NEWSBIN/batch に置いてあるコマンドの c7encode compc 7 ファイル名です。そのはか、 NEWSCTL/bin 、 NEWS- benco de compb BIN と、 Cnews のインストール時に設定した PATH ( デ すべてシェルスクリプトです。それぞれについて説明し フォルトは /usr/bin 、 /bin 、 /usr/ucb) に置かれている ます。 コマンドも使用できます。そオ・の外の場所のコマンドを使 いたければ、絶対パスで書かなければなりません。 ・ nocomp 何もしません。しつは cat です。 sendbatches の竟変数 ・ COIIIP これら 3 種のコマンドを sendbatches が実行するとき compress を使って圧縮します。 には、以下の 3 つの環竟変数を設定します。 ・ comp compress てリ王したノヾッチの則に # ! cunbatch ・ NEWSSITE という行を付けます。送る相手が Bnews など、 com- 送信先のシステム名が入ります。 press の出力そのままでは処理できない場合に使用しま ・ NEWSSITEDIR す。相手が Cnews だと分かっている場合だけ comp 己事リストなどが置かれるディレクトリのフル・パ を使い、そうでなければ compcun を使うのが無難で スネームが入ります。現状の Cnews では NEWS- しよう。 ARTS/out. going/$NEWSSITE となります。 Bnews の rnews は、入力の 1 行目で形式を判断し ・ PATH ます。 上で説明した PATH の先頭に、さらに NEWSSITE- バッチそのまま DIR が置かれます。 compress でされたノヾッチ # ! cunbatch 送信先に固有の builder 、 muncher 、 sender が内部で compress で圧縮され、さらに 7 # ! c7unbatch 使用するプログラムなどは NEWSARTS/out. going/ ピットエンコードされたバッチ sysname に入れておけはよいわけです。 それ以外 バッチになっていない記事と判断 Cnews ではこれに加えて、 compress で圧縮されたデ 以降、 sendb atches で使用する builder 、 muncher 、 ータかどうかも判断するので、 compress の出力のまま sender について説明します。 でも大丈夫なのです。 builder ・ comp c 7 己事のバッチを作るコマンドです。 compress で圧宿し、 7 ビットエンコード (c7encode) しない n0C01 月や 1 = 1 ロ 一三ロ 47 UNIX MAGÄZINE 1992.7
UN Ⅸへの招待⑩ ってしまうのですが、ふだんはそれほど多くのコマンドを 、ゝ◆行のミ自込み 使うわけではありません。そこで、当初の目的である、、メ ールメッセージの清書〃や、簡単なレポートが作成できる nroff では、 fmt と同しように行を前行に追い込みます。 程度の知識を身につけていただきましよう。 ただし、 まずは基本のお約束 追い込まないという命令 (. (f) が使われている 三 0000 = 00 空白行である nroff には、基本的な約束ごとがいくっかあります。これ を踏まえて nr 。 ff のコマンドを勉強したほうが効率的な ので、ますはそれを紹介しましよう。 という 3 つの場合は追込みをおこないません。 % cat data-l こんなふうになっていると、 この行は前の行に追い込まれます。 % nroff data—l こんなふうになっていると、この行は前の行に追い込まれます。 % cat data-2 . pl 1 さて、 この場合は ? ? 行頭に空白があります。 前行は空白だから、この行は追い込まれないはずです。 % nroff data-2 さて、 この場合は ? ? 行頭に空白があります。 前行は空白だから、この行は追い込まれないはずです。 これらの約束ごとを利用すれば、、、段落が変わるときに は、新しい段落の先頭行の行頭に空白を置ぐという点に だけ注意して、そのはかの文章は、改行などの体裁を気に せすにどんどん入力するだけで、簡単な文書が作成できる はすです。少々おかしな例ですが、次をご覧ください。 % cat paragraph . pl 1 .11 20 どうでしようか ? これは最初の段落です。 ここで、 2 番目の段落が始まります。 いよいよ 3 番目の段落です。 以上で、 3 つの段落が終りました。 % nroff pa 工 agraph どうでしよう か ? これは最初の段 落です。 ここで、 2 番 目の段落が始まります。 いよいよ 3 番 目の段落です。 以上で、 3 つ の段落が終りました。 なおここで、行頭の空白は ( タブではなく ) 8 つのスペー ス文字です。タブ文字を行頭に使った場合、その行は前の 行に追い込まれてしまいます。注意してください。 では、次のお約束です。 ◆単語間には、適当な空白が入る これは、日本語の文章では直接関係ありません。 nroff は、 もともと英語を扱うために作られたものですから、このよ うな機能力咐いているのです。 nroff は、 1 行の長さ (nroff コマンドでとくに指定しなければ 65 文字 ) に複数の単語 がきれいに収まり、しかもハイフネーション ( 1 単語内にハ イフン ( ー ) を入れて、 1 単語中で改行すること ) がなるべく 163 UNIX MAGAZINE 1992.7