2000 年度「計算機基礎論3B」 2000-10-20

タイピング練習も続けてください。

ファイルとディレクトリ

コンピュータのディスクには、 情報は「ファイル(file)」と呼ばれる単位で書き込まれています。 また、 ファイルたちが置かれている小部屋のようなものは 「ディレクトリ(directory)」と呼ばれます。

きょうは、 これらについての基本的操作をまとめて学びます。 あまりおもしろくないかも知れませんが、 これが済めば unix 入門の第一段階は突破で、 各自で自習したり人から聞いたりしていろいろなことができるはずです。

※ と言うか、 このレベルに達していない人にやり方とかを聞かれたらあまり教えたくない。 めんどうだから。

※ 実は、 これらの操作はファイルマネージャを使うと視覚的に実行できるのだが、 最初は少し昔風の、コマンドラインからのやり方でやってみる。

「ファイルとは何か?」「ディレクトリとは何か?」 は最初には説明しません。 最後まで読んでゆくと自然にわかると思います。 「ファイル」「ディレクトリ」という二つの単語を頭にいれて、 先へ進んでください。

unix のファイル操作コマンド

ls

ログインしたらすぐ、 シェルツールまたはコマンドツールの中に 「ls」(小文字のエル、エス)と打ち、 Return を押してください。

この先では、 こういう操作を 「コマンドラインから ls を実行してください」 「コマンド ls を実行してください」 「ls としてください」 などと書くことがあります。 ここでついでに「コマンド」 「コマンドライン」という言葉も覚えてください。

    ws47{cf1920}1% ls
    nsmail/  tx.scr   tx.usr
のようになったと思います。 ひとによってはもっと別のものも出力されているかもしれません。

スラッシュ(=記号「/」)が後ろについている nsmail はディレクトリの名前、 すなわち「ディレクトリ名」です。 それ以外の tx.scr と tx.usr は、ファイルの名前、すなわち「ファイル名」です。 ls はディレクトリとファイルの名前一覧をアルファベット順に出力するコマンドです。 よって、いまの場合、 「nsmail という名前のディレクトリと、 tx.scr という名前のファイルと、tx.usr という名前のファイルがある」 ということになります。

※ ……って言われたって、 「ファイルとは何か」「ディレクトリとは何か」 を教わってないんだからなんだかわからない、 と考えるのは当然なんだけど、 とにかく先へ進もう。

※ ノートには

    「ls」 ディレクトリとファイルの名前一覧を表示させる
などとメモしておくといいかもしれない。

cat

ファイルには情報が格納されています。 情報とは文書だったりデータだったりしますが、 その内容を見るには「cat tx.usr」のようにします。 cat と tx.usr の間にスペースを打つことに注意してください。

    ws47{cf1920}1% cat tx.usr
    === User File for <<< tx version 3.0x >>> ===
    cf1920
       69
    2000-10-12 18:02:53
    _______ooo_o_ooo_o_ooo_o_ooo__oooo_o__ooo_o_ooo_o__ooo_o_oooo__oooo__
    0D4970BE
    ws47{cf1920}2%
これが tx.usr という名前をもつファイル (以下では「ファイル tx.usr」のようにも言う)の内容です。 これが何を意味するかは作った人に聞かないとわかりませんが、 とにかくこうやって内容を見ることができました。

※ これはタイピング練習の結果を収めたファイルのひとつで、 「~iwase/tx2000」 として動かした練習プログラムが作ったものである。 「ユーザ名」「どこまで進んだか」 「最後に練習したのはいつか」「どの課を合格しているか」 などが収まっている。

tx.scr も見てみましょう。

    ws47{cf1920}2% cat tx.scr
    === Score File for <<< tx version 3.0x >>> ===
    cf1920
    第2課        00-10-05 13:58:06   8  56  58   9 0.155   3  5.1 0.209 x BD833E2B
    第2課        00-10-05 13:58:19   8  56  56  10 0.178   0  0.0 0.178 o B6492D24
    第3課        00-10-05 13:58:35   9  58  58  10 0.172   0  0.0 0.172 o 3FCF9906
    第4課        00-10-05 13:58:48  10  58  58   9 0.155   0  0.0 0.155 o 5CF822BE
    第5課        00-10-05 13:59:10  12  86  86  14 0.162   0  0.0 0.162 o 45B3880A
    第7課        00-10-05 13:59:48  14  60  60  10 0.166   1  1.6 0.181 o 0E830818
    第8課        00-10-05 14:00:03  15  60  60  10 0.166   0  0.0 0.166 o 2311D3C4
    第9課        00-10-05 14:00:18  16  60  60  11 0.183   1  1.6 0.200 o 47560538
    第10課      00-10-05 14:00:38  18  90  90  15 0.166   3  3.3 0.200 o AFFE0AFB
    (中略)
    第49課      00-10-05 14:14:20  66 135 135  20 0.148   0  0.0 0.148 o 540F1DB7
    第50課      00-10-05 14:14:51  67 149 150  25 0.166   2  1.3 0.178 o 91ECC0D0
    ws47{cf1920}3%
このファイルの中味は一行が一回の練習に対応しているので、 もしかすると一画面におさまりきれないかも知れません。 その場合は more を使ったりエディタで見たりするのですが、それはあとで学びましょう。

コマンドには、このようにコマンド名だけでなく 「cat tx.usr」のように後ろに何かをつけて起動するものがあります。 後ろにつくもの、この例では「tx.usr」を、「引数(ひきすう)」と呼びます。 「cat は引数としてファイル名をとり、そのファイルの内容を画面に出力するコマンドである」 などという言い方ができます。

※ ノートには
    「cat ファイル名」でファイルの内容を画面に出力
とかメモしておくといいかもしれない。

もしも cat を引数なしで実行すると --- すなわち、「cat」とだけ打ってリターンを押してしまうと ---、 何も出力されずに止まってしまいます。 そのときは Ctrl+C を押せば (i.e.「Ctrl」キーを押しながら C を押せば) コマンドが中断されてプロンプトにもどります。 この Ctrl+C はほかのコマンドでも使えるときがありますから覚えておいてください。

cp, mv, rm

これからこれら三つのコマンドを試しながら覚えてゆきますが、 a, b, c, ... のような、 アルファベット一文字からなる名前をもつファイルは存在しないものとして話を進めます。 (それを確かめるにはどうしたらよいか?)

※ すでにそういう名前のファイルを作ってしまった人は、適当になんとかしてください。 勝手に作れたぐらいなんだからなんとかなるでしょ?

最初に、 ちょっと理屈は抜きにして「cat tx.usr > a」と 「cat tx.scr > b」を実行してください。 (ここの理屈は機会があったらあとで説明します。)

これでファイル tx.usr と同じ内容をもつファイル a および ファイル tx.scr と同じ名前をもつファイル b ができたはずです。 (それを確かめるにはどうしたらよいか?) この節では、この a と b を種(たね)にして実験をします。 これらのファイルを失わないように。 もしなくなってしまったら、うえの a と b を作るところからやり直しです。

cp はファイルをコピーします。 「cp a c」とするとファイル a をファイル c にコピーします。 すなわち、ファイル a の内容と全く同じ内容をもつ別のファイル c ができます。 もしもすでにファイル c が存在すると、その内容は失われます。 (これらのことを確かめよ。)

mv はファイル名を変更します。 「mv c d」とすると、 ファイル c の名前が d に変わります。 もしもすでにファイル d が存在すると、その内容は失われます。 (これらのことを確かめよ。)

rm はファイルを削除します。 「rm d」とすると、ファイル d を削除します。 すなわち、それが成功したあとで ls をしてももはや d は表示されないし、 cat でその内容を見ることもできなくなります。 (これらのことを確かめよ。)

これらのコマンドでは、うっかり手がすべるだけでファイルの内容を失う可能性があります。 次のように「-i」をつければ、確認メッセージが出てもう一度考え直すチャンスがあります。

    ws47{cf1920}1% cp -i a b
    cp: b を上書きしてもよろしいですか (yes/no)? y
    ws47{cf1920}2% mv -i a b
    mv: b を上書きしてもよろしいですか (yes/no)? y
    ws47{cf1920}3% rm -i b
    rm: b を消去しますか (yes/no)? y
この「-i」のようなものを「オプション」と言います。 なお、これら三つのコマンドでオプション「-i」が使えるのは、 これらのコマンドがそれぞれ「-i」を受け付けるように作られているからです。 どんなコマンドにも「-i」が効くわけではありません。

ファイル名に使える文字の種類、 名前の長さの上限は OS に依存しますが、たいていの場合 「アルファベットと数字からなる8文字までの文字列」 は使えるようです。 ほかに、 「_」(下線、シフトしながら「ろ」のキー)も使えます。 「-」(ハイフン)は使わないほうがよいでしょう。 unix では大文字と小文字は区別され、 8文字より長いファイル名も使えます。

ファイル a とファイル b を使って、これらのコマンドの練習をしてください。 済んだら、消してしまって構いません。

unix のディレクトリ操作コマンド

「ファイル」についてはだんだんわかってきたと思うので、 「ディレクトリ」の説明に移りましょう。 「ディレクトリ」というのは、 ファイルを置いておく小部屋や本だなのようなものだと思ってください。 今までやってきた操作は、 実は「ホームディレクトリ」と呼ばれる、 みなさん一人一人にすでに割り当てられたディレクトリで行なった操作でした。 みなさんが実習を進めるうちにはいろいろなファイルを作ります。 それらを全部ひとまとまりのところに置くとごちゃごちゃしてくるでしょう。 ある課題に関するファイルはここに、別の課題に関するファイルはここに、 と分類したくなるかもしれません。 また、課題によっては、 特定のディレクトリで作業を行なうよう求められることがあります。 そんな時は自分でディレクトリを作ったりしなければなりません。

全てを一度に説明すると混乱しやすいので、 ここでは実習に必要な、 ホームディレクトリの一つ下のディレクトリについてだけ説明します。 もっとくわしいことを知りたい人は 「ディレクトリとファイル」 を読んでください。

pwd

現在いるディレクトリを「カレントディレクトリ」といいますが、 pwd はそれを表示させるコマンドです。 「pwd」としてください。 「/home/kakuma/iwase1/cf1920」(最後の部分は自分の ID) のように出力されたと思います。 これがみなさんのホームディレクトリの名前ですが、 最初のほうの /home/kakuma/iwase1/ はなんのことかわからなくて構いません。

mkdir

tmp という名前のファイルはないものとし、 「mkdir tmp」としてください。 すると tmp という名前のディレクトリが作られます。 ls で確かめてください。

cd

続いて、「cd tmp」としてください。 これでカレントディレクトリをディレクトリ tmp に移動します。 ディレクトリ tmp がカレントディレクトリになります、 というほうが普通の日本語かも知れません。 「pwd」で確かめると、 「/home/kakuma/iwase1/cf1920/tmp」 のようにホームディレクトリの後ろに「/tmp」がついたものが表示されるはずです。 ここで「ls」をしてみましょう。 作ったばかりのディレクトリでファイルは置いてありませんから、 何も表示されないはずです。

単に「cd」とすると、 どこにいてもホームディレクトリに戻ります。 「pwd」で確かめてみてください。

rmdir

ホームディレクトリにいて「rmdir tmp」とするとディレクトリ tmp が削除されます。 ただし、前もって tmp 内のファイルを全て削除しておかなければなりません。

その他

異なるディレクトリ間でのファイルのコピーや移動のコマンドもありますが、 ここでは省略します。 たぶん、知らなくても実習は進められますが、 興味のある人は 「ディレクトリとファイル」 を読んでください。

テキストエディタ textedit

「ファイルを作る」「ファイルの内容を変更する」 にはテキストエディタと呼ばれる種類のプログラムを使います。 テキストエディタはいろいろなものが用意されており、 どれを使ってもできたファイルに違いはありませんが、 最初は textedit を使ってみましょう。

作りたい、あるいは内容を変更したいファイルのあるディレクトリに移動し、 その名前が filename だとしたら 「textedit filename &」のように起動します。 あとの操作はメールのときと同じです。 「ファイル」「保存」で打ったものが保存されます。 終わるには「▼」「終了」です。 保存せずに終わりたいときは、 終ろうとしてみて、質問に適当に答えてください。

適当な名前でファイルを一つ作ってみてください。 できたら、「ls」で本当にできていることを確かめて、 それから「cat なんとか」 で内容が自分の打ったものと同じであることを確かめてみてください。

カット&ペースト cut & paste

一つのウィンドウの中で、 あるいは複数のウィンドウ間で、 いろいろなものをコピーしたり移動したりできます。

テキストの一部を別の部分にコピーするときはコピーしたい部分の先頭にマウスカーソルを当てて左ボタンを押し、 押したままマウスカーソルを動かすとテキストの一部が白黒反転表示になります。 ちょうどコピーしたい部分だけが反転した状態になったら左ボタンを離します。 そしてキーボード左の Copy キーを押し、 つぎにコピーしたい先にマウスカーソルを当てクリックすることでカーソルをそこに移動してから Paste キーです。 コピーでなく移動の場合は Copy の代わりに Cut を押せばよろしい。 コピーや移動はほかのウィンドウとの間でも可能な場合があります。 また、Copy, Paste, Cut キーの代わりに「編集」 の中の「コピー」「ペースト」「カット」を使っても同じです。

netscape のウィンドウから textedit のウィンドウへコピーすることも同じようにできます。

ホームページを作ろう

各自のホームディレクトリに public_html という名前のディレクトリを作り、 そこに index.html という名前のファイルを作ると、 そのファイルの内容は http://wwwedu.ipc.kanazawa-u.ac.jp/~????????/ (???????? は各自のユーザ名) という URL で学内から見ることができます。

私がおすすめするやり方は、次の通りです。

  1. 下のサンプルをコピーして自分の public_html 内に index.html をつくり、 netscape で見えるかどうかチェックする。
  2. 「だれそれ」を自分の名前に変えてからまた netscape で見てみる。 「再読み込み」を押さないとファイルを書き換えても表示は変わらないことに注意。 これで netscape の中も自分の名前に置き換われば、 間違いなく自分のファイルが見えている。
  3. index.html と、それを netscape で見た画面と、 それから下のサンプルの下にある説明の三つを見比べて、 書き方を頭にいれ、まねをして自分なりのページに作り変える。

※ 上の1のような説明でどんな作業をすればよいかがわかることが、 きょうの最初に書いた「unix 入門の第一段階の突破」なのだ。

index.html の書き方のサンプルです。

=== この次の行から(i.e. この行は打たない) ===
<HTML>
<HEAD>
<TITLE>だれそれのホームページ</TITLE>
</HEAD>
<BODY>

<H1>だれそれのホームページ</H1>

<H2>アルバイト</H2>

<P>
どこどこでアルバイトしています。
よかったらコーヒーを飲みにきてください。
</P>

<H2>サークル</H2>

<P>
なになに同好会に属しています。
練習はああたらこうたら。
何月何日に発表会をやります。
みんな見にきてね。
</P>

<H2>お国自慢</H2>

<P>
私の故郷、**市はこれこれが自慢です。
……。
</P>
<P>
**市の自慢はもう一つあって……。
</P>

</BODY>
</HTML>
=== この上の行まで(i.e. この行は打たない) ===
最初の5行と最後の2行は「決まり文句」と思ってください。 < と > で囲まれた <H2> などを(俗称で)「タグ」といいます。 これらはそのまま表示されるのではなく命令と解釈されます。 <TITLE> と </TITLE> のように「/」(スラッシュ) の有無だけの違いのペアではさむタグもあります。 この <TITLE> と </TITLE> の間に書いたものは、 授業で使う netscape では無視されるようですが、 ブラウザによってはタイトルバーに表示されます。

<H1>...</H1>, <H2>...</H2>, <H3>...</H3>, <H4>...</H4>, <H5>...</H5> ... は見出しです。 この順にだんだん小さくなってゆきます。

本文は一つの段落ごとに <P> と </P> にはさんで書きます。 どこで改行しても表示には関係しないので、 メールのときも言ったように、 全角文字30文字ぐらいで改行するように心がけるとよいでしょう。

※ 比較的簡単にできるお遊び的要素を二つ、紹介しよう。 <BODY> を <BODY bgcolor="#FF0000"> のように変えるとバックに色がつく。 # の次の6桁は十六進で、 最初の2桁が赤、真ん中の2桁が緑、最後の2桁が青。 同様に、 <FONT color="#00FFFF"> などとするとそれ以降の文字に色がつく。 普通の色に戻すには </FONT> 。

課題1の予告:ホームページに自己紹介を書く

上の説明を読んで、 ホームページに自己紹介を書いてください。 自分のニックネームの紹介、 家族・ペットの紹介、 ふるさとの紹介、 いま住んでいる地域の紹介、 はいっているサークルの紹介、 自分の趣味の紹介、 最近読んだ本・見た映画・聞いたCDの紹介、 自分のコンピュータ歴、 などの中から適当に一つ、もしくはいくつかを選んで書いてください。

ディレクトリの作り方、 ファイルの書き方などを学んだということをアピールしてもらうのが目的ですので、 本文(タグを除く)が(ファイル index.html の上で) 30字×15行もあれば十分です。

なお、これは早く進んでいる人のための課題の予告です。 ホームページを作成しただけでは課題1をやったことにはなりません。 みなさんの進み具合を見たうえで、 次週以降にきちんと説明しますので、 今週ホームページができてしまった人も、ぜひまた来週もきてください。

ファイル tx.scr と tx.usr は移動しないで!

ファイル tx.scr と tx.usr はやや特殊です。 本人もすぐには削除したり変更したりできなくしてありますが、 移動はできてしまいます! でも絶対に移動しないでください! 移動するとタイピング練習の続きができなくなります。

※ 削除や変更をできなくするには「パーミッション」を変更すればよい。 それについてもオプション 「ディレクトリとファイル」 に書いておいた。

テキストエディタ mule

授業ではとりあげませんが、 mule も、有名なテキストエディタです。 私がこの実習用ホームページを作る際には mule を使っています。 興味のある人は 「テキストエディタ emacs/mule」 を読んでみてください。


岩瀬順一 <iwase@kappa.s.kanazawa-u.ac.jp>