디렉토리는 파일의 이름과 위치를 포함하는 특별한 종류의 파일입니다. 예를 들면, 시스템 관리자가 사용자 계정을 만들 때 사용자 이름과 같은 이름의 디렉토리도 만들어집니다. 사용자 이름이 JONES라면 디렉토리는 [JONES]일 것입니다.
하위 디렉토리는 다른 디렉토리 또는 하위 디렉토리 파일 안에 있는 디렉토리 파일입니다. 하위 디렉토리를 사용하여 파일을 사용하기에 유용한 그룹으로 정리할 수 있습니다. 예를 들면, 메모를 포함하는 하위 디렉토리와 상태 보고서를 위한 하위 디렉토리를 만들 수 있습니다.
하위 디렉토리는 디렉토리와 마찬가지로 그 하위 디렉토리 안에 목록으로 작성된 파일의 이름과 포인터가 들어 있습니다. 한 하위 디렉토리 안에 다른 하위 디렉토리를 포함시키고 다시 그 하위 디렉토리에 다른 디렉토리를 포함시킬 수 있습니다. 이러한 구조(최상위 디렉토리와 하위 디렉토리)를
계층 디렉토리 구조라고 합니다.
일반적으로 사용자가 액세스하는 파일은 디스크에 저장됩니다. 각 디스크에는
마스터 파일 디렉토리(MFD)라는 주 디렉토리가 있고 MFD에는
사용자 파일 디렉토리(UFD) 목록이 포함되어 있습니다. UFD는 사용자의 최상위 디렉토리가 됩니다. 대부분의 경우 시스템 상의 각 사용자에 대해 하나의 UFD가 존재합니다. UFD에는 사용자 디렉토리에 목록으로 작성된 파일의 이름 및 파일에 대한 포인터가 포함되어 있습니다. 최상위 디렉토리는 대개
프로세스 기본 디렉토리입니다. 계정을 달리 수정하지 않는 한 로그인할 때 프로세스 기본 디렉토리가 자동으로 최상위 디렉토리가 됩니다.
전체 파일 지정의 장치(디스크) 및 디렉토리 구성 요소를
파일 경로라고 합니다. 파일 경로에 파일 이름과 파일 형식 및 버전을 결합하면 전체 파일 지정이 됩니다. 전체 파일 지정에는 파일을 찾는 데 필요한 모든 정보가 들어 있습니다.
1
부분 파일 지정에 대한 기본값 적용하는 방법에 대한 내용은
Guide to OpenVMS File Applications를 참조하십시오.
이 장에서는 디렉토리를 사용하여 파일을 정리하고 관리하는 방법에 대해 설명합니다. 다음과 같은 정보가 포함되어 있습니다.
주) 이 장에 나오는 보기 중에 노드 이름을 지정하는 보기에 액세스 제어 문자열이 없는 경우도 있습니다. 이는 사용자가 프록시 계정을 통해 원격 시스템 상에서 작업을 수행할 수 있기 때문입니다.
확장 파일 지정 환경에서 작업하는 경우 디렉토리 구조와 구문이 여기에 설명된 일반 구조와 다를 수 있습니다. 그와 같은 환경의 디렉토리 사용에 대한 내용은
5장을 참조하십시오.
그림 4-1은 샘플 디렉토리 계층입니다. 구조의 최상위는 마스터 파일 디렉토리(MFD)이며 디렉토리 이름은 [000000]입니다. 이 샘플에서 MFD에는 MARTINO.DIR, PUBLIC.DIR 및 JONES.DIR를 비롯한 사용자 파일 디렉토리 항목이 있습니다. 최상위 디렉토리인 [JONES]는 [000000]에 있는 JONES.DIR;1이란 이름의 사용자 파일 디렉토리입니다.
이 장에 나오는 많은 보기들은
그림 4-1의 샘플디렉토리 구조를 기반으로 한 것입니다.
그림 4-1 디렉토리 구조
이 디렉토리 구조에 대해 다음 사항에 주의하십시오.
사용자가 JONES인 것으로 가정합니다. 로그인하면 사용자의
기본 디렉토리인 [JONES]에 위치합니다.
[JONES]에는 4개의 비디렉토리 파일이 있습니다.
[JONES]에는 또한 다음 2개의 디렉토리 파일이 있습니다.
디렉토리 파일 LICENSES.DIR;1은 [JONES.LICENSES] 하위 디렉토리를 가리킵니다.
TAXES.DIR;1은 하위 디렉토리 [JONES.TAXES]를 가리킵니다.
[JONES.LICENSES] 하위 디렉토리에는 3개의 비디렉토리 파일과 2개의 디렉토리 파일이 있습니다.
디렉토리 파일 DOG.DIR;1은 하위 디렉토리 [JONES.LICENSES.DOG]를 가리킵니다.
MARRIAGE.DIR은 [JONES.LICENSES.MARRIAGE] 하위 디렉토리를 가리킵니다.
파일 지정의 디렉토리 구성 요소는 몇 개의 하위 디렉토리 이름이 뒤에 올 수 있는 UDF와 같은 최상위 디렉토리 이름으로 이루어집니다. 하위 디렉토리 이름은 마침표(.)로 구분합니다.
OpenVMS Alpha 버전 7.2의 이전 버전과 OpenVMS VAX의 모든 버전은 UFD와 7개 이하의 하위 디렉토리 이름을 포함하는 디렉토리 구성 요소를 지원합니다. OpenVMS Alpha 버전 7.2 이상은 하나의 디렉토리 구성 요소에 UFD와 하위 디렉토리를 합하여 255개의 이름을 지원합니다.
하나 이상의 하위 디렉토리 수준을 추가하려면 마침표와 각 하위 디렉토리를 위한 디렉토리 이름을 추가합니다. 다른 하위 디렉토리의 하위 디렉토리는 계층에서 한 수준 위의 하위 디렉토리 이름에 마침표와 하위 디렉토리 이름을 붙여 지정합니다.
OpenVMS Alpha 버전 7.2의 이전 버전, OpenVMS VAX 모든 버전, ODS-2 디스크를 사용하는 OpenVMS Alpha 시스템 상에서는 하위 디렉토리 이름이 39자를 넘으면 안됩니다.
ODS-5 디스크를 사용하는 OpenVMS Alpha 버전 7.2 이상에서는 하위 디렉토리가 <subdirectory-name>.DIR;1로 저장되므로 하위 디렉토리 이름이 파일 이름 제한에 의해 제한됩니다. 파일 지정의 디렉토리 및 루트 구성 요소의 총 문자 수는 구분 기호인 중괄호와 마침표를 제외하고 512개를 초과하지 말아야 합니다.
디렉토리를 만들려면 CREATE/DIRECTORY 명령을 입력합니다. 현재 디렉토리 아래에 하위 디렉토리를 만들 경우에는 현재 디렉토리 이름을 지정하지 않고 마침표와 하위 디렉토리 이름을 입력할 수 있습니다.
다음 보기에서는 [JONES.TAXES] 디렉토리가 생성됩니다.
$ CREATE/DIRECTORY [JONES.TAXES]
다음 보기에서는 현재 기본 디렉토리가 [JONES]이고 하위 디렉토리 [JONES.LICENSES]가 생성됩니다.
$ CREATE/DIRECTORY [.LICENSES]
디렉토리에 있는 파일들의 이름을 표시하려면 DCL 프롬프트에서 DIRECTORY 명령을 입력합니다. 하위 디렉토리에 있는 파일 목록을 표시하려면 DIRECTORY 명령을 입력하고 하위 디렉토리 이름 앞에 마침표를 붙여 입력합니다.
DIRECTORY 명령과 함께 특정 명령 한정자를 사용하는 경우에는 파일 이름 외의 정보를 검색할 수 있습니다. DIRECTORY 명령 한정자에 대한 자세한 내용은
OpenVMS DCL Dictionary 또는 온라인 도움말을 참조하십시오.
다음 보기는 [JONES] 디렉토리에 있는 파일 목록을 표시합니다. [JONES] 디렉토리에는 [JONES.LICENSES]와 [JONES.TAXES]라는 2개의 하위 디렉토리와 4개의 비디렉토리 파일인 STAFF.DIS, STAFF_VACATIONS.TXT 및 2개의 LOGIN.COM 버전이 포함되어 있습니다.
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 DISK1:[JONES.LICENSES]
DEPT.DAT;3
DOG.DIR;1
MAILING.LIS;6
MARRIAGE.DIR;1
TOTAL.DAT;2
Total of 5 files.
디렉토리를 삭제하려면 다음 절차를 사용합니다.
|
|
|
|
|
디렉토리에 파일이 없는지 확인합니다. 디렉토리에 파일이 있는지 알아보려면 DIRECTORY 명령을 사용합니다.
디렉토리에 파일이 없으면 다음 메시지가 표시됩니다.
%DIRECT-W-NOFILES, no files found
|
|
|
디렉토리가 파일을 포함하고 있으면, 그 파일을 다른 디렉토리로 복사하여 저장하거나 파일을 저장할 필요가 없다면 파일을 삭제합니다. 디렉토리가 하위 디렉토리를 포함하고 있으면, 그 하위 디렉토리를 확인하여 그 안에 포함된 파일을 복사하거나 삭제한 다음 하위 디렉토리를 삭제합니다.
|
|
|
삭제하려는 디렉토리의 한 수준 위로 디렉토리를 이동합니다. 디렉토리에 하위 디렉토리가 파일처럼 존재하는 것을 기억하십시오. 디렉토리를 삭제할 때 디렉토리를 선택하고 파일을 삭제합니다.
|
|
|
파일을 삭제하려면 디렉토리의 파일 보호를 변경해야 합니다. 마스터 파일 디렉토리의 디렉토리 파일을 삭제하려면 SYSPRV 특권이 필요합니다. 파일 보호에 대한 자세한 내용은 3장을 참조하십시오.
|
|
|
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 명령을 입력하거나 로그아웃할 때까지는 새 기본값이 유효합니다. 하위 디렉토리를 기본값으로 설정하려면 하위 디렉토리 이름을 그보다 한 수준 위의 디렉토리 이름에 추가합니다.
다음 보기에서는 [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]
파일 목록을 입력하고 목록에 포함된 각 파일에 대해 전체 파일 지정을 하지 않으면 노드 이름, 장치 이름, 디렉토리 이름에 임시 기본값이 적용됩니다. 임시 기본값 대신 현재의 기본 디렉토리를 사용하려면 빈 대괄호를 사용합니다. 목록에 표시된 파일에 노드 이름이 포함된 경우에는 2개의 콜론을 사용하여 임시 기본값을 무시할 수 있습니다.
다음 보기에서는 A.LIS와 B.LIS가 [STATS] 디렉토리에서 [RESULTS] 디렉토리로 복사됩니다.
$ COPY [STATS]A.LIS,B.LIS [RESULTS]
시스템에서는 [STATS]A.LIS와 같이 목록 앞에 파일 지정을 사용하여 B.LIS 파일의 임시 기본 디렉토리도 [STATS]라는 것을 확인합니다.
다음 보기에서는 임시 기본 장치와 2개의 다른 디렉토리가 사용됩니다.
$ COPY BASE:[STATS]A.LIS,[TIME]B.LIS,C.LIS [RESULTS]
A.LIS, B.LIS 및 C.LIS 세 파일 모두 BASE 장치로부터 복사됩니다. A.LIS 파일은 [STATS] 디렉토리에서 복사되고 다른 두 파일은 [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에 따라 보호를 받습니다. 보호 코드에 대한 자세한 내용은
보호 코드 해석을 참조하십시오.
디렉토리를 만들 때 UIC에 따른 보호를 명시적으로 지정하려면 /PROTECTION 한정자를 CREATE/DIRECTORY 명령과 함께 사용합니다. 디렉토리가 만들어질 때까지는 디렉토리를 위한 ACL을 지정할 수 없습니다. 기존 디렉토리의 UIC에 따른 보호를 변경하려면 디렉토리 파일에 SET SECURITY/PROTECTION 명령을 적용합니다.
읽기 액세스가 아닌 실행 액세스 권한을 지정하여 디렉토리 액세스를 제한할 수는 있지만 금지할 수는 없습니다. 디렉토리에 대한 실행 액세스 권한이 있으면 그 디렉토리에 있는 파일을 조사하고 읽을 수 있습니다. 파일 지정 방법을 이미 알고 있는 경우 파일을 조사할 수는 있지만 디렉토리에 있는 파일의 목록을 표시할 수는 없습니다. 보안에 대한 추가 정보는
OpenVMS Guide to System Security를 참조하십시오.
디렉토리 구조의 어느 지점에서나 그 구조에 속한 다른 디렉토리 또는 하위 디렉토리를 참조할 수 있습니다. 디렉토리나 하위 디렉토리 이름을 지정하거나 줄임표(... )와 하이픈(-)
와일드카드 문자를 사용하는 방법이 있습니다. 와일드카드에 대한 추가 정보는
5장을 참조하십시오.
확장 파일 지정 방법 환경에서 작업하는 경우에는
5장의 와일드카드를 사용한 디렉토리 구조 검색 정보를 참조하십시오.
줄임표(...) 와일드카드 문자를 사용하여 디렉토리 계층을 따라 검색합니다. 현재 디렉토리와 그 아래의 모든 하위 디렉토리를 검색하려면 아래와 같이 줄임표만 사용합니다.
줄임표를 사용하여 디렉토리 지정을 시작하면 현재 디렉토리부터 검색이 시작됩니다. 그러나 마침표를 사용하여 디렉토리 지정을 시작하는 경우에는 현재 디렉토리보다 한 수준 아래의 하위 디렉토리만 검색됩니다.
모든 최상위 디렉토리와 그 하위 디렉토리를 현재 디렉토리부터 검색하려면 별표(*) 뒤에 줄임표(... )를 사용합니다.
다음 보기에서는 현재 디렉토리가 [JONES]라고 가정하고 그 디렉토리에 있는 FEES.DAT라는 모든 파일의 최신 버전과 그 하위 디렉토리가 모두 표시될 것입니다.
$ TYPE [JONES...]FEES.DAT
다음 보기에서는 현재 기본 디렉토리가 [JONES]라고 가정하고 .SALES로 끝나는 모든 하위 디렉토리가 검색되며 FEDERAL.LIS 파일의 최신 버전이 표시됩니다.
$ TYPE [...SALES]FEDERAL.LIS
다음 보기에서는 [JONES] 디렉토리에 있는 모든 최신 버전 DEPT.DAT 파일과 그 하위 디렉토리가 모두 표시됩니다.
다음 보기에서는 현재 디렉토리가 [JONES]라고 가정하고 [.LICENSES] 하위 디렉토리에서 MAILING.LIS 파일을 검색합니다. 그러나 [JONES.LICENSES.MARRIAGE]는 검색하지 않습니다.
$ TYPE [.LICENSES]MAILING.LIS
다음 보기에서는 현재 디렉토리가 [JONES]라고 가정하고 그 하위 디렉토리인 [.LICENSES]에 있는 모든 최신 버전 DEPT.DAT 파일을 표시합니다.
$ TYPE [...LICENSES...]DEPT.DAT
다음 보기에서는 8개 수준(최상위 디렉토리와 7개의 하위 디렉토리)에서 존재하는 수준까지 디렉토리 이름을 검색합니다. 이 명령을 사용하려면 READALL 권한이 필요합니다.
하이픈 문자는 현재 프로세스 기본 디렉토리 상위의 [sub-]디렉토리를 지정하는 방법으로 사용됩니다. 각 하이픈은 한 수준을 나타냅니다. 하이픈 뒤에 하위 디렉토리 이름(마침표로 구분)을 사용하여 디렉토리 계층을 따라 다른 경로를 지정할 수 있습니다.
하이픈을 너무 여러 개 입력하여 최상위 디렉토리 위를 가리키는 경우에는 오류 메시지가 표시됩니다.
다음 보기에서 현재 프로세스 기본 디렉토리는 [JONES.LICENSES]입니다.
다음 명령은 [JONES] 디렉토리의 최신 STAFF.DIS를 표시합니다.
다음 보기에서는 [JONES.LICENSES]가 기본 디렉토리입니다.
다음 명령은 [JONES.TAXES]의 최신 BILLING.DAT를 표시합니다.
$ TYPE [-.TAXES]BILLING.DAT
다음 보기에서 프로세스 기본 디렉토리를 디렉토리 계층에서 현재 수준보다 두 수준 위인 디렉토리로 변경합니다.
ODS-5 디스크 사용 OpenVMS Alpha 버전 7.2 이상에서는 파일 이름과 하위 디렉토리 이름이 하이픈만으로 구성될 수 있습니다. 하이픈으로 구성된 이름의 (sub-)디렉토리와 관련 지정을 구별하려면 하이픈으로 구성된 이름을 지정할 때 최소한 하나의 RMS 이스케이프 문자(^)를 사용해야 합니다. 다음 지정 방법은 현재 프로세스 기본 디렉토리보다 세 수준 위의 디렉토리를 참조합니다.
다음 지정은 “---
” 디렉토리(UFD)를 참조합니다.
이 장에서는 이름 형식의 디렉토리 사용 방법을 중점적으로 설명하고 있으나 디렉토리 이름을 UIC 형식으로 지정할 수도 있습니다. UIC 형식에는 사용자 파일 디렉토리(UFD)를 참조하는 두 부분의 8진수로 이루어진
사용자 식별 코드(UIC)가 사용됩니다. 파일 지정을 받아들이는 거의 모든 DCL 명령은 UIC 형식의 디렉토리 이름을 인식할 수 있습니다. 일반적으로 실시간 RSX(Resource Sharing Executive) 운영 체제를 사용하지 않는 경우에는 이 형식을 사용할 필요가 없습니다.
UIC 디렉토리 지정 형식은 다음과 같습니다.
예를 들면, [122,1]은 그룹 122의 구성원 1을 나타내는 UIC 디렉토리 지정입니다. UIC 형식 디렉토리 이름은 일반적으로 디렉토리 소유자의 UIC와 일치하지만 반드시 그렇지는 않습니다.
UIC 디렉토리를 참조할 때는 다음 규칙을 따르십시오.
1-37776 범위의 8진수를 사용하여 그룹을 지정하십시오.
0-177776 범위의 8진수를 사용하여 구성원을 지정하십시오.
하이픈(-)이나 줄임표(... ) 와일드카드는 사용하지 마십시오.
별표(*) 와일드카드를 사용하여 UIC 디렉토리를 지정할 수도 있습니다. 예를 들면, [*,6]은 어느 그룹이든 구성원 6인 모든 디렉토리를 나타냅니다. UIC 형식의 디렉토리에 대해서만 검색이 이루어집니다. 디렉토리 지정 [*,*]는 UIC 형식의 모든 디렉토리를 찾습니다. UIC 형식의 모든 디렉토리와 이름이 지정된 모든 디렉토리를 찾으려면 [*]를 사용합니다.
UIC 형식 디렉토리 이름을 이름 형식으로 변환할 수 있습니다. 필요한 경우에는 그룹과 구성원 번호의 왼쪽에 0을 추가하여 6자로 된 이름을 만듭니다.
UIC 형식과 이름 형식을 결합하여 사용할 수는 없습니다. UIC 형식 디렉토리의 하위 디렉토리 중 하나를 지정하려면 UIC 형식을 이름 형식으로 바꾸십시오.
UIC 디렉토리 지정 [122,1]에 해당하는 이름 형식은 다음과 같습니다.
[122,1]SUB.DIR 하위 디렉토리를 참조하려면 이름 형식 디렉토리인 [122001.SUB]를 사용하십시오.
1
자기 테이프에 파일을 저장할 수도 있지만 자기 테이프에는 디렉토리 구조가 없습니다. 테이프에 저장된 파일에 액세스하려면 파일 정보만 포함하는 파일 지정을 사용합니다.