路线图

命令行入门

星辉 2026-07-02 阅读 4 min 711 字 路线图
命令行入门 封面

Linux 运维基础 · 第一章 目标:理解终端和 Shell 的关系,掌握命令行基本操作,学会查阅手册


1. 终端 vs Shell 的区别#

很多人把"终端"和"Shell"混为一谈,但它们是完全不同的两层东西。

终端(Terminal Emulator)#

终端是一个图形界面程序,它负责显示文字、接收键盘输入。你看到的那个黑色窗口,就是终端。

常见终端程序:

平台常见终端
macOSTerminal.app / iTerm2
Linux 桌面GNOME Terminal / Konsole / Alacritty
WindowsWindows Terminal / PowerShell 窗口
远程连接SSH 客户端(PuTTY / macOS Terminal 内的 ssh 命令)

终端的核心职责就两件事:把你的键盘输入送给 Shell,把 Shell 的输出显示在屏幕上。它本身不解释命令。

Shell(壳程序)#

Shell 是一个命令解释器进程,它读入你敲的命令字符串,解析、执行,然后把结果返回给终端显示。

常见 Shell 类型:

Shell全称说明
bashBourne Again SHell最主流,几乎所有 Linux 默认 Shell
zshZ ShellmacOS 默认,插件生态丰富(Oh My Zsh)
dashDebian Almquist Shell轻量,常用于执行 /bin/sh 脚本
fishFriendly Interactive Shell自动建议、语法高亮,但语法不兼容 bash
shBourne Shell最古老的 Shell,现在基本只作为兼容层存在

查看你当前使用的 Shell:

bash
# 方法一:看进程
ps
# 输出中 CMD 列会显示 bash 或 zsh 等

# 方法二:查当前正在运行的 Shell(最准)
echo $0
# 输出如:-bash 或 bash;ps -p $$ 也能看当前 shell

# 方法三:查环境变量里的登录 Shell
echo $SHELL
# 注意:$SHELL 是登录时的默认 Shell。如果你临时敲了 zsh 进另一个 Shell,
# 它不会跟着变——此时以 $0 或 ps -p $$ 为准

# 方法四:查系统记录的默认登录 Shell
getent passwd "$(whoami)"
# 每行末尾(第 7 字段)就是默认 Shell。getent 比 grep /etc/passwd 更准:
# 不会误匹配子串,也能查到 LDAP/NIS 等网络用户

它们的关系(一句话)#

终端是窗口,Shell 是引擎。 终端提供输入/输出的界面,Shell 提供命令解析和执行的逻辑。换一个终端程序(比如从 GNOME Terminal 换到 Alacritty),Shell 还是同一个 bash;换一个 Shell(比如从 bash 换到 zsh),终端窗口还是同一个。

类比理解#

text
你(用户)
  ↓ 键盘输入
终端(Terminal)    ← 相当于电话机,负责收发信号
  ↓ 传递命令字符串
Shell(bash/zsh)   ← 相当于翻译官,理解你的话并执行
  ↓ 调用系统调用
内核(Kernel)      ← 相当于操作系统的大脑,真正干活
  ↓ 返回结果
Shell ← 把结果格式化
  ↓ 传递输出
终端 ← 显示到屏幕上
你(看到结果)

2. 常用快捷键#

命令行操作的效率,很大程度上取决于你是否熟悉快捷键。以下是最常用的分类整理。

日常高频(必须记住)#

快捷键功能说明
Tab自动补全补全命令名、文件路径;双击 Tab 显示所有候选
Ctrl+C中断当前任务发送 SIGINT 信号,强制停止正在运行的命令
Ctrl+Z挂起当前任务发送 SIGTSTP,任务变 Stopped(暂停,非终止);fg 恢复到前台,bg 转后台继续运行
Ctrl+D退出当前 Shell发送 EOF,等效于输入 exit
Ctrl+L清屏等效于 clear 命令,但不用中断当前操作
↑ / ↓切换历史命令上一条 / 下一条

光标移动(编辑长命令时用)#

快捷键功能
Ctrl+A光标跳到行首
Ctrl+E光标跳到行尾
Ctrl+F光标右移一个字符(等效于右箭头)
Ctrl+B光标左移一个字符(等效于左箭头)

剪切与粘贴(行内编辑)#

快捷键功能
Ctrl+U剪切从光标到行首的内容
Ctrl+K剪切从光标到行尾的内容
Ctrl+W剪切光标前的一个单词
Ctrl+Y粘贴刚才剪切的内容

搜索与扩展#

快捷键功能
Ctrl+R搜索历史命令(输入关键词即匹配)
Ctrl+G退出历史搜索模式
!!执行上一条命令(sudo !! = 用 sudo 重跑上一条)
!$获取上一条命令的最后一个参数
Esc+.!$,获取上一条命令最后一个参数

实用技巧#

bash
# 场景:上一条命令忘了加 sudo
$ apt update
E: Could not open lock file...
$ sudo !!          # 自动变成 sudo apt update

# 场景:快速搜索之前执行过的命令
Ctrl+R → 输入 "docker" → 显示最近一条含 docker 的命令
按 Enter 执行,按 Ctrl+G 取消

# 场景:路径补全
$ cd /etc/apac    → Tab → 自动补全为 /etc/apache2/

3. man 手册怎么看#

man(manual)是 Linux 最权威的命令参考手册,几乎每个命令都有对应的 man 页面。

基本用法#

bash
man <命令名>        # 查看命令的完整手册
man 5 passwd        # 查看第 5 章节(配置文件格式)的 passwd 说明
man -k keyword      # 搜索包含关键词的手册页(同 apropos)

手册章节编号#

man 手册按主题分成 9 个章节,同一个名字可能出现在不同章节:

章节号内容
1用户命令(最常用)
2系统调用(内核接口)
3库函数(C 语言等)
4特殊文件(如 /dev 下的设备文件)
5文件格式与配置文件(如 /etc/passwd 的格式说明)
6游戏
7杂项(协议、字符集等)
8系统管理命令(通常需要 root)
9内核相关

关键区分man passwd 默认显示第 1 章(命令用法),man 5 passwd 显示第 5 章(配置文件格式)。这是两个完全不同的东西。

man 页面内的导航#

man 页面由 less 分页器显示,导航方式与 less 一致:

操作功能
Space / b向下翻一页 / 向上翻一页
/关键词向下搜索关键词
n / N下一个匹配 / 上一个匹配
q退出 man 页面
h查看帮助

手册页结构#

一个典型的 man 页面包含以下段落:

段落含义
NAME命令名和一句话简介
SYNOPSIS命令语法格式(方括号 = 可选,竖线 = 多选一)
DESCRIPTION详细功能描述
OPTIONS各参数选项的说明
EXAMPLES使用示例
EXIT STATUS退出码含义(0 = 成功)
SEE ALSO相关命令推荐
BUGS已知缺陷

除了 man,还有什么?#

工具用途何时用
命令 --help快速查看常用参数不需要完整手册,只想快速确认某个选项
info 命令GNU 的超文本手册(比 man 更详细)查看 GNU 工具(如 coreutils)的深层说明
whatis 命令一句话描述命令功能快速确认命令是干什么的
apropos 关键词搜索相关命令不知道具体命令名,但知道功能关键词
bash
# 示例:不知道怎么看磁盘分区,搜索关键词
$ apropos partition
fdisk (8)             - partition table manipulator for Linux
partprobe (8)         - inform the OS of partition table changes
sfdisk (8)            - partition table manipulator for Linux

4. 命令的基本结构(命令 + 选项 + 参数)#

Linux 命令的通用格式:

text
命令  [选项]  [参数]

三个组成部分:

组成说明示例
命令要执行的动作/程序名ls, cp, grep
选项修改命令行为的开关-l, -a, --help
参数命令操作的对象文件名、目录路径、搜索关键词

选项的两种风格#

短选项:单个字母,前面一个横杠 -

bash
ls -l           # 长格式列出
ls -a           # 显示隐藏文件
ls -la          # 短选项可以合并:等效于 ls -l -a

长选项:完整单词,前面两个横杠 --

bash
ls --all        # 等效于 -a
ls --human-readable  # 等效于 -h(人类可读的大小格式)
ls -l --sort=size    # 长选项和短选项可以混用

长选项更易读、更自解释,适合写脚本;短选项更省敲键次数,适合日常操作。

参数的顺序#

多数命令中,选项在前、参数在后:

bash
grep -rn "error" /var/log/        # 选项 -rn,参数 "error" 和路径
cp -r src_dir/ dest_dir/          # 选项 -r,参数 源目录 和 目标目录

但也有例外,比如 find 的参数结构比较特殊(后续章节专门讲)。

带值的选项#

有些选项需要附带一个值:

bash
head -n 20 file.txt               # -n 选项,值为 20(显示前 20 行)
tar -czf archive.tar.gz dir/      # -f 选项,值为 archive.tar.gz
ssh -p 2222 user@host             # -p 选项,值为 2222

短选项带值时,值紧跟选项后面(可以空格分隔也可以连写):

bash
head -n20 file.txt                # 连写,等效于 head -n 20 file.txt
head -20 file.txt                 # 极简写法,有些命令支持省略 -n

命令行提示符#

你看到的提示符(Prompt)不是命令的一部分,它是 Shell 显示的"等待输入"标志:

bash
[user@host dir]$     # 普通用户,$ 结尾
[root@host dir]#     # root 用户,# 结尾

提示符的含义:用户名@主机名 当前目录。其中 ~ 表示用户的家目录。


本章小结#

知识点一句话记忆
终端 vs Shell终端是窗口,Shell 是翻译官
快捷键Tab 补全 / Ctrl+C 中断 / Ctrl+R 搜索历史
man 手册man 命令 看完整手册,--help 看快速参考
命令结构命令 [选项] [参数],短选项合并写,长选项更自解释

下一章:二、文件系统结构