ファイル、ディレクトリ、Emacs

					2007年04月24日
情報科学類 コンピュータリテラシ

                                       筑波大学 システム情報工学研究科 
                                       コンピュータサイエンス専攻, 電子・情報工学系
                                       新城 靖
                                       <yas@is.tsukuba.ac.jp>

このページは、次の URL にあります。
http://www.coins.tsukuba.ac.jp/~yas/coins/literacy-2007/2007-04-24
あるいは、次のページから手繰っていくこともできます。
http://www.coins.tsukuba.ac.jp/~yas/
http://www.cs.tsukuba.ac.jp/~yas/

■連絡事項

■復習

2種類の記憶のための部品
メモリ(RAM(Random Access Memory))
実行中のプログラムを保持する。加工するデータを一時的に保持する。 非常に速い。容量は、ハードディスクよりは小さい。値段が高い。 (揮発的(電源を切ると消えてしまう)。)
ハード・ディスク (HD(Hard Disk), HDD(Hard Disk Drive))
プログラムやデータをデータを保持する。 容量は、メモリより大きい。値段が安い。 (永続的である(電源を切っても残っている)。)

ファイルとディレクトリは、ハード・ディスクを便利にしたもの。 「永続性」という性質が大事。

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

ファイル(file)は、コンピュータの中で「情報を保存する」ための仕組み。 ファイルは、ビット列を(バイト単位で)保存する。

記憶媒体

単純な記憶媒体の問題

ファイルの大事な役目は、「情報に名前を付ける」という機能。

ディレクトリ(directory)は、ファイルに名前を付ける働きを持っている仕掛 けを提供するもの。フォルダ(folder)と呼ばれることもある。

ディレクトリは、ファイルの名前の一覧表として現れる。

ファイルの性質

■ファイルの基本的な操作

余談:物を説明するのに、どんな操作ができるかで説明する方法は、オブジェ クト指向、抽象データ型といった用語で語られる。

◆ファイル名

ファイルには、名前(ファイル名(file name))がついている。 ファイルを操作するには、ファイル名を指定する。

Unix では、ファイル名には、/ 以外の文字が使える。 次の文字は、問題が起きない。 漢字をファイル名に使うことは、符号化の方法の違いで問題が生じる ことがある。

Unixでは、ファイル名としてアルファベットの大文字と小文字の両方使え、か つ、両者は区別される。普通は小文字を使う。Makefile や README のように、 特に注目して欲しいファイルの名前に大文字を使う。

MacOSX では、大文字小文字の違いは保存されるが、 区別されないことがある。 abcという名前は、AbcでもABCでも操作できることがある。

MacOSX の Finder は、ディレクトリの名前を加工して表示する。

◆ファイルの名前を調べる(lsコマンド)

ls コマンドを実行すると、存在するファイルの一覧を表示する。

% ls [←]
Desktop         Movies          Public          backupfiles2006
Documents       Music           Sites           public_html
Library         Pictures        WinFiles
% []

◆内容によるファイルの分類

テキスト・ファイル(text file)
文字データだけが含まれているファイル
  • バイナリ・ファイル(binary file)
    その他、機械語、画像、音声
  • ◆テキスト・ファイルの作成

    echoコマンドで、1行のテキストファイルを作成できる。
    % echo This is a pen. > file1 [←]
    % []
    
    > は、シェルの入出力の切り替え(リダイレクション)の 指定で、詳しくは後日。

    cat コマンドを使うと、数行のテキスト・ファイルを作ることができる。

    % cat > file2 [←]
    GNU is Not Unix!
    Try Hurd.
    ^D
    % []
    
    ^D は、キーボードからファイルの終わりの印(EOF, End of File)を意味する。^D (Control D)と表記することもある。この 例では、^D が打たれるまでキーボードから打ち込まれた文字を テキスト・ファイル file2 にコピーしている。

    本格的にテキスト・ファイルを作成するには、Emacs などの テキストエディタを使う。

    ◆ファイルのコピー

    指定したファイルの内容と全く同じ内容を持つファイルを作ること

    ファイルのコピーの目的

    ファイルをコピーするには cp (copy) コマンドを使う。

    % cp file1 file2 [←]
    
    この結果、ファイル file1 が ファイル file2にコピーされる。 コピー先のファイルfile2が存在しない時は新しくファイルfile2が作られる。

    コピー先のファイルが既に存在していた場合、その内容は上書き(overwrite),うわがき)される。 (古い内容を消して新しい内容で埋める)。

    ◆ファイルを消す

    意義

    ファイルを消すには、rm (remove) コマンドを用いる。

    % rm file1 [←]
    
    このファイル file1 が削除される。

    rm コマンドで消してしまったファイルは、一般的には2度と戻らない。 消す前に、本当に不要かどうかを確認すること。

    ◆ファイルの名前を変更

    ファイル名を変更するには mv (move) コマンドを使う。

    % mv oldname newname [←]
    
    この結果、ファイルoldfileのファイル名をnewnameに変更される。

    ここで、newname のファイルが存在した場合、元の newname は消されてしまう。

    ◆ファイルの操作にともなうエラー

    No such file or directory
    そういう名前のファイルが見つからなかった。ファイル名が間違っていな いか確かめる。
    Permission denied
    ファイル名は合っていますが、アクセス権がない。 モードを ls -l で調べる。
    No space left on device
    ディスクに空領域がない。 まず、不要なファイルを消す。
    Disc quota exceeded
    ディスクに空領域があるが、 個人に割り当てられた領域を使い果たした。 まず、不要なファイルを消す。

    ■ファイルとディレクトリの木構造とパス名

    ◆木構造

    木構造(tree structure)というのは、コンピュータ・サイエン ス(情報科学類で学ぶ学問)でよく使われる用語。 を階層構造(hierarchical structure)ともいう。

    木構造の例を、大学の組織を使って説明する(図1)。

    木構造という名前は、本物の木が、一度枝分かれした後は決して交わらないこ とに似ていることによる。ある節から別の節までの道が2通り以上あるは、グ ラフ構造と呼ばれる。

    筑波大学、社会・国際学群・・・情報学群、情報科学類・・・

    図1 大学組織に見られる木構造

    筑波大学、社会・国際学群・・・情報学群、情報科学類・・・(領域的な見方)

    図2 大学組織に見られる木構造(領域的な見方)

    ◆字下げによる木の表現

    木構造を字下げで表すことがある。

    筑波大学

    ◆区切り文字入り表記

    「情報科学類」という節を、次のように表記する。

    筑波大学情報学群情報科学類

    コンピュータの中で、文字列(文字の並び)で木構造上の位置を表現する時に は、節が分かりやすくために、はっきりと区切りを入れて表現することがよく 行われる。

    筑波大学.情報学群.情報科学類
    筑波大学/情報学群/情報科学類
    情報科学類.情報学群.筑波大学

    区切り文字としては、「.」(点)、「/」(スラッシュ)、「\」(バック スラッシュ)、「¥」(円記号)などがよく使われる。単語を並べる時に、木 の根に近いほうから書く流儀と遠い方から書く流儀がある。

    ◆木の例

    コンピュータでは、次のような場所で木構造が使われている。

    コンピュータ以外では、次のような場所で木構造が使われている。

    ◆くわしくは

    総合科目「IT革命を解き明かす」/木構造(2006年10月23日) http://www.softlab.cs.tsukuba.ac.jp/~yas/gen/it-2006-10-23/

    ◆ディレクトリの木構造

    Unix(MacOSX, Linux含む)やMS Windows では、 ファイルの名前を、基本的には 木構造(tree structure,きこうぞう) という考え方で整理する。 木構造は、 階層構造(hieratical structure) とも呼ばれる。

    根が上にある本物の木

    図? 本物の木

    根が上にあるファイルUNIXの木

    図? ファイルとディレクトリの木

    ◆ルート・ディレクトリ(the root directory)

    本物の木に根にあたるディレクトリ。

    ルート・ディレクトリの名前は、/ (スラッシュ 1 文字)。

    ◆パス名

    Unix では、ファイルやディレクトリの名前を付ける時に、木構造で考えてそ のファイルやディレクトリにたどり着くための道順を使う。 このような名前をパス名(path name) という。 パス(path)とは「道」の意味。pass ではない。

    ルートディレクトリから出発する方法で表記するパス名を、 絶対パス名(absolute path name)

    絶対パス名は、ルートディレクトリを表す「/」の後に、 たどった枝の名前を並べ、間に区切りとして「/」をはさむ。

    例:/usr/bin/ls

    1. ルート・ディレクトリから出発する
    2. usr という枝に進む
    3. bin という枝に進む
    4. ls という枝に進む

    ◆カレントワーキングディレクトリ

    ルート・ディレクトリを起点にする方法(絶対パス名)だけでは、作業しにくい。 「現在作業中のディレクトリ」 「カレント・ワーキング・ディレクトリ(the current working directory)」 を起点として、ファイル名を扱う。

    カレント・ワーキング・ディレクトリを表示するには、pwd (print working directory) コマンドを使う。

    % pwd [←]
    /USA/California
    % []
    
    表示されている「/USA/California」が絶対パス名で表示されたカレント・ワー キング・ディレクトリの名前。

    カレント・ワーキング・ディレクトリを変更するにはcd(change directory) コマ ンドを使う。

    % cd dirname [←]
    
    「ディレクトリdirnameにいく」とも言う。

    % pwd [←]
    /USA/California
    % cd /USA/Florida [←]
    % pwd [←]
    /USA/Florida
    % cd /USA/California/San-Francisco [←]
    % pwd [←]
    /USA/California/San-Francisco
    % []
    

    カレントワーキングディレクトリは、名前「.」で参照できる。

    lsコマンドは引数にディレクトリを指定すると、そのディレクトリの中にある ファイルの一覧を表示するが、引数を与えないと、「.」が与えられたものとし て働く。

    % ls [←]
    Los-Angeles  San-Francisco
    % pwd [←]
    /USA/California
    % ls /USA/California [←]
    Los-Angeles  San-Francisco
    % ls . [←]
    Los-Angeles  San-Francisco
    % []
    

    カレントワーキングディレクトリを起点としたパス名を 相対パス名(relative path name)という。 「/USA/California」の時、 「San-Francisco」は「/USA/California/San-Francisco」、 「San-Francisco/China-Town」は「/USA/California/San-Francisco/China-Town」の意味となります。

    ◆ディレクトリの親子関係

    ディレクトリの木構造の中で、
    親ディレクトリ(parent directory)
    あるディレクトリの ルート・ディレクトリからそのディレクトリへの道順で1つだけ 根に近いディレクトリ。 1個上のディレクトリともいう。 「..」で参照可能。
    子ディレクトリ(child directory), サブディレクトリ(subdirectory)
    あるディレクトリの、1つ根から遠いディレクトリ
    隣のディレクトリ、兄弟のディレクトリ
    共通の親ディレクトリを持つディレクトリ

    . で始る名前のファイルやディレクトリは、 普通 ls コマンドは、表示しない。 表示させるには、lsコマンドに-aオプションをつける。

    ◆ホーム・ディレクトリ(home directory)

    個人所有のファイルを保存する時に起点となるディレクトリ。

    cd コマンドに引数を与えないと、ホーム・ディレクトリにもどる。

    多くのシェル(csh,tcsh,bash,zsh) やEmacsなどでは、 ホームディレクトリを~で指定できる (指定できないプログラムもある。)

    は、ASCIIの形。 JIS では、となることがある。

    他人のホーム・ディレクトリは、「~ユーザ名」で指定できるプログラムがある。 (指定できないもプログラムもある。)

    「~xxx」と「~/xxx」のように 「~」直後に「/」の有無で意味が違う。

    / がない (~xxx)
    他のユーザのホーム・ディレクトリ。 xxx はユーザ名として解釈される。
    / がある ~/xxx
    自分のホーム・ディレクトリ以下のファイル(またはディレクトリ)。 xxx はファイル名、または、ディレクトリ名として解釈される。

    ◆ls -aコマンドによる「.」から始まるファイルの表示

    ls コマンドは、標準では、カレント・ワーキング・ディレクトリを意味する 「.」や親ディレクトリを意味する「..」を含めて、「.」から始まるファイル 名を表示しない。-a オプションを付けると、「.」から始まるファイル名も表 示する。ホーム・ディレクトリには、「.」で始まるファイルがある。
    % ls [←]
    Desktop         Library         Music           Public          WinFiles
    Documents       Movies          Pictures        Sites           public_html
    % ls -a [←]
    .                       .cshrc~                 Movies
    ..                      .emacs                  Music
    .CFUserTextEncoding     .emacs.d                Pictures
    .DS_Store               .login                  Public
    .Spotlight-V100         .profile                Sites
    .Xauthority             .ssh                    WinFiles
    .backupfiles2006        Desktop                 public_html
    .bashrc                 Documents
    .cshrc                  Library
    % []
    

    ◆catコマンドによるテキスト・ファイルの表示

    cat コマンドを使うと、テキスト・ファイルを画面に表示することができる。
    % cat /etc/csh.cshrc  [←]
    # System-wide .cshrc file for csh(1).
    
    if ($?prompt) then
            set promptchars = "%#"
            if ($?tcsh) then
                    set prompt = "[%m:%c3] %n%# "
            else
                    set prompt = "[%m:%c3] `id -nu`%# "
            endif
    endif
    % []
    

    ◆headコマンドによるテキスト・ファイルの表示

    head コマンドを使うと、テキスト・ファイルの先頭 10 行を画面に表示するこ とができる。
    % head /etc/services  [←]
    #
    # Network services, Internet style
    #
    # Note that it is presently the policy of IANA to assign a single well-known
    # port number for both TCP and UDP; hence, most entries here have two entries
    # even if the protocol doesn't support UDP operations.
    #
    # The latest IANA port assignments can be gotten from
    #
    #       http://www.iana.org/assignments/port-numbers
    % []
    

    ◆ページャによるテキスト・ファイルの表示

    長いファイルを端末の画面に表示する時、cat コマンドでは流れてしまう。1 ページごとに止まって表示してくれると都合がよい。そのようなコマンドをペー ジャ(pager)という。man コマンドでも自動的にページャが実行される。 The Unix Super Text 15.11 参照

    よく使われるページャとしては、次のようなものがある。

    more
    初代ページャ。 長いファイルを、1ページごとに止まって「more (もっと読みますか?)」 と尋ねる。
    less
    逆戻りできる 手引き 2.2.10 参照
    lv
    漢字コードとして utf8 などもきちんと扱える。 使い方は、less コマンドとだいたい同じ。 手引き 2.2.10 参照
    pg
    System V 系 Unix のページャ

    標準的なページャの操作方法。
    キー 説明
    スペース 次のページ
    f 1ページ進める(forward)
    b 1ページもどる(back)
    q 終了
    j 1行進める
    k 1行もどす
    g 先頭にもどる
    G 末尾にもどる
    /str 文字列 str をファイルの末尾に向かって探す
    ?str 文字列 str をファイルの先頭に向かって探す
    n 直前の検索をファイルの末尾に向かって繰り返す(next)
    N 直前の検索をファイルの先頭に向かって繰り返す(next)

    ◆cp file dir

    cp コマンドには、コピー先にディレクトリを指定することができる。
    % cp file1 file2 dir [←]
    
    この場合、dir 以下に、(一番葉の部分だけ)同じ名前のファイルが作られる。 次の操作と概ね同じ動作をする。
    % cp file1 dir/file1  [←]
    % cp file2 dir/file2 [←]
    

    ディレクトリを指定する時には、カレント・ワーキング・ディレクトリ 「.」 や ホーム・ディレクトリ「〜」も使える。

    % cp /etc/group . [←]
    % cp /etc/group ~ [←]
    

    ■ディレクトリの操作

    作成、内容の表示、名前の変更、削除がある。

    ◆ディレクトリの作成

    mkdir (make directoryr)コマンドを使う。
    % mkdir dirname [←] [←]
    
    この結果、dirnameという名前のディレクトリが作らる。

    ◆ディレクトリの内容の表示

    ディレクトリに含まれるファイルの名前や子供のディレクトリの名前は、 ls コマンドで表示できる。
    % ls dirname [←]
    
    この結果、ディレクトリdirnameの中(下)にあるファイルと ディレクトリの名前が表示される。

    ◆ディレクトリ名の変更

    mvコマンドは、ディレクトリの名前を変更するために使える。

    % mkdir dir1 [←]
    % ls  [←]
    dir1
    % mv dir1 dir2 [←]
    % ls  [←]
    dir2
    % []
    

    ◆ディレクトリの削除

    ディレクトリを削除するには、 rmdir (remove directory) コマンドを使う。
    % rmdir dirname [←] [←]
    
    この結果、 ディレクトリdirnameが削除される。

    空でないディレクトリは、rmdir()コマンドでは 「Directory not empty,directorynotempty」 というエラー・メッセージが表示され削除できない。 この場合は、子供のディレクトリやファイル を削除してからもう一度削除する。

    ■ファイルとディレクトリの属性

    Unixのファイルとディレクトリは、内容(ビット列を保存する)の他に、 所有者、更新された日付などの 属性attributes ) を持つ。

    ls -l コマンドを実行するとカレントディレクトリのファイルや ディレクトリの属性が表示される。

    % ls -l [←]
    total 27224
    drwx------    9 yas  prof       306 Apr 27 20:12 Desktop
    drwx------   14 yas  prof       476 Apr 21 00:14 Documents
    drwx------   30 yas  prof      1020 Apr 25 15:30 Library
    -rw-------    1 yas  prof       146 Apr 11 15:21 dead.letter
    drwxr-xr-x   54 yas  prof      1836 Apr 13 13:36 public_html
    % []
    
    行単位に次のようなファイルやディレクトリの属性が表示さる。

    ◆所有者(owner)

    ファイルが誰の所有物かを示す。 コンピュータのなかでは人はユーザ名で表されるので、 所有者もユーザ名(上の例ではyas)で表される。

    ◆グループ名

    Unixでは複数のユーザが属する グループ(group)を設定できる。 ファイルは必ずどれか1つのグループに属する。

    ◆大きさ

    ファイルの大きさ(size)は、ファイルの内容をバイト数で数えた値(bit ではな く byte)。

    ◆時刻

    Unixのファイルには、次の3種類の時刻が記録されている
    最終アクセス時刻 (the last access time)
    ファイルの「内容」が最後にアクセス(読み込み)された時刻。 ls -lu で表示される。
    最終更新時刻 (the modification time)
    ファイルの「内容」が最後に変更(書き込み)された時刻。 ls -l で表示される「時刻」で、 単に「ファイルの時刻」といった場合にはこの時刻を意味する。
    最終変更時刻 (the status change time)
    ファイルの「属性」が最後に変更された時刻。 ls -lcで表示される「時刻」。
    他の時刻も属性の1つなので、「最終更新時刻」を変更すると、 「最終変更時刻」も変更した時刻も変わる。

    ◆モード(mode)

    ファイルの型とファイルへのアクセス(読み書き)の可否を決めるための属性

    ファイルの型

    モードの一番左1文字は、ファイルの型(type)を表わす。
    -
    ファイル
    d
    ディレクトリ

    許可されたアクセス方法

    モードからファイルの型を除いた部分はアクセスの可否を決めるための 情報。9文字ある。左から3文字の固まりが3組ある。

    各3文字はアクセス毎にその許可・拒否を表します。

    r	読込み可
    w	書込み可
    x	実行可(ディレクトリの場合は探索可)
    
    モードで該当する部分が「-」の場合は、その種類のアクセスが許可されてない ことを意味する。

    「読込み可」とは、その内容を参照できること意味する。たとえば、cp コマン ドでコピーできる。読出し可能なディレクトリなら、ls コマンドでそのディレ クトリ中のファイル名の一覧を表示できる。

    「書込み可」とは、その内容を変更することができることを意味する。たとえ ば、テキスト・ファイルなら、エディタで修正したものを書き込むことができ る。書込み可能なディレクトリなら、mv コマンドでそのディレクトリのなかに あるファイル名前を変更できる。

    「実行可」というのは、ファイルの内容がプログラムの場合は、 そのプログラムを実行することができる。

    ディレクトリに対する 「検索可」というのは、その下にあるファイルやディレクトリを たどっていけるという意味である。

    ディレクトリが「読込み可」でも、「検索可」でないと、 ディレクトリに「読込み可」のファイルがあっても、 ディレクトリに入ってファイルを読むことができない。 逆に、「検索可」でも、ディレクトリが「読込み可」でないと、 ディレクトリにあるファイル名やディレクトリ名を表示させることが できない。

    そのディレクトリにあるファイル名を知っていて、そのファイルが「読み込み 可」なら読むことができます。

    アクセスするユーザによって異なったアクセスの許可・拒否がしたいことがあ る。そのために、rwxの指定は、ファイルの所有者、ファイルの属すグループ、 それ以外の人用に3セット用意されている。

    例:モードが「rw-r--r--」のファイル

    まとめると、「誰でも読めるが所有者しか書けない」。

    ◆ls -ld

    ls コマンドは、引数としてファイル名やディレクトリ名を指定することができ る。
    % ls -l /etc/passwd [←]
    -rw-r--r--   1 root  wheel  1932 Aug 22  2005 /etc/passwd
    % []
    
    ls コマンドにディレクトリ名を与えると、ディレクトリそのものではなく、そ の内容が表示される。
    % ls -l ~compsys1 [←]
    total 40
    drwx------    3 compsys1  lecture  102 Feb 24  2006 Desktop
    drwx------    3 compsys1  lecture  102 Feb 24  2006 Documents
    drwx------   21 compsys1  lecture  714 May  9  2006 Library
    drwx------    3 compsys1  lecture  102 Feb 24  2006 Movies
    drwx------    3 compsys1  lecture  102 Feb 24  2006 Music
    drwx------    4 compsys1  lecture  136 Feb 24  2006 Pictures
    drwxr-xr-x    4 compsys1  lecture  136 Feb 24  2006 Public
    drwxr-xr-x   11 compsys1  lecture  374 Feb  9 18:19 public_html
    % []
    
    ディレクトリ自身を表示したい時には、ls -l -d (ls -ld) とする。
    % ls -ld ~compsys1 [←]
    drwxr-xr-x   25 compsys1  lecture  850 Feb  9 18:18 /home1/lecture/compsys1
    % []
    

    ■マニュアルの読み方

    The Unix Super Text 8章 参照手引き 2.2節 参照。 手引き2.2節。14ページ参照。
    % man man [←]
    % man ls [←]
    % man mkdir [←]
    % man -k keyword [←]
    

    ■ファイルとディレクトリの操作のまとめ

    ls	f1 f2 f3	ファイルの名前の一覧の表示
    ls	dir		ディレクトリの内容の表示
    ls			カレント・ワーキング・ディレクトリの内容の表示
    ls -d	d1 d2 d3	ディレクトリの名前の一覧の表示
    ls -a	dir		ディレクトリの内容の表示(.で始まる名前も表示)
    ls -l	f1 f2 f3	ファイルの属性の表示
    ls -ld	d1    		ls -l -d の組み合わせ
    pwd			カレント・ワーキング・ディレクトリの表示
    cd	dir		カレント・ワーキング・ディレクトリの変更
    cd			ホーム・ディレクトリへ移動
    cat	f1		ファイルの内容の表示
    cat	> f1		ファイルの作成
    head	f1		ファイルの内容の表示(最初の10行)
    cp	f1 f2		ファイルのコピー
    cp	f1 f2 f3 dir	ファイルを指定されたディレクトリへコピー
    cp	f1 f2 f3 .	ファイルをカレント・ワーキング・ディレクトリへコピー
    rm	f1 f2 f3	ファイルの削除
    mv	old new		ファイルの名前を変える
    mv	f1 f2 f3 dir	ファイルの名前を変える(dir以下への移動)
    mkdir	dir		ディレクトリの作成
    mkdir -p d1/d2/d3	ディレクトリの作成(親も自動的に作成)
    rmdir	dir		ディレクトリの削除(空のディレクトリの時)
    rm -r	dir		ディレクトリの削除(ディレクトリの内容も削除)
    
    f1, f2, f3 はファイル名、dir, d1, d2, ... は、ディレクトリ名
    mode は、モードを表わす数字や記号。
    

    ■Emacs

    手引き3章。Unix Super Text 12章。

    GNU Emacs (ぐにゅー いーまっくす)。 Free Software Foundation開発。 Richard Stallman 原作。

    3種類ある。

    MacOSX でウインドウを開くもの(Aqua版)。
    実行(起動)には、Dock アイコンをシングルクリックでもよい。 シェルから open /Applications/Emacs.app でもよい。
    端末(iTerm, xterm, kterm)の中で動く。
    実行には、emacs -nw と打つ。-nw は、no window の意味。
    X Window System の元で動作する。
    実行には、まず、X Window System (X11) を実行する。 さらに、X Window System に対応した Emacs を( -nw なしで)実行する。 環境変数 DISPLAY で設定された場所に画面が表示される。 (X11 未対応のものは、-nw を付けなくても端末の中でそのまま動く。)
    環境変数については、後述。

    ◆Emacsと文字コード

    端末で動く時の注意。 漢字コード(漢字の符号化の方法)を合わせる必要がある。

    漢字コード モードラインの表示 Emacsの設定
    EUC E euc-jp-unix
    JIS J iso-2022-jp-unix, junet
    Shift_JIS S shift_jis-unix
    UTF-8 u utf-8-unix
    最後の-unix は、改行文字(行末)の ASCII 制御コード。 主に次の3種類がある。
    emacs記号 制御コード(16進数) 説明 Controlキー C言語表記
    -unix 0a nl (new line) Control+j \n
    -mac 0d cr (carriage return) Control+m \r
    -dos 0d 0a (2文字) cr nl Control+m Control+j \r\n
    「\」と「¥」は同じ。The Unix Super Text の表 12-2 は、古い。

    dos (Disk Operating System) は、MS-DOS (Microsoft DOS) の意味。 Microsoft Windows の前進。

    Emacs では、主に次の3つを変更する。

    terminal-coding-system
    Emacs から端末への出力(端末の受信側) M-x set-terminal-coding-system で変更できる。
    keyboard-coding-system
    キーボードから Emacs への入力(端末の送信) M-x set-keyboard-coding-system で変更できる。
    buffer-file-coding-system
    Emacs からファイルへの出力 M-x set-buffer-file-coding-system で変更できる。

    ◆iTerm で、文字コードを EUC に設定する

    iTerm の中で Emacs を使う時には、 iTerm で、文字コードを EUC に設定し、 Emacs の terminal-coding-system, keyboard-coding-system をeuc-jp-unix に設定するとよい。(または、他の漢字コードで統一するとよい。)

    ■基本概念

    バッファ
    Emacs で、メモリの代わり。 保存しないと失われる。
    ウインドウ
    バッファ(の一部)を画面に表示したもの。 1つのバッファを複数のウインドウに表示することもできる。
    モードライン
    下から2行目。反転している。文字コード、 バッファの名前、バッファの変更状態などが表示される。
    キーバインディング
    キー入力と、それに応じた関数(専門用語)の対応。 キー入力と操作の対応関係。
    エコー領域
    一番下の行。
    ミニバッファ
    ファイル名を入力する場合などに使う特殊なバッファ。 エコー領域に表示される。

    ◆関数

    関数とは、プログラムを作成する時の単位。 プログラムは、プログラミング言語で記述されている。 Emacs は、C 言語と Lisp というプログラミング言語で記述されている。 Emacs のキーは、Lisp で記述された関数と対応してる。

    ◆バッファの変更状態

    表示 意味
    ** 変更された(未保存)
    -- 変更なし(保存済み)
    %% 書き込み禁止
    %* 書き込み禁止バッファが変更された

    ◆キー表記

    The Unix Super Text 12章 参照, 手引き 3章 参照

    C-
    Control キーを押しながら押す
    M-
    Meta キー押しながら押す

    Meta キーがない時には、Esc キーを使う。 説明の表記は、M- のまま。

    ◆C-g

    困った時には、C-g を複数回連打する。

    ◆undo

    undo (操作を元に戻す)という考え方がある。C-x u。

    ◆カーソル移動

    キーを打った時に、文字が入る場所をカーソルという。

    カーソル移動には、矢印キー(←、→、↑、↓)も使えるが、 手がホームポジションから離れてしまうのでよくない。 Control キーを使う方法を使う。 The Unix Super Text 12.3.3項 参照, 手引き 3.2.2項 参照

    C-b	backward-char
    C-f	forward-char
    C-p	previous-line
    C-n	next-line
    

    ◆削除

    The Unix Super Text 12.4.4項 参照, 手引き 3.2.3項 参照。  

    「削除リング」という考え方がある。

    カーソルの左側を削除する方法とカーソルの右側(カーソルのある場所)を 削除する方法がある。

    大量の削除には、カット&ペーストのカットだけを行うとよい。

    ◆カット&ペースト、コピー&ペースト

    The Unix Super Text 12.4.3項 参照, The Unix Super Text 12.4.5項 参照 手引き 3.2.4項 参照

    マーク、ポイント(カーソルのある位置)、リージョン。

    ◆検索(サーチ)

    The Unix Super Text 12.4.6項 参照, 手引き 3.2.5項 参照

    Emacs の得意技。インクリメンタル・サーチ。 C-s, C-r の後、RET で通常の検索になる。

    ◆置換(replace)

    The Unix Super Text 12.4.7項 参照, 手引き 3.2.5項 参照。 M-x query-replace (M-%, Esc %) が便利。

    M-% と打つと、ミニバッファで次のように聞かれる。

    Query replace:
    置き換え前の文字列を打ち込みリターン
    Query replace aaa with:
    置き換え後の文字列を打ち込みリターン
    y (または SPC) で置き換え、n で次の候補に移動、! で、以降すべて置換、 q で終了

    ◆補完

    The Unix Super Text 12.5.1項 参照, 手引き 3.2.6項 参照。 なるべく手で(キーボードで)打たないための方法 Emacs では、ファイル名の入力や関数名の入力、 バッファ名の入力などで補完が使える。

    ◆ファイルの読み書き

    The Unix Super Text 表12-6 参照, 手引き 3.2.6項 参照

    C-x C-r は、読み込み専用でファイルを表示する。

    C-x i は、他のファイルをサーソルの位置に全て読み込む。

    ◆Emacsの詳しい使い方

    標準では、日本語のチュートリアルが実行される。 英語、その他の言語のチュートリアルを実行するには、 M-x help (Esc ?)の前に、C-u を打つ。

    C-u M-x Help t [←] 言語

    次のような言語が選択できる。

    ASCII Brazilian Portuguese Bulgarian Chinese-BIG5 Chinese-GB Czech Dutch English French German Italian Japanese Korean Polish Romanian Russian Slovak Slovenian Spanish Swedish Thai

    フォントの問題でうまくいかないかもしれない。

    M-x help m
    機能の一覧(modeの説明)
    M-x help b
    キーバインディング(bindingの説明)
    M-x help a
    apropos。関数の検索。
    apropos というコマンドは、シェルから打っても使える。 man -k と同じ。

    ■実習

    実習時間中には、以下の課題をできるだけ多く行いなさい。全部を行う必要はない。

    ★練習問題(30) lsによるホーム・ディレクトリの観察

    ls コマンドで、自分のホーム・ディレクトリにどのようなファイルやディレク トリがあるかを調べなさい。また、-l オプション、-a オプション、-d オプショ ンの働きを確認しなさい。
    % cd ~ [←]
    % ls [←]
    % ls -a [←]
    % ls -l [←]
    % ls -la [←]
    

    ★練習問題(31) Finderによるホーム・ディレクトリの観察

    Finder でホーム・ディレクトリを開きなさい。そして、ls の結果と比較しな さい。
    1. Dock で Finder をクリック
    2. 「移動」メニューから「ホーム」を選ぶ。

    ★練習問題(32) lsによるディレクトリの観察

    次のディレクトリの内容を cd コマンドと ls コマンドを使って観察しなさい。
    % cd ディレクトリ名 [←]
    % ls [←]
    % ls -l [←]
    

    ★練習問題(33) ファイル操作とバイト数

    ★練習問題(34) lvコマンド

    lv コマンドで次のような長いファイルを表示してみなさい。 そして、次の機能を確認しなさい。 手引き 2.2.10 参照

    ★練習問題(35) manの練習

    man コマンドで、次のコマンドのマニュアルを表示しなさい。

    ★練習問題(36) emacsの練習

    手引き 3.1節-3.3節, The nix Super Text 12章, 本Webページを参照して、 それに記述されている機能を確認しなさい。

    ★練習問題(37) emacsチュートリアル

    Emacs のチュートリアルを行いなさい。 加点課題を提出する時には、 開始時刻と終了時刻が必要になるので、必ずメモしなさい。

    注意:F1 キーは、iTerm 等の端末の中で動作する Emacs では使えない。

    ★練習問題(38) emacsチュートリアル(英語)

    英語版の Emacs のチュートリアルを行いなさい。キー・バインディングの意 味が意味がよくわかり、すぐに覚えられる。

    加点課題を提出する時には、開始時刻と終了時刻が必要になるので、必ずメモ しなさい。

    ★練習問題(39) Auqa版のEmacsの実行

    MacOSX でウインドウを開くEmacs(Aqua版)を実行しなさい。DockのEmacs のア イコンをシングルクリック、または、または、「アプリケーション」内の Emacs.app をダブルクリックする。 シェルから open /Applications/Emacs.app でもよい。

    ★練習問題(40) iTerm内でEmacsの実行

    iTerm の内部で Emacs を実行しなさい。 iTerm を実行し、シェルのプロンプトが表示されたら、 次のように打つ。
    % emacs [←]
    
    「%」はプロンプトなので打たなくてもよい。

    ★練習問題(41) X Window (X11)でEmacsの実行

    X Window System (X11) で Emacs を実行しなさい。

    まず、X11 を実行する。Dock のアイコンをシングルクリック、 または、「ユーティリティの」の「X11.app」をダブルクリックする。

    端末が一個開かれる。この中で次のように打つ。

    % emacs [←]
    

    次の方法と比較しなさい。

    % emacs -nw [←]
    

    ★練習問題(42) iTerm の機能

    iTerm には次のような機能がある。そのことを確認しなさい。 ただし、スクロールバックの機能は、次の場合、はうまく働かない。 この場合は、ページャやテキスト・エディタの機能を利用して見えなくなって しまった部分を表示する。

    ★練習問題(43) 漢字コードの変換

    漢字のテキストを Emacs で作成(C-x C-f)しなさい。そして、次の機能を使っ て、保存されているテキストの漢字コードをいくつか変更して保存しなさい。
    M-x set-buffer-file-coding-system [←]
    Emacsと文字コードで説明したように、 文字コードとして、euc-jp-unix, iso-2022-jp-unix, shift_jis-unix を 切り替えて、保存(C-x C-s)しなさい。

    作成したテキスト・ファイルを、Web ブラウザで表示しなさい。Web ブラウザ では、文字のエンコーディングを変えて、その通りになっているかを調べなさ い。

    ★練習問題(44) MacOSX テキストエディット

    MacOSX に付属のテキストエディタ「テキストエディット.app(TextEdit.app)」 を使ってみなさい。

    「テキストエディット.app」は、プログラムは、「アプリケーション」の中に ある。アプリケーションは、Finder で Shift+Command+A と打つか、「移動」 メニューから「アプリケーション」を選ぶ。次のように端末からコマンドを打っ てもよい。

    % open /Applications/TextEdit.ap [←]
    

    Emacs で保存したファイルを「テキストエディット.app」で開くとどうなるか 調べなさい。逆に、「テキストエディット.app」で保存したファイルをEmacs で開くとどうなるか調べなさい。

    どの文字コードなら「テキストエディット.app」で開けるかしらべなさい。ま た、改行コードがどうなっているかを調べなさい。

    ■課題

    次のファイルを次のいずれかの方法で自分のホーム・ディレクトリ、または、 その下の作成したディレクトリにコピーしなさい。 そして、そのファイルの指示に従い、内容を埋めなさい。エディタとしては、 今日の課題では、Emacs を使いなさい。

    作成したファイルを、 レポート提出ページから提出しなさい。


    Last updated: 2007/05/10 18:10:22
    Yasushi Shinjo / <yas@is.tsukuba.ac.jp>