iJN Ⅸへの招待⑩ 実彳」 2 $ MAILPATH="/usr/sp001/mai1/siroyagi% しろやぎさんにお手紙着いた : /usr/spool/mail/kuroyagi% くろやぎさん にお手紙着いた” $ MA ILCHECK=O $ mai1 siroyagi く otegami しろやぎさんにお手紙着いた $ mail kuroyagi く ohenj i くろやぎさんにお手紙着いた 間隔でおこなわ省略値は 600 秒 ( 10 分 ) になって います。これではちょっと間隔カ張すぎるという場合は、 MAILCHECK に何秒おきにチェックするかを値として代入 しておきます。この値を 0 にすると、シェルはプロンプト を出力するたびにチェックをおこないます (xbiff や biff の代わりにこの機能を使うのなら、値を 0 にしておくと いいですね ) 。 MAILPATH は、 MAIL の彳齬リによく似ていますが、複数 のバス名を代入できる ( つまり複数のメールポックスを 検査できる ) のと、メールが届いた際に出すメッセージ をユーザーカ甘旨定できる点が異なります。複数のパス名 は、それぞれ : で区切ります。また、出力するメッセージ はパス名の最後に % を置き、その後ろに指定します。 MA 工 LPATH = パス名 1 % メッセージ 1 : パス名 2 % メッセージ 2 メッセージのなかに空白 (IFSDflf) が入るときは、値 全体を引用符で囲んでおけば問題ありません ( もちろん、 これ以外のガ去で引用符を使ってもかまいません ) 。 MAILPATH = ”パス名 1 % メッセージ 1 : パス名 2 % メッセージ 2 “ 実行例 2 を見てください。普通のユーザーはあまり利 用しないかもしれませんが、複数のアカウントをもってい てそれぞれにメールがくるとか、いくっかのアカウントの メール到着を監視しなけれはならないなどという方には、 便利な機能といえるでしよう (finger や msgchk を実行 すればさらに詳細なデータが得られますが、コマンドを 実行しなくてもメールの到着が分かる点はこちらのほう カ硬利です ) 。 PATH は、 C シェルのシェル変数 pat 五と同じ働き をもつパラメータです。シェルは、この値に代入されて UNIX MAGAZINE 1993.9 いるディレクトリからコマンドを検出します。 PATH には (MAILPATH や CDPATH などと同様に ) 複数の値を代入で きます。それぞれの値は : で区切ります。たとえば、 a と b と c のディレクトリを代入するのであれば、次のよう に入力します。 $ PATH=a: b: c ところで、 PATH の値として : を続けて入力すると、そ のあいだは、、 " ( カレントディレクトリ ) とみなされま す。 $ PATH=:a:b:c $ PATH=a:b:c: のように、値の最初か最後に : を置くこともできます。最 初に置いた場合は、検索の順番はカレントディレクトリ からになり、最後に置いた場合は、検索の最後がカレン トディレクトリになります。 PSI と PS2 は、シェルが出力するプロンプトカイ直 として代入されているパラメータです。省略値はそれぞ $ と > になっています。 PSI は 1 次プロンプトと呼ば 通常シェルが出力するプロンプトです。 PS2 は 2 次 プロンプトで、ユーザーのコマンド入力か完了せずに改行 が入力されたときにシェルから出力されます。たとえば、 継続行を表す \ を入力したときなどにこのプロンプトが $ PATH=a: :b:c 上のように入力すると、コマンド検索のディレクトリ 、 b 、 c の順になります。このほかに、 出力されます ( 実列 3 ) 。 169
emacs 入門 し、 、 1- x justify-current-line を実行してみてください。カーソルがある行の両端が fill ー column で指定した長さに揃います。 行揃え処理は、 ・文字と文字のあいだにスペース文字を入れて両端カう ようにする のが基本ですが、文字と文字のあいだならどこにスペース を入れてもよいというわけではありません。英語の文章だ と、 1 つの単語の文字と文字のあいだにスペースを入れて は、単語の区切りが分からなくなって不可。また、日本語 の場合には、通常の文字と文字のあいだはたとえ単語や文 節の切れ目であってもスペースを入れません。英単語とそ の他の言語が交ざった文章では、 ・英単語と英単語のあいだ ・英単語とそのほかの言語の文字のあいだ ・句読点の直後 にスペースを入れて、行揃えをおこないます。 たとえは、図 14a の各行を行揃えすると、図 14b のよう になります。おおおおお、これはひどい。スペースを入れ る位置刎嚇甫が 1 ~ 2 カ所しかなくて、しかも、多くのス ペースを入れなくては右端が揃わないような行で justify -current-line を実行すると、かなり驚くような結果にな ってしまいます。すでに紹介したハングルのサンプルファ イル doc/sample. ks でも驚き加減は同し程度でした。 もし、普通の文章の体裁をすこしはかりよくしたいのな 1 . kinsoku-nobashi-limit を 0 にする ら、 148 ます機能の説明から始めましよう。表ノバ属性に関係するコ 表示属性もこれまで話題にとりあげたことがないので、 表示属性 の処理をフルコースでおこなってください。 3. justify-current-line で行揃えをおこなう 2. fill-paragraph や fill-region で行詰め処理をおこな マンドは、 attribute-on-region attribute-off-region の 2 種類で、マークとカーソルのあいだの領域 ( リージョ ン ) に表飛属性を設定します。表示属性の不頁は Nemacs と Mule ではすこし違うのですが、 Nemacs では、 の 3 不頁の属性を指定できます。 ・ポールド (bold) 反転 (inverse) 下線 (underline) の 2 種類の属性を指定できます。 MuIe では、 ・反転 (inverse) 下線 (underli ne) また、 attribute- x >< >< ー という文章のゞ反転ク部分を反転表示させることを目標と こを反転させる ましよう。 では、実際に attribute-on-region コマンドを使ってみ 下線、反転、ポールドのすべての属性が表示できました。 ウインドウ付属の kterm 上で Mule を起動したときは、 た属性で表示されるかどうかは端末の機能によります。 X し、端末版 MuIe で属性を設定したときに、本当に指定し ありませんが、 Mule では端末版でも実行できます。ただ region コマンドは、 Nemacs では X ウインドウ版にしか こを反転固せる ルを、、さ〃の文字に移動して、 set-mark コマンドでマークを設定します。次に、カーソ こを国転させる します。ます、、、反〃の文字にカーソルを移動し、 UNIX MAGAZINE 1993.9 以上の操作が終ると、あーら不思議、さっきまで平凡だっ Attribute : inverse M—X attribute¯on¯region されるので、 inverse と指定します。 ンド行には、、どの属性の設定をしますか ? 〃の問いが表示 attribute-on-region コマンドを実行してください。コマ
ernacs 入門 // へ 0/ N の行の文字数とくらべながら機械的に折返し作業ができ 実行したときとでは違い、 るのですが、実際にはもっと複雑な処理を要求されること ・ fill モード : 文章の入力時で区切り文字を入力したとき があります。 ・ fill- x x x コマンド : コマンドを実行したとき 行詰めは、もともと普通の文章を見苦しくならないよう に表示 / 印刷するための機能です。ところで、一ヨ殳の文章の となっています。 印刷形式には、、禁則〃というルールがあり、これを破ると 1 行の長さをどのくらいにするかは、文章の種類や出版 、、見苦しい表示クというレッテルを貼られてしまいます。ど 社の指示 ( ! ? ) 、著者の好みなどによって決まり、とくに決 まった長さがあるわけではありません。そこで、 Emacs/ の国の言語でも禁則処理があるとはかぎらないのですが 3 、 すくなくとも英語と日本語には、 Nemacs/Mule ではユーザーが行詰め処理のための 1 行 の長さを Emacs Lisp 変数 fill-column を利用して、自 ・行の先頭に置けない文字がある ( 行・頭禁則文字 ) 由に指定できるようになっています。ちょっと fill ー C01- ・行の末尾に置けない文字がある ( 行末禁則文字 ) umn の値を覗いてみましよう。 という制限があります。たとえは、一般的に行頭には、 M—X eval—expresslon Eva1: fill—column 筆者の環境ではエコー行に 70 と表示されました。どうやら何も設定していないときに は、 1 行あたり 70 文字になっているようです。 次に、 fill-column の値を変更してみましよう。 eval- expression コマンドなんて、もう目をつむっていても使 えますね。 M—X eval—expresslon などの開き括弧がこないようにします。 Eva1: (setq fill—column 文字数 ) 日本語だと上で示したような特殊なケース以外は、文章 の途中の適当な箇所で改行できます。しかし、英語の文章 もし、文字数を直接指定するのではなく、 では、単語の切れ目が縁の切れ目・・・・・・じゃなくって、単語 「バッフアのこのカラム位置までを 1 行の長さに決めたい」 の切れ目カ哘の切れ目 4 。 1 行の長さをはみ出したからとい って、単語の途中で、、ぶちぶち〃切って改行するわけには というときには、 いきません。そこで、英語の文章の場合には、単語の途中 M—x set-fill-column では改行しないようにします。 Mule も Nemacs も、 auto-fill-mode あるいは fill を実行してください。 ー XXX コマンドを実行すると、 たとえは、 1 行の文字数を 30 文字に設定しておくと、図 11a のように長い行を入力したときには、自動的に折り返 ・英単語の途中での改行禁止 します ( 図 11b ) 。もし、 ・行頭術末禁則 ・ 1 行に全角文字と半角文字か混在している の両方の制約条件を考慮しながら、自重加勺に行詰め処理を ・ 1 行の文字数が奇数 などで行末で半端が出たときには、右端を空けたまま改行 3 正確には、感どの国の言語でも禁則処理が存在するかどうかを筆者は知らない のですが〃というべきですね。 して次の行から書き始めます。これだけの処理なら、現在 4 条件と結論の関係が逆のような・・・ UNIX MAGAZINE 1993.9 などの句読点が、行末には、 145
ernacs 入門 図 9 多国語モードを有効にしたときの日本語の表示 その男はセールスマンたった 営業成績は抜群。 重役の娘とク鯀勺して前途は場々だった。 ところか、ある日ライバルか入社していらい様子か変わった。 そいつは、会ったとたんに嫌な気分にさせる顔つざたった。 嫌われている事を察したのか、 ライバルの方ても何となくその男を嫌っているようたった。 1 週間も立たないうちに、その事はハッキリした。 強引な手段て次々と取リ引き先を奪われたはかりか、 知らぬ間朝勺者たった役の娘まで横取リされていた。 そして新殳の婿の立場を利用して出世したライバルは、 1 年もたたないうちに、とうとうその男の上司におさまってしまった。 それからは、その男にとってつらい日々かつづし、た。 どんなに働し、て成績を上げても、 成果はすべてライバルに吸い上げられてしまい、 その男に残されるのは、山のような残業と上司であるライバルの罵声たけ。 を実行すれば、多国語モードを解除できます。 意されています。 全体の多国語モードを切り替える Emacs Lisp 変数も用 こまでの説明から想像がっくと思いますが、エデイタ てのバッフアの多国語モードが変更されます。 を試してください。これから作るバッフアも含めて、すべ 、 x toggle-default-kanji-flag を、 Nemacs では、 M-x toggle-default-mc-flag Mule では、 ます。 体の多国語モードをいっきに有効 / 無効にすることもでき あるカレントバッフアを操作する関数ですが、エデイタ全 toggle-mc-flag や toggle-kanji-flag は、カーソルが 国語モードを指定できます。 す。また、 Emacs Lisp 変数の kanji-flag を変更しても多 を実行してみてください。多国語モードが切り替わりま M-x toggle-kanji-flag アの多国語モードを無効にしたり、有効にしたりできます。 Nemacs を使っている場合も、やはり同しようにバッフ Mu1e : Nemacs : default—mc—flag default—kanj i—flag setq 関数を使って t ( 多国語モードが有効 ) または nil ( 多国語モードが無効 ) を指定すれは、やはり多国語モード を自由に切り替えることができます。 図 9 は多国語モードカ陏効なときの表示です。日本語が 144 図 10 多国語モードを無効にしたときの日本語の表示 UNIX MAGAZINE 1993.9 ( F リ・けョ m t 引 ) ー T00 ーー おこなうかは、 fill モードのときと fill ー xxx コマンドを 置で折り返す機能です。何を入力したときに折返し処理を ーが指定した文字数よりも長い行をエデイタが適当な位 うが、いま一度機能を説明しておきましよう。 fi Ⅱはユーサ でとりあげたことがあるので、憶えている方も多いでしょ fill モードや fill ー xxx コマンドは、すでに Nemacs 処理を指します。 折返し〃機能があります。、、行詰め〃とは、この fill 関連の どの fill- x >< x コマンド、あるいは fill モードによる自動 GNU Emacs には fill-region や fill-paragraph な の行に文字を埋める行詰めについて説明しましよう。 MuIe の紹介としてはちょっと唐突ですが、決まった幅 行計め について説明しましよう。 ・属性表示 ・彳孑前え ・行詰め じですが、漢字の扱いや表示で違う部分もあります。 しているので、コマンドの使い方や指定方法はだいたい同 Nemacs と Mule は、どちらも GNU Emacs をもとに マ文章と表示の扱い で表示されています。 すると、図 10 の表示になりました。漢字が 8 進数の \ xxx gle-mc-flag コマンドを実行して多国語モードを無効に 正しく表示されていますね。このバッフアに対して、 tog- \ 222 \ 267 \ 371 \ 222 \ 244 \ 357 \ 、 222 \ 244 \ 4 \ 222 \ 244 \ 38 、、 222 \ 244 \ 244 \ 222 \ 244 \ 3 \ 222 \ 27 \ \ 241 \ 243 3 \ 盟 2 \ 264 \ 351 \ 222 \ 244 \ 84 \ 222 \ 244 \ 為 5 \ 222 \ 244 \ 300 \ 22 \ 244 \ 83 \ 222 \ 244 \ 277 \ 2 \ 22 \ 244 \ 312 \ 222 \ 5 \ 244 \ 222 \ 3 ! 2 \ 4 \ 222 \ 244 \ 313 \ 222 \ 244 \ 265 \ 222 \ 244 \ 273 \ 222 \ 244 \ \ 4 \ 303 \ 222 \ 244 \ 277 \ 222 \ 244 \ 310 \ 222 \ 244 \ 277 \ 222 \ 244 \ 3 \ 222 \ 244 \ 313 \ 222 \ 7 \ 371 \ 2 \ \ 222 \ 244 \ 2 \ 2 \ 244 \ 244 \ 222 \ 244 \ 84 \ 222 \ 244 \ 317 \ 222 \ 24 ハ 242 \ 222 \ 262 \ 1 \ 222 \ 24 \ \ 244 \ 277 \ 222 \ 241 \ 243 244 \ 222 \ 315 \ 315 \ 2 \ 刀 3 \ 322 \ 222 \ 244 に \ 222 \ 312 \ 321 \ 222 \ 244 \ 7 \ 222 \ 244 、 83 \ 222 \ 22 、お \ 376 \ 盟 2 \ 274 \ 3 \ 2 \ 244 \ 7 \ 2 \ 244 \ : 爻石 \ 222 \ 244 \ 244 \ 2 盟、、 244 \ 1 \ 222 \ 244 \ \ 4 \ 3 \ 222 \ 3 \ 374 \ 222 \ 245 \ 1 \ 222 \ 245 \ 244 \ 222 \ 245 \ 320 \ 222 \ 245 \ 353 \ 2 \ 244 \ 4 \ 2 \ \ 222 \ 244 \ 310 \ 222 \ 244 \ 3 \ 222 \ 244 \ 5 \ 222 \ 244 \ 2 図 \ 222 \ 241 \ 242 \ 222 \ 244 \ 242 \ 222 \ 24 \ 22 \ 241 \ ハ盟 2 \ 244 \ 38 \ 盟 2 \ 244 \ 83 \ 2 \ 244 \ 2 \ 222 \ 241 \ 243 4 \ 3 \ 222 \ 244 \ 7 \ 222 \ 244 \ 3 \ 222 、 81 、、叭 222 \ 、 323 \ 222 \ 244 \ 317 \ 222 \ 315 、 31 叭 2 \ \ 222 \ 275 \ 3 物 \ 2 \ 314 \ 2 \ 222 \ 244 \ 316 \ 222 \ 314 \ 274 \ 222 \ 244 \ 310 \ 222 \ 272 \ 247 \ 222 \ 31 \ 7 \ 2 \ 222 \ 241 \ 243 \ 222 \ 261 \ 3 、、 2 盟 \ 6 \ 310 \ 222 \ 38 \ 2 田、、 222 、 38 \ 323 \ 222 \ 244 \ 317 \ 222 \ 31 叭 4 \ 222 \ \ 22 \ 241 \ 243 5 \ 353 \ 222 \ 245 \ 271 \ 222 \ 245 \ 3 \ 222 \ 245 \ 363 \ 222 \ 244 、、、 80 \ 222 \ 244 \ 303 \ 222 \ 244 \ 277 \ 2 \ \ 222 \ 244 \ 2 葯 \ 222 \ 244 、 316 22 \ 83 \ 313 \ 222 \ 244 \ 317 \ 222 \ 245 \ 273 \ 222 \ 241 \ 274 \ 222 \ 24 \
いときは、 変更する場合は、次のようにシェルによってガ去が異なり デフォルトのコンノヾイラやコンノヾイノレ・オプションを れます。 とすれば、実行ファイルがパス名 / bin にインストールさ % . /configure ——exec—prefix=/< ス名 ます。 ・ bash や zsh などの B シェル系 % CC= ' gcc —traditional ' CFLAGS=—02 ・ tcsh などの C シェル系 % ( setenv CC 'gcc —traditional' . /configure) setenv CFLAGS ー 02 . /configure このほか、 make の夫行時に引数として指定することも できます。 % make CC= 'gcc —traditional ) CFLAGS=—02 make がうまくいったら、 make check と入力します。 OK の文字が出力されれは、正しくコンパイルできてい ます。 最後に make install を実行します。インストールさ れるコマンドのうち zcat は COMPRESS にも同名のも のか存在します。 GZIP に付いてくる zcat は compress で宿したファイルも鮹東できるので、同じコマンド名の ままでも混乱はないでしよう。どうしても名前を変えたい % make manext=l install に変更する場合は次のようにします。 トでは、、 1 ( いち ) " になっています。これをコ ( 工ル ) ' マニュアルをインストールするセクションは、デフォル % make ZCAT=gzcat install 場合は、次のようにします。 UNIX MAGAZINE 1993.9 deflate method, original file name f00 ・ gz: gzip compressed data % file f00 ・ gz ます。 file コマンドが gzip フォーマットを認識するようになり STALL に書かれています。 /etc/magic を変更すると、 の情報を付け加えてください。この情報はファイル IN- 最後に、 file コマンドが参照する /etc/magic に gzip IJN Ⅸ知恵袋ロ gzip の悲劇は 2 つあります。 1 つは名前に gzip を選 ロ gzip の悲劇 はは同様です。 GNU tar のインストールは、 GZIP のインストールと Compression ” , IEEE Computer, V01. 17 , NO. 6 , [ 3 ] T. Welch, "A Technique for High-Performance Data 1978 , pp. 53 -536 actions 0 れ 1 れルロれ 0 0 れ T ん eo 型 , V01. 24 , NO. 5 , Sequences via Variable-Rate C0ding ” , IEEE Trans- [ 2 ] J. Ziv and A. Lempel, "Compression of lndividual pp. 337 ー 343 0 れ s 0 れ一れ工 brma 0 れ Theory, V01. 23 , NO. 3 , 1977 for Sequential Data Compression ” IEEE 、佖れ s 佖 c ー [ 1 ] J. Ziv and A. Lempel, "A Universal AIgorithm [ 赭文献 ] ( おおた・ひでのり、やまもと・かすひこル、日大判 でしよう。 高く、今後の石。ログラムの実質的な標準になっていく 今回は、 gzip について紹介しました。 gzip は圧縮率が Gzip is not GNU zip. 最後にひと言 だっただろうと想像します。 ーヨ勺になった現在、この変更にはたいへんな勇気が必要 スを . z から . gz に変更しました。 mirror や ftpsync が ために、 GNU では配布しているファイル名のサフィック いうアーカイバですでに使われていました。混乱を避ける 前述したように、 . z というサフィックスは、 pack と でに遅し」と語っています。 作者は「 gzip とは違う名前を使うべきであったが、時す gzip はファイルを圧縮する圧縮プログラムです。 gzip の 複数のファイルを 1 つにまとめるアーカイバなのに対し、 が、 gzip と zip はまったく別のプログラムです。 zip が の ) 宿 / 東に関するコードを書いたのは同じ人びとです GNU の zip というイメージを抱力、をます。 gzip と zip 選んでしまったことです。 gzip という名前はどうしても んだこと、もう 1 つは初期の段階のサフィックスに . z を 1984 , pp. 8 ー 19 125
表 1 圧縮率の比較 vmt1111X ( ファイルサイ幻 1 , 844KB compress pack3 lha4 5 z IP gZIP 5 、 6 45.9 25.6 56.0 54.9 56.8 nemacs-3.3.2. tar 12 , 008KB 60.8 32.2 70.0 69.0 72.9 gZIP ・ c 49KB 56.1 36.0 67.8 67.4 70.2 ( 単位 : % ) SKK-JISYO. L 1 , 788KB 51.2 34.4 62.2 60.8 62.1 表 2 圧縮にかかる時間 ( 単位 : 秒。 time コマンドで引側 ) nemacs-3.3.2. tar gzip. c SKK-JISYO. L compress pack lha z IP gZIP 6 ロ圧縮率 vmun1X 13.48 10.51 81.20 40.24 35.20 68.24 55.85 603.67 206.78 134.90 0.44 0.28 2.66 0.91 0.54 11.08 7.85 99.37 53.34 30.52 gunz IP zcat 圧縮されたファイルを東する。 圧縮されたファイルの内容を見る。 まず、圧縮率を調べてみましよう。上交のために、はか の ( アーカイバを含む ) 圧縮プログラムのデータもとってみ ました俵 1 ) 。この表の圧縮率は、次のように言 1 算してい ます。 ) 王系宿 ( % ) = 元のファイルサイズーⅡ慚変のファイルサイズ x 100 元のファイルサイズ サンプル数が少ないので一概にはいえませんが、バイナ リ、 tar でアーカイプされたファイル、テキストファイル のどれをとってもよい結果が出ています。次にコ宿にか かるを測定してみました俵 2 ) 。掟には、 SPARC- server 630 を使用しました。 宿率では同程度の lha とくらべると、格段に速いこと カ竕かります。これらの結果から、 gzip は圧縮率、圧縮 時の両面で優れているといえます。 ロ使い方 GZIP のなかで、ユーザーがよく使う代表的なコマンド は次の 3 つです。 gZIP ファイルを ) 宿する。 2 3 4 5 6 LZW gzip ーー 6 を使用しています。 encoding on whole 61e LZ77 with hashing, plus secondary static Shannon-Fano Huffman coding on a block basis LZ77 with a tree data structure, plus secondary static Static Huffman coding 122 gzip は引数で渡されたファイルを ) 丑宿し、ファイル名 の後ろに・ gz というサフィックスを付け加えます。それで は試してみましよう。 % ls ー 1 f00 -rw—r——r—— 1 kazu 131759 Ju1 4 21 : 04 f00 % gzip f00 % ls ー 1 f00 ・ gz —rw-r——r—— 1 kazu 27752 Ju1 4 21 : 04 f00. gz 今度は鮹東してみます。引数に指定するファイル名のう ち、 . gz は省略してもかまいません。 % gunzip f00 ・ gz % ls ー 1 f00 * —rw—r——r—— 1 kazu 131759 Ju1 4 21 : 04 f00 zcat の引数に gzip で圧縮されたファイルを指定する と、鮹東した内容を標準出力に出力します。 博多はきようも雨だよーん。 f00 の中身だよーん。 % zcat f00 ・ gz UNIX MAGAZINE 1993.9 でプログラムを見てみましよう。 じつは、 3 つのコマンドは同しプログラムです。 ls ー 1 れば、 gzip を気軽に使うことができます。簡単でしよう ? 旨定することもできます。ここまでに説明した知識があ これら 3 つのコマンドには、引数としてファイル名を複
この状態で、 CtrI-D または exit と入力すると nslookup か終了します。また、 help あるいは ? を入力 すると、ヘルプメッセージカ咄力されます。 ホスト名による IP アドレスの検索 ホスト名から IP アドレスを検索するには、プロンプト か表示されている状態でホスト名を入力します。 > raicho. rd. ecip. osaka—u ・ ac ・ JP ・ Defau1t Server: yankees . maJ0r ・ ac ・ JP ・ Address : 192.9.200. 13 Non—authoritative answer : Name : raicho. rd. eCIP. osaka—u. ac ・」 p Address: 133. 1 .84. 1 定意 4 . " を付けると絶対表記にな 入力するホスト名の最後に り、そのまま検索されます。付けない場合は、「リカレヾの設 定」の項で説明したように resolv. conf て指定されたドメイ ン名や search で記されたドメイン名を付加して検索します。 ネームサーバーを指定して検索することもできます。そ Non—authoritative answer : 163.221.80.13 Address : Defau1t Server : ns . aist— ・ j p ・ > raicho. rd. ecip. osaka—u. ac. JP. ns . aist—nara. ac アドレスを指定します。 連載 /UN Ⅸ Communicatlon Notes リスト 5 nslookup を使用して SOA レコードをする方法 > set type=soa > aist—nara. ac ・ JP ・ の場合は、ホスト名とともにネームサーバーの名前か IP inet address = 133. 1 .4. 18 harmony. center. osaka—u. ac ・ JP 163.221.80. 13 inet address ns . aist—nara. ac ・ JP Authoritative answers can be found from: serial = 200072 , refresh=10800 , ret て y = 3600 , expire = 3600000 , mail addr = postmaster. aist—nara. ac ・ JP aist—nara. ac. JP ongin = aist—nara. ac. JP Non—authoritative answer : 163.221.80. 13 Address : Defau1t Server: ns . aist—nara. ac ・ JP min = 86400 表 1 set type コマンドて寸諚できるリソースレコード 指定 CNAME NS SOA P TR MX HINFO TXT UINFO WKS MINFO ANY 間い合わせるリソースレコード ホストの IP アドレス ホストに付けられた別名から正式名を得るため の問合 その名前で定義されているドメインのネームサ その名前で定義されているゾーンの SOA レコ ポインタ情廴 IP アドレスか寸彳定されている場 合は、それに対応したホスト名 そのホスト / ドメインに対する MX (Mail eXchanger) ホスト情報 その名前に付けられているテキスト情報 その名前に付けられているユーサー情報 そのホストでの Well-Known Service その名則に対応した mailbox ク青報 得られるすべて窈青報 set コマンドによる内部値の nslookup は、デフォルトではホスト名から IP アド レスを検索します。つまり、通常はリソースレコードとし て A レコードを対象に本をおこなっています。これを、 set コマンドを使って SOA レコードや NS レコードを 検索するように変更することもできます。たとえば、 SOA レコードを本したいときはリスト 5 のようにします。 nara 44 Address: 133.1.84.1 raicho. rd. ecip. osaka Name : ・ ac ・ JP ーⅡ・ ac ・」 P set コマンドでは、 set ん 30 [ = va ん e ] として、次の引数を指定することで、 乍を決めることができます。 type=value nslookup の各種の ネームサーバーに問い合わせるリソースレコ ードの種 UNIX MAGAZINE 1993.9
DZ—X 流プログラミング 紹介してきましたが、すでに紹介済みのものも含めてま とめて説明します。 / * NOTREACHED * / このコメントが指定された位置には、プログラムの 実行が到達しないことを示します。つまり、コメント 以降の部分は実行されないものとして検査がおこなわ れます。ただ、コメントの後ろに書かれた文すべてが 実行されないわけではありません。 if 文などを使って分 岐している場合は、別の分岐は実行されることがありま す。 lint コマンドは、このあたりもきちんと調べてくれ ます。 ただし、この機能は関数の戻り値を検査する場合に 用いられるものです。コメントを指定してもそれ以降 の部分についてはかの検査はおこなわれるので、定義 していない関数を使っているときなどはその旨の出力 が得られます。また、代入などについても検査されま す。もし致命的な ( 定義していない関数を使っている などの ) 工ラーがあれば、 C コンパイラがエラーとなっ て停止することを考えると、これは妥当な処理だと思い ます。 このコメントは、通常は exit 関数や longjmp 関数 などの戻ることのない ( 戻り値のない ) 関数の直後に指 定します。これらの関数を使っている関数中では、この コメントを指定できる場所がいくっかありますが、すべ てに指定する必要はありません。戻ることのない関数の 直後にさえ指定しておけは、 lint コマンドが自動的に検 査してくれます。 ここで指定するのはあくまでもコメントですから、 C 前回は、 lint コマンドが用いるライプラリ・ファイ コンパイラ (lint も ) によって、文として解釈される ルの紹介と、 /usr/lib/lint ディレクトリにあるファ ことはありません。そのため、 if 文のなかに書く場合で イルについて説明しました。プログラムを書くときに も、本体が 1 つの実行文から構成されるならその文の 自分で作成したライプラリに対応するⅱ nt 用のライプ 直後に指定しておけばよく、その文とコメントをプロッ ラリも作っておくと、あとで同しライプラリを使って クとして中括弧で括る必要はありません 1 。 別のプログラムを書くときに利用できます。 では、意図的に無限ループを作成した場合にはどう 今回は、 lint 用のコメント、 Sun 以外の lint コマン でしようか ? 無限ループでは、その後ろに実行の制御 ド、とくに BSD 系と SystemV 系の違いについてお話 がくることは基本的にはありません。 C 言語では、 しします。 for ( ; 35 今泉貴史 lint 用のコメント lint 用のコメントは、これまで必要に応じてそのつど 1 ただし、プログラミング・スタイルとしては、あとから変史しやすい ように中括弧で括っておくことを勧めます。 152 UNIX MAGAZINE 1993.9
WEnet の利用方法 本誌では、電話回線を利用したフリー・ソフトウェアなどの配 布サーピスをおこなっています。 配布サーピスを希望する方は、編集部のホスト (WEnet) に モデム経由でログインし、希望するソフトウェアなどをダウンロー ドしてください。事前のお申込み、パスワードの当求などは必要あ りません。接続料金は通言辞ト金を除き無料です。 配布するファイル 原則として UNIX のソフトウェアやデータです。回線速度お よび回線数の都合により、原則的にアーカイプ / 圧縮後のファ イルサイズが 250KB 以下のものに限定します。 WEnet のアーカイプ・ファイルの形式 UNIX の tar 十 compress 形式 ( *. tar. / ) GNU の gzip 形式 ( *. 92 ) UNIX の shar 形式 ( *. s 静 ) lharc/lha 形式 ( *. ん ) 文字コード 日本語の README ファイルなどの文字コードは、日本語 EUC です。ただし、一 ; のドキュメント・ファイルは、日本 語 EUC と Shift-JIS()S 漢字 ) コードになっています。 接続プロトコル ・モデム間のプロトコル 、 VEnet のコマンド ・ディレクトリ、ファイル擽作 ◇ ls または dir [file ー市 cto 型 ] ディレクトリ内容の表示 ◇ cd directory ◇ pwd ◇ cat files.. ・ダウンロード カレントディレクトリの変更 カレントディレクトリの表示 テキスト形式ファイルの内容表示 ◇ proto none ー xmodem ー xmodem 0 〃 0 れ s ー ymo- dem 0 0 れ引 kermit] プロトコルの設定の意味は一己のとおりです。 none ファイル中幻幻こプロトコルを使用しない xmodem xmodem (CRC) を使用 xmodem lk xmodem をロングノヾケット ( IKB / ノヾ ケット ) モードで使用 xmodem modem7 xmodem を modem7 batch モードで使用 xmodem lk modem7 xmodem をロングノヾケット と modem7 batch の両モードでイ吏用 ymodem [lk] [modem7] ymodem を使用 ( lk 、 modem7 も設定可能 ) kermit kermit をイ吏用 ◇ binary ◇ text バイナリ形式のファイルを中幻 テキスト形式のファイルを中幻医 ピットレート データピット ノヾリティビット ストップピット モデム間フロー缶衂 全 2 重明司期無手顳 300 / 1 , 200 / 2 , 400bps 8bit なし lbit なし (MNP5 、 V. 42 / V. 42bis ) 、 XON/XOFF ( 以 3 つは、次の get コマンドの実行前に使用 ) ◇ get filename . ◇ set ・そ . ファイルの市幻を開始 プロトコル、ファイルモードク寉認 ・ホスト側の設定 ホスト ( リモート ) 工コー 歯テコード ( 送信 / 受信 ) 運用時間・メンテナンス あり CR/CR 十 LF ◇ help [command] 利用可能なコマンドの一覧を表力、引数にコマンド名を指定 すると、そのコマンドの詳しい使用法か表示される ◇ quit ☆サービス亭止 ログアウトし、電話回線を切る 運月」嗤 午前 8 時 30 分 ~ 舸変 2 時 40 分 舸麦 3 時 10 分 ~ 婀麦 9 時 定期メンテナンス毎週月曜日 ログイン WEnet に孑すると、次のように表示されます。 ( 接続後、何 も表示されない場合は RETURN キーを押してください ) 。 WeIcome tO WEnet , type "wenet" and hit return ← ( ログインプロンプト ) ログイン名、 wenet" を入力し、 RETURN キーを押しま す。ログイン名を間違えると、、 Passwd : " プロンプトが表示さ れます。この場合は何も入力せすに RETURN キーを押し、 login:" プロンプトが表示されてから、改めて wenet と入力 120 してください。 編集部移転にともない、一ド記の期間 WEnet のサービスを停止 します。また、サーピス再開時よりアクセス電話番号も変更とな ります。 停止期間 : 9 月 10 日 ( 日 ) ~ 9 月 20 日 ( 月曜日 ) アクセス蠡号 9 月 9 日まで第 1 回線 ( 03 ) 3797-1092 第 2 回線 ( 03 ) 3797-1357 9 月 21 日より第 1 回線 ( 03 ) 5351-8117 第 2 回線 ( 03 ) 5351-8118 ※号を間違えないようにごラも意ください。 UNIX MAGAZINE 1993.9
IJN Ⅸへの招待 実彳」 3 $ ls \ 1 aya プログラム実行時のキーワード・パラメータ 前述したように、キーワード・パラメータは、 変数名 = 値 28770 Jan 16 21 : 19 9302. tex で設定します。いったん設定したパラメータは、そのシェ ルカ鮗了するか、 unset コマンドを使って変数の設定を取 り消すまで有効です。 ところで、シェル・プログラムは、 ( ログインシェル ではなく ) ログインシェルから起動される新たなシェル によってその内容か実行されます。ここからは、シェル・ プログラムを実行するシェルのことを、、サプシェル " と呼 ぶことにします。 Bourne シェルでは、ログインシェル ではなくサプシェルの起重加に、そのサプシェルに対し てキーワード・パラメータが言聢できます。つまり、 変数名 = 値 ではログインシェルにキーワード・パラメータが設定さ れます。サプシェルの起重加に設定するには、値の後ろ にシェル・プログラム名を入力します。 変数名 = 値プログラム名 [ 引数 ] こうすると、変数名の設定とそれに代入しオは、シェ ル・プログラム、プログラム名を実行するサプシェルのみ 有効になります。例を見てみましよう。 170 $ ech0 $start $ test—l sno OPY $ start=snoopy test—l $ chmod + x test—l echO $start # ! /b in/ sh $ cat test—l シェル・プログラム test-l では、たんにノヾラメータ start をエコーバックしています。 C シェルと同様に Bourne シェルでもパラメータの値を利用するときは、そ の名前の前に $ を付けます ( 正確には $ { 変数名 } ですが、 { } は省略できます。省略するための前提条件は C シェル と同じです ) 。この形式でシェル・プログラムを実行する ときは、ファイルに実行権が与えられていなければなりま せん ( 例では、 chmod コマンドを実行しています ) 。 の状態で test-l を、 $ start=snoopy test—l と実行すると、結果として start の値 snoopy がエコー バックされています。また、 start を設定せすに test-l を実行すると、空白行だけがエコーされています (C シ ェルでは設定されていない変数の値を利用するとエラーに なりますが、 Bourne シェルでは空白に置き換えられる だけです ) 。さらに、ログインシェルで start の値を工 コーバックすると、空白行だけがエコーされています。以 上のことから、キーワード・パラメータ start は、サプ シェルにだけ設定されており、ログインシェルには設疋 されていないことがお分かりいただけたと思います。 あまりよい例が思い浮かばないのですが、図 1 にこの 例を示します。 6 月号では、英語でマニュアルを表小する シェル・プログラム eman を例にとりあげました。そのと きのプログラムでは、竟変数 LANG を取り消して man コマンドを実行しています。 unset LANG man $ * 図 1 は、 eman と同しようにマニュアルを表小するシェ ル・プログラムです。ただし、環境変数 LANG を取り消 すのではなく、そ刎直を実イに変更するようにしていま す。このプログラムを使うと、たとえばログインシェルに UNIX MAGAZINE 1993.9