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

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

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

このページは、次の URL にあります。
http://www.coins.tsukuba.ac.jp/~yas/coins/literacy-2009/2009-04-21
あるいは、次のページから手繰っていくこともできます。
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 大学組織に見られる木構造(領域的な見方)

◆字下げによる木の表現

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

筑波大学

◆区切り文字入り表記

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

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

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

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

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

◆木の例

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

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

◆くわしくは

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

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

◆ディレクトリの木構造

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

根が上にある本物の木

図? 本物の木

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

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

◆ルート・ディレクトリ(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つ根から遠いディレクトリ
隣のディレクトリ、兄弟のディレクトリ
共通の親ディレクトリを持つディレクトリ

◆ホーム・ディレクトリ(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 行を画面に表示するこ とができる。The Unix Super Text 15.1 参照
% 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
逆戻りできる。
lv
漢字コードとして utf8 などもきちんと扱える。 使い方は、less コマンドとだいたい同じ。 手引き 2.2.10 参照
pg
System V 系 Unix のページャ

最低限の操作方法。これは覚える。
キー 説明
スペース 次のページ
b 1ページもどる(back)
q 終了

◆cp file dir

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

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

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

■ディレクトリの操作

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

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

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

◆ディレクトリ名の変更

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

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

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 [←]
引数として調べたいコマンドの名前を与える。-k に続いてキーワードを与える ことで検索もできる。

■Emacs

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

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

3種類ある。

端末(iTerm, xterm, kterm)の中で動く。
実行には、emacs -nw と打つ。-nw は、no window の意味。
MacOSX でウインドウを開くもの(Aqua版)。
実行(起動)には、Dock アイコンをシングルクリックでもよい。 シェルから open /Applications/Emacs.app でもよい。
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-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.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項 参照。  

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

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

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

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

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

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

◆ファイルの読み書き

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

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

■実習

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

★練習問題(409) 絶対パス名と相対パス名

相対パス名を使っても、絶対パス名を使っても、どちらもファイルやディレク トリが指定されることには変わりはない。どのような場合にどのように違いが 生じるか、考えなさい。

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

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

★練習問題(411) man -k

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

★練習問題(419) 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 リージョン(領域)をペースト

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

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

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

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

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

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

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

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

% emacs [←]

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

% emacs -nw [←]

★練習問題(423) 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 コマンドで表示しなさい。そして、 = キーを打ちなさい。すると、ファイル名、先頭からの位置(バイト 数)に続き、ファイルの文字コードが表示される。

★練習問題(424) Emacs universal-coding-system-argument

Emacs は既存のテキストファイルを開く時に文字コードの自動判定を行う。こ の判定は、強力はあるが、時々判定に失敗する。その時には、文字コードを指 定しながファイルを開くとよい。この機能を使ってみなさい。

Emacs で文字コードを指定しながらファイルを開くには、次のようにする。

  • 次のように打つ。
    M-x universal-coding-system-argument [←]
    M-x は、Esc x でもよい。
  • すると、ミニバッファに次のような表示がなされる。
    Coding system for following command (default, xxx): 
  • このプロンプトに対して文字コードを指定する。 以下の例では、euc-jp-unix を指定している。
    Coding system for following command (default, xxx): euc-jp-unix[←]
  • 続いて C-x C-f (find-file) を実行する。

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

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

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

    Emacs には、チュートリアル機能(自習)がある。これを実施しなさい。 標準では、日本語のチュートリアルが実行される。 英語、その他の言語のチュートリアルを実行するには、 M-x help の前に、C-u を打つ。

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

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

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

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

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

    ■課題4 ファイル、ディレクトリ、Emacs

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

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


    Last updated: 2009/04/21 16:06:37
    Yasushi Shinjo / <yas@is.tsukuba.ac.jp>