4.4 Shell 基础

什么是 Shell

什么是 Shell

Shell 是用户与操作系统内核进行交互的命令解释器(command interpreter),它接受用户输入的命令并将其传递给内核执行。用户的命令运行在 Shell 中,并通过 Shell 与系统进行交互。

FreeBSD 系统默认采用的 Shell 是 sh,即 Bourne shell,其原始作者为 Stephen R. Bourne。当前 FreeBSD 中的 sh 实现已经过重写,在功能上基本符合 POSIX.1-2024arrow-up-right 标准中关于 Shell 的规范要求。

Linux 中常见的 Shell 一般是 bash(Bourne Again Shell,即“又一个 Bourne shell”)。而 macOS 中的默认 Shell 通常是 zsh(Z Shell)。

注意

Linux 中也存在 sh,但通常被软链接到 bash 或其他 Shell,它们并不是真正的 sh。

  • Ubuntu 24.04 LTS 默认的 Shell:

快捷键

注意

以下快捷键的执行不受键盘大小写状态(如 Caps Lock 开启或关闭)的影响。

使用 Scroll Lock 键在 TTY 界面上下翻页/翻行

使用 Scroll Lock 键(滚动锁定键):按下 Scroll Lock 键后,可以使用上 ↑/下 ↓ 方向键以及 Page Up/Page Down 键对屏幕进行操作。

不同点:

  • 上 ↑/下 ↓ 方向键:使 TTY 界面上下滚动一行

  • Page Up/Page Down 键:使 TTY 界面上下滚动一页

再次按下 Scroll Lock 键将退出此模式。

技巧

SL 键在 HOME 键的上方,PS 截图键 Print Screen 的右侧,PB 键 Pause/Break 的左侧。

事实上,从历史角度来看,Scroll Lock 键正是为此类用途而设计的,它能在文本界面中滚动而不影响光标位置。

使用 Shift 组合键在 TTY 界面上下翻页/翻行

使用 Shift 快捷键:

  • Shift + 上 ↑/下 ↓ 方向键——使 TTY 界面上下滚动一行

  • Shift + Page Up/Page Down 键——使 TTY 界面上下滚动一页

补全命令或目录

一般可以使用 Tab 键补全命令或目录;上箭头 用于查看上一条命令,下箭头 用于查看下一条命令。

  • 补全命令

  • 补全文件目录或文件名

终止命令

若要终止命令,可以使用 Ctrl+C

让命令位于前台和后台

Ctrl+Z:将当前进程挂起到后台,随后可使用 fg 命令将其恢复到前台:

其他

  • Ctrl+L(字母 L):清空屏幕

  • Ctrl+A:将光标移动到命令行首

  • Ctrl+E:将光标移动到命令行尾

课后习题

  1. 在 FreeBSD 中编写一个简单的 sh 脚本,实现命令补全的最小示例脚本,测试其功能并记录结果。

  2. 查看 FreeBSD sh 源码中处理快捷键绑定的实现部分,使其更现代化。

  3. 修改 FreeBSD 中 shell 的默认提示符配置,验证其行为变化。

最后更新于