[an error occurred while processing this directive]

HP OpenVMS Systems Documentation

Content starts here

OpenVMS 用户手册


前页 目录 索引

4.3.1 设置默认目录为不存在的目录

注意,操作系统允许您把默认目录设置为一个不存在的磁盘或目录。如果您已把默认目录设置为一个不存在的目录,那么当您设法处理文件时,系统将显示一条消息,声明目录不存在。如果您发现自己处在一个不存在的磁盘或目录上而不能完成要求的操作,把默认目录设置为一个现有的磁盘或目录。

4.3.2 SHOW DEFAULT 命令

要显示当前默认目录,输入命令 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]

4.3.3 使用临时默认

如果您输入一列文件,却没有为列表中的每个文件给出完整文件说明,那么系统对节点名、设备名和目录名使用临时默认值。要以当前默认目录替换临时默认,使用空的方括号。如果 列表中的文件包括一个节点名,使用一个双冒号可以取代临时默认。

在以下例子中,A.LIS 和 B.LIS 从 [STATS] 目录复制到 [RESULTS] 目录:


$  COPY [STATS]A.LIS,B.LIS  [RESULTS]

注意,系统使用列表中前面的文件说明 [STATS]A.LIS,确定文件 B.LIS 的临时默认目录也是 [STATS]。

在以下例子中,使用一个临时默认设备和两个不同的目录:


$  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]

4.4 保护目录防止其他用户非法访问

要完全地保护文件,您至少要应用与该文件所在目录具有的同样保护。例如,如果您不让一个用户对一个文件有任何存取权,但是允许该用户读取文件所在目录,那么该用户就不能存取文件的内容,但是可以看到它存在。相反,允许用户存取文件,但是拒绝存取文件所在目录 (或父目录之一),那么该用户就不能看到它存在。

注意

要保护专用文件,只保护目录是不够的。必须也保护在目录内的每个文件。

按照默认,顶级目录受到基于 UIC 的保护 (S:RWE,O:RWE,G:RE,W:E) 并且没有 ACL。子目录受到来自父目录的基于 UIC 的保护。有关保护码的详情,请参阅 10.3

当建立目录时要明确地指定基于 UIC 的保护,使用 CREATE/DIRECTORY 命令的 /PROTECTION 限定词。在目录建立后,您就能为它指定一个 ACL。 要更改现有目录基于 UIC 的保护,可对目录文件应用 SET SECURITY/PROTECTION 命令。

指定执行存取而不是读存取, 您可以限制但不能禁止目录存取。对目录的执行存取准许您检查和读取您知道包含在这个目录中的文件;这意味着如果您已经知道一个文件的文件说明,您就可以检查它,但是您不能列出这个目录的文件。有关安全的详情,请参阅 OpenVMS Guide to System Security

4.5 使用通配符搜索目录结构

从目录结构的任何一点,您可以查阅这个结构的另一个目录或子目录。特别指出目录或子目录或者使用省略号 (...) 和连字号 (-) 通配符,您可以做这件事。有关通配符的详情,请参阅 3.2

如果您工作在支持扩展文件说明的环境中,要知道使用通配符搜索目录结构的详情,请参阅第 5 章

4.5.1 省略符号通配符

使用省略号 (...) 通配符可向下搜索目录层次。要搜索当前目录和它之下的所有子目录,使用省略号,如下所示:


$ DIRECTORY [...]

如果用一个省略号开始目录说明,从当前目录开始搜索。然而,如果您用一个句点开始目录说明,则只搜索比当前目录低一级的子目录。

要从您当前所在目录结构的位置搜索所有顶级目录和它们的子目录,使用一个星号 (*) 后面跟随一个省略号 (...)。

在以下例子中,假定当前目录是 [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],则将搜索 [.LICENSES] 子目录中的文件 MAILING.LIS,但不搜索 [JONES.LICENSES.MARRIAGE]:


$ TYPE [.LICENSES]MAILING.LIS

在以下例子中,假定当前目录是 [JONES],则显示在 [JONES] 之下的 [.LICENSES] 子目录中和在 [.LICENSES] 子目录之下的所有子目录中的所有名为 DEPT.DAT 的文件的最近版本:


$ TYPE [...LICENSES...]DEPT.DAT

在以下例子中,(如果存在) 将搜索 8 级目录名 (顶级目录和第 7 级子目录)。注意,展示的命令需要 READALL 特权。


$ DIRECTORY [*...]

4.5.2 连字号 (-) 子目录字符

连字号字符作为缩写方法指定在当前进程的默认目录之上的   (子) 目录。每个连字号表示一级。连字号后面可以跟随子目录名 (带分开句点) 来指定更深目录层次的其他路径。

如果您输入太多连字号,以致于引用点超出顶级目录,那么系统将显示出错消息。

在以下例子中,当前进程的默认目录是 [JONES.LICENSES]。以下命令显示 [JONES] 中 STAFF.DIS 的最近版本:


$ TYPE [-]STAFF.DIS

在以下例子中,当前目录是 [JONES.LICENSES]。展示的命令显示 [JONES.TAXES] 中 BILLING.DAT 的最近版本:


$ TYPE [-.TAXES]BILLING.DAT

在以下例子中,展示的命令把进程默认目录更改到目录层次中比当前级高 2 级的目录。


$ SET DEFAULT [--]

在 OpenVMS V7.2 Alpha 或以后支持 ODS-5 磁盘的版本中,文件名和子目录名可以单独由连字号组成。要区别其名称包括连字号的 (子) 目录和相对文件说明,前者必须至少用一个 RMS 换码符 (^) 指定。以下说明引用比当前进程的默认目录高 3 级的目录。


[---]

以下说明引用目录 (UFD) "---":


[^---]

4.6 按 UIC 格式处理目录

虽然本章集中在如何使用命名目录,您也可以按 UIC 格式指定目录名。在 UIC 格式中,2 部分的八进制数构成用户标识码 (UIC),它指向用户文件目录 (UFD)。 几乎每个接受文件说明的 DCL 命令都可以识别 UIC 格式的目录名。一般而言,您不需要使用这个格式,除非您是使用实时资源共享执行 (RSX) 操作系统。

UIC 目录说明有以下格式:


[group,member]

例如,[122,1] 是一个 UIC 目录说明,表示组 122 中的成员 1。UIC 格式的目录名一般是对应于目录拥有者的 UIC,但不一定。

当您引用 UIC 目录时,请遵守以下规则:

  • 使用一个 1 至 37776 的八进制数指定组。
  • 使用一个 0 至 177776 的八进制数指定成员。
  • 不使用连字号 (-) 或省略号 (...) 通配符作为说明部分。

4.6.1 使用通配符指定 UIC 目录

也有可能使用星号 (*) 通配符来指定一个 UIC 目录。例如,[*,6] 指出所有带任何组号和成员号 6 的目录。该搜索限于 UIC 格式的目录。目录说明 [*,*] 找出所有 UIC 格式的目录。 如同找出所有 UIC 格式的目录,要找出所有命名的目录,可使用 [*]。

4.6.2 把 UIC 格式转化为命名格式

注意,可以把目录名从 UIC 格式翻译为命名格式。如果有必要的,则在组号和成员号的左边添加零来建立 6 字符的名称。

不能混合使用 UIC 格式和命名格式。如果有一个 UIC 格式名的目录,但要指定它的一个子目录,则要把 UIC 格式翻译为命名格式。

UIC 目录说明 [122,1] 的等价命名格式如下所示:


[122001]

要引用子目录 [122,1]SUB.DIR,可使用命名目录 [122001.SUB]。


第 5 章
扩展文件说明

OpenVMS Alpha V7.2 执行扩展文件说明,它包括两个主要的组件:

  • 可选卷结构,即 On--Disk Structure Level 5 (ODS-5),它支持较长的文件名,包括更大范围的合法字符
  • 深目录

总之,这些组件为 OpenVMS Alpha 系统 (使用 OpenVMS 高级服务器) 提供更大的灵活性,来存储、管理、服务和存取具有类似于 Windows 环境中名称的文件。

深目录和扩展文件名提供以下好处:

  • OpenVMS 用户可以使用长文件名、新的字符支持和使用小写字母和大小写混写文件名。这些新能力使 OpenVMS 文件服务器上的文件活动对于 Windows 用户更加透明。
  • OpenVMS 系统管理员可以在 OpenVMS 系统上使用 Windows 用户指定的名称阅读文件。
  • 从其他支持深目录的环境移植应用程序的应用程序开发者可以使用 OpenVMS 的并行结构。

5.1 ODS-5 卷结构

On--Disk Structure (ODS) 是指信息存储在磁盘的逻辑结构。ODS-2 是 OpenVMS 操作系统的默认磁盘结构。ODS-5 是 ODS-2 的超集,对多平台环境特别有用。ODS-5 卷结构提供:

  • 长文件名
  • 文件名中更多的合法字符
  • 保留文件名的字母大小写

5.1.1 长文件名

传统的 (ODS-2) 文件说明符合 39.39 格式,只支持单个句点 (.) 分开文件名和文件类型。

在 ODS-5 卷中,文件名与文件类型一起长度可多达 236 个 8 位字符,或者 118 个 16 位字符。1 例如:


$ CREATE This.File.Name.Has.A.Lot.Of.Periods.DAT
$ CREATE -
_$ ThisIsAVeryLongFileName^&ItWillKeepGoingForLotsAndLotsOfCharacters.Exceed -
_$ ingThe39^,39presentInPreviousVersionsOfOpenVMS
$ DIRECTORY


Directory TEST$ODS5:[TESTING]

ThisIsAVeryLongFileName^&ItWillKeepGoingForLotsAndLotsOfCharacters.Exceeding
The39^,39presentInPreviousVersionsOfOpenVMS;1
This^.File^.Name^.Has^.A^.Lot^.Of^.Periods.DAT;1

共 2 个文件。

5.1.2 文件名中更多合法字符

传统 (ODS-2 兼容的) 文件名可以使用字母数字字符 (A-Z、a-z 和 0-9)、美元符 ($)、下划线 (_) 和连字号 (-)。ODS-5 提供更宽的字符集用于命名文件。

ISO LATIN-1 和 Unicode (UCS-2) 字符集

ODS-5 支持文件名使用 8 位 ISO Latin-1 字符和 16 位 Unicode (UCS-2) 字符集。ISO Latin-1 多国字符集是传统 ASCII 字符集的超集。在扩展文件说明中,您可以使用 8 位 ISO Latin-1 多国字符集的所有字符,但星号 (*) 和问号 (?) 除外

特殊字符

在文件说明中,有些 ISO Latin-1 字符需要一个换码符在它们之前,使之能够被正确解释。在扩展文件名中,RMS 和 DCL 把音调符号 (^) 解释为换码符。下表包含换码符的使用规则:

  • 换码符 (^) 后面跟随一个下划线 (_) 或空格表示一个空格。
  • 换码符 (^) 后面跟随以下任何字符意味着该字符用作文件名的一部分,而没有任何特殊的含义,尽管它在文件说明中可以有特殊含义:


    .  ,  ;  [  ]  %  ^  &
    
  • 在文件名中,可以带或不带换码符 (^) 地输入一个文字句点 (.)。系统为任何句点添加换码符,否则这些句点要用作文件类型和版本号的定界符。在目录名中必须在文字句点 (.) 之前加上换码符。
  • 换码符后面跟随一个十六进制数字需要第二个十六进制数字。把两个后面跟随的字符解释为一个表示任意单字节字符的十六进制值。例如,^20 表示一个空格。
  • 在文件说明中,换码符后面跟随 "U" 指出后面跟随的 4 个十六进制数字要解释为 Unicode 字符。例如,^U012F。
    在文件说明中,所有前面没有加上换码符 (^) 的字符被认为是 ISO Latin-1 字符。

注意

VAX 系统不能存取包含特殊字符的文件名。有关混合构造环境的详情,请参阅 5.7

解释句点 (.)

在扩展文件名中把句点 (.) 用作一个文字字符需要 RMS 确定哪一个句点是文件名字符和哪一个是定界符。

当在扩展文件名中只使用一个句点 (.) 时,这个句点解释为定界符。如同 OpenVMS 的以前版本,如果单个句点后面跟随一个数,也出现这种现象:


$ CREATE Test.1

建立文件:


Test.1;1

确定版本号

当文件名中有多个句点 (.) 时,RMS 查看最后一个句点之后的所有字符。

如果 那么
在最后一个句点后的字符都是数字 数字串被确定为版本号
在最后一个句点后的字符是所有数字和前导一个减号 (-) 数字串被确定为版本号
在最后一个句点后有 5 个以上数字字符 RMS 认为是非法文件名
有一个非数字字符跟随最后一个句点 被解释为文件类型定界符

例如,以下命令:


$ CREATE Test4.3.2.1

建立文件:


Test4^.3.2;1

在此,2 是文件类型,而 1 是文件版本号。

明确用分号 (;) 定界的版本号也必须不多于 5 个数字字符,并且前面可以加上一个减号 (-)。

5.1.3 保留字母大小写

OpenVMS 以前版本中,DCL 和 RMS 的把所有文件说明转换为大写字母。

在 ODS-5 卷上,您可以以大写、小写或混合字母大小写输入文件名。所有文件名的字母大小写保持建立时候的形式。例如:


$ CREATE KitContents.Txt

$ DIRECTORY

目录  DISK1:[USER1]

KitContents.Txt;1

当您以相同名称建立多个文件,而只是字母大小写不同时,DCL 把后续文件处理为原始文件的新版本,并把它们转换为与原始文件相同的字母大小写。例如:


$ CREATE CaPri
$ CREATE CAPRI
$ CREATE capri
$ DIRECTORY

目录  DISK1:[USER1]

CaPri.;1  CaPri.;2  CaPri.;3

5.1.4 使用通配符

ODS-5 文件支持单个和多个字符通配符功能。单字符通配符精确地表示文件名或文件类型中的一个字符,但是不能使用在文件版本字符串中。多字符通配符可以表示文件名或文件类型中任何数目的字符 (包括零个字符)。多字符通配符可以用于代替版本字符串。

5.1.4.1 通配符

以下字符总是有效的通配符:

  • 星号 (*) 是多字符通配符。
  • 百分号 (%) 是单字符通配符。
  • 问号 (?) 是单字符通配符。

百分号 (%) 继续作为单字符通配符是为了维护与现有应用程序的相容性。当前面加上音调符号 (^) 时,百分号 (%) 可以使用为一个文字字符,而且在 Windows 文件名中它也是文字字符。除百分号之外,RMS 也把问号 (?) 识别为单字符通配符。在 OpenVMS 7.2 和以后版本中,问号作为通配符,功能等同于百分号。在搜索式样中,每个百分号和问号精确地匹配一个字符。

注意

在通配符匹配时,换码字符 (如 ^.) 或换码序列 (如 ^EF 或 ^U0101) 被认为是单个字符。

注意

1 未修改的程序和公用程序可能把完整文件说明限制或缩写到 255 个字节。


前页 后页 目录 索引