ファイル、ディレクトリ、ファイル名置換、木構造、属性、Emacs

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

                                       筑波大学 システム情報系 情報工学域
                                       新城 靖
                                       <yas@cs.tsukuba.ac.jp>

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

■連絡事項

■復習

■文字の符号化

◆エンコーディング

資料は前回配布済み。

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

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

記憶媒体

単純な記憶媒体の問題

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

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

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

ファイルの性質

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

次のコマンドを使えるようにする。

◆ファイル名

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

Unix では、ファイル名として、「/」 は特別な意味があり、ディレク トリの区切りを意味する。普通のファイル名は、「/」 以外の次のよ うな文字を使うと安全である(問題が起きない)。 漢字をファイル名に使うことは、符号化の方法の違いで問題が生じる ことがある。

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

◆MacOSXでのファイル名の特殊事情

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

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

ファイル名「~」は、ホームディレクトリを表す特殊な名前。 シェルや Emacs で使える。ホームディレクトリとは、 個人個人のファイルを保存するための起点となるディレクトリ。

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

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

$ ls [←]
Desktop         Maildir         coins           public_html     tmp
Documents       WinFiles        dot             secure_html     u
Downloads       backupfiles2010 etc             sie
Library         bin             lib             syspro
$ []

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

テキスト・ファイル(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
ディスクに空領域があるが、 個人に割り当てられた領域を使い果たした。 まず、不要なファイルを消す。

■ファイル名置換

ファイル名の一部だけをキーボードから打ち込み、 残りの部分をシェルに探させる。

補完(completion)では、人間が目で確認するが、置き換えでは人間が確認する ことはない(見つからなければエラーになる)。

例:/usr/bin にある at で始まるファイルをすべて ls コマンドに引き渡したい。1つひとつ打つと疲れる。

$ ls /usr/bin/at /usr/bin/atos /usr/bin/atq /usr/bin/atrm /usr/bin/atsutil [←]
/usr/bin/at             /usr/bin/atq            /usr/bin/atsutil
/usr/bin/atos           /usr/bin/atrm
$ []
次のように、「*」を使うと楽に打てる。
$ ls /usr/bin/at* [←]
/usr/bin/at             /usr/bin/atq            /usr/bin/atsutil
/usr/bin/atos           /usr/bin/atrm
$ []
この例では、シェルが「/usr/bin/at*」を5つのファイル名に置き換え ている。ls が行っているのではない。ls以外のどんなプログラ ムでも有効である。
$ echo /usr/bin/at* [←]
/usr/bin/at /usr/bin/atos /usr/bin/atq /usr/bin/atrm /usr/bin/atsutil
$ file /usr/bin/at* [←]
/usr/bin/at:      setuid Mach-O fat file with 3 architectures
/usr/bin/atos:    Mach-O fat file with 2 architectures
/usr/bin/atq:     setuid Mach-O fat file with 3 architectures
/usr/bin/atrm:    setuid Mach-O fat file with 3 architectures
/usr/bin/atsutil: Mach-O fat file with 3 architectures
$ []
echo は、引数をそのまま表示するコマンド、 file は、ファイルの種類を表示するコマンドである。

◆ファイル名置換でよく使われるパタン

bash では、「*」を含めて、次のようなパタンが使える。
パタン 意味
* 任意の文字列(空でもよい)(.で始まるものを除く)
? 任意の1文字
[str] strのなかの1文字。たとえば [aA] は、a か A とマッチする。「-」があると、ASCIIでその間の文字を意味する。たとえば [0-9](数字)や[a-zA-Z](アルファベット)がよく使われる。
{str1,str2,...} 「,」で区切られたパタン str1, str2, ... を順にファイル名置換した結果を並べたもの
~username ユーザusernameのホーム・ディレクトリの絶対パス。
~/ 自分自身のホーム・ディレクトリ
~ 自分自身のホーム・ディレクトリ

よく使われる形式

*
全てのファイル名。
*.txt
最後が .txt で終わるもの。
*.[ch]
最後が .c、または、.h で終わるもの。
file[0-9]
数字で終わるファイル名
[a-z]*
英小文字で始まるファイル名
[Ww]ork
work または Work
注意:「*」と「*.*」は違う。Windowsで「*.*」と書く 所、Unixでは、「*」で十分なことが多い。

◆空白文字を含むファイル名

ファイル名に空白文字を含んでいると、そのままではうまく扱えない。
$ ls -ld /Applications/QuickTime Player.app/ [←]
ls: /Applications/QuickTime: No such file or directory
ls: Player.app/: No such file or directory
$ [←]
「?」や「*」で置き換え可能な場合が多い。
$ ls -ld /Applications/QuickTime?Player.app/ [←]
drwxr-xr-x  3 root  wheel  102 11 14 23:31 /Applications/QuickTime Player.app/
$ ls -ld /Applications/QuickTime*Player.app/ [←]
drwxr-xr-x  3 root  wheel  102 11 14 23:31 /Applications/QuickTime Player.app/
$ []
バックスラッシュ「\ 」を使うこともできる。
$ ls -ld /Applications/QuickTime\ Player.app/ [←]
drwxr-xr-x  3 root  wheel  102 11 14 23:31 /Applications/QuickTime Player.app/
$ []

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

◆木構造

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

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

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

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

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

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

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

◆字下げによる木の表現

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

筑波大学

◆区切り文字入り表記

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

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

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

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

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

◆木の例

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

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

◆くわしくは

総合科目「ネットワーク社会を支える情報技術入門 II」/木構造(2010年10月25日)

http://www.softlab.cs.tsukuba.ac.jp/~yas/gen/it-2010-10-25/

◆ディレクトリの木構造

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

根が上にある本物の木

図? 本物の木

根、home、etc、user、kernel、yas、中間節、端説、リンクからなる構造

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

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

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

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

◆パス名

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

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

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

例:「/usr/bin/wc

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

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

ルート・ディレクトリを起点にする方法(絶対パス名)だけでは、作業しにくい。 「現在作業中のディレクトリ」 「カレント・ワーキング・ディレクトリ(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つ根から遠いディレクトリ
隣のディレクトリ、兄弟のディレクトリ
共通の親ディレクトリを持つディレクトリ。 「../ディレクトリ名」で参照可能。

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

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

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

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

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

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

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

/ がなく、アルファベットで始まる(~xxx)
他のユーザのホーム・ディレクトリ。 xxx はユーザ名として解釈される。
/ がある ~/xxx
自分のホーム・ディレクトリ以下のファイル(またはディレクトリ)。 xxx はファイル名、または、ディレクトリ名として解釈される。
/ がなく、数字で始まる(~1、~2、・・・、など)
bash では、ディレクトリスタックの上から num 番目を参照。 The Unix Super Text 上巻 11.10 ディレクトリスタック 参照

◆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
$ []

◆lsの-dオプションによるディレクトリそのものの表示

ls コマンドは、引数にディレクトリ名が与えられると、ディレクトリ の内容を表示する。
$ ls ~/Music/ [←]
iTunes
$ ls -l ~/Music/ [←]
total 8
drwxr-xr-x  3 yas  prof  4096  4 26  2010 iTunes
$ []
ディレクトリそのものを表示したい時(特に「-l」と組み合わせて日付 等の属性を表示したい時)は、「-d」オプションを付ける。
$ ls -d ~/Music/ [←]
/home/prof/yas/Music/
$ ls -dl ~/Music/ [←]
drwx------  3 yas  prof  4096  4 26  2010 /home/prof/yas/Music/
$ []

◆cp file dir

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

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

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

◆属性

ファイルの属性は、ls -l で調べられる。 ディレクトリの場合、一番左側に directory を意味する d がつく。 詳しくは、 ファイルの属性 を復習しなさい。

■ファイルの属性

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

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

$ ls -l [←]
total 162
drwx------   6 yas  prof   4096 Apr  9 20:30 Desktop
drwx------   4 yas  prof   4096 Apr  2 14:14 Documents
drwx------  17 yas  prof   4096 Apr  7 13:35 Library
drwx------  11 yas  prof   4096 Apr 14 17:06 Maildir
drwxr-xr-x   3 yas  prof   4096 Mar  9 12:10 WinFiles
drwxr-xr-x   3 yas  prof   4096 Apr 15 13:35 bin
drwxr-xr-x  35 yas  prof   4096 Apr 12 11:44 coins
-rw-------   1 yas  prof      6 Apr 19 21:25 dead.letter
...
$ []
行単位に次のようなファイルやディレクトリの属性が表示さる。

◆所有者(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 コマンドでそのディレクトリのなかに あるファイル名前を変更できる。

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

ディレクトリに対する 「検索可」というのは、その下にあるファイルやディレクトリを たどっていける(ファイルを開く(読み書きのため)、cd (change directory)できる)という意味である。

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

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

アクセスするユーザによって異なったアクセスの許可・拒否がしたいことがあ る。そのために、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 /home/lecture/syspro [←]
total 65
drwx------   2 syspro  lecture  4096 Apr 19 18:53 Desktop
drwx------   8 syspro  lecture  4096 Apr 19 18:53 Library
drwx------   5 syspro  lecture  4096 Mar  1 18:10 Maildir
drwxr-xr-x   3 syspro  lecture  4096 Feb 22 19:56 backupfiles2010
-rw-------   1 syspro  lecture     6 Apr 19 19:14 dead.letter
drwxr-xr-x  11 syspro  lecture  4096 Apr  2 12:40 public_html
drwxr-xr-x   4 syspro  lecture  4096 Apr 12 12:00 secure_html
drwxr-xr-x  11 syspro  lecture  4096 Apr 12 12:00 syspro-2010
drwxr-xr-x   3 syspro  lecture  4096 Apr 19 19:09 tmp
$ []
ディレクトリ自身を表示したい時には、ls -l -d (ls -ld) とする。
$ ls -ld /home/lecture/syspro [←]
drwxr-xr-x  16 syspro  lecture  4096 Apr 19 19:13 /home/lecture/syspro
$ []

■マニュアルの読み方

The Unix Super Text 8章 参照手引き 2.2.2項 参照
$ man man [←]
$ man ls [←]
$ man mkdir [←]
$ man -k keyword [←]
引数として調べたいコマンドの名前を与える。-k に続いてキーワードを与える ことで検索もできる。

後述する Emacs に付属の説明書 info を読むためのコマンドもある。

$ info info [←]
$ info bash [←]

■Emacs

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

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

3種類ある。

端末(iTerm, xterm, kterm)の中で動く。
実行には、端末のシェルに emacs と打つ。 (そのままでは 以下の X Window System のものが動く時には、 emacs -nw と打つ。-nw は、no window の意味。)
MacOSX でウインドウを開くもの(Carbon Emacs, Aquamacs Emacs)。
実行(起動)には、Dock アイコンをシングルクリックでもよい。 シェルから open /Applications/Emacs.app でもよい。
X Window System の元で動作する。
実行には、まず、X Window System (X11) を実行する。 さらに、X Window System に対応した Emacs を( -nw なしで)実行する。 環境変数 DISPLAY で設定された場所に画面が表示される。 (iMac のもの等、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-x と打ちたい時には、 例えば、まず、Escキーを打ち(離し)、その後、x キーを打つ。 (キーを2回に分けて打つ。) ただし、説明の表記は、M- のままなので注意する。

◆C-x C-c

Emacs を終了するには、C-x C-c

◆C-g

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

◆undo

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

◆カーソル移動

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

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

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.6項 参照。  

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

C-d	delete-char
DEL	delete-backward-char

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

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

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

マーク
C-SPC または C-@ で設定する。 うまくいくと、ミニバッファに Mark set と表示される。 カーソルを動かしても移動しない。 次に新しいマークをセットするまで有効。
ポイント(カーソルのある位置)
カーソルを動かすと移動する。
リージョン(領域)
マークした場所とカーソルの間
リージョンに対する操作には、さまざまなものがある。

◆ファイルの読み書き

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

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

■実習

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

★練習問題(401) 端末 iTerm の実行と終了

次の練習問題を行いなさい。

★練習問題(402) iTerm で、文字コードを EUC に設定する

次の練習問題を行いなさい。

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

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

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

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

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

★練習問題(406) catコマンド

cat コマンドを使い、次のようなテキスト・ファイルを画面に表示してみなさい。

★練習問題(407) headコマンド

head コマンドを使い、次のようなテキスト・ファイルを画面に表示してみなさい。

★練習問題(408) tailコマンド

tail コマンドについてマニュアルで調べなさい。 tail コマンドを使い、テキスト・ファイルを画面に表示してみなさい。 The Unix Super Text 15.1 参照

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

手引き 2.2.14 参照。 lvコマンド で次のような長いファイルを表示してみなさい。 そして、次の機能を確認しなさい。 次のようにして、マニュアルを表示しなさい。
$ lv -help [←]
次のキーの動作を確認しなさい。
キー 説明
スペース 次のページ
f 1ページ進める(forward)
b 1ページもどる(back)
q 終了
j 1行進める
k 1行もどす
g 先頭にもどる
G 末尾にもどる
/str 文字列 str をファイルの末尾に向かって探す
?str 文字列 str をファイルの先頭に向かって探す
n 直前の検索をファイルの末尾に向かって繰り返す(next)
N 直前の検索をファイルの先頭に向かって繰り返す(next)

★練習問題(410) manコマンド

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

★練習問題(411) man -k

man -k を使って、マニュアルの検索を行いなさい。 その結果と apropos コマンドの結果を比較しなさい。

★練習問題(412) info コマンド

info コマンドを実行しなさい。終了は、q または C-x C-c。 後述する Emacs の info と比較しなさい。
$ info info [←]
$ info bash [←]
$ info emacs [←]

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

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

★練習問題(414) cdコマンドによるホームディレクトリへの移動

次の方法で、ホームディレクトリへ移動してみなさい。

(1) 引数無しで cd コマンドを実行

$ cd / [←]
$ pwd [←]
$ cd [←]
$ pwd [←]
(2) cd コマンドに、「~」を与える。
$ cd / [←]
$ pwd [←]
$ cd ~ [←]
$ pwd [←]
(3) cd コマンドに、「~ログイン名」を与える。
$ cd / [←]
$ pwd [←]
$ cd ~ログイン名 [←]
$ pwd [←]

★練習問題(415) cdコマンドによるホームディレクトリ以下のディレクトリへの移動

ホーム・ディレクトリの下に、どのようなディレクトリがあるかを ls -l で調 べなさい。
$ ls -l [←]
ディレクトリの場合、左端が「d」になっている。 ( ファイルの属性 参照 ) cd コマンドを使って、カレント・ワーキング・ディレクトリを ホーム・ディレクトリの下のディレクトリに変更しなさ い。以下は、Music に変更した例である。
$ cd [←]
$ pwd [←]
$ ls [←]
$ cd Music [←]
$ pwd [←]
$ ls [←]
Music 以外の2〜3のディレクトリについても、類似の操作を行いな さい。

★練習問題(416) ls -aコマンド

ls コマンド(ls -l)、および、ls -a コマンド(ls -al)で、ホーム・ディレク トリを表示しなさい。その違いを観察しなさい。
$ cd [←]
$ ls [←]
$ ls -a [←]
$ ls -l [←]
$ ls -la [←]

★練習問題(417) ls -lRコマンド

ls に -R (Recursively) オプションを付けると、ディレクトリの何か子供のディ レクトリが含まれていた場合、それの子供も含めて全て表示する。ls -lR のよ うに、-l と合わせて使うことが多い。 この機能を確認しなさい。

★練習問題(418) treeコマンド

tree コマンドを利用して、ファイルを木構造が分かりやすいように表示しなさい。

tree コマンドに -N オプションをつけると、ファイル名に漢字を含むものも表 示できる。

$ tree -N ディレクトリ名 [←]
さらに、nkf を使えば、ファイル名を EUC で表示できる。
$ tree -N ディレクトリ名 | nkf -e [←]
nkf コマンドの代わりに lv コマンドを使う方法もある。 (lv コマンドの終了は、q)
$ tree -N ディレクトリ名 | lv [←]
tree コマンドの次のオプションの意味を ls と比較しなさい。 詳しくは、man tree を見なさい。

★練習問題(419) 長い名前のアプリケーションの実行

/Applications/Calculator.app は、電卓のプログラムである。これをシェルか ら実行するためには、次のように open コマンドに対してパス名を与えればよい。
$ open /Applications/Calculator.app [←]
これを、ファイル名置換機能(*,?)を利用して、長い文字列をキーボードから打 たないで実行しなさい。
$ echo /App*/Cal* [←]
(1つしか表示されない確認する。複数あると問題がある。)
$ open /App*/Cal* [←]
同様に、/Applications にあるプログラムを実行してみなさい。

★練習問題(420) ファイルの操作

次の表にあるファイルの操作を行ってみなさい。

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 の組み合わせ
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以下への移動)
rm -r	dir		ディレクトリの削除(ディレクトリの内容も削除)

f1, f2, f3 はファイル名、dir, d1, d2, ... は、ディレクトリ名

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

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

★練習問題(422) emacsによるファイルの新規作成(端末内)

次の手順で Emacs (iTerm内で実行)を使ってテキストファイルを作成しなさい。

★練習問題(423) emacsによるファイルの新規作成(端末内)(C-x C-f)

キー操作 C-x C-f を使って、ファイルを作成しなさい。

★練習問題(424) emacsによる既存ファイルの編集(端末内)

次の手順で Emacs (iTerm内で実行)を使って既存のテキストファイルの内容を編集しなさい。

★練習問題(425) 保存したファイルの内容の参照

Emacs で編集しているファイルの内容は、保存するまで他のプログラムからは読むことができない。 また、C-x C-s で保存したら、Emacs を終了しなくても、読むことができるようになる。  C-x C-s による保存は、何度行ってもよい。 このことを、次のようにして確認しなさい。

★練習問題(426) emacsのキー操作

次の表に含まれているキーを覚えて使えるようにしなさい。
キー 説明
C-x C-s バッファを保存。
C-x C-c Emacsを終了。
C-x C-f ファイルを探して編集、または、新規作成。
C-p カーソルを移動(previous)
C-n カーソルを移動(next)
C-f カーソルを移動(forward)
C-b カーソルを移動(backward)
Delete 左の文字の削除
C-k カーソルの位置から行末まで削除。行末の場合は、改行の削除。
C-g 何か困った時には、何度か打つ。
C-_ または C-x u 取り消し(undo)
C-SPC または C-@ 領域(region)の先頭を決める(マーク)
C-w リージョン(領域)をカット
ESC w リージョン(領域)をコピー
C-y リージョン(領域)をペースト

★練習問題(427) emacsの機能確認

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

★練習問題(428) Carbon Emacsの実行

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

★練習問題(430) Emacs による漢字コードの変換

漢字のテキストを 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 ブラウザ では、文字のエンコーディングを変えて、その通りになっているかを調べなさ い。

作成したテキスト・ファイルを、lv コマンドで表示しなさい。そして、 = キーを打ちなさい。すると、ファイル名、先頭からの位置(バイト 数)に続き、ファイルの文字コードが表示される。

★練習問題(431) Emacs infoの表示

Emacs の info を表示して読みなさい。 info (The Unix Super Text 8.6項 参照)。M-x info。M-x ? i。

★練習問題(432) Emacs チュートリアル

Emacs には、 チュートリアル機能 (自習機能)がある。これを実施しなさい。 手引き 3.3.1項 参照。 この実習項目は、[加点]の課題である。実施する時には、開始時刻と終了時刻 を記録しなさい。 標準では、日本語のチュートリアルが実行される。 英語、その他の言語のチュートリアルを実行するには、 M-x help の前に、C-u を打つ。

言語としては、次のようなものの中から選択できる。

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

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

★練習問題(433) Emacs の機能一覧・検索

次の方法で Emacs での詳しい使い方が表示される。このことを確認しなさい。
M-x help m
機能の一覧(modeの説明)
M-x help b
キーバインディング(bindingの説明)
M-x help a
apropos。関数の検索。
この apropos は、Emacs の機能だが、同名でシェルから実行できるコマンドもある。 これは、man -k と同じである。

★練習問題(434) タイプ練習プログラム typist

iTerm の中で、次のように打ち、タイプ練習プログラム typist を実行しなさい。
$ typist [←]
そして、タイプ練習を行いなさい。

★練習問題(435) PDFファイルの作成と表示

次の練習問題を行いなさい。

★練習問題(436) 端末/シェルからのプリンタの利用

次の練習問題を行いなさい。

■課題4 ファイル、ディレクトリ、ファイル名置換、木構造、属性、Emacs

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

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


Last updated: 2013/06/07 15:41:01
Yasushi Shinjo / <yas@cs.tsukuba.ac.jp>