9.2 Shell 命令语言

L52

学习目标

简单命令、重定向与管道、后台命令;在教学 Linux 终端中交互练习。

  • 能使用 ls、cat、cd 等简单命令浏览教学文件系统。
  • 能演示重定向、管道与后台命令(>、|、&)。

原理 · 深入理解

用户接口:命令解释程序 $ ls main.c los.h $ _ Shell 解析 · 创建进程 内核 程序 本课教学 Shell 读串口命令,不实现完整 UNIX 作业控制

9.2 Shell 命令语言

本节概览:先建立「Shell 命令语言」的框架,再依次展开下列小节。

  1. 简单命令简介
  2. 简单命令的类型
  3. 重定向与管道命令
  4. 通信命令
  5. 后台命令

9.2.1 简单命令简介

简单命令的格式比较自由:命令名字符个数及用于分隔命令名、选项、各参数间的空格数都是任意的。UNIX/Linux 规定命令由小写字母构成,可带参数表,用于给出执行命令时的附加信息。

命令名与参数表之间还可使用选项(自变量),用减号开始,后跟一个或多个字母、数字;一条命令可有多个选项,用于改变命令执行动作的类型。

Shell 命令语言提供许多不同形式的命令,并允许在一条命令行中有多个命令。若一条命令行中仅有一个命令,称为简单命令。一条简单命令实际上是一个能完成某种功能的目标程序的名字。

流行的 Shell 有多种类型。

Shell 的种类

现在流行的 Shell 有多种类型,下面简单介绍几种流行的 Shell。

  1. B Shell:最早的 Shell,由 Steve Bourne 开发
  2. C Shell:比 B Shell 更适于编程,是标准 BSD 命令解释程序
  3. Korn Shell:集合 C Shell 和 B Shell 的优点,与 B Shell 完全兼容

9.2.2 简单命令的类型

根据简单命令功能的不同,可将它们分成五大类。

  1. 进入与退出系统(注册与退出)
  2. 文件操作命令:cat 显示文件内容、cp 复制、mv 改名、rm 撤销、file 确定文件类型
  3. 目录操作命令:mkdir 建立目录、rmdir 撤销目录、cd 改变工作目录
  4. 系统访问命令:date 询问日期时间、who 询问当前用户
  5. 其它命令:信息维护、通信等

9.2.3 重定向与管道命令

管道命令:用符号「|」连接两条命令,使前一条命令的输出作为后一条命令的输入。

格式:$ command1 | command2,可串联多条命令形成流水线。

9.2.4 通信命令

信箱通信命令 mail:作为 UNIX 各用户之间进行非交互式通信的工具。发信者把要发送的消息写成信件,「邮寄」到对方信箱中。命令格式:mail。

9.2.5 后台命令

后台命令:有些命令执行时间很长,用户键入后无事可做,要一直等到执行完才能键入下一条命令。

UNIX 提供后台执行机制:在该命令后加「&」号,告诉 Shell 将该命令放后台执行,用户可在前台继续键入其它命令完成其它工作。

做 · 交互动画

  • 在教学 Linux 终端中输入命令,观察 Shell 的解析与执行。
  • 根据「学习目标」列出 3 个关键词,对照原理段落解释给自己听。

教学 Linux 终端

在终端中输入命令并回车。可试:ls、cat notes.txt、echo hi > a.txt、ls | cat、sleep 1 &。方向键可翻阅历史。

总结与提升

  • 能区分 Shell 与内核。
  • 能用自己的话复述学习目标,并指出概念与板上实验的对应。

延伸思考

  • 图形 UI 在 SOWL TFT 上对应哪一层?
  • 如果把本节机制拿到 Linux 或完整 OpenHarmony 上,会多出哪些硬件假设?

← 本阶段封面 · 课程列表