1998 年度「計算機基礎論3B」 1998-10-23

タイピング練習が最後まで終わった人は下の「unix の基本的操作」を読んでやってみてください。 終わっていない人は続けながら、練習の合間にやってください。 ただし、ここに書いてあることを今週中にすべてマスターしなければならないという意味ではありません。

続・タイピング練習

なぜタイピング練習が必要か

前回は「なぜタイピング練習をする必要があるのか」を説明していませんでしたので、 ここで説明します。

現在のコンピュータは、 すでにあるソフトを使ってそこから情報を取り出すだけなら、 キーボード操作をあまりしないで済みます。 そのことは前回インターネットをやってみてわかったでしょう。 しかし、諸君には、 必要に応じて新しいプログラムを作れる能力を身につけてほしいし、 また情報の発信者にもなってほしい。 それにはキーボードを見ないでタイピングができることが必須なのです。 それはキーを打つスピードだけの問題ではなく、 タイピングに注意力を奪われてしまうか、 打っている内容そのものに集中できるかの違いです。

タイピングをマスターするにはどのくらいかかるか

以上説明してきたように、タイピングはできたら便利なのですが、 修得にあまりに時間がかかるようだと「それじゃ覚えるのやめようか」 ということになります。

練習プログラム tx の説明文にも書いてありましたが、 合理的な練習を行なえば1日30分、 10日間でタイピングを一通りマスターできるといわれています。

上達の早い人遅い人がありますから、進度はあまり気にしないで。 自転車乗りと同じで、必ずできるようになります。

unix の基本的操作

次の目標は、電子メール(e-mail, 以下「メール」と言う) が自由自在に使えるようになることです。 メールは、いまのところワークステーション (以下では「WS」と書いて“ワークステーション”と読む)から送受信します。 パソコン上のソフトで、 WS に接続することをユーザに意識させることなくメールの送受信ができるようにしたものもあります。 しかし、この授業ではそういうソフトは使わず、 WS にログインして原始的にやってみましょう。 数学科の諸君にはそれほど理解しにくいことでもないと思うし、 便利なソフトはややもすると自分が何をしているかを見失い、 「この赤いポストの絵をクリックするとメールが送れるんです」 のような皮相的な理解に終わりがちだからです。 (余談であるが、世界中のすべての国で郵便ポストが赤いわけではない。)

そのためには、WS で動いている OS (「オーエス」と読む)であるところの unix (「ユニックス」と読む) のファイル操作に関する基本的なコマンドをいくつか覚えなければなりません。

ファイルとディレクトリ

コンピュータのディスクには、情報は「ファイル(file)」と呼ばれる単位で書き込まれています。 また、ファイルたちが置かれている小部屋のようなものを「ディレクトリ(directory)」と呼びます。 ファイルやディレクトリには名前があり、それらは「ファイル名」「ディレクトリ名」と呼ばれます。 それらの名前に使える文字の種類、名前の長さの上限は OS に依存しますが、たいていの場合 「アルファベットと数字からなる8文字までの文字列」は使えるようです。 ほかに、「_」(下線)も使えます。「-」(ハイフン)は使わないほうがよいでしょう。 unix では大文字と小文字は区別され、8文字より長いファイル名も使えます。

ディレクトリは、ツリー(tree)状につながっています。 まず、次の図を見てください。

一番左の「/」は「ルート(root)」あるいは「ルートディレクトリ」と呼ばれ、 根にあたります。 なぜかルートの方向を上、その反対方向を下という習慣になっているので、 / が一番上、そのすぐ下に etc や home があり、home の下には center, kakuma, kakuma2 がある、 といった具合になります。

ルート以外のディレクトリから見ると、すぐ上のディレクトリは必ず一つだけ存在しています。 すぐ下のディレクトリは存在しないこともあるし、ひとつ存在することも、それ以上存在することもあります。 このことをツリー状と表現しているのです。

ルート以外のディレクトリを「サブディレクトリ(Subdirectory)」 と呼ぶことがあります。

WS を使っているときには常にどこか一つのディレクトリが 「カレントディレクトリ(current directory)」になっています。

上の図で eb00d01, eb00d02 と書いたところには実際はこの実習参加者各自のユーザ名を名前にもつディレクトリがあり、 ログインした直後には自分のユーザ名と同じ名前のディレクトリがカレントディレクトリになるよう設定してあります。 そこを「ホームディレクトリ(home directory)」といいます。 そこにはみなさんのアカウントのための初期設定ファイルなどが置かれています。

ディレクトリやファイルの指定のしかたには「絶対パス(path)指定」と「相対パス指定」の二つがあります。

「/」で始まれば絶対パス指定です。 /home/kakuma2/iwase/iwase は上の図に出ているディレクトリの例、 /home/kakuma2/iwase/iwase/tx はそのディレクトリに置かれたファイルの例です。 (後者は上の図には書かれてはいません。)

「/」で始まっていなければカレントディレクトリからの相対パス指定です。 例えばカレントディレクトリが /home/kakuma2 のとき、 iwase/iwase/tx はいま上で説明したファイルを指します。

そのほかに、特別なディレクトリの指定法があります。

    .            カレントディレクトリ[ピリオド一つ]
    ..           親ディレクトリ(すぐ上のディレクトリ)[ピリオド二つ]
    ~            自分のホームディレクトリ[ティルダ(Shift しながら「々」)]
    ~username    そのユーザのホームディレクトリ

例えばみなさんのホームディレクトリがカレントディレクトリのとき、 「..」は /home/kakuma/iwase を表わし、 「../eb00d48」は /home/kakuma/iwase/eb00d48 を表わします。

また、「~/tx.scr」は自分のホームディレクトリにある tx.scr というファイルを、 「~iwase/tx302」はユーザ iwase のホームディレクトリにある tx302 というディレクトリを表わします。

なお、名前だけをみてそれがファイルなのかディレクトリなのかを判断する方法はありません。 (上にあげた特別なディレクトリの指定などは除く。)

(ここまで書いてちょっと考えたのだが、 最初に kakuma がディレクトリの名前だと言ったのは正しかっただろうか? 本当は /home/kakuma が名前で、 kakuma は /home から見た場合のみ使える略称と言うのが正しいのではないだろうか?)

unix のファイル・ディレクトリ操作コマンド

これらのコマンドはすべて、 unix にログインしてプロンプトの出ている状態で打ち込み、 最後に Enter を押して実行させます。 中には取り返しのつかないことになるものもありますので、 自分が何をしているのかよく理解した上で実験してください。 心配な人はダミーのサブディレクトリを作って、 すべてその中で練習するといいでしょう。

pwd

カレントディレクトリを表示させるコマンドです。

cd

ディレクトリを移るときのコマンドです。 下の例で一般の場合を推測して理解してください。

  「cd /home/center」 そのディレクトリに移る(絶対パス指定)
  「cd mail」         そのディレクトリに移る(相対パス指定)
  「cd ..」           親ディレクトリに移る
  「cd」              自分のホームディレクトリに帰る

  「cd ~」            自分のホームディレクトリに帰る
  「cd ~username」    そのユーザのホームディレクトリに移る

ls

カレントディレクトリのファイル・ディレクトリ一覧を見るコマンドです。

「ls -la」とするともう少しくわしく出力されます。

上に示したのは私 eb00d48 がホームディレクトリで ls -la を実行した例です。 出力はファイル名ディレクトリ名のアルファベット順になっています。

「パーミッション」についてはすぐ後で説明します。 「所有者」はファイル・ディレクトリの所有者です。 WS のディスクは全員で一つのものを使っていますが、 個々のファイル・ディレクトリは所有者がはっきり決まっています。 「グループ」はそのファイル・ディレクトリにアクセスできるグループを示しますが、 あまり有効には使われていないそうです。 なお、みなさんは iwase グループに属しています。

「バイト(byte)数」はそのファイルのバイト数です。 ファイルの中味が文書の場合、「abc123」のような文字は一文字1バイト、 「あいうえお」のような文字は一文字2バイトとしてカウントされます。

「日付」「時刻」はそのファイル・ディレクトリを最後に修正した日時を表わします。 6カ月以上前のファイルの場合、時刻の代わりに年が出ます。

「ファイル名・ディレクトリ名」の欄で、 「./」はそのディレクトリ自身、 「../」は親ディレクトリを表わしています。

その次のいくつかは「.」で始まっていますが、 これらは初期設定用のファイルです。 さしあたっては気にしなくて構いません。 なお、これらは「ls」では表示されません。

「ftp/」のように「/」がついているのはこのすぐ下にあるサブディレクトリです。 この「/」はファイル名には含まれません。

「.open-win.init*」のように「*」がついているのは実行ファイルです。 プログラムとして実行できるファイル、というぐらいの意味。 またくわしく説明します。 この「*」もファイル名には含まれません。

「mbox」は普通のファイルです。

ファイルが多すぎて画面が流れるときは「ls -la | more」としてください。 「-- 継続 --」が出て止まったらスペースで次の画面、「q」で中止です。 (ファイルが大量にあるディレクトリの例:/etc)

「ls file1」「ls -la file1」とすればそのファイルについてだけ見ることができます。

※ この「-la」などを「オプション(option)」と呼ぶ。 実は、諸君のアカウントにはしかけがしてあり、 単に「ls」としても「ls -F」が実行されるようになっている。 「ls -la」は実は「ls -laF」なのである。 また、「ls -la」の代わりに「ls -al」としてもよい。 なお 、単なる「ls」をめったに使わないなら、 「ls」とだけ打って「ls -alF」が実行されるよう自分で設定することもできる。 それはまた次回以降に。

unix におけるファイル・ディレクトリのパーミッション

「パーミッション(permission)」というのは、 ファイルやディレクトリに対する読み書きの許可のことです。

ls コマンドの説明のところの出力例のパーミッションと書かれた部分を見てください。 最初の1文字(「d」や「-」)は抜かすことにして、次の9文字は

  最初の3つの rwx ……所有者 eb00d48 自身に対して
   次の3つの rwx ……グループ iwase のメンバーに対して
  最後の3つの rwx ……すべての人に対して
のパーミッションを示しています。rwx は
  r ... 読み取り許可
  w ... 書き込み許可
  x ... 実行許可
の意味です。 例えばファイルが「-rw-r--r--」だった場合、 所有者は読み書き可、グループのメンバーと他人は読み取りのみ可、となります。 ディレクトリの場合は少々違った意味になります。

それらの正確な意味を知るよりは、 具体例を通してどのようなファイル・ディレクトリにどのようなパーミッションを与えるべきかを理解するほうが実用的だと思います。

パーミッションを数で表現することもあります。 その場合は左から順に

       r ... 400
       w ... 200
       x ... 100
       r ...  40
       w ...  20
       x ...  10
       r ...   4
       w ...   2
       x ...   1
と対応させ、「-」でない部分だけ足し合わせます。 くり上がりはないから簡単です。上の例は「644」になります。

パーミッションを変えるには chmod コマンドを使います。 例えば「chmod 600 tegami」とすればファイルまたはディレクトリ tegami のパーミッションが 600 になります。

よく見かけるパーミッションの例をあげておきましょう。

ファイルの場合:

  644 ... 所有者は読み書き可。他の人は読むだけ。普通のファイル。
  600 ... 所有者だけ読み書き可。秘密のファイル。
  755 ... 所有者は読み書き実行可。他の人は読むと実行だけ。実行ファイル。

ディレクトリの場合:

  755 ... 誰でもはいれる。所有者は書き込める。普通のディレクトリ。
  700 ... 所有者だけがはいれて書き込める。秘密のディレクトリ。

 ※ たいていの場合、グループに対するパーミッションとすべての人に対するパーミッションは同じにする。 つまり、2ケタ目と3ケタ目は同じ数字になる。

続・unix のファイル・ディレクトリ操作コマンド

以下のコマンドは、 ファイル・ディレクトリのパーミッションによっては成功しません。 どういう場合に成功しどういう場合に失敗するかは自分で試して調べてください。

mkdir

「mkdir dirname」で、 カレントディレクトリのすぐ下に dirname という名前のサブディレクトリを新しく作ります。

rmdir

「rmdir dirname」で、 カレントディレクトリのすぐ下のサブディレクトリ dirname を削除します。

もしもディレクトリが空でないと (i.e. サブディレクトリやファイルがあると) 警告が出て削除は行なわれません。

cp, mv, rm

「cp file1 file2」でファイルの複写を行ないます。 すなわち、file1 と同じ内容をもつ、file2 という名前のファイルが作られることになります。 もしすでに file2 という名前のファイルがあると、 その中味はなくなってしまいます。

「mv file1 file2」でファイル名の変更を行ないます。 すなわち、file1 というファイルの名前が file2 になります。 もしすでに file2 という名前のファイルがあると、 その中味はなくなってしまいます。

「mv file1 dirname」でファイル file1 をディレクトリ dirname に移動します。 この場合も dirname に file1 という名前のファイルがあると、 その中味はなくなってしまいます。

「mv olddirname newdirname」で、 カレントディレクトリのすぐ下のサブディレクトリ olddirname を newdirname という名前に改名します。

「rm file1」でファイルの削除を行ないます。

※ 以上の三つのコマンドで、file1 はファイル名だけでもよいし、 相対パス指定つきでもよいし、絶対パス指定されていてもよい。 dirname も同じ。

※ 以上の三つのコマンドを「-i」オプションつきで実行すると、 取り返しのつかない事態になる前に確認を求めてくる。

cat

  「cat file1」で file1 の内容を画面に出力します。 「more file1」だと一画面ずつ見ることができます。 「-- 継続 --」が出て止まったらスペースで次の画面、 「q」で中止です。

~/tx.usr, ~/tx.scr はタイピング練習の結果のファイルです。 見てみましょう。

※ 実行ファイルの中には cat すると意味不明な文字があとからあとから出てきてどうしようもなくなるものもあります。 要注意。

まとめ

さあ、いろいろなディレクトリを動き回わって、いろいろなファイルを見てみましょう。

ファイルに関するいろいろなコマンドを学びましたが、 「ファイルを作る」だけがまだでした。 これは次回のお楽しみ。


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