命令行处理与版本控制全解析
1. 命令行处理步骤
在命令行操作中,shell 处理输入行的过程包含多个步骤。每一行从标准输入(STDIN)或脚本读取的内容被称为管道(pipeline),因为它可能包含一个或多个由零个或多个管道字符(|)分隔的命令。以下是命令行处理的详细步骤:
1.分割为标记:将命令按固定的元字符(如空格、制表符、换行符、;、(、)、<、>、| 和 &)分割成标记,标记类型包括单词、关键字、I/O 重定向符和分号。
2.检查第一个标记:查看是否为无引号或反斜杠的关键字。如果是如 if、function、{ 或 ( 等起始关键字,则该命令为复合命令,shell 会为其内部设置相关内容,读取下一个命令并重新开始处理;若不是复合命令的起始关键字,shell 会提示语法错误。
3.检查别名:将每个命令的第一个单词与别名列表进行匹配。若找到匹配项,则用别名定义替换,并返回步骤 1;否则,进入步骤 4。
4.花括号扩展:例如,a{b,c} 会扩展为 ab ac。
5.波浪号扩展:若波浪号在单词开头,将其替换为用户的主目录($HOME)。
6.用户主目录替换:将 ~user 替换为该用户的主目录。
7.参数扩展:对以美元符号($)开头的表达式进行参数(变量)替换。
8.命令替换:处理 $(