UNIXファイルシステムの基礎


●UNIXのファイルシステムは,Windowsのように,フォルダ(ディレクトリ)の中に
 更にファイルやディレクトリが入っているという階層構造になっている。ここでは,
 UNIXファイルシステムの基礎を学習する。
 
  1. UNIXのファイルシステムと同じように,フォルダ(ディレクトリとも言う)の中に,更に
    他のファイルやフォルダが入っているという,階層構造になっている。たとえば,下の
    左図の場合,
    ・hobbyディレクトリの中に,pic ディレクトリと musicディレクトリが入っている
    ・picディレクトリの中には,さらに mypicsというディレクトリが入っている
    ・そのmypicsディレクトリの中には,さらにa.jpg,b.jpg,c.jpgという3個のファイルが入っている
    ・一方,musicディレクトリの中には,m.mpg,n.mpgという2個のファイルが入っている
    ということが言える。
    この階層構造を図式化したのが,下の右図である。左端を根とした木のように見えるので,
    このような形で表現できる階層構造を,木構造などと呼ぶ。
    この図では,picディレクトリの中にmypicsディレクトリがある。このとき,
     ・picディレクトリは,mypicsディレクトリの親ディレクトリである
     ・mypicsディレクトリは,picディレクトリの子ディレクトリである
    と言う。つまり「含む方を親」「含まれる方を子」と考える。ディレクトリの親子関係は重
    要なので,よく憶えておこう。

    問題:(1)上図で,hobbyの子ディレクトリを総てあげよ。(2)picディレクトリの親ディレクトリは何か。(3)musicディレクトリの親ディレクトリは何か。


  2. さて,UNIXのファイルシステムは,一般には下図のようなディレクトリ構造になっている。

    この図にあるように,UNIXファイルシステムは,ルートディレクトリと呼ばれる特別なディレクトリ
    を"根(root)"とした木構造になっている。ルートディレクトリの名前は,単なるスラッシュ / である。

    ルートディレクトリの直下には,bin,etc,home,usr,sbin,tmp,mntなどの特別な役割を持つ
    ディレクトリが用意されている。そして,homeディレクトリの中に,各ユーザ用のディクトリ(ホーム
    ディレクトリ
    と呼ぶ)が用意されている。たとえば,大学のシステムでは,大城のホームディレクトリは,
    homeディレクトリの中のteacherディレクトリの中のohshiroディレクトリである。また,2003年4月に
    入学した環境情報学科の学生のホームディレクトリは,homeディレクトリの中のenv03ディレクトリの
    中に各自のものが用意されている。

    なお,UNIXでは,ファイル名やディレクトリ名は,大文字・小文字を区別するので注意すること。
    同じ名前のファイルやディレクトリが同じディレクトリの直下にあってはならない。しかし,たとえば,
    nameとNameでは別の名前として扱われるため,同じディレクトリの中にnameというファイルとName
    というファイルが共存できる。

  3. ファイルシステム上の特定のファイルを指定するには,ルートディレクトリ(/)からそのファイルへの経路
    (パス,path)を利用する。

    たとえば,上図の例だと,ohshiroのホームページのindex.htmlファイルは,ルートディレクトリからの
    経路を考えると下図(a)のようになる。

    そこで,ディレクトリとディレクトリ,ディレクトリとファイルの間をスラッシュで区切ると,上図(2)のように
     /home/teacher/ohshiro/public_html/index.html
    と経路を表現できる。これが,index.htmlへの経路を表現した物で,ファイル(またはディレクトリ)のパス名と言う。
    特に,上図(2)のように,ルートディレクトリからの経路を書いた物を,絶対パス完全パスフルパス(full path)
    などと呼ぶ,

    なお,ルートディレクトリの名称が / ならば,上記の絶対パス名は
     //home/teacher/ohshiro/public_html/index.html
    という具合に,2重のスラッシュで始まりそうだが,絶対パスを各場合には,先頭のルートディレクトリ名/は省略する
    ことになっている。

    問題:(1)自分のホームページのindex.htmlファイルの絶対パス名を書け。(2)上図のbinディレクトリにあるlsコマンドファイルの絶対パス名を書け。

  4. 上述したように,絶対パス名はルートディレクトリから特定のファイル/ディレクトリへの経路なら,
    有る特定のディレクトリから,ある別のファイル/ディレクトリまでの経路を考えることができる。
    このように,ルートディレクトリ以外のディレクトリを起点としたパス名を,相対パス名と呼ぶ。
    たとえば,ohshiroのホームディレクトリを起点とした,ohshiroのindex.htmlファイルへの相対パス
    名は,下図(1)のように,
     public_html/index.html
    と表現できる。相対パス名の場合は,先頭にスラッシュはつけない

    ところで,相対パス名を考えるとき,親ディレクトリ方向にもパス名をたどれるとファイルシステム
    上の総てのディレクトリ/ファイルを相対パス名で指定できる。そのため,親ディレクトリを2つの連
    続したピリオド( .. )で表現できることになっている


    この..を使うと,ohshiroのホームディレクトリを起点にした場合に,homeディレクトリは上図(2)の
    ように
      ../..
    という相対パス名で表現できる。また,ohshiroのホームディレクトリを起点にした場合に,susaki先
    生の index.htmlファイルは,上図(3)のように
      ../susaki/public_html/index.html
    という相対パス名で表現できる。

  5. さて,親ディレクトリは .. で略記できることがわかった。同様に,各ユーザ自身のホームディレクトリ
    も略記できるようになっているのである。ホームディレクトリは,チルダ記号 ~ で略記することができる

    したがって,ユーザohshiroは,上図(1)から(3)を,~を使ってそれぞれ
     (1) ~/public_html/index.html
     (2) ~/../..
     (3) ~/../susaki/public_html/index.html
    という相対パス名で書くことが出来る。