[ 前のページ ]
[ 次のページ ]
[ 目次 ]
[ 索引 ]
[ DOC Home ]
ディレクトリは,ファイルの名前が格納されたファイルのことです。本章では, 以下のことについて説明します。
Extended File Specificationsを使用する環境で作業を行っている場合, ディレクトリ構造と構文は,ここで説明している従来からの構造とは大きく異なります。 このような環境でのディレクトリ操作については,『OpenVMS Extended File Specifications の手引き』を参照してください。
詳細情報については,次のものを参照してください。
図 5-1に,ディレクトリ階層のサンプルを示します。 このディレクトリ構造の最上部は,マスタ・ ファイル・ディレクトリ(MFD)です。このマスタ・ファイル・ ディレクトリには,[000000]という名前が付けられています。図 5-1 に示すMFDには,ユーザ・ファイル・ ディレクトリMARTINO.DIR,PUBLIC.DIR,JONES.DIRのエントリが登録されています。 最上位ディレクトリ[JONES]は,マスタ・ファイル・ ディレクトリ[000000]中のJONES.DIR;1という名前のユーザ・ファイル・ ディレクトリのことです。
図 5-1に示したサンプル・ ディレクトリ構造は, 本章の多くの例で使用します。
以下は,このディレクトリ構造についての説明です。
ディレクトリを表す場合は,ディレクトリ指定を使用します。ディレクトリ指定は, 最上位ディレクトリ名とそれに続く最大7つのサブディレクトリ名から構成されます。 サブディレクトリ名の前には必ずピリオド(.)が付きます。
ディレクトリ指定は,次の形式になります。
[ディレクトリ.サブディレクトリ]
1つまたは複数の階層のサブディレクトリを追加するには,ピリオドとサブディレクトリを順に追加していきます( 最大7階層)。サブディレクトリは, サブディレクトリ名と1つ上のレベルのディレクトリ名の連結によって, 指定されます。
[ディレクトリ.サブディレクトリ.サブディレクトリ]
ディレクトリ名やサブディレクトリ名には,最大 39の英数字を指定できます。 ファイル名として有効な文字は,同様に,ディレクトリ名としても有効です。 ディレクトリ名は,大括弧([])または山括弧(<>)で囲むようにします。
ディレクトリを作成する場合,CREATE/DIRECTORYコマンドを使用します。 現在のディレクトリの下にサブディレクトリを作成する場合には,現在のディレクトリ名の代わりにピリオドを指定できます。
たとえば,[JONES.LICENSES]ディレクトリを作成する場合には,次のように入力します。
$ CREATE/DIRECTORY [JONES.LICENSES]
現在の省略時のディレクトリが[JONES]の場合,次のように入力します。
$ CREATE/DIRECTORY [.LICENSES]
ディレクトリの中にあるファイルの名前を表示する場合は, DIRECTORYコマンドを使用します。 サブディレクトリの中のファイルを表示する場合には, DIRECTORY コマンドにサブディレクトリ名を指定します。
DIRECTORYコマンドに特定のコマンド修飾子を指定すると,ファイルの名前以外の情報を検索することができます。 DIRECTORY コマンドで使用できる修飾子については, 『OpenVMS DCL Dictionary』またはオンライン・ヘルプを参照してください。
たとえば,[JONES]の中のファイルを表示する場合には,次のように入力します。 この例では,[JONES]の中に2つのサブディレクトリ([JONES.LICENSES] と[JONES.TAXES])と4つの非ディレクトリ・ファイル(STAFF.DIS ,STAFF_VACATIONS.TXT,およびLOGIN.COMの2つのバージョン) が入っています。
$ DIRECTORY
Directory DISK1:[JONES] LICENSES.DIR;1 LOGIN.COM;3 LOGIN.COM;4 STAFF.DIS;3 STAFF_VACATIONS.TXT;2 TAXES.DIR;1 Total of 6 files.
省略時のディレクトリが[JONES]である場合,[JONES.LICENSES]サブディレクトリの内容を表示するには, 次のように入力します。
$ DIRECTORY [.LICENSES]
Directory DISK1:[JONES.LICENSES] DEPT.DAT;3 DOG.DIR;1 MAILING.LIS;6 MARRIAGE.DIR;1 TOTAL.DAT;2 Total of 5 files.
ディレクトリを削除する場合は,次の手順に従ってください。
手順 | 操作 |
---|---|
1 | ディレクトリにファイルが登録されていないことを確認する。
ディレクトリにファイルが登録されているかどうかを調べる場合は, DIRECTORY
コマンドを入力する。
ディレクトリの中にファイルがない場合には,次のようなメッセージが表示される。 %DIRECT-W-NOFILES, no files found |
2 | ディレクトリの中にファイルがある場合には, それを別のディレクトリにコピーして保存する。ファイルを保存しない場合には, ファイルを削除する。ディレクトリにサブディレクトリがある場合には, そのサブディレクトリを調べ,中にあるファイルをコピーまたは削除してから, そのサブディレクトリを削除する。 |
3 | 削除したいディレクトリより1 レベル上のディレクトリに移動する。サブディレクトリは,ディレクトリにファイルとして存在する。 ディレクトリを削除するには, そのディレクトリを指すファイルを削除する。 |
4 | ファイルの削除が許容されるように,ディレクトリのファイル保護を変更する。 マスタ・ファイル・ディレクトリに登録されているディレクトリ・ ファイルを削除するためには,SYSPRV特権が必要。 ファイル保護についての詳細は,第4章を参照のこと。 |
5 | DELETEコマンドを使用してディレクトリ・ ファイルを削除する。 |
次の例に,[JONES.LICENSES]サブディレクトリを削除する方法をまとめて示します。
$ SET DEFAULT [JONES.LICENSES] $ DIRECTORY %DIRECT-W-NOFILES, no files found $ SET DEFAULT [JONES] $ SET SECURITY/PROTECTION=OWNER:D LICENSES.DIR $ DELETE LICENSES.DIR;1
省略時のディレクトリを変更する場合は, SET DEFAULTコマンドを使用します。 新しく変更した省略時の値は,別のSET DEFAULTコマンドを入力するか, システムからログアウトするまで有効です。省略時のサブディレクトリを設定する場合には, それより1レベル上のディレクトリの名前に, サブディレクトリ名を追加します。
次の例では,省略時の設定はディレクトリ[JONES]に設定され,ファイル[JONES]STAFF_VACATIONS.TXT が表示されます。
$ SET DEFAULT [JONES] $ TYPE STAFF_VACATIONS.TXT
次の例では,サブディレクトリ[JONES.TAXES]に格納されているファイルBILLING.DAT が表示されます。
$ SET DEFAULT [JONES.TAXES] $ TYPE BILLING.DAT
このオペレーティング・システムでは,省略時の値を存在しないディスクまたはディレクトリに設定できます。 省略時の値を存在しないディレクトリに設定した後, ファイルを操作しようとすると,ディレクトリが存在しないことを示すメッセージが表示されます。 現在の設定が存在しないディスクまたはディレクトリであるため, 必要な操作を実行できない場合には, 省略時の値を既存のディスクまたはディレクトリに設定してください。
現在の省略時のディレクトリを表示する場合には,次の例に示すように, SHOW DEFAULTコマンドを入力します。
$ SHOW DEFAULT DISK1:[JONES.TAXES] $ SET DEFAULT [PUBLIC] $ SHOW DEFAULT DISK1:[PUBLIC]
SET DEFAULTコマンドを使用すると,省略時のデバイスも変更できます。 省略時の値は,別のSET DEFAULTコマンドを入力するか,システムからログアウトするまで有効です。 コマンドの中にディレクトリを指定しなくても, 省略時に設定したいデバイスを指定することができます。
次の例に,省略時のデバイスの変更方法を示します。
$ SHOW DEFAULT DISK1:[JONES] $ SET DEFAULT DISK2:[GROUP] $ SHOW DEFAULT DISK2:[GROUP]
次の例では,[JONES]というディレクトリが,DISK1とDISK2の両方のデバイスに存在することを示しています。
$ SHOW DEFAULT DISK1:[JONES] $ SET DEFAULT DISK2: $ SHOW DEFAULT DISK2:[JONES]
複数のファイルを入力する場合,それぞれのファイルに完全なファイル指定を指定しないと, ノード名,デバイス名,ディレクトリ名に対して一時的な省略時の値が適用されます。 現在の省略時のディレクトリを一時的な省略時の値として使用する場合は, 空の大括弧を使用します。複数のファイル指定の1 つにノード名を指定した場合には,ダブルコロンを使用して, 一時的な省略時の値を無効にできます。
たとえば,次のコマンドは,[STATS]ディレクトリにある A.LISとB.LISファイルを[RESULTS] ディレクトリにコピーします。
$ COPY [STATS]A.LIS,B.LIS [RESULTS]
この例において,[STATS]はB.LISファイルに対する一時的な省略時のディレクトリとなります。 システムは,[STATS]A.LISの前半のファイル指定を使用して, 省略時のディレクトリを判別します。
次のコマンドは,1つの一時的な省略時のデバイスと2つのディレクトリを使用しています。
$ COPY BASE:[STATS]A.LIS,[TIME]B.LIS,C.LIS [RESULTS]
この例では,3つのファイル(A.LIS,B.LIS,C.LIS)がすべてBASEデバイスからコピーされています。A.LIS ファイルは[STATS]ディレクトリからコピーされ, 残りの2つのファイルは[TIME]ディレクトリからコピーされます。
現在の省略時のディレクトリが[BETA]である場合,次のコマンドは,[ALPHA]TEST.DAT と[BETA]FINAL.DATファイルを[RESULTS]ディレクトリにコピーします。
$ COPY [ALPHA]TEST.DAT,[]FINAL.DAT [RESULTS]
ファイルを完全に保護するためには,ファイルが格納されているディレクトリにも同じ保護が必要です。 たとえば,あるファイルへのアクセスがすべて拒否されているのに, そのファイルのディレクトリへの読み込みアクセスが許可されている場合には, ファイルは存在することを確認できるが中身を見ることができない, という現象が起きます。逆に,あるファイルへのアクセスは許容されているのに, そのファイルのディレクトリ(またはその親ディレクトリ) へのアクセスが拒否されている場合には,そのファイルが存在することさえわかりません。
省略時の設定において,最上位ディレクトリはUICに基づく保護S:RWE,O:RWE,G:RE,W:E を受け,ACLに基づく保護は受けません。サブディレクトリは, 親ディレクトリからUICに基づく保護を受けます。保護コードについての詳細は, 第19.3節を参照してください。
ディレクトリを作成するときにUICに基づく保護を明示的に指定する場合は, CREATE/DIRECTORY コマンドに/PROTECTION修飾子を指定します。ディレクトリのACL はディレクトリ作成時に指定することはできません。既存のディレクトリに対するUIC ベースの保護を変更するには, SET SECURITY /PROTECTIONコマンドをディレクトリ・ファイルに適用します。
ディレクトリへのアクセスを禁止せずにある制限を加えるためには,読み込みアクセスを指定せずに実行アクセスを指定します。 ディレクトリに対する実行アクセス権がある場合には, そのディレクトリに格納されているファイルを調べたり, 読み込むことができます。つまり,ファイル指定がわかっている場合には, そのファイルを調べることができますが,ディレクトリ内のファイルの一覧を表示することはできません。 セキュリティについての詳細は, 『OpenVMS Guide to System Security』を参照してください。
ディレクトリ構造のどこからでも,そのディレクトリ構造の中の別のディレクトリやサブディレクトリを参照することができます。 この場合,参照したいディレクトリやサブディレクトリを名前で直接指定するか, 反復記号( . . . ) やハイフン(-)のワイルドカード文字を使用します。ワイルドカードについての詳細は, 第4.2 節を参照してください。
Extended File Specificationsを使用する環境で作業を行う場合,ワイルドカード文字によるディレクトリ構造の検索については, 『OpenVMS Extended File Specificationsの手引き』を参照してください。
ディレクトリ構造を下向きに検索する場合,反復記号( . . . )ワイルドカード文字を使用します。 現在のディレクトリとその中のすべてのサブディレクトリの中を検索する場合には, 次に示すように反復記号だけを使用します。
$ DIRECTORY [...]
ディレクトリ指定の先頭に反復記号を置くと,現在のディレクトリから検索が開始されます。 ただし,ディレクトリ指定の先頭にピリオドを付けると, 現在のディレクトリより1レベル下のサブディレクトリだけが検索されます。
ディレクトリ構造の中から,すべての最上位ディレクトリとそのサブディレクトリを検索する場合は, アスタリスク(*)の後に反復記号( . . . ) を使用します。
たとえば,現在のディレクトリが[JONES]の場合,[JONES]ディレクトリと[JONES] のすべてのサブディレクトリの中にある FEES.DATという名前を持つすべてのファイルの最新バージョンを表示するためには, 次のように入力します。
$ TYPE [JONES...]FEES.DAT
たとえば,現在の省略時のディレクトリが[JONES]の場合,ディレクトリ指定の末尾が.SALES であるすべてのサブディレクトリにおいて, FEDERAL.LISというファイルの最新バージョンを表示するには,次のように入力します。
$ TYPE [...SALES]FEDERAL.LIS
次のコマンドは,[JONES]と[JONES]のすべてのサブディレクトリにおいてDEPT.DAT という名前を持つすべてのファイルの最新バージョンを表示します。
$ TYPE [...]DEPT.DAT
現在のディレクトリが[JONES]の場合,次のコマンドは,[JONES]より1レベル下の[.LETTERS] サブディレクトリにおいて,MAILING.LISという名前を持つすべてのファイルを検索します。 このとき,[JONES.LICENSES]サブディレクトリは検索されますが,[JONES.LICENSES.MARRIAGE] は検索されません。
$ TYPE [.LICENSES]MAILING.LIS
現在のディレクトリが[JONES]の場合,次のコマンドは,[JONES]ディレクトリの[.LICENSES] サブディレクトリと,[.LICENSES]サブディレクトリの中のすべてのサブディレクトリにおいて,DEPAT.DAT という名前を持つすべてのファイルの最新バージョンを表示します。
$ TYPE [...LICENSES...]DEPT.DAT
次のコマンドは(READALL特権が必要),最大8つのレベルのディレクトリ名( 最上位ディレクトリと7つのサブディレクトリ)を検索します。MFDは検索しません。
$ DIRECTORY [*...]
ディレクトリ構造を上向きに移動する場合は,ハイフン(-)ワイルドカード文字を使用します。1 つのハイフンが現在のディレクトリより1レベル上のディレクトリを表します。 ハイフンの後にディレクトリとサブディレクトリの名前を付ければ, ディレクトリ構造を別の経路で下向きに移動できます。
ハイフンを複数指定することもできます。入力するハイフン数が多すぎて,MFD を越えた場合は,エラー・メッセージが表示されます。
たとえば,現在のディレクトリが[JONES.LICENSES]の場合,[JONES]ディレクトリにおいて,STAFF.DIS の最新バージョンを表示するためには,次のように入力します。
$ TYPE [-]STAFF.DIS
現在のディレクトリが[JONES.LICENSES]の場合,[JONES.TAXES]ディレクトリにおいて,BILLING.DAT の最新バージョンを表示するためには,次のように入力します。
$ TYPE [-.TAXES]BILLING.DAT
次のコマンドは,ディレクトリ構造を2レベル上に移動します。
$ SET DEFAULT [--]
本章では,ディレクトリを名前で指定する方法(名前形式と呼ぶ)について説明してきました。 ただし,ディレクトリはUIC形式で指定することもできます。UIC 形式は,2つの8進数から構成されます。この2つの8進数がユーザ・ ファイル・ディレクトリ(UFD)を指すUIC(利用者識別コード)を表します。 ファイル指定が可能なDCLコマンドのほとんどが,UIC形式のディレクトリ名を認識できます。 リアルタイムResource Sharing Executive (RSX)オペレーティング・システムを操作する場合を除いて,通常,この形式を使用する必要はありません。
UICディレクトリ指定の形式は,次のとおりです。
[グループ,メンバ]
たとえば,[122,1]は,グループ122のメンバ1を表すUICディレクトリ指定です。 通常,UIC形式のディレクトリ名はディレクトリの所有者のUICに対応しますが, 必ず対応するわけではありません。
UICディレクトリを表す場合には,次の規則に従います。
アスタリスク(*)ワイルドカードは UICディレクトリ指定に使用できます。 たとえば,[*,6]は,任意のグループ番号において,メンバ番号6を持つすべてのディレクトリを示します。 検索されるのは,UIC形式のディレクトリだけです。[*,*] というディレクトリ指定は,UIC形式ですべてのディレクトリを検索します。UIC 形式と同様,名前形式のすべてのディレクトリを検索する場合,[*] と指定します。
UIC形式のディレクトリ名は名前形式のディレクトリ名に変換できます。 必要であれば,グループ番号とメンバ番号の左にゼロをいくつか追加して6 文字の名前を作成すれば,名前形式のディレクトリ名となります。
UIC形式と名前形式を組み合わせることはできません。UIC形式の名前を持つディレクトリのサブディレクトリの1 つを指定する場合には,UIC形式を名前形式に変換します。
UICディレクトリ指定[122,1]と次の名前形式とは同じです。
[122001]
[122,1]SUB.DIRというサブディレクトリを表す場合には,[122001.SUB]という名前形式のディレクトリを使用します。
[ 前のページ ]
[ 次のページ ]
[ 目次 ]
[ 索引 ]
[ DOC Home ]