shell命令的执行步骤(不完整)
来源:互联网 发布:手机淘宝怎么改用户名 编辑:程序博客网 时间:2024/06/10 03:46
(1)将命令分割成令牌,用元字符进行分割,包括空格、Tab键、换行字符、分号、圆括号、输如重定向符、输出重定向符、管道符和&符等等。令牌可以是单词,也可以是I/O重定向符
(2)检查第一个令牌是否不带引号或反斜线的关键字。如果令牌是开发关键字,开放关键字是指,if while ,for或其他控制语句的开始,Shell就认为此命令是复合命令,并为该复合命令进行内部设置
,并读取下一个命令,并且再次启动进程。如果此令牌不是复合命令,而是fi,done,then,else等,如果还是在首位,则认为该命令是错误的,抛出错误。
(3)检查该命令是否是命令的别人,检查命令的别名表,如果该命令是别名,则对该命令进行别人还原(也就是替换掉原来的令牌),并且进入步骤(1),如果不是别名,则进行下一步
(4)把花括号的内容展开,比如hel{o,j}o ,展开之后为heloo和heljo
(5)将单词开头的波浪号(~),替换成用户的家目录,比如是root用户,他的家目录就是/root
(6)将$开头的令牌进行变量替换,比如$JAVA_HOME,则是把环境变量中的JAVA_HOME中的值(/usr/local/jdk)取出来进行替换
(7)将反引号(`)的内容进行命令替换,比如 `echo "ABC"` ,则被替换成ABC
(8)将$((express))的内容进行算术运算并替换,比如$((2+1+5)),则把$((2+1+5))替换为8
(9)从变量、命令、算术运算符中替换的结果中取出命令行,用IFS(内部域)分割符
(10)进行通配符展开,比如 /etc/rd* ,展开之后就是在/etc目录下,所有以rc开头的文件
(11)取出通过IFS分割后的第一个字符串作为命令,他可以是二进制文件,shell脚本,
(12)进行IO的重定向操作
(13)执行命令
(2)检查第一个令牌是否不带引号或反斜线的关键字。如果令牌是开发关键字,开放关键字是指,if while ,for或其他控制语句的开始,Shell就认为此命令是复合命令,并为该复合命令进行内部设置
,并读取下一个命令,并且再次启动进程。如果此令牌不是复合命令,而是fi,done,then,else等,如果还是在首位,则认为该命令是错误的,抛出错误。
(3)检查该命令是否是命令的别人,检查命令的别名表,如果该命令是别名,则对该命令进行别人还原(也就是替换掉原来的令牌),并且进入步骤(1),如果不是别名,则进行下一步
(4)把花括号的内容展开,比如hel{o,j}o ,展开之后为heloo和heljo
(5)将单词开头的波浪号(~),替换成用户的家目录,比如是root用户,他的家目录就是/root
(6)将$开头的令牌进行变量替换,比如$JAVA_HOME,则是把环境变量中的JAVA_HOME中的值(/usr/local/jdk)取出来进行替换
(7)将反引号(`)的内容进行命令替换,比如 `echo "ABC"` ,则被替换成ABC
(8)将$((express))的内容进行算术运算并替换,比如$((2+1+5)),则把$((2+1+5))替换为8
(9)从变量、命令、算术运算符中替换的结果中取出命令行,用IFS(内部域)分割符
(10)进行通配符展开,比如 /etc/rd* ,展开之后就是在/etc目录下,所有以rc开头的文件
(11)取出通过IFS分割后的第一个字符串作为命令,他可以是二进制文件,shell脚本,
(12)进行IO的重定向操作
(13)执行命令
0 0
- shell命令的执行步骤(不完整)
- shell命令的执行
- 执行Shell命令的方法。
- shell执行命令的方式
- shell 与 命令的执行
- python的执行shell命令
- 执行不完整恢复
- system(执行shell 命令)
- shell_exec — 通过 shell 环境执行命令,并且将完整的输出以字符串的方式返回。
- shell中命令的执行:$( ) 命令
- make命令工作时执行的步骤
- shell调用脚本--直接退出不执行后续命令
- UBUNTU下shell脚本中执行export命令不生效
- Python调用shell命令的几种方法(在新进程中执行shell命令)
- linux C 语言的 system(执行shell 命令)
- linux C 语言的 system(执行shell 命令)
- Robotium学习(三)-执行shell命令的方法
- python执行shell命令比较好的库(envoy)
- tjut 3078
- JS与OC互调,JS打开系统相机,JS获取iOS系统图片,iOS中JS调OC
- OpenCV轮廓检测 物体旋转角度
- Jquery事件
- 关于EventBus3.0注解的方法使用.最为便捷的方法.
- shell命令的执行步骤(不完整)
- 2、数据类型、运算符和表达式
- 字典的快速赋值model: setValuesForKeysWithDictionary
- c++ 冒号和双冒号
- knockoutjs 创建字段并输出到模板后 js修改它的值 observable
- ie6兼容性
- Android实现推送方式解决方案
- 关于JSON和JSONP的详解
- fastboot 使用详解