ファイル操作(その2)

ファイル

ファイル名

256文字、英字(アルファベット)、数字、記号。

階層ファイル構造(hierarchical file structure)

一つの計算機システムには多数のファイルが存在します。そのため、ファイルを階層的にグループに分けて取り扱います。電子メールのドメイン名も階層的構造をもってました。(70ページ参照)その他、計算機の世界以外でも階層的なグループ分けをしています。

例)電話番号: 市外局番−市内局番−戸別番号、とか、市外局番−組織番号−内線番号など。千葉大学は、043-290-××××。

例)カソリック教会の組織:(hierarchyの語源。頂点はローマ法王。詳しくは世界史の教科書をみてください。)

例)郵便の宛名:日本国 千葉県 千葉市 稲毛区 弥生町 1番 33号 千葉大学 理学部 西崎真也

ファイルのも同じようになってます。簡単にまとめると次のようになります。

パス名

ファイルやディレクトリを指定するための表現法です。

ルートディレクトリは / と書きます。あとは、親のディレクトリ名から順に、スラッシュ / で区切りながら並べて書いていきます。そして、ファイルのパス名なら、最後にファイル名を書きます。

下の図の場合、

このように、ルートディレクトリからたどることによって指定するパス名を絶対パス名と呼びます。(後で、ルートディレクトリからはたどらない「相対パス名」を紹介します。)

カレントディレクトリ

カレントディレクトリとは、「現在作業しているディレクトリ」です。計算機で動作しているプログラムは、どこかのディレクトリに居ます。

コマンドpwd

カレントディレクトリは、pwdというコマンドにより表示できます。

    sino % pwd

前に述べた絶対パス名は、ルートディレクトリからたどらないといけませんでした。そのために場合によっては大変長くなる場合があります。そのようなときは、カレントディレクトリからたどってパス名を書く方法もあります。

カレントディレクトリから見て、子孫にあたるファイルやディレクトリのパス名は、親から子へスラッシュ / で区切りながら順番に書いていけばよいのです。最初に、スラッシュを付けないという点が、絶対パス名との違いです。例えば、前の図において、カレントディレクトリが staffというディレクトリであると仮定すると、myfirst.docのパス名は、

    nisizaki/myfirst.doc

となるわけです。

また、カレントディレクトリの親ディレクトリは、ピリオドピリオド .. と表わされることになってます。これを使うと、祖先の方向にもたどることができます。また、カレントディレクトリをピリオド . により表示することも可能です。従って、前の例は、

   ./nisizaki/myfirst.doc

と書くことも可能です。

ホームディレクトリ

ログインしたときのディレクトリをホームディレクトリと呼びます。これは各ユーザーに応じて一つずつ用意されています。自分のホームディレクトリは、チルダ ~ により表わされることになってます。(ユーザー名が例えば、 nisizaki という)ユーザーのホームディレクトリは、チルダ ユーザー名(~nisizaki)と表わされることになってます。パス名はホームディレクトリからたどることもできます。例えば、前の例のmyfirst.docであるなら、ホームディレクトリからたどったパス名は、

    ~nisizaki/myfirst.doc

となります。ユーザーnishizakiの場合であると、単に

    ~/myfirst.doc

でもよいわけです。

相対パス名

カレントディレクトリやホームディレクトリからたどって表わすパス名を相対パス名と呼びます。

通なお話:特殊なファイルとしてのディレクトリ

ディレクトリも実を言うと、ファイルの一種です。もちろん、文書ファイルではありません。機械語プログラムのファイルと同様に、catをしてはいけません。画面が乱れてしまいます。


コマンドcd (カレントディレクトリの移動)

cd パス名

によりカレントディレクトリを変更することができます。ホームディレクトリに戻るためには、

cd ~

と入力すればよいわけです。親ディレクトリに移動するためには、

cd ..

と入力すればよいわけです。


コマンドmkdir (ディレクトリの作成)

mkdir パス名

により新しいディレクトリを作ることができます。カレントディレクトリに「pascal」という名のディレクトリを作りたいときには、

mkdir pascal

とか

mkdir ./pascal

とすればよいわけです。ホームディレクトリの直下に「kadai」という名のディレクトリを作りたいときには、

mkdir ~/kadai

とすればよいわけです。


コマンドrmdir(ディレクトリの消去)と rm -r

rmdir パス名

によりパス名で指定するディレクトリを消去することができます。カレントディレクトリにあるディレクトリpascalを消去したいときには、

rmdir pascal

でよいわけです。ホームディレクトリの子ディレクトリkadaiを消去するためには、

rmdir ~/kadai

でよいわけです。

このコマンドは、ファイルもディレクトリも含んでいないディレクトリしか消去できません。(これは不用意にファイルを消してしまわないためです。)

ディレクトリを、子孫のファイルやディレクトリごと消去してしまいたいときには、

  rm -r ディレクトリ名

というコマンドを使用してください。途中、確認のメッセージで消去するファイルやディレクトリを確認しながら消去されます。


コマンドls

lsは、ディレクトリに属するファイルやディレクトリの一覧を表示するプログラムです。

ls パス名

により、パス名がディレクトリを指定しているのなら、その中のものの一覧を表示します。