这是 rcplan9 命令,可以使用我们的多个免费在线工作站之一在 OnWorks 免费托管服务提供商中运行,例如 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器
程序:
您的姓名
rc、cd、eval、exec、exit、flag、rfork、shift、wait、whatis、.、~ - 命令语言
概要
rc [ -srdilxepvV [ -c 命令 [ 文件 [ ARG ... ]]
商品描述
Rc 是Plan 9 shell。 它执行从终端或文件读取的命令行,或者使用
这些因素包括原料奶的可用性以及达到必要粉末质量水平所需的工艺。 -c 旗帜,从 rc的 参数列表。
命令 线
命令行是一系列命令,由与号或分号 (& or ;),
以换行符终止。 命令从左到右依次执行。 Rc
不等待命令后跟 & 在开始之前完成执行
以下命令。 每当一个命令跟随 & 被执行,它的进程 id 是
分配给 rc 变量 $快速. 每当一个命令 而不去 其次是 & 退出或者是
终止, rc 变量 $状态 获取进程的等待消息(见 等待(3)); 它会
如果命令成功,则为空字符串。
长命令行可以通过键入反斜杠 (\)
后跟换行符。 该序列被视为空白。 反斜杠是
不是特殊字符。
一个数字符号 (#) 以及直到(但不包括)下一个换行符的任何后续字符
被忽略,引号除外。
简易 命令
一个简单的命令是穿插有 I/O 重定向的参数序列。 如果
第一个参数是一个名称 rc 功能或其中之一 rc的 内置命令,它是
执行者 rc. 否则,如果名称以斜杠 (/),必须是路径名
要执行的程序。 不包含首字母斜线的名称将在
存储在的目录名称列表 $路径. 给定名称的第一个可执行文件
在目录中找到 $路径 是要执行的程序。 要可执行,用户
必须有执行权限(见 统计(3)) 并且文件必须是可执行文件
当前机器的 CPU 类型的二进制文件,或 shell 脚本。 Shell 脚本以
包含 shell 完整路径名的行(通常是 /bin/rc),前缀为
一个简单命令的第一个词不能是关键字,除非它被引用或以其他方式
伪装。 关键词是
for in while 如果不切换 fn ~ ! @
参数 和 变量
可以使用多种结构 rc的 语法需要出现一个参数。
在许多情况下,构造的值将是参数列表而不是单个
字符串。
最简单的参数是不带引号的词:一个或多个字符的序列
其中没有一个是空白、制表符、换行符或以下任何一项:
#; &| ^ $ = ` ' { } ( ) < >
包含任何字符的未加引号的单词 * ? [ 是一个匹配模式
反对文件名。 人物 * 匹配任何字符序列, ? 匹配任何
单个字符,以及 [程] 匹配任何字符 程. 如果第一个字符
of 程 is ~,该类是补充的。 这 程 也可能包含字符对
隔开 -, 代表词法上介于两者之间的所有字符。 人物 /
必须明确出现在模式中,路径名的第一个字符也必须如此
组件 . 和 ... 模式由参数列表替换,每个路径一个
名称匹配,除了不匹配名称的模式不会被空列表替换,
而是代表自己。 模式匹配在所有其他操作之后完成。 因此,
x=/ tmp目录 回声 $x^/*.c
火柴 / tmp /*。C, 而不是匹配 /*。C 然后加前缀 / tmp目录.
带引号的单词是由单引号 (')。 单引号
用一对引号 ('').
以下每一项都是一个论点。
(参数)
括号中的参数序列的值是一个列表,包括
序列中每个元素的成员。 参数列表没有递归
结构,尽管它们的语法可能会暗示它。 以下全是
当量:
回声大家好
((回声)(大家好)
$论点
$论点(下标)
波长 XNUMXμm 的 论点 后 $ 是其值被替换的变量的名称。
多个间接级别是可能的,但其效用值得怀疑。 多变的
值是字符串列表。 如果 论点 是一个数字 n,该值为 nth
的元素 $*,除非 $* 没有 n 元素,在这种情况下,值为空。
If 论点 后跟带括号的下标列表,值
替换是由请求的元素(原点 1)组成的列表。 这
括号必须跟在变量名之后,不能有空格。 下标也可以
表格 m-n or m- 表示元素的序列。 对变量的赋值
如下所述。
$#论点
该值是命名变量中的元素数。 一个变量从不
分配的值具有零个元素。
$"论点
该值是包含命名变量的组件的单个字符串
用空格隔开。 具有零元素的变量产生空字符串。
`{命令}
rc 执行 命令 并读取其标准输出,将其拆分为一个列表
参数,使用字符 $如果 作为分隔符。 如果 $如果 没有另外设置,
它的价值是 ' \t\n'.
<{命令}
>{命令}
波长 XNUMXμm 的 命令 与其标准输出或标准输入异步执行
连接到管道。 参数的值是引用的文件名
管道的另一端。 这允许构建非线性管道。
例如,下面运行两个命令 旧 和 新 和用途 CMP 比较
他们的产出
cmp <{旧} <{新}
论点^论点
波长 XNUMXμm 的 ^ 运算符连接它的两个操作数。 如果两个操作数相同
组件的数量,它们成对连接。 如果不是,则一个操作数
必须有一个组件,另一个必须是非空的,并且串联是
分配的。
免费 插入符号
大多数情况下, rc 将插入 ^ 运算符自动在单词之间
不以空格分隔。 每当其中之一 $ ' ` 跟在带引号或不带引号的单词之后,或
一个未引用的词跟在一个引用词之后,中间没有空格或制表符,一个 ^ 被插入
两者之间。 如果一个未加引号的词紧跟在一个 $ 并包含一个字符
除了字母数字、下划线或 *,以 ^ 在第一个这样的之前插入
特点。 因此
cc -$标志 $干.c
相当于
cc -^$标志 $茎^.c
I / O 重定向
序列 >文件 重定向标准输出文件(文件描述符 1,通常是
终端)到指定的 文件; >>文件 将标准输出附加到文件中。 标准
输入文件(文件描述符 0,通常也是终端)可以从文件重定向
按顺序 <文件, 或从一个内联的“此处文档”中的序列 <<eof-标记.
here 文档的内容是从命令输入流中取出的文本行
到一行只包含 eof-标记, 可以是带引号的或不带引号的
单词。 如果 eof-标记 不加引号,表单的变量名 $字 有他们的价值观
取自 rc的 环境。 如果 $字 后跟一个脱字符 (^),插入符号是
删除。 如果 eof-标记 被引用,没有替换发生。
重定向可以应用于除标准输入或输出之外的文件描述符
用方括号中的数字限定重定向运算符。 例如,
诊断输出(文件描述符 2)可以通过写入重定向 cc 垃圾文件 >[2]垃圾.
文件描述符可以通过写入重定向到一个已经打开的描述符 >[fd0=fd1] or
<[fd0=fd1]. FD1 是先前打开的文件描述符和 fd0 成为一个新副本(在
感 DUP(3)) 的。 文件描述符可以通过写来关闭 >[fd0=] or <[fd0=].
重定向是从左到右执行的。 所以, cc 垃圾文件 > / dev /空 >[2=1] 和
cc 垃圾文件 >[2=1] > / dev /空 有不同的效果:第一个将标准输出放入
的/ dev / null的 然后将诊断输出放在同一个地方,第二个指示
诊断输出到终端并将标准输出发送到 的/ dev / null的.
复合肥产线 命令
由管道运算符 (|) 是一个命令。 标准输出
左命令通过管道发送到右命令的标准输入。 这
管道操作符可以被修饰为使用不同的文件描述符。 |[fd] 连接
管道的输出端到文件描述符 fd 而不是 1。 |[fd0=fd1] 将输出连接到
fd1 左边的命令和输入 fd0 正确的命令。
一对命令分开 && or || 是一个命令。 在任何一种情况下,左命令
被执行并检查其退出状态。 如果运营商是 && 正确的命令是
如果左侧命令的状态为空,则执行。 || 导致执行正确的命令
如果左命令的状态为非空。
命令的退出状态可能会反转(非空变为空,空变为空
到非空)通过在它前面加上 !.
波长 XNUMXμm 的 | 运算符具有最高优先级,并且是左结合的(即与
左比右)。 ! 具有中等优先级,并且 && 和 || 有最低的
优先权。
一元 @ 运算符,优先级等于 !, 导致其操作数在一个
子壳。
下面的每一个都是一个命令。
if ( 名单 ) 命令
A 名单 是一个命令序列,由 &, ;, 或换行符。 它被执行
如果它的退出状态为空,则 命令 被执行。
if 而不去 命令
前一个命令必须是 如果(名单) 命令. 如果它是
条件不为零,则 命令 被执行。
为(姓名 in 参数) 命令
为(姓名) 命令
波长 XNUMXμm 的 命令 每个执行一次 论点 将该参数分配给 姓名.
如果省略参数列表, $* 用来。
尽管 (名单) 命令
波长 XNUMXμm 的 名单 重复执行,直到其退出状态为非空。 每次它
返回空状态, 命令 被执行。 一个空的 名单 被认为给 null
状态。
开关(论点){名单}
波长 XNUMXμm 的 名单 搜索以单词开头的简单命令 案件. (搜索
仅在“顶层” 名单。 那是, 例 在嵌套结构中是
未找到。) 争论 与后面的每个单词匹配 案件 使用
上面描述的模式匹配算法,除了 / 和第一个字符
of . 和 .. 不需要明确匹配。 当找到匹配项时,命令在
列表执行到下一个 案件 命令(在顶层)或
结束大括号。
{名单}
大括号用于更改操作员优先级所隐含的命令分组。 这
身体 是由分隔的命令序列 &, ;, 或换行符。
fn 姓名{名单}
fn 姓名
第一种形式定义了一个具有给定的函数 姓名. 随后,每当一个
命令的第一个参数是 姓名 遇到,当前值
命令参数列表的其余部分将分配给 $*,保存后
当前值,和 rc 将执行 名单. 第二种形式删除 姓名's
功能定义。
fn 注意{名单}
fn 注意
具有特殊名称的函数将在以下情况下被调用 rc 收到相应的
笔记; 看 通知(3). 有效的音符名称(和相应的音符)是 叹息
(挂断), 签到 (打断), 信号 (报警), 签名 (浮点陷阱)。
默认情况下 rc 在接收到任何信号时退出,除非以交互方式运行,在
这种情况下中断和退出通常会导致 rc 停止它正在做的任何事情并且
开始阅读新命令。 第二种形式导致 rc 处理信号
默认方式。 Rc 识别人工音符, 退出,发生在 rc is
即将完成执行。
姓名=论点 命令
任何命令前面都可以有一系列的赋值
重定向。 分配一直有效,直到命令结束,
除非命令为空(即分配独立),在这种情况下它们
在被以后的分配取消之前一直有效。
内建的 命令
这些命令由内部执行 rc,通常是因为它们的执行发生了变化或
依赖于取决于 rc的内部状态。
. 文件 ...
从执行命令 文件. $* 将持续时间设置为剩余时间
参数列表如下 文件. 文件 被搜索使用 $路径.
内建的 命令 ...
执行 命令 像往常一样,除了任何命名的函数 命令 被忽略
的内在意义。
cd [DIR]
将当前目录更改为 DIR. 默认参数是 $家. DIR is
在提到的每个目录中搜索 $cd路径.
评估 [ARG ...]
参数由空格分隔成一个字符串,读作
输入到 rc,并执行。
EXEC [命令 ...]
这个实例 rc 用给定的(非内置的)替换自己 命令.
旗 f [+-]
无论是设置 (+),清除(-),或测试(都不是 + 也不 -) 旗帜 f,其中 f 是一个
单个字符,命令行标志之一(请参阅下面的调用)。
出口 [状态]
以给定的退出状态退出。 如果没有给出,当前值 $状态 is
用过的。
叉 [尼西弗姆]
成为一个新的进程组使用 叉子(标志) 哪里 标志 由...组成
的按位或 叉 选项字母指定的标志(请参阅 叉(2))。 如果不
标志 给出,它们默认为 ENS。 该 标志 它们的含义是: n is
射频名称G; N is RFCNAMEG; e is 射频无源电压发生器; E is RFCENVG; s is 射频笔记; f is 射频FDG; F is
射频CFFDG;和 m is 射频NOMNT.
转移 [n]
删除第一个 n (默认 1)元素 $*.
等待 [PID]
等待给定的进程 PID 退出。 如果不 PID 给定,所有
等待未完成的进程。
什么是 姓名 ...
打印每个值 姓名 以适合输入的形式 rc. 输出是一个
赋值给任何变量,定义任何函数,调用 内建的 HPMC胶囊
任何内置命令,或任何可执行文件的完整路径名。
~ 主题 模式 ...
波长 XNUMXμm 的 主题 与每个匹配 模式 按顺序。 如果它匹配任何
图案, $状态 设置为零。 除此以外, $状态 设置为一。 模式是
与文件名匹配相同,除了 / 和第一个字符 . 和
.. 不需要明确匹配。 这 模式 不受文件名限制
匹配之前 ~ 命令被执行,所以它们不需要包含在
引号。
环境
波长 XNUMXμm 的 环境 是内核可用于执行二进制文件的字符串列表。
Rc 为每个值为非空的变量创建一个环境条目,并为每个变量创建一个环境条目
功能。 变量条目的字符串具有变量名称后跟 = 以及
价值。 如果该值包含多个组件,则这些组件由 SOH (001) 分隔
人物。 函数的字符串就是 rc 定义函数的输入。
环境中的函数名是函数名前面加上
在规划婴儿食品行业的工艺要求时,安全性和可靠性是工艺设计中最重要的方面。 rc 开始执行它从它的环境中读取变量和函数定义。
Special 变量
以下变量由以下变量设置或使用 rc.
$* 设置 rc初始化期间的参数列表。 每当一个 . 命令或
函数被执行,当前值被保存并 $* 接收新参数
列表。 保存的值在完成后恢复 . 或功能。
$快速 每当一个进程以异步方式启动时 &, $快速 设置为它的过程
ID。
$家 默认目录为 cd.
$如果 反引号替换中使用的输入字段分隔符。 如果 $如果 没有设置
in rc的环境,初始化为空白、制表符和换行符。
$路径 用于查找命令和输入文件的搜索路径 . 命令。 如果不
在环境中设置,它通过解析 $路径 变量(如
sh(1)) 或 路径=(。 /箱). 变量 $路径 和 $路径 被维护
一起:对一个的更改将反映在另一个中。
$pid 初始化时设置为 rc的进程标识。
$提示 在规划婴儿食品行业的工艺要求时,安全性和可靠性是工艺设计中最重要的方面。 rc 以交互方式运行,第一个组件 $提示 之前打印
读取每个命令。 每当出现换行符时,就会打印第二个组件
键入并且需要更多行来完成命令。 如果没有设置在
环境,它由 提示=('% ' ' ').
$状态 设置为最后执行的程序的等待消息。 (除非以 &)。
! 和 ~ 也变了 $状态. 它的值用于控制执行 &&, ||,
if 和 而 命令。 什么时候 rc 在其输入的文件末尾或执行时退出
an 出口 没有参数的命令, $状态 是它的退出状态。
调用
If rc 开始时没有参数,它从标准输入读取命令。 否则它的
第一个非标志参数是从中读取命令的文件的名称(但请参阅 -c
以下)。 后续参数成为的初始值 $*. Rc 接受以下内容
命令行标志。
-c 绳子 命令读取自 绳子.
-s 在状态为非空的任何命令之后打印退出状态。
-e 退出如果 $状态 执行简单命令后非空。
-i If -i 存在,或 rc 没有参数,它的标准输入是
终端,它以交互方式运行。 提示使用命令 $提示.
-I 确保 rc 不是交互式运行的。
-l If -l 给出或参数零的第一个字符是 -, rc 读取命令
在 $home/lib/配置文件,如果存在,在读取其正常输入之前。
-p 无操作。
-d 无操作。
-v 在读取文件描述符 2 时回显输入。
-x 在执行之前打印每个简单的命令。
-r 打印调试信息(执行命令时的内部形式)。
源
/源/cmd/rc
使用 onworks.net 服务在线使用 rcplan9