[目次] [前回] [次回]

第3週: ファイルとコマンド(1)

3. 1 長い文章の編集
3. 2 ファイルとバッファとウィンドウ
3. 3 Copy and Paste
3. 4 練習問題
3. 5 中断と取り消し
3. 6 ファイルとディレクトリ
3. 7 ファイルのパス名
3. 8 練習問題
3. 9 コマンド
3.10 ファイルとディレクトリを扱うコマンド
3.11 練習問題
3.12 オペレーティングシステム
3.13 宿題
3.14 おまけ

3.1 長い文章の編集

emacs で画面に入りきらないほど長い文章を編集する時は, 一部分だけが表示されています. 表示位置を変更することをスクロール(scroll)すると言います.

まず,長い文章の例として Emacs Tutorial を見てみましょう.これは,Emacs の入門用テキストですが,今はスクロールの練習が目的なので,内容を読む必要はありません.[Help]→[Emacs Tutorial] C-h t で表示されます.

適当な位置で改行せずに文章を打ち続けると,横幅より長くなってしまいます. その場合,はみ出た部分は次の行に表示されますが,本来は一つの行であることを表すため,右端に `\' が表示されます.また,カーソルを上下に移動するときは,本来の次の行に移動するため,画面 上では何行か飛ばして移動するように見えます.

3.2 ファイルとバッファとウィンドウ

147ページ

emacs は複数のファイルと複数のバッファと複数のウィンドウを同時に扱えます.

現在見えているバッ ファを切り替えるためには,次のようにします.

  1. メニューバーの [Buffers] のところをクリックすると,メニューが出てきます.このメニューは現在のバッファの一覧なので,今どのようなバッファ が存在するかによって,出てくる項目が変わります.
    この例は,testtest2 を編集しているときの [Buffers] メニューです.*scratch* は,emacs を起動したときに最初に表示されるバッファです.
  2. 表示したいバッファのところをクリックします.
二つのファイルの内容を見比べながら作業したいときもあります.そういう時は,ウィンドウを複数使い,それぞれに別 のバッファの内容を表示できます.例えば,Mew はメールの一覧と本文のバッファを同時に表示します.

3.3 Copy and Paste

emacs では文章の一部を別の場所にコピーすることができます.

  1. まず,コピーする領域を指定します.領域の先頭でマウスの左ボタンを押し, そのまま領域の最後までドラッグします.あるいは,先頭で左ボタンをクリックし,最後で右ボタンをクリックしても同じです.
  2. 次に,目的の位置でマウスの真ん中ボタンをクリックすると,そこにさっき指定した領域の内容が張り付けられます.

領域を指定するとき,先頭で左ボタンをクリックし,最後で右ボタンを2回クリックすると,その領域が削除されるので,コピーではなく移動になります.

3.4 練習問題

  1. 先週作った testtest2 を同時に emacs で表示しなさい.
  2. test の中から適当な文を選び,それを test2 にコピーしなさい.

3.5 中断と取り消し

emacs で間違った操作をしてしまっても,慌てずに元の状態に戻しましょう.

操作によっては,ウィンドウが分割されたり,新しいバッファが表示されたり します.そのような場合は,不要なウィンドウを消去し,[Buffers] メニューで元のバッファを選択しましょう.

3.6 ファイルとディレクトリ

77ページ

ファイルとは, コンピュータの中で情報を入れておく箱のようなものです. 文章や数値データを入れておきます.

ファイルの数が増えてくると,それを分類して整理しないと収拾がつかなくなります.そのためにディレクトリ(directory)を使います.

注意: 単に 「ファイル」と言ったときは,ディレクトリもファイルの一種として扱うことが多いので,特にディレクトリではないことを強調したいときは,「通 常ファイル」と言います.

emacs でディレクトリの内容を見るには次のようにします.

  1. [Files]→[Open Directory ...] C-x d とします.
  2. ミニバッファに Dired (directory): ~/ と表示されます. ~/ はホームディレクトリを表す記号です.ここで別のディレクトリを指定することもできますが,今はこのままReturnキーを押します.
  3. 次のようなバッファが表示されます.
    種別
    通常ファイルは '-',ディレクトリは 'd' です.
    アクセス権
    そのファイルを誰が読み書きできるかということです.次回に詳しく説明します.
    参照数
    そのファイルがディレクトリのエントリになっている回数です.
    所有者
    普通はそのファイルを作ったユーザです.
    大きさ
    単位はバイトです.
    更新日
    ファイルの内容が最後に更新された時間です.
    ファイル名
    自分で作るファイルには好きな名前を付けることができますが,日本語はソフトによって扱い方が違ったりしますし,記号の多くは特別 な意味で使われます.アルファベット,数字,'-', '.' だけを使うのが無難です.
  4. ファイル名の test のところにマウスカーソルを持っていくと,その部分が緑色になります.この状態でマウスの中ボタンを押すとウィンドウが2つになり,片方には test の内容が表示されます. 注意: 左ボタンを押しても,そこにテキストカーソルが移動するだけです.

今は,ホームディレクトリの中には先週作ったファイルと,いくつかの設定ファイル(最初にアカウントを作った時にできたもの)があります.

ディレクトリの中にはいくつかのディレクトリを入れることができ,その中には,さらにまたディレクトリを入れることができます.外側の大きい方のディレクトリを親ディレクトリ(parent directory),中に入っている方を子ディレクトリ(child directory),またはサブディレクトリ(subdirectory)と呼びます.ホームディレクトリは,home という名前の親ディレクトリの中に,各ユーザのログイン名の名前がついたサブディレクトリが入っています. ユーザごとにディレクトリが分かれているので,同じ名前のファイルを作っても混乱しません.

これを絵に描くとき,例えば directory1 の中 に directory2 と file3 があるとすると,directory1 の下に directory2 と file3 を書いて,線で結びます.さらにdirectory2 の中に入っているファイ ルも同じようにして書いていきます.すると,木を逆さにしたような形になる ので,これをツリー構造(tree structure)と呼びます.根にあたるところ(図では一番上)に一番大きなディレクトリがあり, そこから枝別れするところにディレクトリがあり,そして葉にあたるところには通常ファイルがあります.

3.7 ファイルのパス名

CNS では,すべてのファイルは巨大なツリー構造のどこかに位置しており, ディレクトリをたどっていくことによってアクセスすることができます.この時,どのようにディレクトリをたどるかを書き表したものを,そのファイルのパス名(path name)と呼びます.

パス名には,絶対パス名(absolute path name)相対パス名(relative path name)があります.

絶対パス名

ディレクトリをたどる出発点は,ツリー構造の一番上にあるルートディレクトリ(root directory)です.ルートディレクトリには名前がなく,常に絶対パス名 '/' で示されます.

あるファイルの絶対パス名は,ルートディレクトリから,そのファイルま での道筋のディレクトリ名を '/' で区切って並べたものです.例え ば,上の図でreport1の絶対パス名は

   /home/t95000tk/lecture/report1

となります.

相対パス名

相対パス名はディレクトリをたどる出発点が,ルートディレクトリではな く,現在作業しているディレクトリになります.これをカレントディレクトリ(current directory)またはワー キングディレクトリ(working directory)と呼びます.カレントディレ クトリからツリー構造を下にたどっていくときは,ディレクトリ名を '/' で区切って並べます.例えば,上の図で /home/t95000tk がカレントディレクトリであった時, report1 の相対パス名は

   lecture/report1
となります.また,/home/t95000tk/lecture がカレントディレクトリの時は
   report1
となります.あるファイルを使いたいときは,そのファイルが入っているディレクトリをカレントディレクトリにしてから作業すると,相対パスによる指定がファイル名だけになるので,短くて便利です.

ツリー構造を上に向かってたどるときは,ディレクトリ名ではなく, '..' という記号を使います.例えば,上の図で /home/t95000tk/lecture がカレントディレクトリの時, /home/t95000tk の相対パス名は

   ..
で,/home の相対パス名は
   ../..
になります.また,/home/t95000tk/report3 の相対パス名は
   ../report3
になります.

カレントディレクトリ自身の相対パス名は '.' で表します.

絶対パスと相対パスは,先頭が,'/' かどうかで判断されます. また,先頭にある '~' は,ホームディレクトリを表すことがあります.'~' だけなら自分のホームディレクトリ,'~ユーザ名' ならそのユーザのホームディレクトリを表します.例えば, ~/.signature は自分の署名ファイル, ~t99000xx/.signature は t99000xx というユーザの署名ファイルを 表します.

注意: '~' がホームディレクトリを表すのは省略形なので,ソフトによっては使えない場合もあります.そのような時は絶対パス名 '/home/ユーザ名' を使います.

emacs でファイル名を入力するとき は,ミニバッファに現在のカレントディレクトリ (例えば,ログインした直後はホームディレクトリ '~/') がすでに入力された状態になるので, 続けて相対パス名を入力すると,全体として絶対パス名になります.あるいは, カレントディレクトリの全部または一部を消去して,任意の絶対パス名を入力することもできます.

3.8 練習問題

宝探しゲームをしましょう.emacs で絶対パス名を指定してディレクトリを表示し,そこからツリー構造をたどっていきます.

まず,始めるために /pub/sfc/ipl/1a/exercise/islands というディレクトリに移ってください.

  1. [Files]→[Open Directory ...] C-x d とします.
  2. ミニバッファに Dired (directory): ~/ と表示されます.
  3. ~/ を消去して,代わりに /pub/sfc/ipl/1a/exercise/islands と入力し,Returnキーを押します.
  4. /pub/sfc/ipl/1a/exercise/islandsの内容が表示されます.

ここには3つの島(island-a, island-b, island-cという名のディレクトリ)があり,各々の島には3つの港(port-a, port-b, port-cという名のディレクトリ)があります.そして,どこかの港に宝(treasureという名のファイル)があります.これを見つけて内容を表示するのが目的です.

3.9 コマンド

コマンド(command)は,計算機に対する命令です.一般 にはマウスやメニューによる命令もコマンドですが,ここではキーボードから文字で入力するものを指します.

コマンドの例として,dateという名前のコマンドを実行してみましょう.

  1. プロンプトの後ろに,dateと入力します.
  2. % date
    
  3. Return キーを押します.
  4. シェルが date というコマンドを受け付け,実行し,結果を表示して再びプロンプトを出します.
    % date
    2000年04月17日 (月) 18時05分07秒 JST
    % 
    

これは日本時間ですが,グリニッジ標準時を出すには,date の後に空白と -u を付け加えます.

% date -u
2000年04月17日 (月) 09時05分07秒 GMT
% 

もう一つ,cal コマンドをやってみましょう.

    % cal
         2000年  4月
    日 月 火 水 木 金 土
                       1
     2  3  4  5  6  7  8
     9 10 11 12 13 14 15
    16 17 18 19 20 21 22
    23 24 25 26 27 28 29
    30
    %
    

3.10 ファイルとディレクトリを扱うコマンド

3.11 練習問題

  1. 前にやった宝探しを,コマンドを使ってやってみましょう.
    • まず,始めるために
      % cd /pub/sfc/ipl/1a/exercise/islands
      
      としてください.
    • cd コマンドでサブディレクトリに移動し,ls コマンドでそこに何があるか調べます.
    • 宝が無いと分かったら,親ディレクトリに移動して別のところを探します.相対パスを使えば
      % cd ..
      
      で親ディレクトリに移動します.
    • ファイルがあったら,more コマンドで中を見ます.
    • 迷子になったら,pwd コマンドで現在位置を確認します.
  2. 隣の人と組になり,隣の人が作ったファイルのどれかを自分のホームディレクトリにコピーしなさい.注意: すでにあるファイルと同じ名前のファイルをコピーすると,元からあったほうが消えてしまいます.その場合は別 の名前を指定してコピーしましょう.
  3. 自分のホームディレクトリの中に josho というディレクトリを作り, 今までに授業で作ったファイルをその中に移動させなさい.

3.12 オペレーティングシステム

ファイルを管理したり,コマンドを実行したりする縁の下の力持ちのソフトのことを,オペレーティングシステム(operating system)と呼びます.エディタや電子メールのソフトは,オペレーティングシステム無しでは動くことができません.

オペレーティングシステムにはたくさんの種類があります.ソフトを作るときは通 常,特定のオペレーティングシステムを想定して作るので,他のオペレーティングシステムを使って動かすことはできません.CNS のほとんどのコンピュー タは UNIX というオペレーティングシステムを使用しています.

UNIX は1969年に最初のバージョンができた,長い歴史を持つオペレーティングシステムです.主として大学や企業の技術部門で使われていて,インターネッ ト技術の多くも UNIX を用いて開発されました.また,その信頼性の高さから, インターネットや企業内ネットワークのサーバ用オペレーティングシステムとしても普及しています.

UNIX にもいろいろな種類がありますが,最近注目を集めているのは,オープ ンソース運動によって開発されたバージョンです.オープンソース運動とは, 特定の企業に支配されたソフトではなく,世界中の技術者がボランティアとし て参加し,自分達のためにソフトを作ろうという運動です.このようにしてで きたUNIX として,Linux, FreeBSD があります.特に Linux はパソコン用 OS としても急激に普及しつつあることで話題になっています.

3.13 宿題

  1. /pub/sfc/ipl/1a/exercise/islands 以下のツリー構造を全部調べて紙に書きなさい.
  2. 次のことをすると何が起きるかやって見なさい.
    • ls の引数に存在しないディレクトリ名を指定する.
    • ls -l の引数にディレクトリでは無く,通常ファイルを指定する.
    • rm の引数に存在しないファイル名を指定する.
    • more の引数に通常ファイルでは無く,ディレクトリを指定する.
    • rmdir の引数に空で無いディレクトリを指定する.

3.14 おまけ

emacs でディレクトリの内容を表示するバッファは dired モードと言い,表示だけでなく,コマンドを起動してファイル操作をすることもできます.

dired のマニュアルは次のようにして読むことができます.

  1. [Help]→[Manuals]→[Find Command in Manual] C-h C-f とします.
  2. ミニバッファに Find documentation for command: と出るので,dired と入力し,Returnキーを押します.
  3. インフォの dired の部分が表示されるので,後はSpaceキーを押して順番に読んでいくか,太字の項目をマウスの中ボタンでクリックして必要な部分を読みます.インフォを終了する時は,[Info]→[exit] q とします.

[目次] [前回] [次回]

慶應義塾大学の授業以外での無断利用、複製はご遠慮下さい。
Copyright (c) 2000 慶應義塾大学