ファイルとディレクトリ


以下の 演習では、コマンドツールを 使用します。 ワークスペースメニューから コマンドツールを起動して、 マウスの クリックで ウィンドウへの タイプ入力が できるように しておきましょう。

ファイルの基本概念

ファイルとは

ファイルは、 UNIXオペレーティングシステムの 基本単位です。 ファイルには、例えば次のようなものがあります。

ファイルとディレクトリ

ディレクトリは、 他のファイルを 保持している ファイルです。 ディレクトリは、 さらに 他のディレクトリを 含むことも できます。 あるディレクトリに 含まれている ファイルを 扱うために、 そのディレクトリへ 移ることが できます。

cal コマンドは、 bin という ディレクトリに 置かれています。 bin は、 usr という ディレクトリに、 usr は、 /(スラッシュ)という ディレクトリに 置かれています。 / 記号を ディレクトリと ファイルの 名前を 分離するために 使用します。 そこで、cal の 位置は 次のように 表されます。

/usr/bin/cal

パス名:絶対パスと相対パス

カレンダー プログラムの ファイル名は、 cal です。 /usr/bin/cal は、 カレンダー プログラムの パス名です。 すなわち、 ファイル名(cal)と その位置(/usr/bin)で 構成されています。

カレンダー プログラムを 実行するには、 次のようにします。

sw99% /usr/bin/cal
     1999年 11月
日 月 火 水 木 金 土
    1  2  3  4  5  6
 7  8  9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
(上の 出力 結果とは 違う かも しれません。 コマンドを 実行した 月の カレンダーが 表示されます。)

/usr/bin/cal は絶対パス名です。

ファイルを 使用するとき、 いつも 完全な 絶対パス名を 指定しなければ ならないとすると、 とても 不便です。 相対パス名は ファイルの 位置を 全ファイル 階層の 中ではなく、 階層の 中の 現在位置からの 相対位置で 表します。

もし、 仮に 現在 あなたが /usr の ディレクトリに いるとしたら、 cal を 指定するには、 bin/cal だけでよく、 /usr/bin の ディレクトリに いるなら、 cal だけで よいということに なります。 (その ディレクトリへ 移る 方法に ついては 後に 説明します。)

ファイルシステム

ファイルシステムは、 たくさんの ファイルや ディレクトリを 階層構造に まとめたものです。ファルマネージャを 使うと、 この階層構造を 視覚的に 確かめる ことが できます。

ホームディレクトリ

利用者には それぞれ ホームディレクトリがあり、 ログインすると そこへ 位置づけられます。 そこは 利用者固有の ファイルシステムの 開始位置で、 利用者自身の ファイルを 含んでいます。

あなたの ホームディレクトリが 何か 調べるには、 次のように します。

sw99% cd
sw99% pwd
/home/99ss999 
(あなたの ホームディレクトリが 表示されます。 場合によっては cdだけで 表示される かもしれません。)
あるいは、echo $HOME と入力しても出てきます。このコマンドは HOME という名前の環境変数を出力するものです。

ファイルの操作

ここでは、 ディレクトリの 変更、 ファイル階層内での 位置を 知る 方法、 ディレクトリの 内容の 表示、 ファイルや ディレクトリの 作成、 削除、 移動、 コピーなどに ついて 説明します。

カレントディレクトリの変更:cd

cdコマンドは ディレクトリ名を 引数 (パラメータ) にして、 以下の ように 指定します。
cd directory
例えば、/usr/bin ディレクトリへ移動するには、次のようにします。
sw99% cd /usr/bin
sw99% cal
実は、/usr/bin へ移動しなくても calだけでカレンダーが出てきます。 これは シェル変数である path がそのように設定してあるためです。

引数なしで cdコマンドを 実行すると、 ホームディレクトリに 移動します。

sw99% cd

現在位置を知る:pwd

ディレクトリを 変更して 位置が わからなく なったときは、 pwd (print working directory) コマンドで 調べます。

簡略記法:~ . ..

ホームディレクトリを 簡略に ~ (tilde)と表します。 (~ のキーは Shift+^ あたりにあります) あなたの ホームディレクトリに file という 名前の ファイルが あったら、 ~/file と書くことができます。 別の 利用者 99ss888 の ホームディレクトリを ~99ss888 と 書く ことも できます。 99ss888 の ホームディレクトリに fileという 名前の ファイルが あったら、 ~99ss888/file となります。

現在いるディレクトリを . (dot) で表わします。

現在いる ディレクトリの 上の (親の) ディレクトリを .. (double dot) と 表すことが できます。

sw99% cd
sw99% pwd
/home/99ss999
sw99% cd ..
sw99% pwd
/home

新しいディレクトリの作成:mkdir

mkdir directory で 新しい ディレクトリを 作成できます。

あなたの ホームディレクトリの 下に letters という ディレクトリを 作るには

sw99% cd
sw99% mkdir letters
とします。

ディレクトリの削除:rmdir

rmdir はmkdir と 反対に、 ディレクトリを 削除します。

rmdir directory のようにします。

sw99% rmdir ~/letters
ディレクトリを 削除するには その中が 空で なければ なりません。

ディレクトリの内容調査:ls

ls コマンドは ディレクトリに 含まれている ファイルを 表示します。

ls directory のように記述します。

sw99% ls /var
adm                    mail                   saf
audit                  mle                    spool
cron                   news ...
... 
directory を 指定しなければ、 カレントディレクトリの 内容を 表示します。

ファイルの 中には、 隠し ファイルと 呼ばれる 普通には 見えない ファイルが あります。 隠し ファイルは ドット (.) で 始まります。 ls -a と すると、 この隠し ファイルも 見ることが できます。

ファイルの 情報を 詳しく 調べるには ls -l を 使います。 この コマンドで 得られる 情報は、 パーミッション (許可)、 リンク、 所有者 (オーナ)、 サイズ、 変更日時、 ファイル名です。

コマンドのうち -(マイナス記号) で始まる 部分を オプションと 呼びます。 オプションは ls -al のように 二つ以上を 組み合わせる ことも できます。 ある コマンドに ついて どのような オプションが 使えるかは、 man {コマンド名} で マニュアルを 見れば わかります。

簡略記法:* と ?

一度に 複数の ファイルを 指定するには、 ワイルドカードを 使います。 アスタリスク (*) は 任意の 文字列を 表します。 次の例では、 /usr/bin の ディレクトリに ある、 f で 始まる ファイルを リストします。
sw99% ls /usr/bin/f*
/usr/bin/factor            /usr/bin/fmtmsg
/usr/bin/false             /usr/bin/fnattr
/usr/bin/fc  ...
...
また、 次の例では、 /usr/bin の ディレクトリに ある、 f で 始まり t で 終わる ファイルを リストします。
sw99% ls /usr/bin/f*t
/usr/bin/fdformat  /usr/bin/fmt       /usr/bin/fnlist
疑問符 (?) は、 ファイル名の 任意の 1文字を 表します。 次の 例では、 /usr/bin の ディレクトリに ある、 f で 始まり t で 終わる 8文字の ファイルを リストします。
sw99% ls /usr/bin/f??????t
/usr/bin/fdformat

ファイルを見る:more, cat

more は ファイルを 1画面分 表示し、 ファイルが 長くて 表示しきれない 時は、
--More--(30%)

と 表示します。 ここで 数字は 表示済みの 量です。 次の 画面を 見るときは スペースを 押します。 終わりに するには q です。 h を 押すと 使用法の 説明が 出ます(英文)。 より 詳しい 使用方法が 必要の場合は、 more を終了し、 man more で オンラインマニュアルを 調べてください。

cat も ファイルの 内容を 表示しますが、 ページ毎 ではなく 一度に 全部 表示します。

sw99% cat /etc/motd
Sun Microsystems Inc.	SunOS 5.5.1	Generic	May 1996

ファイルやディレクトリのコピー

ファイルを コピーするには cp コマンドを 使います。
cp 元のファイル [コピー先ファイル | コピー先ディレクトリ]
のように 記述します。

ディレクトリを そっくり コピーする には cp -r コマンドを 使います。

cp -r 元のディレクトリ コピー先ディレクトリ
のように 記述します。

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

ファイルや ディレクトリを 移動するには mv コマンドを 使います。
mv 元のファイル [移動先ファイル | 移動先ディレクトリ]
のように記述します。

ファイルの削除

ファイルを 削除するには rm コマンドを 使います。
rm ファイル
のように 記述します。

ファイルの作成

ファイルを 作成するには 何通りかの 方法が あります。 ここでは、最後の textedit を使う方法を示します。
sw99% cd
sw99% textedit hello &
上のコマンドで hello というファイルを作成し、 テキストエディタの中で以下の文を作成してみよう。
Hello, Computer!
My name is Hanako.
できたら、テキストエディタのファイルメニューで保存して エディタを終了して下さい。

練習:

  1. 新しいディレクトリ ~/core-info を作成しなさい。
  2. 先に作成した hello を core-info に移動しなさい。
  3. カレントディレクトリを core-info に変更しなさい。
  4. hello を hello2 にコピーしなさい。
以上を実行するためのコマンドを、担当教官宛のメールで解答しなさい。

付録:

Windows95/98/Me パソコンで以上を練習するには、2つの方法が あります。ひとつは "MS-DOS プロンプト"(DOS窓)を使う方法です。 但し、この方法だと ディレクトリの区切りが / でなく \ であるなど、 使い勝手が悪くなります。そこで、djgpp と bash を使う方法を 紹介します。

djgpp は DOS の上で gcc (GNU C compiler) を利用するための 枠組みです。コンパイラー自体だけでなく、コンパイル済の プログラムが数多く提供されています。

  1. エクスプローラを使って C:\ に新しいフォルダ djgpp を 作成します。
  2. 情報科学コースの FTP サーバから をダウンロードして c:\djgpp に保存します。
  3. スタートメニューから MS-DOS プロンプトを起動し、
    > cd c:\djgpp
    > unzip32 fil40b.zip
    ....
    > unzip32 bsh204b.zip
    ....
    
    のようにして、展開します。
  4. メモ帳を起動し、c:\autoexec.bat を編集します。 (間違ってデータを消去してしまうと、パソコンが起動しなくなる 恐れもあります。autoexec.bak などの名前でコピーを作っておくと よいでしょう)
    SET PATH= で始まる行があれば、その最後に
    ;c:\djgpp\bin
    を追加します。

    なければ、

    SET PATH=c:\djgpp\bin
    という行を追加します。
  5. アプリケーションを終了して、Windows を再起動します。
  6. MS-DOS プロンプトを起動して、bash と入力します。 これで、ディレクトリの区切りが / となり、ls などの コマンドが UNIX のものと同じようになります。
  7. デスクトップに bash へのショートカットを作成しておくと よいかもしれません。また、作業ディレクトリを別に 用意しておくほうがよいでしょう。
  8. Bash の終了には、コマンドラインに exit を入力し、次にウィンドウの右上の x をクリックします。