DZ—X 流プログラミング B シェルにおけるコマンド行引数 コマンド行引数を解釈する方法は、 B シェル、 C シェル、 C 言語のそれぞれですこしすっ異なります。ます、 B シェ ルの場合からみていきましよう。 B シェルのコマンド行引数は、未な変数として扱われ ます。あれこれ説明するより、実際にやってみたはうが簡 単です。次のようなプログラムを作って実行してください。 % cat comline # ! /bin/sh echo $ 0 % chmod + x comline % comline coml ine 4 今泉貴史 これは、コマンド名を出力するプログラムです。試しに 名前を変えてこのプログラムを実行してみましよう。 cp comline aaa ご覧のとおり、このプログラムはどんな名前で起動され てもその名前を出力します。これは、シェル変数の $ 0 にシ ェルプログラム自身の名前が保持されているからです。さ て、 $ 0 がコマンド名そのものだとすると、 $ 1 は何を意味す るのでしよう。 % cat comline # ! /bin/sh echo $ 1 UNIX でコマンドを起動する場合は、シェルに対してコ % comline マンド名 ( 実際にはファイル名 ) を入力します。たとえば、 % comline abc ファイルを編集するときには、エデイタの名前 ( 、、 vi 〃など ) abc をシェルに入力するとそのエデイタが起動されます。また、 % comline d e f 編集時にファイル名を指定する場合は、コマンド名に続け て ( 空白をあけて ) 対象のファイル名を入力します。では、 このように指定された引数は、コマンドにどのようにして お分かりいただけたでしようか。 $ 0 がコマンド名を表し 渡され、処理されるのでしようか ? この連載でいままでに ている場合、 $ 1 は 1 つ目の単語、つまりコマンド行での 2 とりあげたプログラムでは、このようなコマンド行の引数 つ目の引数を示しています。同様に $ 2 はその次の引数、 $ 3 はまたその次の引数・・・・・・というふうに、コマンド行で指定 を受け取ることはできませんでした。 今回は、このような引数の受け渡しについてみていきま された順番に 0 から始まる数字の変数名に格納されていき ます。これらの変数は、位置パラメータと呼ばれます。 しよう。 B シェルを用いてコマンド行引数を扱う方法はこれで終 123 UNIX MAGAZINE 1991.2
IJN Ⅸ流プログラミング 4 どうです、美しくなったでしよう。シェルを用いて引数 をとるプログラムを書くときは、このように for を使うと 簡単にできます。 省略時の for の引数 さきほどは簡単に、、 $@の値が用いられる〃と書きました が、 B シェルにはすべての位置パラメータを指定する $ * と いう記法もあります。これらの違いはどこにあるのでしょ う力、 ? $ * ではすべての位置パラメータが並べられますが、 $@の場合にはそれぞれが二重引用符で囲まれたものにな ります。また、実際に使うときにはこれらの変数を二重引 用符で括った場合、括らなかった場合も含めて、全部で 4 通りについて考えなくてはなりません。そのあたりをテス トしてみましよう。 % cat comline # ! /bin/sh echo 'for param ) f or param do e ch0 $param done echo ' for param in $@) done echo $ p 矼 for param in " $@" echO ) for para.m 1 Ⅱ done echo $ p 矼 do for p 矼 in $@ 126 ます。 だ引数の場合ですから、 a "b c" という引数をなえてみ よく分かりません。相違が顕著に現われるのは空白を含ん しつは、このプログラムに通常の引数を与・えても違いは done e cho $param do for param in " $ * echO " $ * ) done echo $param for p 矼 in $ * echO ) for param. in $ * ) % comline a for p 矼 1 b c for p 矼 in $@ for param in " $@" for param in $ * for param " $ * " a b c 何も指定しないと、 $@ を指定したときと同様な結果が 得られます。このように、位置パラメータすべてを指定す るものでも、使い方によっては好ましくない結果となるこ ともありますから気をつけてください。通常は、上の例の ように $@ を使ったはうがよいでしよう 5 C シェルにおけるコマンド行引数 C シェルにおけるコマンド行引数の処理は、基本的には B シェルの場合と同様です。 % cat comline # ! /bin/csh echo $ 0 echo $ 1 $ 2 $ 3 $ 4 $ 5 $ 6 $ 7 $ 8 $ 9 $ 10 $ 11 $ 12 % comline a b c d e f g h i j k 1 comline a b c d e f g h i j k 1 B シェルと異なっているのは、 $ 数字としたときに 10 以 上の数字を使っても正確に引数が指定できる点です。また、 shift コマンドも利用できますし、すべての位置パラメータ を指定する $ * も使えます 6 。 引数の数を調べるには、 $#argv という記法を用います (argv については後述 ) 。 $ # 変数名という記法はその変数 UNIX MAGAZINE 1991.2 6 C シェルでは $@ は使えません。 解釈しているのかを考えてみるのもよいでしよう。 こではこれ以 E 説明しませんが、この出力を見てシェルがどのように引数を これを argv という変数に適用すれはコマンド行引数の数 にいくつの値が代入されているかを調べるものですから、 5
0 $ & 0 ee 0 ce 製品評価ーーー f 「 om UNIX REVIEW グラフィカル・シェル つい最近まで、シェル ()h 、 csh 、 ksh 、 bash 、 tcsh 、 ・・どれでもどうぞ ) は UNIX への唯一のインターフ ェイスであった。しかし、世の中は変わろうとしている。 UNIX に新しい援軍が現れた。 X ウインドウ・システム である。 UNIX によって多数のハードウェア・プラット フォームで動くプログラムが書けるようになり、 X ウィ ンドウ・システムによってこのようなプログラムの移植 性を損なわすに GUI (Graphical User lnterface) を付 け加えることができるようになった。 また、 X ウインドウ・システムは UNIX との新しい対 話形式をもたらした。これは、 Macintosh のユーザーに は馴染み深いものである。最近では、 UNIX でもウイン ドウ・システムや GUI が使える。 X がはかのものと大き く異なるのは、特定のシステムだけではなくほとんどす べての UNIX システムで動作するという点である。 今回とりあげた 2 つの製品、 Visix Software lnc. ( ヴ ァージニア州レストン ) の Looking Glass と lXl Ltd. ( 英国、ケンプリッジ ) の X. desktop は、、デスクトップ・ マネージャー〃である。これは、 UNIX のシェルのグラ フィックス版といってもよい。アプリケーションの起動、 ファイルの管理 ( 作成、移動、削除 ) 、ディレクトリの作 成、ファイルのオープン ( 編集 ) 、ファイル情報の変更な どをおこなう。 デスクトップ・マネージャーとシェルとの大きな相違 は、シェルプロンプトに対してコマンドを入力する代わ りに、ファイルやディレクトリを表すグラフィカル・オ プジェクトの直接操作によってすべてを処理する点で ある。たとえは・、 mv f00. c - ー dir とタイプする代わり に f00. c を表すアイコンをクリックし、 dir のアイコン までドラッグして解放すればファイル移動が完了する。 では、デスクトップ・マネージャーの役割とは何なの だろうか。その必要性に疑問を抱く人もいるかもしれな い。 1 つの ( おそらくは最良の ) 答は、 UNIX を簡単に使 えるようにして、より多くの人びとの手の届くものにす UNIX MAGAZINE 1991.2 by lsaac J. Salzman ることである。 UNIX は、 ( X を従えて ) 新しい時代に突 入したのである。 UNIX は、もはや大学や研究所のハッ カーたちだけのシステムではない。よりひろく受け入れ られるためには、もっと扱いやすくなければならない。 初心者にとって、シェルは ( われわれがシェルを好むの と同程度に ) ひどいインターフェイスであることを率直 に認めよう。だが、 UNIX ほど複雑なシステムではデス クトップ・マネージャーのようなものでシェルを完全に 置き換えるのは不可能である。たとえば、パイフ。や I/O リダイレクションをどのように扱えはよいのだろうか。 つまり、デスクトップ・マネージャーにとっての課題 は、たんに UNIX を簡単に扱えるようにすることだけ ではないのである。機能の点で妥協せす、しかも簡単に 使えるようにしなけれはならないのだ。優れたデスクト ップ・マネージャーとは、初心者にも容易に扱えるのは もちろん、エキスパートが使うときもシェルより素早く 効率的に日常業務をこなせるようなものでなくてはなら ない。では、とりあげた 2 つの製品がこの課題にどのよ うに応えようとしているのかをみていくことにしよう。 X. desktop と LookingGlass のテストは、カラーバ ッフアとメモリ 16MB 、ローカルの 600MBSCSI ディ スクを備えた Sun SPARCstation1 (SunOS 4.1 ) 上で 、 OpenWin- おこなった。さらに、 MITX11R4 サー dows 2.0 (xnews) サーバー、 MacIIx 上て稼動してい る MacX1.0.1 ( Ethernet カードを装備 ) など、いくつ もの X サーバーを使用した。どちらの製品も、多数のハ ードウェアおよび各種の UN Ⅸ環境で使用できる。ま た、いすれも多くのハードウェアおよび UNIX べンダ トが用意されている。 どちらの製品にも、インストール用のシェルスクリプ インストール ーから OEM 供給されている。 33
IJN Ⅸへの招待 楽しめます。ワサピの葉や大根と油揚げの煮物、スモーク した豆腐・・・・・・私たちは料理の説明に萸朮しましたが、 2 人 は大喜びです。つけがきく安心感も手伝って酔いがまわり、 次の日も付き合う約束をしてしまいました。 aya : 明日は、渋谷駅のフェイマストドッグで待ち合わせ ましよう。 クオータさん : それ、どこどこ ? ss : 帰り際に見せてあげまっせ。 渋谷駅のフェイマストドッグとは、 ことです。千鳥足で駅まで歩き・・ ss : これでんがな。 もちろんハチコウの aya . クオータさん、明日はこの大の背中に乗って待って てね。そうしたら、今日みたいに会えないってこと絶対 ないから。 ss : なんちゅうこと言うねん。 でも、クオータさんの方カ吐手でした。 クオータさん : aya さん、 Please show me how to ride on the dog ! 酔った勢いとは怖ろしい・ この連載は、私が考えていたよりすっと多くの方にご愛 読いただいているようです ( どうもありがとうございま す ) 。なかでも、、、前ふりクの部分だけは欠かさす読んでま す ! という励まし ( ? ) のお言葉を数多くいただきます。単 行本も出させていただきましたが、、、なんで則ふりを落とし ちゃったの ? 〃という感想がたくさんありました。これか らはここだけ書いて、本文はやめとこうかしら・・ 次に多い感想は、、、シェルの説明からいきなり内容か難し くなった〃というものです。 1989 年 9 月号から前号までシ ェルについて紹介してきましたが、シェルの理解にはプロ セスについての知識カ坏可欠、と信してその仕組みなどに 触れながらシェルの説明を続けてきました。しかし、プロ セスについて説明したこと、そしてシェルを使う側からで はなくシェルの動きに焦点を絞った結果、難しいという印 象を与えてしまったのではないかと反省しています。 そこで、今回から 2 ~ 3 回にわたり ( 本当はメールを始め るつもりだったのですが、スヌーピーのポスターも復活し ませんでしたし・・・・・ ) 、もう 1 度シェルの説明をしたいと田 います。ただし、今回はすこし観点を変えてユーサーがシ ェルに対してどのような入力ができるか、つまりコマン ド・インタープリタの使い方を中心にしていきます ( プロセ スやシェルのことは、ちょっと隠しちゃいましょ ) 。最近に なってこの連載を読み始めた人にも十分理解できる内容に するつもりです。 ログインするとき ログイン名とパスワードを入力し、 UNIX にログインす るとプロンプト ( % や $ など ) が画面に表示されます。その 時点から、ユーサーは UNIX に対してコマンド入力がお こなえる状態になります。ところで、ログイン名とパスワ ードを入力してからこの状態になるまで、ユーザーには見 えないところでちょっとした作業がおこなわれています。 ログイン直後はホームディレクトリにいるわけですが、 こで、、 ls -aF" コマンドを実行してみましよう (F はデ ィレクトリ名の後ろに、、 / 〃、実行可能ファイルの前に、、 * を付けてファイル名を表示するオプションです。また、 a は で始まるファイル名も表示するオプションです ) 。 % ls ー Xresources . abbrev_def s article . ccdef 146 . cshrc . emacs . exrc . history ・ login . mh-profile . newsrc . pl . rhosts . signature . twmrc . X1111trc . xsesslon MaiI/ Tex/ Wnn/ bin/ games/ jus/ 1 ib/ 10C 訌 / tmp/ write/ UNIX MAGAZINE 1991.2
LJN Ⅸ流プロクラミング 4 ・・といいたいのですが、そう簡単にはいきません。次 のように変史して試してみてください。 % cat comline # ! /bin/sh echo $ 1 $ 2 $ 3 $ 4 $ 5 $ 6 $ 7 $ 8 $ 9 $ 10 $ 11 $ 12 % comline a b c d e f g h i j k a b c d e f g h 土 a0 al 1 アクセスできるようになります。次の例を見てください。 で、ある処理をおこなえば 10 番目以降の引数に対しても だし、 10 番目以降の引数を忘れてしまったわけではないの B シェルは引数を合計で 9 個までしか扱えないのです。た います。これでは、 10 個以上の引数は渡せません。しつは、 いません。 $ 10 と書くと、 $ 1 の値と 0 が続けて出力されて 10 番目 ( j ) 以降の引数については、正しい値が返されて % cat comline # ! /bin/sh shift % comline a b c d e a b c d e f g b c d e f g h echo $ 1 $ 2 $ 3 $ 4 $ 5 $ 6 $ 7 $ 8 $ 9 echo $ 1 $ 2 $ 3 $ 4 $ 5 $ 6 $ 7 $ 8 $ 9 h i 1 」 f g h i j shift というシェルの内部コマンドを実行すると実行則 に $ 2 だった値が $ 1 に変わり、そのままではアクセスでき ない $ 10 にくるはすだった j という値が $ 9 としてアクセ スできるようになりました 1 。一般に、シェルを用いてコマ ンド行引数を処理する際には、この shift コマンドと組み 合わせてすべての引数を処理します。 もう 1 つ重要な点は、引数がいくつ指定されたかという 値です。これを調べるには # という変数の値、つまり $ # を使 います。 cat comline # ! /bin/sh echo $ # shift echo $ # ん comline a b c d e 7 a b c d e f g 6 b c d e f g 124 echo $ 1 $ 2 $ 3 $ 4 $ 5 $ 6 $ 7 $ 8 $ 9 echo $ 1 $ 2 $ 3 $ 4 $ 5 $ 6 $ 7 $ 8 $ 9 f g B シェルを用いてコマンド行で指定された引数を処理す るには、これまでに述べてきた、、 $ 数字〃、、 shift" 、、 $ # 〃の 3 つを組み合わせますが、実際にコマンドが実行される際に は引数の数が・ - ー - ・定でない場合が多いはすです。そのような ときには、引数が残っているかどうかをチェックしながら すべての引数を処理します。これを簡略化すると、次のよ うになります。 % cat comline # ! /bin/sh while [ $ # ー戚 0 ] do echo $ 1 shift done % comline a b c 上の例ではコマンド行で a 、 b 、 c 、 d 、 e 、 f 、 g という 7 つの引数か指定されていますから、 $ # の値も、、 7 〃となっ ています。 shift を用いて位置パラメータをその後ろにシフ トすると、 $ # の値も 6 に減っています。 while を用いた里 このプログラムは、コマンド行でえられた引数を 1 行 に 1 っすっ順番に出力するものです。ここで用いている while はシェルの制御構造の 1 つで、次に指定されたコマ ンドの実行結果が真 ( 終了ステータスが 0 ) のあいだは do から done のあいだを実行します 2 。 while では do を含め て done までのコマンドが省略できますが、その場合は while の直後のコマンドの実行結果が偽となるまで実行を 繰り返します。 while のあとにコマンドがくるということから分かると 田いますが、 while の直後の、、 [ 〃という記号はシェルで数 式を比較するための印ではなく、コマンドの 1 つです。 /bin/[ は名前こそ違いますが / b ⅲ / test と同しコマンド で、シェルで各種の条件判断をおこなうために利用されま す 3 。 1 shift の後ろに数字を指定し、いくっすらすのかを指定できるシステムもありま す。 2 1990 年 11 月号でも while は出てきましたわ。 UNIX MAGAZINE 1991.2
が分かります。これらの機能を使ってすべての引数を出力 するプログラムを書くと、次のようになります。 % cat comline # ! /bin/csh while ( $ # 矼空 > 0 ) echo $ 1 shift end % comline a b c B シェルとほとんど同しですが、 C シェルでは while の 条件部に式が書けるので test コマンドを使わなくても記 述できます。 シェノレ変数 argv B シェルのあとで C シェルの説明に入ったので B シェル と同しような記述方法から始めましたが、実際に C シェル を使って書く場合には前述の変数 argv を利用するほうが 多いのです。位置パラメータは、 argv という変数の 1 番目 から順番に格納されています。このとき、 1 番目の引数を 指定するには、、 $argv[l]" と指定します。 % coml 土れ e a b echo $ 矼空 [ 3 ] echo $ 矼空 [ 2 ] echo $ 矼空 [ 1 ] # ! /bin/csh % cat comline UNIX MAGAZINE 1991.2 while ( $count く = $ # 矼空 ) set count=l # ! /bin/csh プログラムを作ると次のようになります。 これらを用いて、 C シェルらしくすべての引数を出力する ()* あるいは $argv[l-$#argv) としたときと同しです ) 。 し、すべての引数を指定するときは $ argv [ * ] となります ば、 2 ~ 4 番目の引数を指定する場合は $ argv [ 2 ー 4 ] です この方法を使えば、引数の範囲も指定できます。たとえ SC 翡 「 00t から / へのメッセージ 月 高野豊著定価し 600 円 か朝へのメッセー 日 人間とコンピュータを観察するスーパーユーサーの眼 日本に UN Ⅸが導入されたはかりの頃、突然管理を任された著者 の悪戦苦闘の経験をつづる。 UN Ⅸの権威者となった著者が、今ま でにめぐりあったさまざまなエピソードを紹介。夋に富む告白談と飽 くなき探求心の物語は多くのシステム管理者の共感を呼ふ、だろう。 たのしい LJN Ⅸ LJN ー X への招待 坂本文著定価し 900 円 好評を発売 UN Ⅸを「もっと」たのしく学べる入門書 「 UNIX MAGAZINE 」連載当初から大好評の「 UNIX への 招侍」の単行本イし UN Ⅸの根底にある文化や流儀をましえっ っ再構成、大幅加筆。ワークステーションの急速な普及によって UNIX 修得が急務と言われる現在、本書はまさに必読の 1 冊。 文書処理システム L±TEX 。 , ヵ 以リーランポート著、エドガー・クッ久倉沢良一監修、大野俊治、小倉博道、藤浦はる美訳、定価 2. 繝円 Le 引レ mpo を 使いやすさと豊富な機能えたマクロ・パッケージ い TEX は、最も進歩した組版システムといわ れる TEX を、使いやすくかっ実用性をさらに 咼めるためのマクロ・パッケージ。これを利 用すれば、複雑な数式すら、ユーザー自身 の手て、自在に文書レイアウトて、きる。開発者 自身が書いた決定版解説書。 Life with IJNIX LJ N ー X を愛するすべての人に ドン・ライプサ冫ケイ・レスラ共著坂本文監訳福夋博訳定価 3.000 円 ド、Ⅸを飛するすべて朝リ、に Lifcwith UNIX だれも知らなかった UN Ⅸの魅力の世界 UNIX の歴史的背景や、社会動向とともに、 UN Ⅸの技術面や市場面、今後の展望な どを幅広く解説。また UNIX 人名事典、アン グラ情報、名言などの貴重なデーターや一 風変わった情報を満載した。 UNIX ューザ ーに新しい視野を提供する好読物。 ・ UN Ⅸオペレーティングシステムは、 AT & T のベル研究所が開発し、 AT&T が ライセンスしています。※表示価格はすべて消費税込みです。 株式会社アスキー 〒 107-24 東京都港区南青山 6-11-1 スリーエフ南青山ヒル 株式会社アスキー書籍 / 雑誌営業部電話東京 ( 03 ) 86-1977 127
IJN Ⅸ流プログラミング 4 echo $ 矼空 [$count] @ count = $count + 1 このプログラムでは、新たに count という変数を使って います。これは、何番目の引数を出力するのかを保持する ための変数です。この変数の値に従ってすべての引数を出 力するまでループを回りますが、ループの内部では引数の 出力と変数の値を更新しています。 @で始まっている行は、 C シェルの変数に対して数式の計算結果を代入するときに 使います。この例では、現在の count 変数の値に 1 を加え たものを新たに c 。 unt 変数に代入するという作業をして います。 foreach を用いた里 B シェルでは for を使えばすべての引数が簡単に指定 できましたが、 C シェルの場合はどうでしようか ? C シェ ルには、これに代わるものとして foreach という制御構 造か準備されています。これは、次のような形式で使用し end end コマンドの並び foreach 名前 ( 単語ー単語 2 . . 単語 n ) ます。 end echO $param foreach p 矼 ( $ * ) # ! /bin/csh ようになります。 foreach を使ってさきはどのプログラムを書くと、次の 128 は 2 つで、慣例的に名前は argc と argv となっています。 数を使ってコマンド行引数を処理します。通常、この引数 さて、最後は C 言語です。 C では、 main 関数に対する引 C におけるコマンド行引数 いほうがよいでしよう。 とはかぎりませんから、なるべくならばこの方法は採らな 簡単な引数ならこれでもよいのですが、かならすしもそう 合にも空白を含む引数があるときなどはうまく動きません。 ただし、 B シェルで $ * と $@が異なったように、この場 argc には、引数の数か格納されます。引数にはコマンド名 も含まれますから、コマンド名だけで引数を指定しなかっ たときにも argc は 1 となります。また、 argv には引数の 文字列それぞれへのポインタを格納する配列の基底アドレ スが格納されます。 ん ? 何を言っているのか分からない ? そうですね、も うすこし順序だてて説明しましよう。 C では文字列型は存在せす、文字の配列を利用して文字 列を表します。また、ポインタと配列はほば同しものとし て扱えます。 こまではよいでしようか ( 1990 年 11 月号 で文字列を使ったことを憶えていますか ? ) 。 C ではコマンド行引数は文字列として扱われますから、 B シェルや C シェルのように 1 つの変数に代入することは できません。そこで、この文字配列に引数が 1 っすっ代入 されます ( 図 1 ー 1 ) 。 これらの情報がはらばらに格納されていても、使いづら いだけです。そこで、 argv という配列変数にそれぞれの文 字列を示すポインタを格納します。このとき、最後の引数 を示す要素の次の要素として NULL が使われ、引数がそ こで終了していることを示します ( 図 1 ー 2 ) 。 さきほどの argv は文字列を小すポインタを要素とする 配列でしたが、配列とポインタは同しように扱えますから argv を文字列を示すポインタへのポインタ ( 文字へのダブ ルポインタ ) として扱うことも多いのです。 gv を文字へ のダブルホインタとみなすと、さきほどの図の argv に関 する部分は図 1 ー 3 のように変わります。 さて、コマンド行引数が関数に渡される仕組みさえ分か れは、あとはそれを使ってプログラムを書いてみるだけで す。次のプログラムは、ケえられた引数をすべて標準出力 に出力します。 % cat—n my—echo. c 1 main(argc , argv) 2 int 3 char 4 { 5 6 7 8 **argv ・ ; argv 十十 ; while (-—argc > の { puts ( * 矼空 + + ) ; argc ; 1 行目で main 関数を定義するときに引数として argc と argv をとることを宣言し、 2 行目と 3 行目で argc は UNIX MAGÄZINE 1991.2
第 e $ & 新 0 ce 0 ee 製品概要 カスタマイズするためのダイアログ・ポックス、ディレ クトリ階層のツリー表示、パターンマッチによるファイ Looking Glass ルの選択、カラーおよび形状マスクっきのアイコン、動 Visix Software c. 画アイコン ( ディレクトリをオープンするためのオープ 11440 Commerce Park Dr. Reston, VA 22091 , USA ンフォルダ・アイコンなど ) 、長い形式のファイルリスト (TEL 十 1-800-832-8668 or 703-758-2701 ) の表示 ( ls ー 1 と似ている ) などの機能が取り込まれる。 パーション番号 : 1.0 X. desktop と Looking Glass はどちらも優れた製 米国内価格 : 595 ~ 1295 ドル 品である。私個人の感しるところでは、 LookingGlass 対応機種 . Sun 、 IBM PS/2 、 HP/ApoIIo 、 のはうが UN IX によく合わせてあり、 UNIX のべテラ DEC 、 MIPS 、 Solbourne など 対応 OS : SunOS 、 AIX 、 Ultrix 、 SCO ODT ンには受けがよいだろう。 X. desktop と比べると、 など UNIX のグラフィック版シェルというべきものにすっ コメント : UNIX によく適合しており、 UNIX の熟練者に歓迎されるであろう。フ。ロセ と近いところにある。とくに、プロセス管理や環境変数 ス管理や環境変数の扱いなどの機能によ の処理などの機能にはその傾向が強い。 り、 UNIX シェルのグラフィック版に近 いものとなっている。 X. desktop のアプローチは、これとは異なる。こちら はできるかぎり UNIX を隠そうとしており、大部分の 機能を直接操作 ( ドラッグ & ドロップ ) でおこなうよう にしている。はんとうの初心者にはこちらのほうが適し ているかもしれないし、いくっかの強力な機能は熟練者 にとっても魅力的である。 X. desktop のルール記述言 語を利用すれは、単純なドラッグ & ドロップ・インター フェイスに多種多様なアクションが記述できる。 IXI と その OEM 先は、もっとこの機能を利用すべきであろ 将来、われわれのよき友であるシェルを捨て去るとき がくるとは思わない。逆に、今回とりあげたような製品 によってあの退屈なファイル管理作業の一部がより簡 単に ( かつもっと楽しく ) なり、結果としてシェルの強化 につながるのである。 ■ lsaacSaIzman 今月の評者。 Rand Corp. ( カリフォルニア州サンタモニカ ) の情報 科・学部に勤務。現在、 MH メールシステム用の GUI(XView べー ス ) の開発に従・厖このシステムは、カスタマイズ可能なユーサ、一 インターフェイスのフィールド研究に使用するものである。 ACM SIGCHI のロサンジェルス副支部長 ( e ー mail : sa レman@rand. org)o X. desktop Ⅸー Ltd. 62-74 Burleigh St. Cambridge C B 1 1 OJ England (TEL 十 44 ー 223 ー 462131 ) パーション番号 : 2.0 米国内価格 : 495 ドルより 対応機種 . IBM RS / 6000 と PS/2 、 Sun 、 DEC 、 HP 、 Unisys 、 NCR 、 Dell など 対応 OS : AIX 、 SunOS 、 SCO ODT 、 UI- trix 、 HP/UX など コメント : できるかぎり UNIX を隠すように 設計されているので主として初心者向き といえるが、熟練者にとっても魅力的な いくつかの強力な機能がある。 REPORT CARD Graphical Shells X. desktop L00king Glass ・ Richard Morin 本欄の編集者。に叔科・学分野の UNIX アプリケーション当のコ ンサルティンク・会社 canta FordaComputer Lab. ( カリフォルニ ア州サンプルーノ ) の経営者。 Sun Microsystems User Group 理 'JHe-mail:{hoptoad,pacbeII}!cfcI!rdm)0 「 A Look At Graphical Shells 」 UNIX REVIEW 1990 年 11 月号より ルトスズ イ 工 イ フ トメタマ ン スュイタ ンキ ス サ ュカサ総 ポ合 評 39 UNIX MAGAZINE 1991.2
UNIX REVIEW 誌提携 MAGAZINE 連載 UNIX Communication Notes ネットワーク・アプリケーション ( 6 ) OSF/Motif のすべて mwm ( 4 ) FreeSoftware の世界 RN ( 2 ) Daemons&Dragons システム里者の仕事 Little Language 自由気ままに GNUAWK(3) C Advisor プログラムのプロファイノイ 2 ) UN Ⅸ流フログラミング コマンド行引数の扱い てくてく TEX カウンタ An lntroduction tO X Window System CONTENTS 91 / 2 UNiX 1991 年 2 月号 目次 ・・斎藤明紀・山口英 ・久保山正文 ・・ P. D. Stallmen ・ Rob Kolstad srekcah @sra. CO. ] p ・ Eric Allman ・今泉貴史 ・強甫はる美 ・・中村眞 ・・坂本文 ・ Michael Nelson ・ Michel Gien XI 1 R4 のサー / ヾーの機能 UN Ⅸへの招待 やさしいシェルの使い方 ( 1 ) ネットワーク過性 マイクロカーネルの設計 WEB の概要 •News ■ Notice lNTEROP'90 報告 ( 2 ) テストリホート ( 1 ) : MIPS RS3ZO テストリポート 2.8 ー 製品評価 . グラフィカル・シェル jus UNIX Fair'90 UNIX AS 報告 雑誌から見た最近の IJ N Ⅸ市場動向 ■ Co ん m ワークステーションのおと マジカル・ミステリー・ツアーいたしましょ news & れ 0 そー JUNET 便り N EWS from jus UN Ⅸ語講座 Ca lender 本文デサイン・甲斐みどり / 表紙イラスト・守屋ー於 ・山口英 ・ David Wilson ・・ David Wilson ・ lsaac J. Salzman ・・ま眞 武藤多恵子 ・坂下秀 ・竹岡尚三 ・・みるく ・坂本文 桑原啓冫知 ・ Stephan von Becht01sheim 1 10 16 24 33 40 44 9 88 1 14 1 18 122 143 46 48 72 76 93 97 104 123 130 137 144 59 66 108
FreeSoftwa 「 e の世界 いしたことをするものではありませんが、ちょうど背中が ます。たとえは、 かゆいときのあと 1 センチに相当する機能ですので、その /test/a : M うち使う日もあるのではないかと思います。 では、ごゆるりとご覧ください。 と入力すれば、ヘッダでも本体でもどこかに、、 tes€' や 、、 Test" という文字列をもった記事すべての表示をあと回 己事選択レベルのコマンド しにすることができます。あるいは、 S セープ先 /test/a: s testart W セープ先 と入力すれば、同様にしてどこかで、、 test 〃といっている セープ用コマンド。、、 s セープ先〃、、 w セープ先〃と同 しですが、呼び出されるシェルか環境変数 SHELL で指 記事は全部、 - 、、 testart" に書き込まれますし、 定したものになります。 /test/aK: s testart ! ! コマンド シェルエスケープ。これは ! の特別版で、シェル呼出し とすれば、 $/test/a:s testart" という行が局所削除ファ にはちがいないのですが、現在ディレクトリが % P にな イルに加わり、以後そのニュースグループにアクセスする ります。 たびにそのコマンドが実行されることになります。なお、 、、厂 / 〃はすべての記事を指定したのと同しになります。 (Verbose restart) 全ヘッダの表示。基本的には R と 己事範囲指定コマンド群 同しで現在記事を再表示するコマンドですが、一 h スイツ 複数記事に対するコマンド実行。上記のコマンドに似て チによって隠れていたヘッダも全部姿を現します。 いますが、こちらのはうはパターンではなく記事番号で / パターン / 修飾子 . コマンド群 記事を指定します。 パターン合致記事に対するコマンド実行。これは、、 / パタ 指定方法は、 ーン / 修飾子〃の拡張で、それでみつけた記事に一連のコ マンドをまとめて実行してしまおうというものです。 己事 こで、ちょっと修飾子のおさらいをしておきましよう。 己事ー記事 ( 修飾子なし ) サプジェクト・ヘッダを走査する。 ヘッダ全部を走査する。 h a 記事全体を走査する。 r すでに読んだ記事も走査する。 c 指定パターンの大文字と小文字を区別する ( デフォ ルトは区別なし ) 。 これらに加えて、、 K クという修飾子が使えます。修飾子 K は、このあとに説明する K コマンドとは ( 意味は似ていま すが ) 異なるものです。これを、、 / パターン / ' ′のあとにつけ 削除記事の指定。 k コマンドは、現在記事と同しサプジ ると、それ全体 ( 、、 K 〃自身を除く ) が局所削除ファイルに追 ェクトをもつ記事をすでに読んだことにしてしまうコマ 加されて、削除などの対象となる記事を規定することにな ンドです。前回の説明で、くれぐれも大文字をタイプし ります。 ( 詳しく ( ゞ K コマンドを参照してください ) 。 てしまわないようにと書いたのは、この K コマンドがあ るからです。これをタイプすると、今ある記事を表示し 己事に対して何かをおこなうコマンドを添えてやると、 パターンが見つかった記事全部に対してそれが実行され ないだけでなくサプジェクトが次に述べる局所削除ファ - 三ロ で、、、記事〃には記事番号、 〃 ( 現在記事 ) 、、ゞ ( 最後 の記事 ) が使えます ( ただし、、、 $ コマンド群 ' を実行し ようとすると、、ゞをタイプした時点で最後の記事を読 みにいってしまうので、注意してください ) 。たとえば、 〃は最初の記事から現在記事までのサプジェクト を全部表示します ( いちばん若い記事番号が実際には何 であろうと、これでうまくいきます ) 。 1 三ロ 85 UNIX MAGAZINE 1991.2