1.3 第一次进入命令行

预计阅读时间:19 分钟

📖 目录

学习目标

学完本章后,你将能够:

  • 区分终端(Terminal Emulator)和 Shell 这两个概念
  • 解读命令提示符 alice@ubuntu:~$ 的每一部分含义
  • 运行最基本的 Linux 命令(whoamipwdlsdateecho
  • 理解命令的标准语法格式 command [-options] [arguments]
  • 熟练使用 Tab 自动补全和 Ctrl+R 历史搜索这两个最重要的效率技巧
  • 使用 man--helptypewhich 来自主探索未知命令

核心知识

  • 终端(Terminal Emulator)——图形化的窗口程序,本质是一个"显示器和键盘"的模拟器。它只负责将你的键盘输入传给 Shell,并把 Shell 的输出显示在屏幕上
  • Shell——命令行解释器,接收你输入的命令文本,解析后交给操作系统内核执行,并将结果返回给你
  • 命令提示符(Prompt)——Shell 等待输入时显示的字符串,通常包含用户名、主机名、当前目录等信息
  • 选项(Options)——修改命令行为的参数,通常以 -(短选项,如 -l)或 --(长选项,如 --all)开头
  • 参数(Arguments)——命令操作的目标对象(文件名、目录名、字符串等)
  • 自动补全(Tab Completion)——按 Tab 键让 Shell 自动补全命令名、文件名或路径,大幅减少打字错误
  • 历史搜索(Ctrl+R)——输入关键词搜索之前执行过的命令,按 Ctrl+R 后开始输入即可搜索
  • $PATH——操作系统用来查找可执行程序的目录列表,多个目录用冒号分隔

知识关联

  • 前置知识1.2:安装 Linux 已安装 Linux(虚拟机或 WSL2),现在打开终端即可实操
  • 后续影响:本章的命令行基本功是所有后续章节的基础——从 1.4:基本文件操作命令 文件操作到 2.1:Shell 脚本入门 Shell 脚本,全部在终端中完成
  • 配套技术:命令结构、Tab 补全、man 手册这些技能在后续每一章都会反复使用
  • 在整个体系中的位置:命令行是 Linux 的核心交互方式。熟练掌握本章内容是后续所有学习的前提条件

原理讲解

1. 终端 vs Shell——两个层的分工

许多初学者把"终端窗口"和"命令行"混为一谈。实际上它们分工明确:

你(键盘输入) → 终端模拟器 → Shell → 内核 → 硬件
你(阅读输出) ← 终端模拟器 ← Shell ← 内核 ← 硬件
  • 终端(Terminal Emulator):图形界面程序。它的祖先"电传打字机(Teletype,TTY)"是一台物理打字机连接着计算机。现在我们在 GNOME Terminal、Konsole、Windows Terminal 里看到的黑底绿字窗口,就是"虚拟的电传打字机"。终端只管"输入文字 ↔ 显示文字"。
  • Shell:运行在终端中的程序。它读取你输入的一行文本,解析为"命令 + 选项 + 参数",然后去执行。执行结果再写回终端显示。
  • 控制台(Console):物理直接连接的终端。在 Linux 中按 Ctrl+Alt+F3 切换到 tty3,看到的就是"物理控制台"(没有图形界面)。按 Ctrl+Alt+F1 或 F2 回到图形界面。

类比:终端就像餐厅的前台(收菜单、上菜),Shell 就像后厨的主厨(解析菜单、指挥做菜)。前台可以换(换个终端软件),主厨也可以换(从 Bash 换成 Zsh)。

📝 如何打开终端 Ubuntu:① Ctrl+Alt+T ② 右键桌面 → 在终端中打开 ③ 在应用菜单搜索 "Terminal"。macOS 用户连接到 WSL2 或 SSH:使用系统自带的 Terminal.app 或 iTerm2。Windows 用户:Windows Terminal 或 VS Code 内置终端。

Shell 是如何解析命令的?——从按键到执行的完整流程

当你在终端输入 ls -la /home 并按回车,Shell 内部经历了以下步骤:

  1. 词法分析(Tokenization):Shell 将输入字符串拆分为 token。空格是默认的分隔符,但引号可以改变这一行为——echo "hello world" 中的 "hello world" 是一个 token
  2. 变量展开:Shell 替换所有 $ 引用。$HOME 变成 /home/alice$? 变成上一个命令的退出码。*.txt 由 Shell 展开为匹配的文件名列表(globbing)
  3. 命令名解析:Shell 在 $PATH 目录中搜索名为 ls 的可执行文件,找到 /usr/bin/ls
  4. 创建子进程:Shell 通过 fork() 创建一个子进程,然后 exec() 加载 /usr/bin/ls 替换子进程的程序映像
  5. 参数传递:命令行参数通过 execve() 系统调用传递给新进程:["/usr/bin/ls", "-la", "/home"]
  6. 内核执行:内核调度该进程运行,ls 读取目录信息并输出到 stdout
  7. 回收与等待:Shell 通过 waitpid() 等待子进程结束,读取退出状态,然后显示新的命令提示符

为什么 Shell 要用子进程来执行命令? 这是为了隔离——如果命令执行出错或崩溃,不会影响 Shell 本身。Shell 是你的"指挥官",它派出"士兵"(子进程)去执行任务,即使士兵阵亡,指挥官安然无恙。

2. 命令提示符解读——屏幕上那行文字是什么

当你打开终端,看到的类似 alice@ubuntu:~$ 的字符串就是命令提示符(Prompt):

alice  @  ubuntu  :  ~  $
│      │  │       │  │  └── 用户身份提示符
│      │  │       │  │     $ = 普通用户
│      │  │       │  │     # = root(超级用户,小心!)
│      │  │       │  └── 当前工作目录
│      │  │       │      ~ = /home/用户名(家目录的简写)
│      │  │       │      / = 根目录
│      │  │       │      /var/log = 绝对路径
│      │  │       └── 分隔符
│      │  └── 主机名(计算机名)
│      └── 分隔符
└── 当前用户名

练习:打开终端,你的提示符长什么样?对着上面的解读,说出每一部分的含义。

3. 你的第一批命令——立刻上手

在终端中输入以下命令(每输入一行按一次回车),观察输出:

whoami        # 我是谁?→ 显示当前用户名
# 输出: alice
pwd           # 我在哪?→ 显示当前目录(Print Working Directory)
# 输出: /home/alice
ls            # 这里有什么?→ 列出当前目录的文件
# 输出: Desktop  Documents  Downloads  Music  Pictures  Videos
date          # 现在几点?→ 显示当前日期时间
# 输出: 2026年 07月 30日 星期四 14:30:00 CST
cal           # 这个月日历 → 显示当前月历
# 输出:       七月 2026
# 输出: 日 一 二 三 四 五 六
# 输出:           1  2  3  4
# 输出:  5  6  7  8  9 10 11
# 输出: 12 13 14 15 16 17 18
# 输出: 19 20 21 22 23 24 25
# 输出: 26 27 28 29 30 31
echo Hello    # 说你好 → 在屏幕上打印文字
# 输出: Hello
clear         # 清屏(或 Ctrl+L)

这些是最简单的命令——无选项、无参数。你将看到 Shell 收到输入、执行、输出、再等待输入的完整循环。

💡 练习建议 不要只是"看"这些命令。打开你的终端,一条一条输入,观察输出。打字本身是肌肉记忆训练——就像学打字一样,多打自然就记住了。

4. 命令的标准结构——command、option、argument

大多数 Linux 命令遵循一个统一的语法结构:

命令名  [选项]  [参数...]

举例分析:

ls  -l  /home
# 输出: 总用量 4
# 输出: drwxr-xr-x 22 alice alice 4096 7月  30 14:30 alice
# 输出: drwxr-xr-x  3 bob   bob   4096 7月  28 09:15 bob
│   │   └──── argument(参数):告诉命令"操作谁"
│   └──────── option(选项):修改命令行为,-l 表示"长格式显示"
└──────────── command(命令):命令名称,决定了「做什么」

更多例子:

# 只有命令,无选项无参数
date
# 输出: 2026年 07月 30日 星期四 14:30:05 CST

# 命令 + 选项(-u 表示 UTC 时间)
date -u
# 输出: 2026年 07月 30日 星期四 06:30:05 UTC

# 命令 + 参数
echo Hello World
# 输出: Hello World

# 命令 + 选项 + 参数(-a 显示隐藏文件)
ls -a /home
# 输出: .  ..  alice  bob

# 多个选项可以合并:-l -a -h → -lah
ls -lah /home
# 输出: 总用量 12K
# 输出: drwxr-xr-x  4 root  root  4.0K 7月  30 14:30 .
# 输出: drwxr-xr-x 22 root  root  4.0K 7月  30 14:30 ..
# 输出: drwxr-xr-x 22 alice alice 4.0K 7月  30 14:30 alice
# 输出: drwxr-xr-x  3 bob   bob   4.0K 7月  28 09:15 bob

# 长选项用 -- 开头
date --utc
# 输出: 2026年 07月 30日 星期四 06:30:05 UTC
ls --all --human-readable /home
# 输出: 总用量 12K
# 输出: drwxr-xr-x  4 root  root  4.0K 7月  30 14:30 .
# 输出: drwxr-xr-x 22 root  root  4.0K 7月  30 14:30 ..
# 输出: drwxr-xr-x 22 alice alice 4.0K 7月  30 14:30 alice
# 输出: drwxr-xr-x  3 bob   bob   4.0K 7月  28 09:15 bob

为什么选项叫"option"但参数叫"argument"?

  • Option(选项)是可选的——加了改变行为,不加用默认行为
  • Argument(参数)是必需品——比如 ls /home 中的 /home,表示要列出的目录
  • 很多命令有默认参数(如 ls 默认列出当前目录),所以参数也"看起来"可选

5. Shell 如何"找到"你输入的命令——$PATH 的作用

当你输入 ls 并回车,Shell 怎么知道 ls 这个命令对应的程序文件在哪里?

Shell 会搜索一个名为 $PATH 的环境变量(环境变量是操作系统存储配置信息的"变量")。$PATH 包含了一组目录路径,用冒号分隔:

$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

Shell 按照从左到右的顺序,在这些目录中查找你输入的命令。ls 通常位于 /usr/bin/ls——只要这个目录在 $PATH 中,Shell 就能找到它。这就是为什么你不需要输入 /usr/bin/ls 这样的完整路径。

which 查看命令的完整路径

$ which ls
/usr/bin/ls
$ which python3
/usr/bin/python3
$ which echo
/usr/bin/echo

6. 命令的四种类型——不是所有"命令"都是程序

Shell 能执行的"命令"分为四种:

类型特点例子
可执行程序位于磁盘上的独立二进制文件或脚本,通过 $PATH 查找lsdatepython3
Shell 内置命令Shell 自身实现的命令,不依赖外部文件,执行最快cdechotypeexport
别名(Alias)用户自定义的快捷方式,Shell 会优先匹配ll(很多系统默认 alias ll='ls -l'
函数(Function)Shell 脚本中定义的函数,也能作为命令执行用户自定义函数

type 命令查看一个命令属于哪种类型:

$ type ls
ls is aliased to `ls --color=auto'
$ type cd
cd is a shell builtin
$ type date
date is /usr/bin/date

7. 终端常用快捷键——让操作快 3 倍

以下快捷键直接在终端中有效(不用鼠标):

快捷键功能记忆技巧
Tab自动补全命令、文件名、路径🔑 最重要的效率工具!每天按几百次
Ctrl+C终止当前正在运行的命令当你误输了一个命令或程序卡住时
Ctrl+D发送 EOF(文件结束符),退出当前 Shell也可以直接输入 exit
Ctrl+L清屏(等价于 clear 命令)L 代表 clear
Ctrl+A光标跳到行首A 代表 Ahead(前面)
Ctrl+E光标跳到行尾E 代表 End(结尾)
Ctrl+U删除光标前到行首的所有内容U 代表 Undo(撤销输入)
Ctrl+K删除光标到行尾的所有内容K 代表 Kill(删除到结尾)
Ctrl+W删除光标前的一个词W 代表 Word(删除一个单词)
Ctrl+R搜索历史命令(输入关键词即搜即用)🔑 最重要!按一次 Ctrl+R 开始输入关键词
↑ / ↓浏览上一条 / 下一条历史命令不用重新打字
💡 Ctrl+R 使用技巧 按 Ctrl+R 后,终端会显示 (reverse-i-search)。输入关键词(如 apt),Shell 会实时匹配最近的包含该词的历史命令。再按 Ctrl+R 跳到更早的匹配。找到后按回车执行,或按 ←/→ 编辑后再执行。

示例代码

打开你的终端,逐条执行以下练习:

# 练习 1:自我介绍
whoami
# 输出: alice
pwd
# 输出: /home/alice
ls
# 输出: Desktop  Documents  Downloads  Music  Pictures  Videos

# 练习 2:看看系统信息
date -u        # UTC 时间
# 输出: 2026年 07月 30日 星期四 06:30:10 UTC
date           # 本地时间
# 输出: 2026年 07月 30日 星期四 14:30:10 CST
cal 2026       # 全年日历
# 输出: 2026 全年日历(共 12 个月,可自行运行 cal 2026 查看)
cal 12 2026    # 2026 年 12 月的日历
# 输出:      十二月 2026
# 输出: 日 一 二 三 四 五 六
# 输出:        1  2  3  4  5
# 输出:  6  7  8  9 10 11 12
# 输出: 13 14 15 16 17 18 19
# 输出: 20 21 22 23 24 25 26
# 输出: 27 28 29 30 31

# 练习 3:echo 和引号实验
echo Hello World
# 输出: Hello World
echo "Hello    World"   # 双引号保留空格
# 输出: Hello    World
echo 'Hello    World'   # 单引号保留所有字符
# 输出: Hello    World
echo $SHELL             # $ 变量展开,显示当前 Shell 路径
# 输出: /bin/bash
echo 'Your $SHELL is bash'  # 单引号不展开变量
# 输出: Your $SHELL is bash

# 练习 4:Tab 补全体验
# 输入 "ls /" 然后按两下 Tab,看看 Shell 列出什么
# 输入 "ec" 然后按 Tab,Shell 自动补全为 echo

# 练习 5:查看命令类型
type ls
# 输出: ls is aliased to `ls --color=auto'
type cd
# 输出: cd is a shell builtin
type echo
# 输出: echo is a shell builtin
type date
# 输出: date is /usr/bin/date

# 练习 6:查看命令路径
which ls
# 输出: /usr/bin/ls
which whoami
# 输出: /usr/bin/whoami

# 练习 7:历史搜索
# 按 ↑ 和 ↓ 浏览之前的命令
# 按 Ctrl+R 输入 "date",找到你之前输入的 date 命令

# 练习 8:中断一个命令
# 输入 ping 127.0.0.1,然后按 Ctrl+C 终止它

获取帮助:如何自己探索未知命令

Linux 命令行最重要的能力不是"记住所有命令",而是"知道如何查看命令的用法"。以下五种方式从详细到简洁排列:

方法命令特点使用场景
man 手册man ls最完整,等效于书本。按 q 退出,/ 搜索想深入了解一个命令的所有功能时
--helpls --help简洁版,只显示选项摘要快速查某个选项的写法
info 文档info lsGNU 的超文本文档,可导航man 不够用时
whatiswhatis ls一句话描述命令的作用忘了某个命令是做什么的时候
tldrtldr ls社区提供的常见用法示例(需安装)想快速看实际使用的例子
# 实操:探索 ls 命令
man ls          # 阅读 ls 的完整手册
                # 重要导航:↑↓ 滚动,/ 搜索,n 下一个匹配,q 退出

ls --help       # 快速查看选项(比 man 短得多)
# 输出: Usage: ls [OPTION]... [FILE]...
# 输出: List information about the FILEs (the current directory by default).
# 输出: Sort entries alphabetically if none of -cftuvSUX nor --sort is specified.
# 输出: ...

whatis ls       # "list directory contents"
# 输出: ls (1) - list directory contents

# 安装 tldr(Ubuntu 可直接用 apt 安装)
sudo apt install -y tldr
# 输出: Reading package lists... Done
# 输出: Building dependency tree... Done
# 输出: The following NEW packages will be installed:
# 输出:   tldr
# 输出: 0 upgraded, 1 newly installed, ...
# 使用示例
tldr ls         # 显示 ls 的常见用法示例
# 输出: ls
# 输出: List directory contents.
# 输出: - List files one per line:
# 输出:   ls -1

常见错误

错误/误区解决方案
"命令提示符一直不出现,终端卡住了"按 Ctrl+C 中断当前命令。如果卡死的是终端本身,可以关闭标签页重新打开。或者运行 reset 重置终端状态。
"输入了命令但提示 'command not found'"① 检查拼写是否正确(Linux 命令严格区分大小写)② 检查该软件是否已安装(如 python3 需要 Python 3)③ 检查 $PATH 是否正确
"忘了加 sudo,提示 Permission denied"用 ↑ 翻出刚才的命令,按 Home 键跳到行首,输入 sudo (注意后面有空格),再回车。比重新打一遍快得多。
"分不清哪部分是终端输出、哪部分是提示符"看行的开头:以 $# 结尾的是等待你输入的命令行。没有这些符号的是程序的输出。
"在 / 目录下乱操作"刚学的时候避免在 /(根目录)执行删除或修改命令。一直在你的家目录 ~ 操作是安全的。
"把 ls 写成 1s(数字 1 代替字母 l)"这是初学者最常见的笔误。ls 是小写字母 L + S,不是数字 1 + S。你可以在终端中试试看会报什么错误。
"在脚本中使用 ifconfig 配置网络"ifconfig 来自 net-tools 包,已废弃。现代 Linux 使用 ip 命令:ip addr show 查看 IP,ip link set eth0 up/down 启用/禁用网卡。见 4.5:网络故障排查 网络故障排查。

为什么推荐用 SSH 密钥而不是密码登录?

SSH 密钥认证相比密码认证有三个关键优势:

  • 抗暴力破解:2048 位 RSA 密钥的安全强度相当于约 60 位密码。暴力破解密码可能在几小时内成功,暴力破解密钥则需要宇宙年龄级别的时间
  • 无需传输密码:密钥认证过程中,私钥永远不离开本地机器。服务器只存储公钥,即使服务器被入侵,攻击者也无法获取你的私钥
  • 自动化友好:自动化脚本和 CI/CD 系统无法"交互式输入密码",但可以使用密钥认证实现无人值守登录

密码认证的唯一优势是"简单直观",但在安全性要求较高的场景中,SSH 密钥是行业标准。

补充说明:本章仅从概念层面介绍 SSH 密钥认证的原理,SSH 的实操配置(密钥生成、分发、ssh_config 等)将在 2.11:SSH 深入 SSH 深入中详细讲解。

最佳实践

#建议说明
1别背命令,练命令Linux 命令有几千个,没人能全记住。关键是多用——每天在终端中操作 30 分钟,两周后肌肉记忆自然形成。
2多用 Tab,少打字这是提升效率最立竿见影的方法。输入文件名的前几个字符然后按 Tab,Shell 会帮你补全。
3Ctrl+R 替代 ↑ 翻页当历史命令很多时,↑ 要找很多次。Ctrl+R + 关键词 是秒查。
4先 man 后问遇到不认识的命令,先 man 命令名。Linux 社区的礼貌是"先 RTFM(Read The F***ing Manual)"。
5用 Tab 发现命令输入 apt- 然后按两次 Tab,Shell 会列出所有以 apt- 开头的命令。这是"探索式学习"的捷径。
6把错误的命令保留在终端里不要一输错就立刻清屏。看看错误信息是什么——"command not found"、"Permission denied"、"No such file"——这些信息会帮你逐渐理解系统的工作方式。
7培养 "命令 + 选项 + 参数" 的思维习惯每看到一个命令,下意识地划分它的三部分。这能帮你快速理解复杂命令的结构。

练习题

  1. (概念)终端(Terminal Emulator)和 Shell 有什么区别?试着用你自己的话解释。
  2. (概念)普通用户的命令提示符以 $ 结尾,root 用户以 # 结尾。为什么 Linux 要做这种区分?
  3. (实操)在终端中输入 cal 9 1752,观察输出有什么奇怪的地方?搜索一下为什么。
  4. (实操)type 命令检查以下命令的类型:pwdclearhistoryalias。把结果记录下来。
  5. (实操)运行 echo $PATH,查看你的系统中 $PATH 包含哪些目录。然后用 which 找到 catgrepfind 分别在哪个目录。
  6. (探究 🔍)运行 man 7 hier,阅读 Linux 目录结构的官方文档。找到 /usr/var/etc/tmp 的用途描述。这个挑战有点大,先看你能理解多少。
  7. (探究 🔍)尝试输入 ls -la /usr/bin/ | less,然后用 ↑↓ 滚动查看 /usr/bin/ 下的所有命令。数一数一共有多少个可执行程序。这个目录就是 $PATH 的核心组成部分。
点击查看答案
  1. (概念)终端(Terminal Emulator)是显示文字和接收键盘输入的窗口程序(如 GNOME Terminal),负责输入输出显示。Shell 是运行在终端中的命令行解释器(如 Bash),负责解析并执行命令。类比:终端是前台(收菜单、上菜),Shell 是后厨主厨(解析菜单、指挥操作)。
  2. (概念)`$` 表示普通用户,`#` 表示 root 超级用户。Linux 刻意区分提示符以警示操作风险——看到 `#` 提示符时应格外小心,因为 root 拥有系统完全控制权,误操作可能破坏整个系统。这体现了"安全可见性"设计。
  3. (实操)`cal 9 1752` 显示 1752 年 9 月奇怪的日期跳变:2 日后面直接是 14 日。这是因为英国在 1752 年从儒略历切换为格里高利历,跳过了 11 天以修正历法累积误差。这是一个历史彩蛋,也是 `cal` 命令的有趣测试。
  4. (实操)`type` 输出:pwd 是 shell builtin(Shell 内建命令),clear 通常是 /usr/bin/clear(外部程序),history 是 shell builtin,alias 是 shell builtin。内建命令直接在 Shell 内部执行,无需 fork 子进程,比外部命令更快。
  5. (实操)`echo $PATH` 输出类似 `/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin`。`which cat` → `/usr/bin/cat`,`which grep` → `/usr/bin/grep`,`which find` → `/usr/bin/find`。如果 which 返回空,则该命令不在 PATH 中或未安装。
  6. (探究 🔍)`man 7 hier` 输出 Linux 目录层次标准手册。`/usr` 是次级层级(大部分用户工具),`/var` 存放可变数据(日志、缓存、数据库),`/etc` 存放本机配置,`/tmp` 存放临时文件(重启后清空)。先不必全部理解,只关注主要目录。
  7. (探究 🔍)`/usr/bin/` 下程序数量因系统而异(Ubuntu 桌面版约 1500-2500 个)。这就是为什么需要 `$PATH`——手工记忆几千个程序路径是不可能的。按 ↑↓ 在 less 中滚动浏览,观察不同类别命令的命名规律。

学习检查点

学完本章后,请检验自己是否掌握以下内容:

检查项自测问题验证方法
概念理解能用自己的话解释终端(Terminal)和 Shell 的区别尝试向他人讲解
命令操作能不查文档使用 whoami、pwd、ls、date、echo 等基础命令在终端实际执行
原理掌握能说出 $PATH 环境变量的作用和命令查找机制画出流程图
故障排查能独立解决"command not found"和"Permission denied"错误模拟故障并修复
最佳实践能说明为什么 Tab 补全和 Ctrl+R 是最重要的效率技巧对比不同操作方式

本章总结

本章是命令行的"第一天"。你学会了拆解命令提示符、运行基础命令、理解命令的三段式结构、用 Tab 和 Ctrl+R 显著提升效率、以及遇到未知命令时如何自己找答案。

核心概念速查

概念一句话定义
终端 (Terminal)显示文字和接收键盘输入的图形化窗口
Shell读取、解析、执行命令的命令行解释器(Linux 默认是 Bash)
命令提示符alice@ubuntu:~$ 结构:用户@主机名:当前目录$
命令结构command [-options] [arguments] 三段式语法
$PATHShell 查找可执行程序的目录列表,冒号分隔
Tab 补全最重要的效率技巧:按 Tab 自动补全命令名或路径
Ctrl+R第二重要的效率技巧:搜索历史命令
man 手册Linux 命令的完整官方文档(按 q 退出,/ 搜索)

下一步:进入 1.4:基本文件操作命令「基本文件操作命令」,学习在 Linux 中浏览和操作文件。

延伸阅读

常见问题

终端提示符 $ 和 # 有什么区别?
$ 表示普通用户,# 表示 root 超级用户(管理员)。看到 # 提示符时要格外小心,因为 root 没有任何操作限制,一个误操作可能损坏系统。日常操作建议使用普通用户,需要提权时用 sudo。
Tab 补全失灵怎么办?
Tab 补全靠 bash-completion 包实现。如果按 Tab 没反应,先检查是否安装了该包(sudo apt install bash-completion),然后确认 ~/.bashrc 中有 source /usr/share/bash-completion/bash_completion。重新打开终端或 source ~/.bashrc 生效。
man 手册太长看不懂,有什么替代方案?
man 手册确实对新手不友好。建议先用 tldr(Too Long, Don't Read)工具,它用简短的示例展示命令常用场景。安装方式:sudo apt install tldr 或 pip install tldr。此外 --help 或 -h 参数通常给出更简洁的用法摘要。
↑ 回到顶部