-
经过前面12个步骤的处理,shell命令中引号引用、保留字、别名、展开、替换、重定向等内容都已经设置完成,到了真正来执行命令的阶段。前面所有的步骤都是为了能够顺利执行命令而存在的,可以说命令执行是shell流程的**核心**。命令执行的流程只有两步(如图中蓝色部分所示),包括寻找可执行命令的第13步和执行该命令的第14步。此外,对于多任务操作系统,还需要了解bash的作业控制与信号机制。
更多 -
命令展开是shell变成语言灵活性的最佳体现,包含整体流程的5-11步。第5-7步都是各式各样的命令展开。基本的命令展开包括3种,分别为:大括号展开、波浪符号展开、参数展开,这三种命令展开本质上是shell语法糖的展开。第8,9两步实际上是子命令执行,并非语法糖。第10步将这些替换过后的内容重组起来,根据系统分隔符(Internal Field Seperator,IFS)再次分割(因为命令展开过程中会带来新的内容)。最后第11步,使用shell模式匹配方式展开路径和文件名。
更多 -
复合命令是通过shell保留字和简单命令组合形成的组合命令,算是shell脚本语言的基本结构。**每一个复合命令结构都由每一个保留字或控制符开始,并以对应的保留字或控制符结束**,这算是shell编程语言的一个特色,例如以`if`开头,`fi`结尾;`do`开头,`done`结尾等等。
更多 -
shell流程的第一大布就是生成初步命令,其主要处理流程为元字符分割为标记、引号处理、shell命令解析、别名展开。元字符将命令分割为标记,做为后续处理的准备工作。引号处理分为单引号、双引号和反斜杠的处理。shell命令解析这步比较复杂,涉及流程控制和复合命令,我们放到单独的文章里讨论。最后别名展开算是正式处理命令的第一步。
更多 -
我们在进行shell变成或使用CLI shell进行交互时,shell背后进行了复杂的处理流程。借由理清这个处理流程,会给我们对shell有更加深刻的认知。我们首先给出shell的执行流程图,接下针对每一个步骤进行详细说明。
更多 -
`shopt`命令在shell中用于显示和设置shell中的行为选项,通过这些选项以增强shell易用性。`shopt`命令若不带任何参数选项,则可以显示所有可以设置的shell操作选项。
更多 -
Linux CLI shell(如bash,zsh)通常情况下都是每输入一条指令,输出一个结果,一来一回的交互,但是有的时候一条指令的输出是冗长且繁杂的,我们需要对其输出进行再处理,才能找到我们需要的内容。此时,我们就需要像筛金子一样,逐层过滤掉无用的沙子,Linux提供了这样的筛子——管道,使我们能够接续处理数据。
更多