讲解

先分清两个词:终端(terminal)是那个黑窗口程序,负责显示文字和接收键盘输入;shell 是运行在终端里的命令解释器,负责解析你输入的命令并执行。macOS 默认的 shell 是 zsh,大多数 Linux 发行版默认是 bash。两者语法高度兼容,本教程的内容在两者中都能用。

打开终端看到的 user@host ~ % 这类文字叫提示符(prompt),通常包含用户名、主机名和当前目录,末尾的 $ 或 % 表示「可以输入了」(root 用户的提示符是 #,看到 # 要格外小心)。输入命令后按回车执行;想取消一条还没执行的命令,按 Ctrl+C;想清屏,按 Ctrl+L 或输入 clear。

最值得立刻养成的习惯是使用快捷键而不是鼠标:Tab 键自动补全命令和路径(按一下补全,按两下列出候选),上箭头调出上一条命令,Ctrl+A 跳到行首、Ctrl+E 跳到行尾,Ctrl+C 中断当前命令,Ctrl+D 结束输入或退出会话。熟练之后,你会发现命令行比鼠标点来点去快得多。

示例

# echo 原样输出,多个参数用空格连接
echo "你好,终端"
echo 一行 可以 有 多个 参数

# shell 可以顺手做算术
echo "6 乘以 7 等于 $((6 * 7))"

# printf 按格式输出:%s 是字符串,%d 是整数
printf '姓名:%s,年龄:%d
' "小明" 18

# 看看当前用的是哪个 shell
echo "当前 shell:$SHELL"

再感受一下 shell 版本信息:

bash --version | sed -n '1p'

常见坑

  • 从教程里复制命令时把提示符也复制了:教程里的 $ 或 # 是提示符,不是命令的一部分,只复制它后面的内容。
  • 中英文标点混用:命令行只认英文引号、英文空格。打成「中文引号」或全角空格,shell 会报错或得到莫名其妙的结果。
  • 分不清 Ctrl+C 和 Ctrl+D:Ctrl+C 是「中断当前命令」,Ctrl+D 是「输入结束/退出会话」,按错了发现终端关了不要慌。
  • 盲目粘贴来路不明的多行命令:粘贴即执行,中间可能藏着 rm -rf。先粘贴到编辑器里看一遍,确认无害再进终端。

小结

终端是窗口、shell 是解释器,提示符结尾的 $ 或 # 提示权限级别。Tab 补全、上下箭头、Ctrl+C/L/A/E 是每天要用上百次的快捷键。下一节学会查帮助,就能自己探索任何命令了。