HP OpenVMS Systems Documentation

Content starts here

OpenVMS 用户手册


前页 目录 索引

2.4 输入参数

文件说明是最普通的参数类型。DCL 命令可以接受输入文件说明 (命令可以读取的文件) 和输出文件说明 (命令要建立的文件)。

当在命令行中指定参数时应用以下规则:

  • 在命令描述中的方括号 ([]) 指出任选的项目。例如,在以下命令中,您不必输入文件说明:

    DIRECTORY [file-spec]

  • 在命令描述中,没有括入方括号的任何东西是需要的。例如,在以下命令中,您必须输入设备名:

    SHOW PRINTER device-name

  • 一般而言,在输出文件参数之前有输入文件参数。
  • 参数可以是一个项目或一串项目。如果您输入一串项目,用逗号 (,) 或加号 (+) 分开项目。在逗号或加号之前或之后可以有任何数目的空格或制表符。注意,一些命令把加号用作连接符,而不是分隔符。

例子

以下例子展示如何把输入文件 LISTS.TXT 复制到输出文件 FORMAT.TXT:


$ COPY LISTS.TXT FORMAT.TXT

以下例子的命令行展示您如何输入一列文件说明作为参数:


DELETE file-spec[,...]

以下例子展示如何指定一列参数。在这里,三个文件被复制到第四个文件。三个文件说明,PLUTO.TXT、SATURN.TXT 和 EARTH.TXT,组成第一个参数。PLANETS.TXT 是第二个参数。注意,在 PLUTO.TXT、SATURN.TXT 和 EARTH.TXT 文件说明之间没有空格 (虽然可以插入空格)。


$ COPY PLUTO.TXT,SATURN.TXT,EARTH.TXT PLANETS.TXT

2.5 输入限定词

有三类限定词:

  • 命令
  • 定位
  • 参数

您可以缩写任何限定词名称,只要缩写名在同样命令的所有限定词名称中是唯一的。然而,要确保您的命令过程是向上兼容的,不要在命令过程中缩写命令和限定词。

命令有默认限定词; 您不必指定限定词,除非它不同于命令默认。以下章节描述限定词的类型和限定词默认。OpenVMS DCL Dictionary 包含特定命令的默认信息。

2.5.1 命令限定词

命令限定词修改命令,并且可以出现在命令行的任何地方。然而,把限定词放在命令名后面是个好习惯。如果您指定多个限定词,您应该把一个命令限定词与其他命令限定词都放在命令名的后面。

在以下例子中,/QUEUE 是一个命令限定词。文件 SATURN.TXT 和 EARTH.TXT 到打印队列 LN03_PRINT 中排队:


$ PRINT/QUEUE=LN03_PRINT SATURN.TXT,EARTH.TXT

2.5.2 定位限定词

定位限定词可以修改命令或参数,并且依赖于它在命令串中的位置而有不同的含义。如果您把定位限定词放在命令之后,但在第一个参数之前,它就影响整个命令串。如果您把定位限定词放在参数后面,那么它只影响那个参数。

在以下例子中,第一个 PRINT 命令请求文件 SPRING.SUM 和 FALL.SUM 的两个副本。第二个 PRINT 命令请求文件 SPRING.SUM 的两个副本,但只请求 FALL.SUM 的一个副本。


$ PRINT/COPIES=2 SPRING.SUM,FALL.SUM
$ PRINT SPRING.SUM/COPIES=2,FALL.SUM

2.5.3 参数限定词

参数限定词只可以用于某些类型的参数,诸如输入文件和输出文件。例如,BACKUP 命令接受几个参数限定词,它们只应用于输入和输出文件说明。

在以下例子中,/CREATED 和 /BEFORE 限定词只能对输入文件指定,为备份操作选择特定的输入文件。星号 (*) 是一个替换文件名的通配符,。BACKUP 选择所有在 2002 年 12 月 11 日之前建立的 .TXT 文件类型的文件。


$ BACKUP *.TXT/CREATED/BEFORE=11-DEC-2002 NEWFILE.TXT

2.5.4 限定词冲突

如果在一个命令行中您使用两个或更多矛盾的限定词,最右的限定词会取代其他限定词。

一些命令包含不能在同一命令行中同时指定的冲突限定词。如果您使用不兼容的限定词,那么命令解释程序显示一条出错消息。

以下是一个限定词冲突的例子。注意,PRINT 命令只接受 /COPIES=2 和 /NOBURST 限定词,因为在命令行中它们是最右的限定词:


$ PRINT MYFILE/COPIES=3/BURST/COPIES=2/NOBURST EARTH.TXT

2.5.5 限定词可接受的值

限定词可以接受关键字、文件说明、字符串和数值。当您为限定词输入值时,用等号 (=) 或冒号 (:) 分开限定词和值。

一些限定词关键字需要附加信息。在这些情况下,用冒号或等号把关键字与它的值分开。

要指定多个需要值的关键字,把该列表括在圆括号内,并且用等号 (=) 或冒号 (:) 分开关键字和值。

例子

在这个例子中两个命令都是有效的:


$ PRINT/COPIES=3 MYFILE.DAT


$ PRINT/COPIES:3 MYFILE.DAT

这是一个限定词需要附加信息的例子; 用冒号或等号 (=) 把关键字 "PROTECTION" 与它的值分开:


$ SET SECURITY/PROTECTION:GROUP:RW MYFILE.DAT


$ SET SECURITY/PROTECTION=GROUP=RW MYFILE.DAT

这是一个限定词需要多个关键字的例子,每个关键字需要多个值:


$ SET SECURITY/PROTECTION=(OWNER=RWD,GROUP=RW) myfile.dat


$ SET SECURITY/PROTECTION=(OWNER:RWD,GROUP:RW) myfile.dat

2.6 输入日期和时间值

某些命令和限定词 (例如 PRINT/AFTER 命令) 接受日期和时间值。您可以按以下格式之一指定这些值:

  • 绝对时间
  • 相对时间
  • 混合时间 (结合绝对和相对时间格式)

2.6.1 绝对时间格式

绝对时间是一个特定的日期或当日时间。绝对时间的格式如下所示:


[dd-mmm-yyyy][:hh:mm:ss.cc]

各字段如下所示:

dd 当月日期: 范围从 1 至 31 的整数
mmm 月: JAN、FEB、MAR、APR、MAY、JUN、JUL、AUG、SEP、OCT、NOV 或 DEC
yyyy 年: 一个整数
hh 小时: 范围从 0 至 23 的整数
mm 分钟: 范围从 0 至 59 的整数
ss 秒: 范围从 0 至 59 的整数
cc 百分之一秒: 范围从 0 至 99 的整数

指定绝对时间应用以下规则:

  • 您可以在右边截取日期或时间。
  • 如果您指定日期和时间,则在它们之间要包括一个冒号。
  • 日期必须至少包含一个连字号。
  • 在日期和时间中,您可以省略任何字段 ,但要使用标点符号分开各字段。
  • 截取或省略的日期字段默认为当前日期的相应字段。
  • 截取或省略的时间字段默认为零。
  • 如果您在一个期望当前或将来时间的命令中指定了一个过去时间,则使用当前时间。

您也可以使用以下关键字之一指定绝对时间:

TODAY 在 00:00:00.0 点钟的当前日、月和年
TOMORROW 明天的 00:00:00.00 点钟
YESTERDAY 昨天的 00:00:00.00 点钟

下表展示绝对时间说明的例子:

时间说明 结果
11-DEC-2002:13 2002 年 12 月 11 日下午 1 点钟
11-DEC 今年 12 月 11 日开始的午夜
15:30 今天下午 3:30
19-- 本年本月 19 日午夜
19--:30 本月 19 日上午 12:30

2.6.2 相对时间格式

相对时间是从当前日期和时间到将来某个时间的偏移 (时间间隔)。相对时间的一般格式如下所示:


"+[dddd-][hh:mm:ss.cc]"

各字段如下所示:

dddd 天数; 范围从 0 至 9999 的整数
hh 小时数; 范围从 0 至 23 的整数
mm 分钟数; 范围从 0 至 59 的整数
ss 秒数; 范围从 0 至 59 的整数
cc 百分之一秒数; 范围从 0 至 99 的整数

如果限定词描述的值可以表达为绝对时间、相对时间或两者混合,您必须指定一个相对时间,就好象它是混合时间的部分。例如,要指定一个从当前时间开始之后 5 分钟的相对时间值,使用 "+:5" (不是 "0-0:5")。

指定相对时间时,应用以下规则:

  • 您可以在右边截取相对时间。
  • 如果您指定天数,则应包括一个连字号。
  • 在时间中,您可以省略字段,但要使用标点分开各字段。
  • 如果您省略时间字段,默认是零。

下表展示一些相对时间说明的例子:

时间说明 结果
"+3-" 从现在起 3 天  (72 小时)
"+3" 从现在起 3 小时
"+:30" 从现在起 30 分钟
"+3-:30" 从现在起 3 天 30 分钟
"+15:30" 从现在起 15 小时 30 分钟

2.6.3 混合时间格式

要结合绝对和相对时间,可指定绝对时间加上或减去相对时间。使用以下格式之一:


    "[absolute time][+delta time]"

     [absolute time][-delta time]

绝对和相对时间值的可变字段和默认字段与前述各节的描述相同。

指定混合时间时,应用以下规则:

  • 把加号或减号放在相对时间值之前。(注意,减号与连字号是相同的键盘键。)
  • 如果一个加号或减号在相对时间值之前,把整个时间说明括在引号内。
  • 如果您要从当前日期和时间偏移相对时间,要省略绝对时间值。
  • 尽可能完全地指定日期和时间。

下表展示一些混合时间说明的例子:

时间说明 结果
"+5" 从现在起 5 小时。
"-1" 当前时间减去 1 小时。减号 (-) 指出负偏移。(1 解释为小时,而不是日,因为它后面没有连字号。)
"+:5" 从现在起 5 分钟。
"-:5" 当前时间减去 5 分钟。
"-1-00" 当前时间减去 1 日。减号 (-) 指出负偏移。连字号 (-) 分开日和时间字段。
"31-DEC:+:5" 本年 12 月 31 日上午 12:05。绝对时间说明 (在冒号之前) 默认为本年 12 月 31 日的午夜。加号 (+) 指出正偏移。
31-DEC:-00:10 本年 12 月 30 日下午 11:50。绝对时间说明 (在冒号之前) 默认为本年 12 月 31 日的午夜。在 DEC: 之后的减号 (-) 指出负偏移。

2.7 重新调用命令

在 DCL 提示下,您可以重新调用以前键入的命令行以避免重新键入长的命令行。一旦显示命令,您就可以重新执行或编辑它。

在 OpenVMS VAX 系统中,重新调用缓冲区保存多达 20 个以前输入的命令。

在 OpenVMS Alpha 系统中,重新调用缓冲区保存多达 254 个以前输入的命令。

通过使用以下方法之一, 您可以显示以前输入的命令:

  • 按下 Ctrl/B
  • 使用向上箭头和向下箭头键
  • 使用 RECALL 命令

2.7.1 按下 Ctrl/B

按下 Ctrl/B 一次重新调用上一个命令行。再次按下 Ctrl/B 重新调用上一个命令行之前的命令行,直到最后一个保存的命令行。

2.7.2 使用箭头键

使用向上箭头和向下箭头键分别重新调用上一个和下一个命令。重复按下箭头键可遍历这些命令。

2.7.3 使用 RECALL 命令

要检查以前键入的命令行,可键入 RECALL/ALL。在查看可用命令之后,键入 RECALL 和所要求命令的行号,您可以重新调用特定的命令行。

您也可以在 RECALL 后面跟随您要显示的命令行的第一个字符。RECALL 扫描以前的命令行 (从最新的一行开始),输入从您键入的字符开始的第一个命令行。

例子

以下显示键入 RECALL/ALL 产生的样例:


$ RECALL/ALL


 1 SET DEFAULT DISK2:[MARSHALL]
 2 EDIT ACCOUNTS.COM
 3 PURGE ACCOUNTS.COM
 4 DIRECTORY/FULL ACCOUNTS.COM
 5 COPY ACCOUNTS.COM [.ACCOUNTS]*
 6 SET DEFAULT [.ACCOUNTS]

以下例子展示如何重新调用第 4 个命令行:


$ RECALL 4

在您按下 Enter 键后,在 DCL 提示下系统显示列表中的第 4 个命令。(RECALL 命令本身不放入缓冲区内。)

以下例子展示如何重新调用以前输入的命令,EDIT ACCOUNTS.COM:


$ RECALL E

在您按下 Enter 后,系统显示以下命令行:


$ EDIT ACCOUNTS.COM

注意

如果您正在运行一个使用 OpenVMS 屏幕管理软件的公用程序或应用程序,您就可以使用 Ctrl/B 和向上箭头与向下箭头键来执行重新调用的命令; 然而,必须允许行编辑。一些具有这个特性的公用程序是 Mail、OpenVMS 调试程序、Show Cluster、系统转储分析程序 (SDA) 和 EVE 编辑程序。

要擦除重新调用缓冲区的内容,输入带 ERASE 限定词的 RECALL 命令。例如:


$ RECALL/ERASE

基于安全原因,在您输入包括密码的命令后擦除重新调用缓冲区的内容是个好习惯。

2.8 编辑 DCL 命令行

在 DCL 命令级,您可以使用许多单键和组合键来更改您键入的内容。虽然不同类型的终端有不同的操作特征,但多数有标准的功能键和可以在行编辑程序使用的键。

要看是否允许行编辑,输入 SHOW TERMINAL 命令。

在以下例子中,允许行编辑:


$ SHOW TERMINAL

终端: _VTA2138:   Device_Type: VT200_Series  拥有者: ROHBA
物理终端: _TNA2114:
远程端口信息: 主机: 16.32.216.68 端口: 1409

   输入:    9600     LFfill:  0      宽度:  80      奇偶校验: 没有
   输出:    9600     CRfill:  0      页数:  24

终端特征:
   Interactive        Echo               Type_ahead         No Escape
   Hostsync           TTsync             Lowercase          Tab
   Wrap               Scope              No Remote          Eightbit
   Broadcast          No Readsync        No Form            Fulldup
   No Modem           No Local_echo      No Autobaud        Hangup
   No Brdcstmbx       No DMA             No Altypeahd       Set_speed
   No Commsync        Line Editing       Overstrike editing No Fallback
   No Dialup          No Secure server   Disconnect         No Pasthru
   No Syspassword     No SIXEL Graphics  No Soft Characters Printer port
   Numeric Keypad     ANSI_CRT           No Regis           No Block_mode
   Advanced_video     Edit_mode          DEC_CRT            DEC_CRT2
   No DEC_CRT3        No DEC_CRT4        No DEC_CRT5        No Ansi_Color
   VMS Style Input

2.8.1 SET TERMINAL 命令

您可以使用 SET TERMINAL 命令来改变终端编辑 DCL 命令行的方法。按照默认,SET TERMINAL 命令的更改只适用于当前对话期。要设置您每次注册的终端,您可以在 LOGIN.COM 文件中包括 SET TERMINAL 命令。

要允许行编辑,可输入 SET TERMINAL/LINE_EDIT 命令:


$  SET TERMINAL/LINE_EDIT

插入和重键模式

您可以用插入或重键模式编辑命令行。在插入模式下,您键入的字符插入在光标的左边。在重键模式下,您键入的字符重写光标指出的字符。

要更改单个命令行的编辑模式,按下 Ctrl/A (Ctrl/A 是一个互换组合键)。要更改对话期的编辑模式,可输入 SET TERMINAL/INSERT 或 SET TERMINAL/OVERSTRIKE 命令。

文本绕接

如果您使用 SET TERMINAL/WRAP 命令,当您输入比屏幕一行要多的字符时,文本绕接到下一行。如果您使用 SET TERMINAL/NOWRAP 命令, 则当您输入比终端屏幕一行要多的字符时,该行的最后字符将被键空。

您只能编辑出现光标的行。当文本绕接时,您不能使用向上箭头键移动光标去编辑上一行。要移动光标去编辑上一行,可使用 Delete 键删除当前行的所有字符。


 

前页 后页 目录 索引