% make —npf /dev/null または、 % make —npf く /dev/null このコマンドを実行すると、大量の情報が画面 ( 標 準出力と標準ェラー出力 ) に表示されます。必要であれ は、これらの出力をリダイレクトするなどしてファイ ルに保存してください。このとき、標準工ラー出力に 対する出力は捨ててしまってもかまいません。 csh の場 合は、 % (make —npf /dev/null > out) > & /dev/null sh(B シェル ) の場合は、 $ make —npf /dev/null 2 > /dev/null > out とすれば、 out というファイルに make コマンドから の出力が収められます。ファイルは、一 200 ~ 400 行くら いのものになると思います。一般に、このファイルの先 頭のほうにマクロの定義が、後ろのほうに暗黙の規則の 定義か骼納されています。 make の素性 一般に " と書きましたが、しつはこれが make につ いて説明する場合の最大の英斤です。実際にはイ研重類も の make があるので、このような言い方をしなければ なりません。前述のファイルの内容は、皆さんの使って いる make の種類ごとに異なります。前回まではあえ てこの点には触れすにお話ししてきたのですが、このあ たりでこの相違について説明しておきましよう。 現在、ひろく使われている make コマンドを大別す ると、次の 4 種類になります。 ・ BSD ・ System V Sun ・ GNU 基本的な機能は、どの make でもほば共通です。し かし、細部ではかなり違います。たとえば、前回の説明 に出てきた環境変数のマクロとしての使用、マクロの 変わった展開方法、 SHELL 、 MAKE マクロなどは、 BSD 系の make コマンドでは基本的には実現されていませ UNIX MAGAZINE 1992.5 LJN Ⅸ流プログラミング 19 ん 2 。この 4 つは、機能が少ないと思われる順に挙げて あります。だからといって、機能の少ないものが使いに くいわけではありません。 私自身は、基本的にどの make コマンドでも使える ように Makefile を書きますし、ふだんは BSD 系の make コマンドを利用しています。 make の機能として は、それで十分なのです。ただし、 1 つのマシンで使え る Makefile がほかのマシンでそのまま利用できるわけ ではありません。その点をはっきりさせるために ではあえて分類したのです。 話をもとに戻しましよう。 make コマンドの出力のな かでは、 Sun の make だけが先頭のほうに暗黙の規則 を出力します。また、 BSD 系の make の場合は、暗黙 の規則の依存関係指定の行とインストラクションのあ commands : という行が加えられています。 GNU の make の場合に は、暗黙の規則のほかに組込みの規則もあり、出力には 数多くのコメントが追加されています。 実行可能なプログラムを作る もう 1 つ、 make の素性の違いと暗黙の規則に関係す ることとして、実行可能なプログラムを作成する方法が 挙げられます。今回、最初の例題で . c から . 。というサ フィックスをもつファイルを作成する方法についてお話 ししました。じつは、 C のソースファイルから実行可 能なプログラムを作成する方法もあります。最初の例題 を実行したのと同し環境で、 BSD 系の make を使って いる場合は、 % make main. out System V 系や Sun 、 合は、 % make GNU の make を使っている場 と実行してみてください。それぞれ、指定した名前の実 行可能なファイルが作成されたはすです。 操作という意味ではそれほど差がないように思われ ますが : さきはどの暗黙の規則として指定することを 2 ただし、工黏竟変数が使えるように拡張されているものもあります。 133
DZ—X 流プログラミング は、ファイル名を main. c とします。 % ls maln . C % cat main. C main ( ) printf ("main\n") ; この状態では、ディレクトリにはこのファイル (main. c) しかないものとします。 こで引数に main. 。を指定して make を起動する 今泉貴史 と、 % make malll. 0 CC ー 0 —C ma111. C などと表小され、 Makefile もないのに main. 0 という ファイルか作成されます。 今度は、 main. c のはかに main. 0 ができています。 この状態でもう 1 度 make を実行すると、 make がファ イルの更新状態を調べて、 % make main. 0 maxn. 0, is up tO date. 前々回から、 2 回続けて make コマンドについてお 話ししてきました。 UNIX 上でプログラムを作成する 場合、この make を使うとかなり楽をすることができ ます。基本的な機能やマクロ機能についてはこれまでに ひととおり説明しましたが、今回は、、暗黙の規則 " につ いてお話しします。 と main. 。が最新であることを表示します。 Makefile がないのに、どうして make が使えるので しようか ? しつは make は、 main. c という名則のファ イルから main. 。という名前のファイルを作成する方法 を知っているのです。これが、 make コマンドに備わっ ている暗黙の規則です。 暗黙の規則 暗黙の規則の例 いきなり、、暗黙の規則 " などといわれて、面喰らった 則例では、 main. c というファイルから main. 0 とい 方もいらっしやるかもしれません。そこで、まず例を挙 うファイルを作成しました。いくら Makefile なしにフ げてどのようなことができるのかをみていきましよう。 ァイルが作成できるといっても、ファイル名が main. c ます、簡単な C のソースファイルを 1 つ用意してく から main. 。などと決まっているのでは使いやすいも ださい ( 内容はどんなものでもかまいません ) 。 のとはいえません。そのために、 make は ma ⅲ . c から 131 UNIX MAGAZINE 1992.5
main. 。という特定のファイルを作る方法ではなく、 . c で終る名前のファイルから . c の代わりに . 。を付けたフ ァイルを作成するという一般的なガ去を知っているので す。次に示すのが make コマンドが知っている規則で . C . 0 : ァイルから main. 。というファイルを作成するときに たとえは最初に挙げた例のように、 main. c というフ 成する方法を指定したことになります。 のファイルから .0 というサフィックスのファイルを作 定しています。この例の . c. 0 は、 . c というサフィックス です。この場合もサフィックスを利用して依存関係を指 の . 以降の部分 ) を利用してファイルを生成しているの ル名のサフィックスと呼ばれる部分 ( ファイル名の最後 じつは暗黙の規則の場合は、 make コマンドはファイ ありません。 ト ) は main. 0 で、 . c. 0 などという名前のファイルでは す。この例では、作成したいファイル ( つまりターゲッ いました。今回は、コロンの則に . c . 。と書いてありま コロンの後ろに依存するファイル名を並べて記述して これまでの例では、コロン ( : ) の前にターゲットを、 いくことにしましよう。 異なる方法で解釈されます。まず、この部分からみて この場合、依存関係を指定する部分はこれまでとは $(CC) $(CFLAGS) -c $ く という部分が、 . C . 0 : は、 1 この規則は、 make コマンドごとに異なります。出力ガ去については ( 値は一の。また、特殊マクロとしてくが使われていま は C コンパイラにオプションを渡すためのマクロです CC は C コンパイラを示すマクロ ( 値は (c) 、 CFLAGS ます。 は、前回お話ししたマクロ機能がいくつか使われてい 次は、インストラクションの指定部分です。ここで と解釈されるのです。 maln . 0 : maln . C 132 彳あします。 す。このくは、ソースファイル名 ( この例では mai Ⅱ . 0 ) に展開されます。つまり、さきほどの依存関係の指定の 行を展開した結果、コロンの右側に現れるファイル名に なります。 これらのマクロを展開すると、さきはどの実行例の、 CC ー 0 —C main. C という処理になることがお分かりいただけたでしよう make コマンドの知っていること ここで make コマンドが知っている暗黙の規則や、 前回お話しした make コマンドが知っているすべての マクロをみることにしましよう。これには、 make コ マンドのオプションを使います。前回説明した一 n オプ ションに加え、ここでは一 p と -f というオプションを 使います。 ーⅡは、 make が実際にはコマンドの実行をおこな わないようにするためのオプションでした。今回は make の知っていることを出力するために実行するの で、 make が何かほかのコマンドを実行しないように このオプションを指定します。 -p オプションは、マクロ定義や暗黙の規則を出力さ せるときに指定します。 また一 f オプションは、 Makefile を指定するための ものです。通常、 make コマンドはカレントディレクト リにある MakefiIe を読み込んで処理を開始しますが、 MakefiIe がないとほかのファイルも検索します。 では make コマンド自身が知っている情報を出力した いので、既存の Makefile などから情報を読み込まれて は困ります。したがって、すでに Makefile があると きは、これとは別に中身のない MakefiIe を作り、 オプションを使って指定します。 -f オプションの次に ファイル名を指定するとそのファイルが Makefile の代 わりに用いられます。ファイル名として一が用いられた 場合には、標準入力の内容が MakefiIe として使用され ます。 こでは、中身のないファイルに / dev / Ⅱ u Ⅱを 使うことにしましよう。 これらのオプションはまとめて指定することも可能 で、実際のコマンド行は、次のようになります。 UNIX MAGAZINE 1992.5
表 1 変換規則の対応 考えてください。暗黙の規則の場合、依存関係を指定 する行には、コロンの前にもととなるものと作成する もののサフィックスを並べて記述します。 SystemV 系 や Sun の make では、作成するもののサフィックスが ないのでこの指定はうまくいきません。実際に、この指 定をしている部分を見てみましよう。 $ (CC) $ (CFLAGS) $ く $ (LDFLAGS) ー。 $@ この指定では、もととなるファイルのサフィックスだ けカ甘旨定されています。しつは、もととなるファイルの サフィックスだけを指定した場合、 make コマンドはサ フィックスのないファイルを作成するのだと判断してい るのです 3 。 . SUFFIXES こでは、暗黙の規則にはどのようなものがあるか についてお話しします。ところが前述のとおり、 make コマンドからの出力は短いものでも 200 行、長いもの では 400 行を超えてしまいますから、すべてをここに 挙げるわけにはいきません。そこで、どのようなサフ ィックスからどのようなサフィックスへの変換方法が用 意されているのかについて説明していくことにしまし 残念ながらこれも make の種類ごとに異なりますが、 さきほどの make からの出力のうち、 . SUFFIXES: で 始まる行に注目してください ( 通常、これは最後のはう にあるはずです ) 。たとえば、これが次のようになって いたとしましよう。 . out . 0 . c . f . y .1 ・ s ・ P . SUFFIXES : この make の場合、次のようなファイルに対応でき ます。 実行可能なプログラム . out オプジェクト・ファイル . 0 C のソースファイル . C Fortran のソースファイル . f yacc のソースファイノレ ・ Y 3 BSD 系の make では、残念ながらこのような指定はできません。 4 コロンの後ろで改行し、 depends 。Ⅱ : に続けてリストが表示される ものもあります。 変換後のサフィックス 〇〇 〇〇〇〇〇〇 〇〇〇〇〇〇〇 0 lex のソースファイル アセンプラのソースファイル PascaI のソースファイノレ もちろん、実行可能なプログラムからソースプログ ラムが作れるはすはありませんから、すべての変換方 法がこれら相互のあいだで準備されているわけではあ りません。それは、暗黙の規則としてどのようなもの が存在しているのかを調べなければ分かりません。 の例では、表 1 のようになっています。 表 1 のなかで〇の付いた部分が、左のサフィックスか ら上のものに変換するための規則か存在したものです。 残念ながら、この変換の規則の有無に関する一般的 な法則はありません。しかし、ある程度のきまりはあ ります。表 1 では、〇の付いた部分が左下に集まって います。それもそのはす、一般的には . SUFFIXES はそ の並びのなかで、自身よりも左側のものに変換する規則 を記述するのです。つまり . c から . s 、 C のソースファ イルからアセンプラのファイルへの変換は、 ( 可能であ るにもかかわらす ) 記述されていないのです。このきま りと、対象とする言語に関する一般的な知識があれば、 どのようなものに変換できる暗黙の規則が存在するか はお分かりかと思います。 暗黙の規則を書く 暗黙の規則の使い方についてはひととおり説明した ので、次にその作り方と MakefiIe のなかでの利用方法 を説明しましよう。これは意外と簡単で、暗黙の規則を UNIX MAGAZINE 1992.5 134
ルについての依存関係を指定するには、どうすればよい のです。さすがの make コマンドも、そこまでは面倒 をみてくれないようですね。 のでしようか。 サフィックスを使って指定しているので、どんなファ もう 1 つ、 . SUFFIXES の扱いにも注意が必要です。 イルに対してこの規則が適用されるのかは分かりませ さきほど、 . SUFFIXES をターゲットとする依存関係 ん。ここに指定すると、予期せぬファイルに対しても 指定の行に、依存するファイルとして加えたいサフィ 同じ依存関係が使われてしまうため、うまくいきませ ックスを記述すればよいと書きました。しつは、この ん。また、 make コマンド自身がもっている暗黙の規則 . SUFFIXES のリスト内での順番にも意味があります。 の場合には、そこに書き込むことすらできません。 すでにお話ししたとおり、一般にリスト内では右の しつは依存関係の指定は、別個におこなうことも ものから左のものを作成するように記述します。これ できるのです。たとえは、 main. c というファイルが はあくまで通例ですが、このリストに関して決められ defs. h というファイルをインクルードしている場合、 ていることもあるのです。たとえば main. 0 というファ MakefiIe には、 イルを作成する場合、 main. c と main. p という 2 つの ファイルが存在していたらどちらのファイルから作成 defs . h ma111 . 0 するのでしようか。 という行だけを記述しておきます。すると、 (make コ このような場合、 . SUFFIXES リストを使って利用す マンドがもっている ) 暗黙の規則とこの記述をあわせ るファイルか決定されます。 . SUFFIXES リストのなか たものが、依存関係として指定されたものとみなされ で、さきに書かれているサフィックスをもつファイル ます。 ( この場合は main. c) から作成する、と決められている のです。このリストのなかでの順番を変えたいときは、 今回は、 make コマンドの暗黙の規則について説明し どうすればよいのでしようか。これまで説明した方法で ました。暗黙の規則とはサフィックスを用いて指定する は、リストに加えることはできますが、リストのなかで もので、サフィックスだけが異なるファイルの変換方法 の順番を変えることはできません。 を指定するものです。また、 make コマンドの種類につ 結論からいうと、このリストのなかでの順番を変え いてもお話ししました。 る方法はありません。ただし、現在のリストの内容を 次回は、 make コマンドをうまく使いこなすためのテ 無効にすることはできます。言い換えれば、 1 度内容を クニックについて説明する予定です。擬似ターゲット 無効にしておき、新たに必要な順番でサフィックスを指 や複数のディレクトリを扱う make についてお話しし 定しなおせばよいということです。 ようと考えています。 それには、依存するファイルとして何も指定せすに、 ( いまいすみ・たかし東京工業大学 ) . SUFFIXES をターゲットとして依存関係指定の行を記 述します。つまり、 . SUFF 工 XES : とだけ記述し、そのあとでサフィックスを登録しなおせ ばよいのです。 ロプレゼントのお知らせロ UUCP システム管理 Tim O'ReiIIy 、 Grace Todino 共 著 (juice 監訳 ) CIJIJCP システム管理」 ( アスキー ) を 4 名の方にプレゼントいた します。 ご希望の方は、本言爻込みのアンケート はがきに「プレゼント希望」とご記入のう え、 1992 年 5 月 2 日 ( 土 ) までにお送り ください ( 当日消印有効 ) 。 なお、募者多数の場合 ( 対曲こなります。当選者の発表は発 送をもって代えさせていただきます。 依存関係だけを加える 3 月号では、 C 言語のソースファイルがヘッダファ イルをインクルードしているとき、依存関係指定の行に そのヘッダファイルを指定する方法についてお話ししま した。では、暗黙の規則を使ってインクルード・ファイ 136 UNIX MAGAZINE 1992.5
LJN Ⅸ流プログラミング 19 1 三ロ 己述するルールに沿って Makefile のなかに書けば、す かに . sed というサフィックスを登録しないと、この規 ぐにその規則が使えます。 則は使えないのです。 . SUFFIXES のリストに登録するには、 . SUFFIXES では、 . sed というサフィックスをもつファイル をターゲットとする依存関係の指定行を記述します。 を、 . out というサフィックスをもつファイルに変換す のとき依存するファイルとして、加えたいサフィックス る規則を加えてみましよう。これは、 sed のスクリプ を記述します。今回は . sed と . out を加えなければなら ト・ファイルをそのまま実行できるファイルに変換し ないので、次のようになります 5 。 ようとするものです。 依存関係指定の行には、次のように変換兀のサフィッ . SUFFIXES : . out . sed クスと変換後のサフィックスを並べ、コロンを付けてお この場合も、通例に従って左に変換先のサフィックス きます。 を書くことにしましよう。このように記述すれば、さき . sed . out: ほどの暗黙の規則が使えるようになります。 インストラクションの部分には、変換元のファイルか % ls Makefi1e ら変換後のファイルをどのようにして作成するのかを、 % cat Makefi1e 変換元のファイルの代わりに $ く、変換後のファイルの . SUFF I XES : . out . sed 代わりに $@を使って指定します。今回の例では、次の . sed . out : ようになります。 echo " # ! /bin/sed —f " > $@ cat $ く > > $ chmod + x $@ 最初の echo コマンドでコマンド・インタープリタと して /bin/sed を指定し、次の cat コマンドで本体をコ ピーし、最後に chm 。 d コマンドを使ってファイルを実 行可能なモードに設定しています。 さて、これを使って実験してみましよう。 Makefile ともとになるファイルが必要です。 % cat Makefi1e . sed . out : echo " # ! /bin/sed cat $ く > > $ chmod + x $ % cat a. sed s/a/b/g % make a. out Make : Don' t know how to make a. out. Stop. a. sed echo " # ! /bin/sed cat $ く > > $@ chmod + x $ % make a. out echo "#!/bin/sed —f" > a. out cat a . sed > > a . out chmod + x a. out % ls Makefi1e a. sed a . out どうです。意外と簡単でしよう ? 使用上の注意 暗黙の規則を使ううえで、 いくつか注意してはしい ことがあります。 まず、 1 つのファイルを作成するのに複数の暗黙の規 則は使えないという点です。もう 1 度、表 1 を見てくだ さい。 . c から . 。への変換と . 。から . out への変換か準備 されています。この 2 つが存在すれば、 . c から . 。 ut へ の変換はなくてもよさそうに思えます。しかし、そうで うまくいきません。もう 1 つ、何か忘れていません はありません。 1 つのファイル (. out というファイル ) か ? を作成するために、複数の暗黙の規則 (. c から . 。への さきほど、 . SUFFIXES と書かれた行のなかのサフィ 規則と . 。から . 。 ut への規則 ) を使うことはできないの ックスをもつファイルに対する変換を、暗黙の規則と です。だからこそ、 . c から . 。 ut への変換規則も必要な して記述できると書きましたが、 . sed というサフィッ 5 すでに . out がサフィックスとして登録されている場合は、 . out を登 クスは登録されていません。 . SUFFIXES のリストのな 録する必要はありません。 135 UNIX MAGAZINE 1992.5
特集 連載 17 気楽に UN Ⅸいかっこよく X ① 36 UNIX Communication Notes Cnews(2) 49 UNIX マルチメディア事始め JPEG 54 Daemons&Dragons 管理に関する疑問 ( 2 ) 58 A First Look at TEX フォント① 72 LittIe Language ” srekcah@sra.co.jp 自由きままに SheIl プログラミング⑩ 78 C ADVISOR プライベート・メンバー関数 81 オプジェクト指向の世界 文字列配列クラス 104 Nemacs 入門 SheII モード 131 UN Ⅸ流プログラミング 岡山聖彦、片山喜章 齊藤明紀 下條真司 Rob KoIstad Stephan on BechtoIsheim JOhn DIugosz Stephan von BechtoIsheim 荒井美千子 今泉貴史 make ( 3 ) 137 An lntroduction to X Window System 色表示の仕組み ・中村 ~ 、、眞 142 新連載 LittIe PerI ParIor 歌代和正 PerI の基礎知識 148 UN Ⅸへの招待・ MH ④ ・表紙デサイン・甲斐みどり・表紙絵・守屋ー於 ・・坂本文
このコマンドは、新しい名前のファイルにコピーし、も とのファイルを消す、というイ乍業と同じと考えてよいでし ょっ。ですからこの場合、 ・ cp bar f00 ・ rm bar という竹業をしたのと同じ結果か得られます。 このコマンドが活躍するのは、バックアップとしてコ ピーしておいたファイルを、もとの名前に戻すときなどで す。はかにもさまざまな場面て利用できます。麦、この 特集でもときどき顔を出すでしよう。 ディレクトリに対する術 こまでの術は、すべてディレクトリではなく普通の ファイルに対するものばかりでした。しかし前にもすこし 触れましたが、普通のファイルとディレクトリは基本的に 同様に扱えます。これからしばらくのあいだ、ディレクト リを主役にさまざまな例を挙げていきましよう。 ますは、ディレクトリの作り方です。ディレクトリを 作るときには、 mkdir (MaKe DIRectory) コマンドを 使います。使い方は、 ] これから作るディレクトリ名 mkdir [ ーオプション です。たとえば、 b a れ a というディレクトリを作る場合 外野 : 「人にゆえる立場やないんとちゃうか ! 」 本人 : 「こりやまった失礼しました」 ( 古い ! ) さて次は、いらなくなったディレクトリの消し方です。 ディレクトリを消すときは、専用の rmdir (ReMove DIRectory) コマンドがあります。使い方は、 rmdir ティレクトリ名 です。ただし、このコマンドで消せるのは中身カ舸もない ディレクトリに限られます。ですから、ます rm コマンド を使って、そのディレクトリのなかのファイルをすべて消 去しなくてはいけません。たとえば、次のようにします。 nadia% ls —F b anana/ f00 nadia% test nadia% rmdir : nadia% nadia% nadia% nadia% nadia% nadia% f00 nadia% 1s banana rmdir banana banana : Directory not empty c d banana rm test cd 1s banana rmdir banana ls —F は、 1 : 2 : 3 : 4 : 5 : 6 : nadia% ls —F f00 nadia% mkdir banana nadia% ls —F banana/ nadia% f00 ディレクトリを消す前に、中身を空にするのか面倒だと いう人向けには、 rm コマンドを使うガ去もあります。 rm コマンドに一 r オプションを付けて実行すると、ディレク トリの中身ごと、すべてきれいに消してくれます。なかに 何が入っていようがきれいさつばり消してくれますので、 コマンドを実行する前に何度も何度も何度もしつこく確認 してくださいオ とします。 3 行目でディレクトリを作り、 4 ~ 5 行目でディレク トリが本当にできているか確かめています。 5 行目では、 ファイル名の後ろに、、 / " が付いていますね。これは、その ファイルがディレクトリであることを表しています。これ で、自分のホームディレクトリの下にいくらでも整理箱を 作ることができます。つねに整理整頓を心掛けましよう。 14 厳密には同じではありませんが、あとで説明する予定なので、それまで 待っていてください。 30 nadia% ls b anana/ nadia% 1s test nadia% rm nadia% 1s 次は、 nadia% f00 banana —r banana f00 ディレクトリのコピーです。これは、ファイル のコピーと同しように cp コマンドを使います。ただし、 UNIX MAGAZINE 1992.5
図 9 ls コマンドの実行 1024 Nov 1024 Feb 512 Oct nadia% ls —F /usr 5b 土Ⅱ / 5inc1ude/ 51ib/ adm@ nadia% ls drvxr—xr ー X drwxr—xr—x drwxr—sr—x drwxr—sr—x drwxr—sr—x 1 rwxrwxrwx 3 bin 3 bin 2 bin て 00t /usr kvm/ include/ hosts/ games/ 1 21 28 01d / openwin/ pfs@ private/ 気楽に IJN Ⅸ、かっこよく X tmp/ tmp. ORG@ ucb/ ucbinclude@ 12 : 25 15 20 : 58 1024 512 10 Oct Oct Oct 9 12 12 14 14 1990 5bin 1990 5inc1ude 1990 51ib 1990 adm ー > . /var/ adm 注 : ls コマンドで複数のオプションを指定するときは、下の例のようにオプションの文字を連続して付けてもかまいません。 nadia% cat /etc/rc # ! /bin/sh @(#)rc 1 .45 90 / 08 / 08 # default protected from tty The rc sh gets the console . SMI ; from UCB 4 . 3 signals (i . e. are n A11 commands are lnterrupts can be enabled by proceeding any CO # Make sure PATH is exported or intr won ' t find PATH=/bin : /usr/bin : /usr/etc ; export PATH HOME=/ ; export HOME perform a11 the remounting and set up w # See if things 100k like they are still mounted touch / # If so , -ne 0 ] ; then echo "Remounting file sh /etc/rc . single systemsl あれたしかに中身を見ることはできましたが、初め のほうが画面の上方に消えていってしまい、見られませ ん。行数の少ないファイルならこれで十分ですが、大き なものはあっという間に麪頁の部分か画面のかなたに消え 去ってしまいます。 UNIX MAGAZINE 1992.5 しや、もう見られないのか、ですって ? いえいえ、心 配はいりません。見るガ去はいくつかあります。そのうち、 おもなものを 2 つだけ挙げておきます。 1. Control キーと S を同時に押して画面を止める (Con- trol キーと Q て再びスクロールさせる ) 。 2. cat の代わりに more を使う。 1 のガ去は職人芸が必要で、プロ向きです : ー ) また、思 わぬ現象 10 に悩まされることもあるので、初めはあまり多 用しないはうがいいでしよう。 2 がもっとも一イ勺な解決策です。これを使うと、長い ファイルは 1 画面すっスクロールを止めてくれます。使 # ! /bin/sh nadia% more /etc/rc です。たとえば次のようになります。 more [ ー / + オプション ] [ ファイル名 い方は、 ( # ) て c 1 .45 90 / 08 / 08 SMI ; from UCB 4.3 27 てるんや ! " と叫んでしまうこともあります。 10 ControI-S で画面を止めておいたことを忘オ・し、なんで画面が止まっ mmand 1ine with # lnterrupts can be enabled by proceeding any co # default protected from tty signals (). e. are Ⅱ # The rc sh gets the console . A11 commands are
い、名前だけの、、ファイル " を作ってくれます。しかしこ れではあまりおもしろくないので、中身のあるファイル を作りましよう。そのために、さきほど登場した cat コ マンドを使います。ます、これから作るファイルの名前 を決めなくてはなりません。 こでは foo というファイ ルを /home/nadia/monkey の下に作ることにしましよ う。ファイルの中身は、 He110 , world ! にしておきまし ようか。次のようにしてファイルを作ります。 1 : nadia% cd /home/nadia/monkey 2 : nadia% pwd 3 : /home/nadia/monkey 4 : nadia% IS —aF —More— ・ logout 次の 1 画面ぶんを見たければ、スペースを押せば自重加勺 6 : nadia% cat > f00 7 : He110 , Wor1d! にスクロールして止まってくれます。また、 1 度いきすぎ 8 : (Control キーと D を同時に押す ) た部分でも、 b で戻れます 11 。また、これと同しような働 9 : nadia% ls —aF きをするコマンドに less というものもあります。多少の 10 : . cshrc ・ logout f00 違いはありますが、ほとんど同様に使えます。どちらを使 11 : nadia% cat f00 うかは個人の好みです。 1 度試してくださいね。 12 : He110 , Wor1d! 13 : nadia% ファイル自由自在 1 度箱のなかに納めたものも、ときには別の箱に入れた り、捨ててしまったりすることがあります。 UNIX のフ ァイルもこれと同じで、捨てたり、ほかのところに移すこ とができます。そのためのコマンドが、 cp 、 rm 、 mv 、 mkdir 、 rmdir で、それぞれ次のような働きをします。 # Make sure PATH is exported or intr WOII' t f ind what it needs . HOME=/ ; export HOME PATH=/bin : /usr/bin : /usr/etc ; export PATH # See if things 100k like they are still mounted # If so , perform a11 the remounting and set up touch / —ne 0 ] ; then echO ( CRemounting fi1e systems' sh /etc/rc . single . aliases . cshrc ・ logi Ⅱ . aliases ・ 10g 土Ⅱ 1 ~ 5 行目までがファイルやディレクトリの確認です。 実際にファイルを作っているのは、 6 行目です。さきほ ど紹介した cat の使い方とすこし違うのに気がつきまし たか。 > という記号があいだに入っていますね。これは、 、、いまから入力する内容を、 foo というファイルに書き込 んでちょーだい " という意味です。この記号の使い方は、 ファイル ( ディレクトリ ) のコピーを作る この特集のもっとあとのはうで詳しく説明する予定なの ファイル ( ディレクトリ ) を削除する で、それまでは、、こんなものなんだな " という程度で - ト分 ファイルの名前を付け替える。ファイルを です 12 。 8 行目の D " は、、、これでファイルは終りだよ " 違うディレクトリに移動させる ということを知らせるためのものです。 10 行目で、本当 新たにディレクトリを作る にファイルができていることカ吩かりますね。また 11 ~ 空つほ。のディレクトリを削除する 12 行目では、そのファイルの中身が自分で入力したもの と同しかどうカ蔀寉認しています。これからは、このファイ それでは、実際に試してみましよう。 ルをあちこちに移動させたり、消したりしてみましよう。 こで、ファイル操作の実験のために、何か自分でフ ちょっとかわいそうかな : ー ) ァイルを作ってみます。ごく簡単にファイルを作るため のコマンドに、 touch があります。これは中身が何もな 12 それでも知りたい人は、オンライン・マニュアルや、 CUNIX プログ 11 見ているものによっては、戻れないこともあります。 ラミンク環 ( アスキー ) などカ鯵考になります。 mkdir rmdir 28 UNIX MAGAZINE 1992.5