UNIXの基礎知識

ディレクトリ構造に関する用語

※MACやウィンドウズではディレクトリのことをフォルダーというが,基本的には同じものである.
UNIXやWindowsでは,ファイルはツリー構造と呼ばれる木構造に格納される. 一番上に根に相当する部分(UNIXではルートディレクトリ)があり, 下に行くほど枝が広がっているイメージである.
      </(root)> ┬─abc.txt
        │  ├─bcd.efg
        │  └─defghi
   ┌────┼──────┬─……
  <home>  <usr> ┬─X  <etc>……
   │    │ ├─adm
   │    │ … …
   │  ┌─┴─┬───┬───┬─……
   │ <4lib> <X11R6> <aset> <bin>
   │  …   …
 ┌─┴─┬───┬─……
<pitoh> <msk> <ryu>……

このイメージにのっとって,「上位」と書いた場合,ルートディレクトリに一段近い方を指し,「下位」と書いた場合, ルートディレクトリから一段遠い方を指す.
ルートディレクトリには,いくつかのファイルとディレクトリが存在する.ルートディレクトリは"/"(スラッシュ)で表される.
例えばルートディレクトリにある"abc.txt"というファイルは"/abc.txt"と表すと一意にそのファイルを表すことになる.
すべてのファイルはルートディレクトリか,ルートディレクトリにあるディレクトリか,さらにその中のディレクトリ, さらにその中(以下繰り返し)………に存在する.ディレクトリは"/"で区切って表示するので,ルートディレクトリにある "home"という名前のディレクトリに存在する"abc.txt"というファイルは"/home/abc.txt"と表すことで一意に表すことが可能となる.
このように先頭に"/"をつけた表記方法(=ルートディレクトリから始まる表記方法)を絶対パス(表記)と呼ぶ.

通常,利用者は必要に応じてディレクトリを移動しながら,さまざまな処理を行う. このために,自分が現在いるディレクトリ,というものが存在する.この「自分が現在いるディレクトリ」のことを カレントディレクトリと呼び,"."(ピリオド)で表す.
通常,カレントディレクトリにあるファイルは,ファイル名だけを指定すればよい.例えば"/home/foo"というディレクトリが カレントディレクトリ(このような場合,「/home/fooにいる」というように表現する)で, "abc.txt"というファイルを指定する場合,絶対パスだと"/home/foo/abc.txt"であるが,単純に"abc.txt"と表現することも 可能である.このような表現方法を相対パス(表記)と呼ぶ.
相対パスは,先頭に"/"がつくことはないので,一文字目を見れば絶対パスか相対パスかの識別が可能である.
相対パスでは,カレントディレクトリを基準にしてファイルを 指定することが可能となる."/home"にいる場合は,"foo/abc.txt"というのはカレントディレクトリの"foo"というディレクトリの 中の"abc.txt"というファイル,ということになる.
相対パス表記は非常に便利なのであるが,単純には自分のディレクトリから下方向にしか指定できない.これでは不便なので, 自分の一つ上のディレクトリ(ペアレントディレクトリ)を指定する方法がある.これが".."である. 例えば,"/home/foo"にいる場合,"../abc.txt"と指定すると,"/home/abc.txt"という絶対パスのファイルを指定することに なる.同様に"../../abc.txt"と指定すれば,"/abc.txt"と同じとなる."../foo/../foo/abc.txt"というような変な指定も 可能である.すなわち,各ディレクトリには,そのディレクトリの下位のディレクトリと同じように".."というディレクトリ があって,それが実はペアレントディレクトリになっているのである.さきほど出たカレントディレクトリ(".")も同様であり, "./abc.txt"という指定も可能だし,".././foo/./abc.txt"というややこしい指定も可能である(実用性はともかく…).

UNIXでは,loginしたときに,カレントディレクトリは各自のディレクトリに設定される.この各自のディレクトリを ホームディレクトリ(あるいは単にホーム)と呼ぶ.ホームディレクトリは屋代研では,"/home/ログイン名"となる. これを通常は"~"(チルダ/にょろ:ここでは中央あたりに"にょろ"が表示されるが,端末上では文字の上と同じくらいの高さに "にょろ"が表示される)で表す.例えばユーザfooが"~/abc.txt"と指定すると,"/home/foo/abc.txt"と指定したのと 同じことになる.同様に他人のホームディレクトリは"~ログイン名"と表すことが出来る.foo以外のユーザが"~foo/abc.txt"と 指定することによって,"/home/foo/abc.txt"というファイルを指定することができる.
自分のホームディレクトリよりも下位のファイルやディレクトリに対しては, 各自がそのファイル/ディレクトリに対する読み込み,書き込みなどの許可/不許可を設定することが可能である.
一応下記にまとめておく.
記号名称意味
/ルートディレクトリ一番上位のディレクトリ
.カレントディレクトリ現在いるディレクトリ
..ペアレントディレクトリひとつ上位のディレクトリ
~ホームディレクトリログインしたときのディレクトリ

ls

ファイルの一覧を見るコマンドである.-lオプションをつけることによって最終更新日,作成者,サイズなどを見ることが可能である.
 [nippori]/home/sample 160 > ls
 Mail
 [nippori]/home/sample 161 > ls -l
 合計 2
 drwx------   2 sample   user         512  2月  9日  19:48 Mail 
一般にUNIXでは,"."から始まるファイルはlsコマンドでは表示されない(このため,設定ファイルなどに用いられる). -aオプションをつけると,これらの"."から始まるファイルも表示する.
[nippori]/home/sample 162 > ls -a
.            .alias       .emacs       .im          .mule.el     Mail
..           .cshrc       .history     .mh_profile  .xinitrc 
-a-lオプションを同時につける場合は,-alとすればよい.
[nippori]/home/sample 163 > ls -al
合計 45
drwxr-sr-x   4 sample   user         512  2月  9日  19:59 .
dr-xr-xr-x   3 root     root           3  2月 25日  11:44 ..
-rw-r--r--   1 sample   user         946  2月  9日  19:48 .alias
-rw-r--r--   1 sample   user        2056  2月  9日  19:48 .cshrc
-rw-r--r--   1 sample   user        5074  2月  9日  19:48 .emacs
-rw-------   1 sample   user         421  2月  9日  20:01 .history
drwxr-sr-x   2 sample   user         512  2月  9日  19:48 .im
-rw-r--r--   1 sample   user         113  2月  9日  19:48 .mh_profile
-rw-r--r--   1 sample   user        6903  2月  9日  19:48 .mule.el
-rw-r--r--   1 sample   user         137  2月  9日  19:48 .xinitrc
drwx------   2 sample   user         512  2月  9日  19:48 Mail 
同様に-Fオプションはファイル名の後ろにファイルの種類をあら わす記号を表示する.これらはファイル名の一部ではないので注意すること.
[nippori]/home/sample 164 > ls -F
Mail/
[nippori]/home/sample 165 > ls -alF
合計 45
drwxr-sr-x   4 sample   user         512  2月  9日  19:59 ./
dr-xr-xr-x   3 root     root           3  2月 25日  11:44 ../
-rw-r--r--   1 sample   user         946  2月  9日  19:48 .alias
-rw-r--r--   1 sample   user        2056  2月  9日  19:48 .cshrc
-rw-r--r--   1 sample   user        5074  2月  9日  19:48 .emacs
-rw-------   1 sample   user         421  2月  9日  20:01 .history
drwxr-sr-x   2 sample   user         512  2月  9日  19:48 .im/
-rw-r--r--   1 sample   user         113  2月  9日  19:48 .mh_profile
-rw-r--r--   1 sample   user        6903  2月  9日  19:48 .mule.el
-rw-r--r--   1 sample   user         137  2月  9日  19:48 .xinitrc
drwx------   2 sample   user         512  2月  9日  19:48 Mail/ 
記号意味
なし通常のファイル
/ディレクトリ
*実行可能属性を持つファイル
@シンボリックリンク
-gはファイルの所有者のかわりに所有グループ名を表示する. -lオプションと同時に指定されると,所有者と両方を表示する.
[nippori]/home/sample 166 > ls -g
合計 2
drwx------   2 user         512  2月  9日  19:48 Mail
[nippori]/home/sample 167 > ls -alFg
合計 45
drwxr-sr-x   4 user         512  2月  9日  19:59 ./
dr-xr-xr-x   3 root           3  2月 25日  11:44 ../
-rw-r--r--   1 user         946  2月  9日  19:48 .alias
-rw-r--r--   1 user        2056  2月  9日  19:48 .cshrc
-rw-r--r--   1 user        5074  2月  9日  19:48 .emacs
-rw-------   1 user         421  2月  9日  20:01 .history
drwxr-sr-x   2 user         512  2月  9日  19:48 .im/
-rw-r--r--   1 user         113  2月  9日  19:48 .mh_profile
-rw-r--r--   1 user        6903  2月  9日  19:48 .mule.el
-rw-r--r--   1 user         137  2月  9日  19:48 .xinitrc
drwx------   2 user         512  2月  9日  19:48 Mail/
[nippori]/home/sample 168 > 

cp/mv/rm

ファイルをコピーしたり移動したり名前を変更したり削除したりするコマンドである. -iオプションを用いると既存のファイルを削除する場合に,確認のメッセージが表示される. (各自の初期状態では,確認するようにaliasで設定してある)

mkdir/rmdir

ディレクトリを作ったり削除したりするコマンドである. ただし,ディレクトリの中にファイルなどがあるとrmdirコマンドでは削除できない. まるごと削除したい場合には,
[nippori]/home/sample 168 > rm -rf ディレクトリ名
(設定でrmコマンドはいちいち削除するかを確認するように設定してあるので,実際には\rm -rf ディレクトリ名とする)
と行なう.

chmod/chown/chgrp

ファイルに対する権限や所有者を変更するコマンドである. chown,chgrpに関しては,特に必要ではないと思うので詳細は省略する. chmodは,自分,グループ,他者の3種類に分けて,ファイルに対する読み込み,書き込み,実行権限を 与えるかどうかを変更するコマンドである. uが自分,gがグループ(屋代研では全学生がuserグループに属している),oが他者(=自分以外で,同じグループでもない人) を表し,例えば
[nippori]/home/sample 168 > chmod u+rw ファイル名
とすることによって,自分自身がそのファイルに読み書きすることを可能にする.
対象意味 処理意味 権限意味
a全員(u,g,o) +与える r読み込み
u所有者 w書き込み
gグループ -与えない x実行
o他者 xは,ディレクトリの時はアクセス
例:
[nippori]/home/sample 168 > chmod a+rwx ファイル名    : 全ユーザに読み書き実行権限を与える
[nippori]/home/sample 169 > chmod a+rx ディレクトリ名 : 全ユーザに読み込み,アクセス権を与える
[nippori]/home/sample 170 > chmod go-rwx ディレクトリ名 : 自分以外のユーザに一切アクセスさせない
なお,このrwxは上記 ls -l コマンドの出力結果のrwxに対応する.ls -l の時の一番左の -rw-r--r-- の部分は,左から順におおまかには
記号文字の場合の意味-の場合の意味
d/-d : ディレクトリ- : 通常ファイル
r/-r : 所有者が読み込み可能- : 所有者が読み込み不可
w/-w : 所有者が書き込み可能- : 所有者が書き込み不可
x/-r : 所有者が実行可能- : 所有者が実行不可
r/-r : グループが読み込み可能- : グループが読み込み不可
w/-w : グループが書き込み可能- : グループが書き込み不可
x/-r : グループが実行可能- : グループが実行不可
r/-r : 他者が読み込み可能- : 他者が読み込み不可
w/-w : 他者が書き込み可能- : 他者が書き込み不可
x/-r : 他者が実行可能- : 他者が実行不可
という意味を持つ.(これ以外の表記もあるが,それについてはマニュアル参照)

cat/more/less/head/tail

ファイルを見るためのコマンドである.長いファイルを見る場合に,catだと全部一気に表示されて しまうために,moreやless(moreの改良版)などが作られた. (各自の初期状態では,moreと打ってもlessが起動されるようにaliasされている)
また,ファイルの先頭部分だけを見るのがhead,最後の部分だけを見るのがtailである.

fg/bg/jobs/kill

ジョブコントロール.3年の演習でやったはず.
戻る