リスト - みる会図書館


検索対象: UNIX MAGAZINE 1993年11月号
61件見つかりました。

1. UNIX MAGAZINE 1993年11月号

NetNews 便り 今月は、メーリングリストについて紹介します。 ・メーリンクリスト メーリングリストとは、電子メールを使用した特定グ ループの情報交換機能のことです。メールは基本的に個 人から個人に、ニュースは個人から NetNews を読んで いるすべての人に 1 辭長が送られます。 それに対してメーリングリストは、個人から特定のグ ループに情報が送られます。グループのメンバーはどこ かのホストに登録されていて、そのホストのグループ用 の電子メールアドレスに情報を送ると、参加者全員に再 送されます。 メーリングリストは、見た目は通常のメールとなんら 変わりません。メールの内容がおもにそのメーリングリ ストの運用趣旨にそっていることと、届いたメールを読 むのが自分 1 人ではなく、メーリングリストに参加して いる多くの人であることだけが異なります。 ・メーリングリストの設立 メーリングリストの設定は難しいものではありませ ん。自分がスーパーユーザー (root) になれるのならば、 /usr/lib/aliases ( または /etc/aliases) ファイル にメーリングリストのアドレスを書いてメンバーを求 するだけです。なれなければ、スーパーユーザーに頼んで 言聢してもらえば OK です。 インターネット上には、組織のシステム管理者のメー リングリストのような小さなものから、全世界規模の学 会やユーザー会の会員連絡用の巨大なメーリングリスト まで、さまざまなものがあります。このような事務連絡 用のもの以外に、ある程度限定されたメンバーによる多 様な議論を目的としたものもあります。たとえば、研究 や迎未の話題のための情報交換などがあります。 ネットワークを使って言第侖をするなら NetNews を使 えばいいように思われますが、 NetNews の読み書きがお こなえない人でも参加できる、 NetNews よりも気楽に討 . に信等をす等市信すを等 : す新等を日信 ・田中芳樹 ML などがあります。迎未に移ると、 ・若手物理屋 ML 分子生物清報 ML ・がんセンター gopher 利用者 ML などたくさんあります。研究者用のものには、 ・ gopher 利用者 ML ・ gopher-server 管理者 ML ・ DeskTop Music ML ・ Computer Architect's ML ・ Canna ML ・ Nepoch ML ・ RS / 6000 ML ・ MSX ML ・ MacApp-Talk ・ RT-PC ML ます、コンピュータ盟連としては、 はランダムにおこないました ) 。 介しましよう ( 、、 ML " はメーリングリストの略〕尺 リングリストは 115 あります。そのなかからいくつカ絲召 今月、 NetNews に投稿された情報に載っているメー ・日本のおもな公開メーリングリスト グリストを捜すことカ、きます。 公開しています。この記事を見れば、興未のあるメーリン 者からの情報をまとめて、定期的に NetNews を通して 国内で情報公開をしているメーリングリストの運用管理 幸いにして巧を読み書きしている人のひとりが、日本 リストか存在するのかを知らないと参加もできません。 が参加するかたちなので、そもそもどのようなメーリング 関するメーリングリストの場合には、それに興未をもつ人 連絡がとれる人ばかりならばいいのですが、迎未・や研究に グリストのように、参加メンバーか限定されていて互いに 学会やユーサー会あるいは知合いどうしのメーリン ・メーリングリスト情報 れているようです。 論できるなどの理由でメーリングリストも活発に利用さ 第信第信 : 信 W 既信 : 信第信第信第信第信第信第信第第第信第信第島第第信第槲第信第号第信第信第信工信 : 信第信 : 第信し島第第島第信第信第 134 UNIX MAGAZINE 1993.11

2. UNIX MAGAZINE 1993年11月号

特集ドン一ときたら困るけど、ネットワーク里・・ 図 6 リストアをするテープ認 (restore - tf の実行 ) banana# restore —tf /dev/rstO 2 3 128 129 banana# . /lost + found . /monkey . /monkey/test/nametonka. c 指定されたファイルのみをダンプテーフ。からリストアし ます。 ダンプテープに含まれる内容 ( ファイルー一覧 ) を表示し ます。 ダンプファイルを指定します。このオプションカ甘旨定 されないと、 / dev / mt812 から読み出そうとします。 ダンプテープの内容を読み込んだあと、リストアするフ ァイルを対言乱勺に指定します。このオプションを指定す ると、リストアイ中に以下のコマンドが使用可能にな ります。 ls 、 cd 、 pwd ダンプテープ中のファイルに対し、シェルと同じ機 能を提供します。つまり、ダンプしたファイルシス テム中でのシェルコマンドと同し働きをします。 add : リストアするファイルのリスト ( 復元リスト ) に指定 されたファイルを追加します。ディレクトリカ甘旨定 された場合、そのディレクトリの中身も再帰的にリス トに追加されます。彳己リストに登録されているファ イルは、 ls で表示させたときに * カ寸きます。 delete . 復元リストのなかのファイルをそのリストから削除 します。 extract . 復元リストのなかのファイル、すなわち ls で表小 させたときに * が付いているファイルをリストアし ます。 12 システムによって異なる場合があります。 UNIX MAGAZINE 1993.11 help . 使えるコマンドを表示します。 31 リストに追加しています。次の行からは、彳己リストに入 次に add コマンドで、リストアしたいファイルを復元 イルシステムであるかのように扱うことカそきます。 ストアを実行すると、ダンプテープをあたかも 1 つのファ を移動しています。これからも分かるように、対日乱勺にリ いる内容を覗き、 cd や pwd コマンドでテ・イレクトリ内部 コマンドが使えます。例では、 ls でダンプテープに入って というプロンプトカ咄ます。この状態で、さきに紹介した モードで restore コマンドを起動すると、 restore> それでは、実際刎列を見ていきましよう ( 図 7 ) 。対話 せん。 竹業を始めると、そのディレクトリを破壊するかもしれま 注意してください。もし間違ったディレクトリでリストア こで、リストアしたいディレクトリに移っている点に # restore if /dev/rstO # cd /proj ←リストアしたいディレクトリ ます。 アを進めることにします。そこで、次のコマンドを実行し をいっきに戻してもいいのですが、あえて対言乱勺にリスト ですから、 r または R オプションでダンプテーフ。の内容 今回は 1 つのパーティションの内容をすべて元に戻すの 内容を確かめたら、いよいよリストア作業に入ります。 実行例を図 6 に示します。 # restore —tf /dev/rstO のコマンドを実行します。 ダンプテーフであることを確認します。そのためには、次 す、いまからリストアしようとしているテープが、目的の 具イ勺に実例を挙げて見ていくことにしましよう。ま

3. UNIX MAGAZINE 1993年11月号

シンポノレテープノレ LittIe perl pa 0 「の *bar に *foo を代入することよって、これ以降は変数 $foo と $bar 、配列@{。。と @bar はまったく同し実体を表 * f00 f00 ↓ 変数 配列 連想配列 $foo の実体 f00 の実体 → % f00 の実体 → すことになる。 シンポノレテープノレ f00 ↓ bar ↓ * f00 変数 配列 連想配列 → $ f00 の実体 → 9f00 の実体 → % f00 の実体 このすべてのデータをひとまとめにした構造を参照する ことを、タイプグロプあるいは型グロプと呼び、名前の前 に、、 * 〃 ( アスタリスク ) を付けて * foo のように表す。 同様に、シンポル名に * を付けた左辺値にタイプグロプ を代入することで、そのタイプグロプを別の名前で参照す ることも可能になる。次のプログラムを考えてみよう。 $ f00 9f00 magazine ) ) ; local(*bar) * f00 ; * bar が 10Cd1 で宣言してあるのは、タイプグロプを代入 する右辺値は 1 。 cal 宣言するように推奨されているからで ある。そうしなければ動作しないというわけではないが、 うまく動かないことがたびたびあるので、 10Cd1 にしておい たはうが無難である。 ( 1 ) サカレーチンに複数の配列や連想配列を渡す ( 0 , 2 , 4 , 6 , 8 , 10 , 12 ) ; 9f00 @bar = ( 0 , 3 , 6 , 9 , 12 ) ; .com/on = &common(*foo, *bar) ; sub common { local(*a, *b) local(%tmp) ; @tmp{@a} ( 1 ) x @a; # タイプグロプを受け取る サプルーチンに 2 つのリストを渡すことは、 Perl では簡 単ではない。たとえは、 &sub (@f00 , @bar) ; UNIX MAGAZINE 1993 ユ 1 .com/on = &common(*foo , *bar) ; ントは、タイプグロプを渡している、 要素のリストを返すためのサプルーチンの例である。ポイ ( 1 ) は、 2 つのリストを受け取って、その両方に含まれる なる。 配列や連想配列を独立してサプルーチンに渡せるように このようなときにタイプグロプを用いると、 2 つ以上の 番目のリストなのかを判断できないからである。 した 1 つのリストとしてしか扱えないので、どこからが 2 のように渡しても、受け取った側は@f。。と @bar を連結 という部分と、それを受け取っている、 local(*a, *b) の部分である。タイプグロプ自体は実体のないオプジェク トだが、このように引数としてサプルーチンに渡すことも できる。引数として受け取った * f 。。を * a に代入すること で、それ以降 a という名前と { 。 0 という名前は同一のもの を指すようになる。 以降の処理は単純で、 %tmp という連想配列に @a の要 素を憶えさせておき、 @b のなかから % tmp に定義されて いる要素を取り出している。このような処理をおこなうに はループを使う方法も考えられるが、多くの場合、連想配 列を使うほうが簡単だし高速に処理できる。 179

4. UNIX MAGAZINE 1993年11月号

連載 / インターネットの利用と仕組みー② 表 1 ニュースグルーフリ 2 週間あたりのトラフィック ( 上位 30 グルーカ 割合 ( % ) 合計 (MB) 件数アーティクル (MB) 40.3 % 373.262255 89 , 314 326.376976 18.6 % 150.636071 197.197350 94 , 280 16.6 % 78 , 413 174.197025 134.885036 11.8 % 96.055876 117.138126 38 , 346 3.7 % 35 , 043 29.654209 50.443290 3.6 % 15 , 278 29.383579 37.338541 3.4 % 27.415070 12 , 088 34.239655 3.2 % 17 , 199 25.665866 34.278212 2.9 % 14 , 787 23.734659 34.199405 2.8 % 19 , 750 22.423104 33.817064 2.7 % 3 , 691 22.180854 24.257110 1.8 % 14.511576 12 , 835 23.092262 1.8 % 7 , 907 14.455981 19.125460 1.3 % 6 , 585 10.429312 14.212835 0.6 % 3 , 754 5.133643 6.835886 0.6 % 4.689973 4 , 403 6.932397 0.6 % 7 , 920 4.650756 8.693824 0.5 % 2 , 818 3.869233 5.342878 0.5 % 1 , 507 3.728973 4.508204 0.5 % 3.658781 4.693709 2 , 096 0.4 % 2 , 294 3.508500 4.645135 0.4 % 1 , 447 3.490139 4.134077 0.3 % 2.732256 1 , 691 3.685212 0.3 % 2 , 009 2.685348 3.723987 0.3 % 1 , 047 2.261709 2.797222 0.3 % 759 2.152038 2.536106 0.3 % 1 , 135 2.115462 2.686129 0.2 % 1 , 265 1.878788 2.506045 0.2 % 1.801679 1 , 050 2.314292 0.2 % 1.662470 2.287098 1 , 380 soc : 主として、社会問題、社会舌の話 うニュースグループでは、文字どおり新規ューサーのため の情報を定期的ロ充しています。 talk : 簡単に解決か碍られす、大きな言劬起きるような USENET の説明から、歴史、マナー (Netiquette) 、 話題のためのグループという意味で名付けられた。 投稿のガ去、書き方、ニュースグループの作り方などカ症 ニュース・ネットワーク、およびそのソフトウェ neWS . 期的にポストされています。そのほかに、 ニュースグノレー ア自身のためのグループ。 プのリスト、各ニュースグルーフ。で定期的にポストされる rec : 芸術、趣レクリエーション活動に関するグルー 情轤 FAQ などのリスト、 moderator のリストなどがあ ります。ニュースだけでなく、ノウ・リックなメーリングリ これらのグループは、、 w 。 rld " ニュースグルーフであり、 ストの紹介も含まれています ( 図 1 ) 。このグループを見る 世界中に配布されます。しかし、すべてのサイトが上記の と、 USENET ニュースにどんなものがあるか、どこに何 全ニュースグループをとっているわけではありません。 があるかがほば分かります。 ne ・ WS. liStS news. announce. neV•.rusers このグループには、 news . announce .newusers とク news は NetNews 自身に関する話題を取り扱うグルー ロスポストされているリスト類のほかに、 フ。て、す力ゞ、このなかの news . announce . newusers とい トラフィックに カテゴリー alt rec comp SOC relcom SCI t alk SC bit CIari news zer de ba ncar sfnet gnu uk bionet inet nlnet can urnn info biz t11t1C k12 49 UNIX MAGAZINE 1993.11

5. UNIX MAGAZINE 1993年11月号

* * * 27 , 32 * * * * ! XIITOP = / us て / X386 / -L$(X11TOP)/1ib -1Xaw -1Xt ! X11R5LIBS ! # WINDOWLIB = $(X11R5LIBS) 27 , 32 ! XIITOP = /usr/10ca1/X11 -L$(XIITOP)/Iib ! X11R5LIBS ! WINDOWLIB = $(X11R5LIBS) #define FingerDir #define BinDir #define EtcDir #define MugSh0tPath リスト 1 Makefile. in 彦正点 Thu Oct 22 08 : 59 : 40 1992 * * * Makefi1e. in ・ org Makefi1e . in Fri Ju1 30 05 : 15 : 25 1993 * * * 53 , 56 * * * * server : $ (AUXOBJS) $ (EXECUTABLES) —1Xaw —1Xwchar ()d targets ; $(MAKE) $(MFLAGS) $(CC)="$(CC) ” server) ()d $(SRC) ; $(MAKE) $(MFLAGS) $(CC)="$(CC) " server) server : $ (AUXOBJS) $ (EXECUTABLES) 53 , 56 ()d targets ; $ (MAKE) $ (MFLAGS) CC=" $ (CC) " server) ()d $(SRC) ; $(MAKE) $(MFLAGS) CC="$(CC) ” server) Wed Ju1 28 21 : 21 : 01 1993 src/Makefi1e . in * * * src/Makefi1e. in ・ org Thu Oct 22 09 : 00 : 16 1992 リスト 2 src/Makefile. in の変更例 —1Xmu —1Xext ー 1X11 —1Xt —1Xmu —1Xext ー 1X11 #define INFO_IS—DEFAULT を定義します。これを定義しないと、 finger —brief しかし、ほかのファイルも変更する必要が出てくるの で、このままにしておいたほうが無隹です。 finger . free を実行したときに表小すべき計算機数 を、以下の定義で設定します。 #define ENOUGH—FREE_MACHINES 表小すべき言算機の数が ENOUGH-FREE-MACHINES 以 下であれば、警告が出力されます。 fingerd がⅲ . cfingerd に対して情報を収集する間隔 は、以下の定義で設定します。 #de f ine DEFAULT_POLL_ I NTERVAL 単位は秒で、デフォルトは 120 秒です。この間隔は、 fingerd の起重加に一一 i Ⅱ terval オプションで扣疋する こともできます。 デフォルトでユーサーの情報をすべて表示したい場合、 つまり finger --info をデフォルトにしたい場合は、 118 がデフォルトになります。 その他のファイル c 。Ⅱ fig. 五の修正を終えたら、 Makefi1e. in などを変 更します。 ・ Makefi1e . in Makefi1e . in には、すこし間違いがあります。 1 に従って修正してください。 ・ src/Makefi1e . in リスト mugshot を使用する場合、 XI ITOP 、 WINDOWLIB を適 切な値に変更します。リスト 2 に変赳列を示します。 ・ 1ib/Makefi1e . in mugshot を使用する士昜合、 x-shface. 0 をコンノヾイル するためのインクルードバスと、 dither をリンクする ためのライプラリバスを設定してください。リスト 3 に 変麪列を示します。 UNIX MAGAZINE 1993 ユ 1

6. UNIX MAGAZINE 1993年11月号

図 7 restore -if の実彳」 banana# restore —if /dev/rstO ls lost + found/ cd monkey > pwd cd > add kozaru monkey kozaru/ restore > monkey/ 0 S aru *monkey/ OSar1-l/ sarumawasi/ restore restore /monkey restore restore restore *kozaru/ restore ← リストアしたいファイル指定 > ls lost + found/ *osaru/ *tex/ *work/ sarumawasi/ . /monkey : * . cshrc restore > restore > kozaru/ restore > 1 s monke y * ・ logi Ⅱ * ・ logout * . twmrc * . xinitrc *Mai1/ *test/ ← delete kozaru ls lost + found/ verbose 復元リストからの削除 ← ← *monkey/ * 0 S aru/ sarumawasi/ verbose mode 0 Ⅱ restore > extract Extract requested files You have not read any volumes yet . Un1ess you know which volume your file (s) are on you should start リストア状況を報告させる リストア開始 with the last volume and work towards the first . Specify next extract fi1e extract fi1e extract fi1e extract fi1e extract fi1e Add links ← volume # : 1 . /monkey/tex/dousita. tex . /monkey/tex/dousita. dvi ・ /monkey/ ・ cshrc ・ /monkey/. 10g 土Ⅱ ・ /osaru/paper/news ・ paper Set directory mode , owner , and times . set owner/mode for restore > quit ← 何巻目のダンプテープか指定する ダンプしたときの owner/mode に設定 れられたファイル名のう寬こ * が付いています。また、 のコマンドでディレクトリを指定した場合に、そのディレ クトリの内容まて再帰的に復元リストに追加されているこ とも分かります。 さらに delete コマンドで復元リストから k 。 zaru と いうファイルを削除して、本当に削除されたかを ls て確 かめています。そして、 verbose コマンドを入力してい ます。これは、実行状況の表示 / 非表示を設定するトグル コマンドです。 32 実行状況か表示されるようにしておいて、いよいよ ex- tract コマンドでリストアの開始です。現在復元リスト に含まれているファイルは、 monkey 、 osaru ですから、 これらのディレクトリの内部まで再 ) 髄勺にリストアされる はすです。実際にリストアを始める前に、いまテーブドラ イプに入っているのカ可巻目なのかを訊いてきています。 dump コマンドはマルチボリュームに対応しており、 1 つ のテープに入らない場合には複数のテープに分けてバック アップをとることができます。ですから、何巻目かをこ UNIX MAGAZINE 1993 ユ 1

7. UNIX MAGAZINE 1993年11月号

図 2 連載 / Li Language パラバラだったデータが・・ 、整列しました ・配列のロを ( ) に、 if 文などの条件の ( ) を { 只 える ・ + + 土を incr i にする ・ printf を format と puts で寒見する こ代 などです。とくに、変数のインクリメントとその変数の参 照か 1 司しコマンド行に現れているときは、言刊面順序に注意 が必要です。 リスト 1 クイックソートのプログラム (Awk 版 ) sort # ! /usr/bin/awk —f { dataCNR] = $ 1 ; printf "data %d %d\n" , NR, $ 1 ; next } END { lower[l] upper [ 1 ] depth = 1 ; NR ; h 土 le (depth > 0 ) { if (lower [depth] く upper [depth] ) { i = lower [depth] 」 = upper [depth] ; pivot = data[j] ; for ( ; while (data [ + + i ] く pivot) while ←—j > i & & data[j] > pivot) data[i] ; data [j] if ()j = upper [depth] ) ! = i) { printf "exchange %d %d\n" , i , お data[i] = x; data[j] = data[i] ; x = data[j]; break ; if ( i > = j ) data[i] = pivot ; printf "exchange if (i lower [depth] lower [depth + 1 ] upper [depth + 1 ] UNIX MAGAZINE 1993 ユ 1 く upper [depth] = lower [depth] ; 1 while (—-j > i & & data[j] > pivot) などは、 カからコマンドを読んでいる部分を削除したものです。 としてください。 anime2 は、 anime( リスト 2 ) の標準入 % sort2 く data % anime2 & みました ( リスト 3 ) 。実行は、 を、パイプを通してではなく send コマンドでおこなって たことをしてみようと思い、アニメーション部分との通信 せつかくですから、 Awk のプログラムではできなかっ のよ引ンヾラしておくほうが無よ隹てすね。 lncr 」 while {$j > $i & & $data($j) > $pivot} { lncr 」 89

8. UNIX MAGAZINE 1993年11月号

AUC TEX—O 図 1 TeX-font—1ist のデフォノレト言 (setq TeX—font—1ist , ( (?\C—b "{\\bf ” 図 2 日用用本の言諚を追加した TeX-font-1ist の (setq TeX-font-1ist , ( (?\C-b "{\\bf " フォントの指定 という変数でカスタマイズできます。この値はリストにな TeX—font—1ist C-cC-f C ー b などによるフォントク旨定は、 っていて、各要素も通常は 3 つの要素からなるリストで す。 す。 4 番目の要素として nil 以外の値をケえると、最初に 谷、 3 番目の要素がカーソル位置の後ろに挿入する内容で ド ) 、 2 番目の要素がカーソル位置よりも前に挿入する内 し、最初の要素が C-c C-f の後ろに続けるキー ( のコー この 3 要素のリスト 1 つが 1 つのフォントに対応 70 2 \mc て報用柘定になるのは、アスキー版日 : 脣吾 rIbX の場合です。 に、逆スラッシュを二重にしていることに注意してくだ 文字列の特殊文字として解釈されてしまうのを避けるため " } " とすればいいので、図 2 のように設定します。 Emacs は ?\c-m です。第 2 、第 3 要素はそれぞれ " { \ \ mc " こでは C-m に割り当てたいのですから、第 1 要素 図 1 のように設定されています。 されるようにしてみましよう 2 。デフォルトの状態では、 例として、 C-c C-f C-m で明朝体の指定 (\mc) カ甘入 t と設定されているからです。 ますが、これは第 2 、第 3 要素か空文字列、第 4 要素が とえは、 C-c C-f C-d て現在のフォント指定を解除でき 現在のフォント指定を鰰余するという意味になります。た 数式モード 則回、 C-c ~ で LaTeX-math-mode に入ると、、 ( 十 1 文 字 " でさまざまな数式用 rIbX マクロが入力できると説明 しました。これも、簡単にカスタマイズできます。 LaTeX—math—abbrev—pref ix TeX-font-1ist は、文字サイズ窈旨定にも応用できま す。よく {\large .. } などのように書く人は、これらを TeX-font-1ist に登録しておくと便利でしよう。 には、 " ( ”という文字列がデフォルトで成疋されています。 この変数に設定されている文字列十 1 文字で、委しに用 rIbX マクロが入力できるようになっているわけです。 LaTeX-math1ist という変数は、キー ( の番号 ) と入力されるマクロ 名との組からなるリストです。 tex-math. el での定義を 参考にすれは、この変数の変更去も簡単に分かるでしょ 0 インテント 0 前回、インデントについて説明したときに、 LaTeX- indent-level と LaTeX—item-indent という変数の 利用ガ去も紹介しました。これらのはかに、もう 1 つイン デント量を決定している変数があります。 TeX—brace—indent—1eve1 では、対応する } ( 閉しプレース ) がない、、 { " ( 開きプ レース ) 1 つについて加えるインデント量カ甘旨定できます。 デフォルト値は 2 ですから、次のようにインデントされ ます。 ある行に、対応する閉じプレースのない {\bf 開き プレース } があると、このようにインデントされ これが気持ち悪いという人は、 (setq TeX—brace—indent—Ieve1 0 ) としておけばよいでしよう。 UNIX MAGAZINE 1993 ユ 1

9. UNIX MAGAZINE 1993年11月号

AUC TEX—O 文字をデータとして使いたいときは、 ? 健問符 ) に続け てその文字を入力します。たとえば、 a という文字を変数 abc に代入するには、 (setq abc ?a) とします。実際には、 a という文字のコードにの場合は 97 ) が abc に代入されます。 このような文字そのものの取扱いは、キーの設定などで よく使います。そのため、コントロール・コード (C-c な ど ) も言当する必要があります。コントロール・コードは、 (setq abc ?\C-C) のように \ ( 逆スラッシュ ) に c ーを続けて表記します。 " ( ダブルクオート ) で囲んだものは、文字列として扱 われます。たとえば、 (setq abc "def") とすると、変数 abc に def という文字列が代入されます。 と、 (setq abc "a") (setq abc ?a) つまり、 必喫です。たとえば、 LaTeX-command-hook という関数 シンポル名 ( 関数名や変数名など ) を与えるときにも , が のように地頁に ' ( シングルクオート ) を付けます。また、 (setq abc ' ( 1 2 3 ) ) ったものですが、これを変数に代入するときは、 リスト自体は ( 1 2 3 ) のように要素を並べて括弧で話 ではまったく意味か違います。 0 入力時の設定 0 名を代入するには、 (setq abc 'LaTeX—command—hook) とします。 リストと似ているものに、 2 つの要素を て組にして括弧て括った、 (abc . def) " ( ピリオド ) という形式のデータもあります。詳しくは説明しません が、これは abc 、 def という 3 つの要素からなるリ ストではなく、 abc と def という 2 つの要素を組にした データです。今回も登場しますが、ピリオドを省略しない ように注意してください。 UNIX MAGAZINE 1993.11 前回までに、 C-c C-s によるセクション・コマンドの 入力、 C-c C-e による環竟の入力などが対話式にできるこ とを紹介しました。このガ去は慮えることが少なくてすむ のカリ点ですか : 慣れてくると煩わしく感しることもあり ます。とくに、決まりきったことを毎回訊ねられるのは面 倒なものです。そこで、これをユーザーの好みに合わせて 変更するガ去を紹介しましよう。 セクション・コマンドの入力 C-c C - s でセクション・コマンドを入力するときの動 作は、 LaTeX—section—hooks という変数の値て決まります。この値は、 c-c c-s を押し たときに実行される関数のリストです。たとえば、デフォ ルトでは LaTeX-section-hooks のイ直は、 (LaTeX—section—1eve1—hook LaTeX—section—tit1e-hook LaTeX—section—section—hook LaTeX—section—IabeI—hook) というリストになっています。これは、最初にセクション のレベル (section か、 subsection かなど ) をリ去次に そのセクションのタイトルを訊ね、セクション・コマンド をバッフアに挿入し、燧変にラベルをルュて挿入する、と いう意味です。これをたとえば、 (setq LaTeX—section—h00ks ' (LaTeX—section—tit1e—hook LaTeX—section—section—hook) ) のように・ emacs などで設定しておくと、セクションのタ イトルだけを訊ねるようになります。このように設定した 場合、セクションのレベルは C-c C-s コマンドの数引数 て指定します。 表 1 に、 LaTeX-section-hooks に設定できる関数を 示します。 これらをフルに利用したいときは、 . emacs などで、 (setq LaTeX—section—hooks LaTeX— LaTeX LaTeX ' (LaTeX— section LaTeX—section—toc—hook —section— section— 67 —label—hook) ) —section—section—hook title—hook level—hook

10. UNIX MAGAZINE 1993年11月号

LJN Ⅸへの招待⑩ リスト 3 修飾子、、 = 吏った mylpr プログラム % cat 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 -n mylpr # ! /bin/sh if [ $ # -eq 0 ] then echo "Usage : exit f i ・ ${PRINTER : = PS400 } lpr —P$PRINTER ” $ " $ 0 filename . while do done lpq echO e ChO -P$PRINTER ー egrep $USER > /dev/null も一いーよ。 ーⅡまーだだよ、 ル・プログラムを示します。このプログラムは、ファイ ルをプリントアウトするためのシェル・プログラムです。 プリントアウトするファイルは、引数て指定します。 % mylpr 出力ファイル プログラム中では、出力先のプリンタの指定にこの形 式を使っています。リスト 3 に限ったことではありませ んが、プリンタの指定は UNIX の間列で次のようになっ ています。 ・ログインシェルで竟変数 PRINTER の値として定義 しておく。 ・ lpr コマンド夫行時にオプション -p を使う。 lpr ー P プリンタ ・システムの省田プリンタ ( 通常は (p) に出力するの であれば、竟変数 PRINTER の設定もオプション -p の指定も不要。 リスト 3 では、竟変数 PRINTER が定義されていな けれは、 PS400 というプリンタにファイルを出力します。 このため、プログラム中 ( 8 行目 ) で、 ${PRINTER: = PS400 } を使い、 PRINTER か設定されていない ( あるいは値か空 の ) とき値として PS400 を代入しています。 188 ところで、 8 行目の知頁には、、 ( コロン ) カ寸いてい ますが、これはどうしてなのでしようか ? : は、 Bourne シェルの糸ムみコマンドです。 1993 年 6 月号でもこのコ マンドについて触れました。これは、何もしない " という コマンドです。けれどもシェルは、この行の調面 " はお こないます。つまり、 ${PRINTER: = PS400 } となっていれば、 ${PRINTER:=ps400} か評価さ ・ PRINTER が未設定であれはその値として PS400 か代 入される ・ ${PRINTER: = ps40 の本が PS400 に置き換わる となるわけです。このため、評価の結果 8 行目は、 : PS400 に置き換わります。 Bourne シェルは : コマンドを実行 し、何もしないので、ここで PS400 はなんの意味ももた ない文字列になります。もし、 8 行目の知頁に : を書き 忘れると、言叫面の結果は、 PS400 となり、シェルは PS400 をコマンドとして実行します。 、 PRINTER か、設定されていなければそ刎直を代入する " と いう目的で、次のように言すると、プログラム実行に工 UNIX MAGAZINE 1993.11