跳到内容

第 0 卷 / 第 2 章 / 第 1 课

2.1 第一次和 Shell 对话 ​

前置知识:第1章(计算机到底是什么)

预计时间:5 分钟

练习环境:本章命令以 GNU/Linux 上的 Bash 5 为准;macOS 和 PowerShell 的差异会单独说明

完成标志:能区分终端、Shell、内建命令和外部程序

第 1 章的系统探查结束后,现在把注意力放到终端。屏幕末尾闪着一个 $:这里不需要先写完整程序,只要把一行文字交给 Shell,它就会查找命令、组织参数并启动程序。

先认清四个角色 ​

  • 终端负责输入和显示。
  • Shell 读取命令并处理参数。Bash、Zsh 和 PowerShell 都是 Shell,但语法不完全相同。
  • 内建命令由 Shell 自己执行,例如 Bash/Zsh 中的 cd。
  • 外部命令是磁盘上的程序,例如常见系统里的 /usr/bin/whoami。

提示符常以 $ 结尾。下面代码块里的命令不包含提示符,直接复制命令文字即可。

bash
whoami
hostname
date
pwd

输出取决于你的账户、机器、时区和当前目录,不需要和书里的某个用户名一致。

当前运行的是哪个 Shell ​

bash
printf 'login shell: %s\n' "$SHELL"
printf 'current process: '
ps -p $$ -o comm=

$SHELL 通常来自账户配置,表示登录 Shell;它不保证等于当前进程。你可能从 Bash 启动 Zsh,也可能在终端里进入容器。

再看命令来自哪里:

bash
type -a cd
type -a printf
type -a whoami
command -v whoami

type -a 能显示别名、函数、内建命令和外部命令,排查时通常比 which 完整。

命令、选项和参数 ​

bash
printf '%s\n' 'hello terminal'

这里 printf 是命令,'%s\n' 和 'hello terminal' 是两个参数。Shell 先按引用和展开规则构造参数,再执行命令。单引号保护其中的空格,因此整句话仍是一个参数。

需要帮助时:

bash
help cd          # Bash 内建命令
man whoami       # Linux/macOS 常见
whoami --help    # GNU/Linux 常见;并非所有平台都支持

这些命令都执行完后,再看看 pwd 的输出。下一页用它回答一个实际问题:命令里的相对路径从哪里开始找?

→ 下一步:目录和路径

Built with VitePress | Software Systems Atlas