Unixのファイルの相互利用

文中、角カッコ([])はコマンド名などを 示すためのものです。文字としては無視してください。

目次

コマンド名索引

1.1 Unixのファイル名の指定のしかた

Unixでは、ファイルを木(tree)構造で管理している。 ファイル名を書くときは、木の各階層の名前をスラッシュ(/)で区切って示す。 Unix上で作業しているときは、現在のディレクトリ(カレントディレクトリ) がある。カレントディレクトリの変更は [cd]コマンドでできる。 loginすると、 そのユーザーのホームディレクトリがカレントディレクトリ になる。一般ユーザーは、ホームディレクトリの下にファイルやディレクトリ を作ることができるが、その他のところに作ることができないように 設定されていることが多い。(システム管理者は別である。)

ファイル名の指定方法として、次のような書き方を覚えておこう。

ただし、(3)(4)のような波型(ティルデ、端末によっては上線、オーバーバー)を 使った指定はUnix一般に通用するものではなく、 シェルというコマンド解釈プログラムの約束である。 C-shell (csh)あるいはそれの改造版であるtcshで通用することは確かだが、 その他のシェルについてはそのシェルのマニュアルで確認していただきたい。 一方、Fortranなど多くのプログラム言語でファイルを開く [別記事参照]際に、 ファイル名にこの文字を使っても、ホームディレクトリとは解釈せず、 実際にその文字が含まれているファイルを探すので注意。)

Unixでは、各ファイルに持ち主が設定されており、本来はそれはファイルのある ディレクトリとは関係ない。しかし実際には、管理者以外のユーザーの ファイルはその人のホームディレクトリの下にあることが多い。

教材として使うプログラム例やその入力となるデータ、 説明のための画像サンプルなどは、教師用のユーザ名のホームディレクトリの 下のファイルとして用意することがあるので、必要に応じて見たり、 コピーしたりしてほしい。

1.2 ファイルの読み書き許可

ファイルの持ち主は、ファイルを他人が読めるようにも、読めないようにも 設定することができる。 [chmod]というコマンドを使う。 多くのUnixシステムでは、特に指定しないと、たいていのファイル (受信したメイルなどを除く)は、他人から読める設定になっている。 読み書き許可の状況を見るには、次のように [ls]コマンドの[-l]オプションを 使う。

% ls -l

注: 左端の[%]はユーザが入力する文字ではない。 計算機(C-shell)が出すプロンプトで、以下この形で示すが、 一定ではなく、各システムごとに管理者が設定しており、 ユーザーがシェルの初期設定ファイルを変えて変更することができる。

さらに、[-g]オプションを追加すると、ファイルの属するグループ名も表示する。 たとえば(実際の例を改造した架空の例である)、

% ls -lg ~student/PostScript/*
をやってみると、
-rw-r--r--  1 student  users       15121 May  6 19:17 map.ps
-rw-r--r--  1 student  users       14064 May  6 19:14 graph.ps
が見える。

この場合、[student]がユーザ名、[users](オプション[-g]で表示された)が グループ名、次の数値はファイルの大きさ(バイト数)、それから作成日時、 ファイル名であるが、読み書き許可の状況は左端の[-rw-r--r--]に示されている。 この文字列の意味は、

である。 [rwx]が3回繰り返されるが、これは、それぞれ、持ち主自身、同じグループの人、 その他の人がそのファイルに対して持つ権限を示す。 上の例で言えば、[map.ps]に対しては、ユーザ[student]は読み書きすることが でき、その他のユーザは、グループ[users]に属していてもいなくても、 読むことだけができる。

たとえば、このファイルをカレントディレクトリに[tizu.ps]と いう名前でコピーしたいとすれば、 [cp]コマンドを使って

% cp ~student/PostScript/map.ps tizu.ps
とすればよいが、このとき、[map.ps]に読む権限が与えられていなかったり、 カレントディレクトリに書く権限がないと、エラーになる。

コピーしなくても、catコマンドやless コマンドで見たり、edemacsで編集に はいることもできる。ただし、編集中に名前を変えずに保存しようとすると、 書き込み許可が出ていないとエラーになる。


1996-06-29; 2000-05-18; 2002-07-11
増田 耕一 (MASUDA Kooiti)

[この文書の目次へ] [フィルター型プログラム教材の目次へ]