ファイルとディレクトリの木構造、パス名、属性、ファイル名置換、マニュアルの読み方、Emacs補完

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

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

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

■連絡事項

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

■木構造(tree structure)

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

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

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

筑波大学、社会・国際学群・・・情報学群、情報科学類・・・
図? 大学組織に見られる木構造

筑波大学、社会・国際学群・・・情報学群、情報科学類・・・(領域的な見方)
図? 大学組織に見られる木構造(領域的な見方)

◆字下げによる木の表現

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

筑波大学

◆区切り文字入り表記

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

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

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

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

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

◆木の例

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

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

◆くわしくは

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

http://www.softlab.cs.tsukuba.ac.jp/~yas/gen/it-2013-12-02/

◆ディレクトリの木構造

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 ディレクトリスタック 参照

■ファイルの属性

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

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

$ ls -l [←]
total 99
drwx------   4 yas  prof   3072  4 10 17:37 Desktop
drwx------   3 yas  prof   1024  3 11 13:52 Documents
drwx------@ 34 yas  wheel  2048  4 18 10:05 Library
drwx------  20 yas  prof   2048  4 18 10:57 Maildir
drwx------   2 yas  prof   1024  4 21 16:03 Music
-rw-r--r--   1 yas  prof   3178  4 15 15:56 file100.txt
-rw-r--r--   1 yas  prof     25  4 15 15:58 file30
-rw-r--r--   1 yas  prof   2550  4 15 15:59 literacy-a2.txt
-rw-r--r--   1 yas  prof   2550  4 15 15:57 literacy-a2.txt~
...
$ []
行単位に次のようなファイルやディレクトリの属性が表示さる。

◆所有者(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  5253  2  6 16:57 /etc/passwd
$ []
ls コマンドにディレクトリ名を与えると、ディレクトリそのものではなく、そ の内容が表示される。
$ ls -l /home/lecture/syspro [←]
total 27
drwxr-xr-x   2 syspro  lecture    80  4 21 16:14 Applications
drwx------   2 syspro  lecture  1024  4 21 16:15 Desktop
drwx------  13 syspro  lecture  1024  4 21 16:15 Library
drwx------   9 syspro  lecture  1024  2 25 23:02 Maildir
drwx------   2 syspro  lecture  1024  4 21 16:15 Movies
drwx------   2 syspro  lecture  1024  4 21 16:15 Music
drwx------   2 syspro  lecture  1024  4 21 16:15 Pictures
drwx------  12 syspro  lecture  2048  4 21 16:15 _OLD_HOME_
drwxr-xr-x   4 syspro  lecture  1024  3 13 15:31 public_html
drwxr-xr-x  11 syspro  lecture  1024  3 13 15:27 syspro-2010
drwxr-xr-x  11 syspro  lecture  1024  3 13 15:27 syspro-2011
drwxr-xr-x  11 syspro  lecture  1024  3 13 15:27 syspro-2012
drwxr-xr-x  11 syspro  lecture  1024  3 13 15:27 syspro-2013
$ []
ディレクトリ自身を表示したい時には、ls -l -d (ls -ld) とする。
ls -dl /home/lecture/syspro
drwxr-xr-x  19 syspro  lecture  2048  4 21 16:15 /home/lecture/syspro
$ []

■ファイル名置換

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

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

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

$ ls -l /usr/bin/at /usr/bin/atos /usr/bin/atq /usr/bin/atrm /usr/bin/atsutil [←]
-r-sr-xr-x  4 root  wheel  75648  3 18 14:09 /usr/bin/at
-rwxr-xr-x  1 root  wheel  90960  2  6 17:03 /usr/bin/atos
-r-sr-xr-x  4 root  wheel  75648  3 18 14:09 /usr/bin/atq
-r-sr-xr-x  4 root  wheel  75648  3 18 14:09 /usr/bin/atrm
-rwxr-xr-x  1 root  wheel  25568  3 18 14:08 /usr/bin/atsutil
$ []
次のように、「*」を使うと楽に打てる。
$ ls  -l /usr/bin/at* [←]
-r-sr-xr-x  4 root  wheel  75648  3 18 14:09 /usr/bin/at
-rwxr-xr-x  1 root  wheel  90960  2  6 17:03 /usr/bin/atos
-r-sr-xr-x  4 root  wheel  75648  3 18 14:09 /usr/bin/atq
-r-sr-xr-x  4 root  wheel  75648  3 18 14:09 /usr/bin/atrm
-rwxr-xr-x  1 root  wheel  25568  3 18 14:08 /usr/bin/atsutil
$ []
この例では、シェルが「/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 universal binary with 2 architectures
/usr/bin/at (for architecture x86_64):	  Mach-O 64-bit executable x86_64
/usr/bin/at (for architecture i386):	  Mach-O executable i386
/usr/bin/atos:    Mach-O universal binary with 2 architectures
/usr/bin/atos (for architecture x86_64):  Mach-O 64-bit executable x86_64
/usr/bin/atos (for architecture i386):	  Mach-O executable i386
/usr/bin/atq:     setuid Mach-O universal binary with 2 architectures
/usr/bin/atq (for architecture x86_64):	  Mach-O 64-bit executable x86_64
/usr/bin/atq (for architecture i386):	  Mach-O executable i386
/usr/bin/atrm:    setuid Mach-O universal binary with 2 architectures
/usr/bin/atrm (for architecture x86_64):  Mach-O 64-bit executable x86_64
/usr/bin/atrm (for architecture i386):	  Mach-O executable i386
/usr/bin/atsutil: Mach-O 64-bit executable x86_64
$ []
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  3 18 14:11 /Applications/QuickTime Player.app
$ ls -ld /Applications/QuickTime?Player.app [←]
drwxr-xr-x+ 3 root  wheel  102  3 18 14:11 /Applications/QuickTime Player.app
$ []
バックスラッシュ「\ 」や" " を使う方法もある。
$ ls -ld /Applications/QuickTime\ Player.app [←]
drwxr-xr-x+ 3 root  wheel  102  3 18 14:11 /Applications/QuickTime Player.app
$ ls -ld "/Applications/QuickTime Player.app" [←]
drwxr-xr-x+ 3 root  wheel  102  3 18 14:11 /Applications/QuickTime Player.app
$ []

■ファイルとディレクトリを扱うコマンド(2)

ファイルとディレクトリ(4月15日) の復習。

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

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

◆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 -l ~/Maildir [←]
total 113
drwx------  2 yas  prof  35840  4 18 11:00 cur
drwx------  2 yas  prof  17408  4 18 10:57 new
drwx------  2 yas  prof   1024  4 18 11:37 tmp
$ []
ディレクトリそのものを表示したい時(特に「-l」と組み合わせて日付 等の属性を表示したい時)は、「-d」オプションを付ける。
$ ls -ld ~/Maildir [←]
drwx------  20 yas  prof  2048  4 18 10:57 /home/prof/yas/Maildir
$ []

◆cp file dir

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

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

$ cp /etc/group . [←]
$ cp /etc/group ~ [←]
$ cp ~yas/public_html/htdocs/coins/literacy-2014/2014-04-21/literacy-a100.txt . [←]

◆ファイルを消す

意義

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

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

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

◆rm -i

rm コマンドには、-i オプションがあり、ファイルを消すかどうかを対話的 (interactive)に y/n で聞いてくる。消してもよい時には、y と答える。

コマンド名の置換え(alias)等て、rm を rm -i に変えることは、一般的には勧 められない。「rm -i [←] y」という操作が、一連の操作として身に付い てしまうので。

◆ファイルの名前を変更

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

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

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

◆ディレクトリの作成

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

◆ディレクトリ名の変更

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

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

◆ファイルのディレクトリへの移動

ファイル名を変更する mv (move) コマンドは、 同じディレクトリだけでなく、他のディレクトリに対しても使える。
$ mkdir ~/dir1 [←]
$ mv oldname ~/dir1/newname [←]
この結果、カレント・ワーキング・ディレクトリにある ファイルoldfileのファイル名は、 ~/dir1/newnameに変更される。

次のように、ディレクトリだけを指定することもできる。

$ mv name ~/dir1/ [←]
この場合、次のものと同じになる。
$ mv name ~/dir1/name [←]
また、変更先にディレクトリを指定する mv では、ファイル名は1個でなくて も複数でもよい。
$ mv file1 file2 file3 ~/dir1 [←]
シェルの ファイル名置換 を使うと便利。
$ ls file[1-3] [←]
(ファイル名の確認)
$ mv file[1-3] ~/dir1 [←]
$ ls file? [←]
(ファイル名の確認)
$ mv file? ~/dir1 [←]
$ ls file* [←]
(ファイル名の確認)
$ mv file* ~/dir1 [←]

◆ディレクトリの削除

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

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

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

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

■マニュアルの読み方

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章 参照

◆Emacs補完機能

The Unix Super Text 12.5.1 補完 参照 手引き 3.3.2 ファイル操作 参照

Emacs でファイル名を打つ時、補完機能を使うと便利である。 ファイル名を自分で打たなくても、Emacs が自動的に補ってくれる。

■実習

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

★練習問題(401) emacs、タブキーによる補完機能

The Unix Super Text 12.5.1 補完 参照手引き 3.3.2 ファイル操作 参照

Emacs の補完機能(タブキー)を確認しなさい。

以下の例は、/etc/passwd をタブキーにより開く例である。
  1. emacs を実行する。
    $ emacs [←]
  2. ファイルを開く。C-x C-f
    Find file: ~/[]
  3. ~/」の2文字を消す。Delete キーを 2 回打つ。
    Find file: []
  4. /e」と打ちタブを打つ
    Find file: /e[tab]
    すると、tc/が補完される。
    Find file: /etc/[]
  5. pa」と打ちタブを打つ
    Find file: /etc/pa[tab]
    すると、いくつか候補が表示される。
    In this buffer, type RET to select the completion near point.
    
    Possible completions are:
    pam.d/                             passwd
    passwordreset/                     paths
    paths.d/
    
    <中略>
    
    Find file: /etc/pa[]
    
  6. s」と打ちタブを打つ
    Find file: /etc/pas[tab]
    すると、「wd」が補完される。
    Find file: /etc/passwd[]
  7. 目的のファイル名が見つかったので、最後にリターンキーを打つ。
    Find file: /etc/passwd[←]
その他に、次のファイルを補完により開きなさい。

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

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

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

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

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

man コマンドで、次のコマンドのマニュアルを表示しなさい。 長いマニュアルを表示した時に自動的に lv コマンド が実行されていることを確認しなさい。lv コマンドの次のキーが有効であるこ とを確認しなさい。

★練習問題(405) man -k

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

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

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

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

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

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

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

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

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

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

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

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

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

$ ls -lR ディレクトリ名 [←]
lv による表示。後ろに「| lv」をつける。
$ ls -lR ディレクトリ名 | lv [←]
注意: 表示が止まらなくなった時、強制終了したい時には、 Control キー + c キー も使える。

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

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

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

$ tree -N ディレクトリ名 [←]
lv による表示。後ろに「| lv」をつける。
$ tree -N ディレクトリ名 | lv [←]
注意: 表示が止まらなくなった時、強制終了したい時には、 Control キー + c キー も使える。

iTerm にペーストする時に「?」が表示されるならば、次のように すれば (UTF-8ではなく) ASCII 文字を使うようになる。

$ LANG=C tree -N ディレクトリ名 [←]

tree コマンドの次のオプションの意味を ls と比較しなさい。

詳しくは、man tree を見なさい。

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

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

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

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

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		ディレクトリの削除(空のディレクトリの時)

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

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

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

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

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

■課題4 ファイルとディレクトリの木構造、パス名、属性、ファイル名置換、マニュアルの読み方、Emacs補完

次のファイルを自分のホーム・ディレクトリ等にコピーしなさい。 そして、そのファイルの指示に従い、内容を埋めなさい。エディタとしては、 今日の課題では、必ず Emacs を使いなさい。
$ ls [←]
(literacy-a4.txtが存在することを確認する)
$ emacs literacy-a4.txt [←]

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


Last updated: 2014/06/19 18:03:54
Yasushi Shinjo / <yas@cs.tsukuba.ac.jp>