Linux 终端完全指南
完整参考实用速查持续更新🎯 学习目标
掌握 Linux 终端的核心操作技能,包括终端基础命令、文件系统管理和文件归档压缩,适合 Linux 初学者和需要快速查阅命令的开发者。
一、🚀 终端基础操作
1.1 打开和关闭终端
| 操作 | 快捷键 |
|---|---|
| 打开终端 | Ctrl + Alt + T |
| 关闭终端 | Ctrl + D |
1.2 基础命令
| 命令 | 描述 |
|---|---|
echo | 将命令行参数输出到标准输出 |
date | 显示当前日期和时间 |
cal | 显示日历 |
cat | 连接文件并输出到标准输出,适合查看单个文件内容 |
1.3 命令历史
| 命令 | 描述 |
|---|---|
history | 显示之前输入的命令历史 |
!! | 运行上一条命令 |
!50 | 运行历史记录中第 50 行的命令(按需替换行号) |
💡 清除历史记录
使用 history -c; history -w 可以清除命令历史记录。
1.4 重要术语定义
- Command(命令) — 在终端中输入并提交给 shell 解释的指令
- Shell — 解释命令含义的程序
- Terminal(终端) — 可以输入命令并提交给 shell 的图形窗口
1.5 命令结构
所有命令都遵循相同的基本结构:
commandName -options arguments命令名称:
commandName 必须是 Shell 路径中的有效程序。可以使用 which 命令检查:
which commandName💡 说明: 如果返回路径,则命令名称有效;反之则无效。
选项(Options):
可以为每个命令指定选项来自定义命令行为。选项有"短格式"和"长格式"两种形式。
| 格式 | 示例 | 说明 |
|---|---|---|
| 短格式(单独) | commandName -a -b -c args | 每个选项前加 - |
| 短格式(合并) | commandName -abc args | 多个选项可合并 |
| 长格式 | commandName --alpha --beta --charlie args | 使用 -- 前缀,不能合并 |
命令行参数:
命令行参数是命令操作的输入类型。有些命令可以接受无限数量的输入,有些需要特定数量,有些则不接受任何输入。
cal 12 2017
# cal 命令有 2 个参数:数字 12 和数字 2017选项的参数:
有时,命令选项也可以接受自己的参数(输入)。
cal -A 1 -B 1 12 2017
# -A 选项有参数 1
# -B 选项有参数 1
# cal 命令有 2 个参数(12 和 2017)1.6 使用手册
| 命令 | 描述 |
|---|---|
man -k <搜索词> | 在手册中搜索匹配的页面 |
man 5 <页面名> | 打开手册第 5 节中的手册页 |
man <页面名> | 打开手册第 1 节中的手册页 |
📎 关于 Linux 手册
查看相应视频下的 Linux 手册速查表,了解更多关于 Linux 手册和 man 页面的信息。
1.7 命令输入和输出
标准数据流可以重定向,并使用流编号进行识别。将一个命令的标准输出重定向到另一个命令的标准输入称为 管道(piping)。
重定向标准输出(流编号 1):
# 长格式
commandName -options arguments 1> destination
# 短格式
commandName -options arguments > destination重定向标准错误(流编号 2):
commandName -options arguments 2> destination
# 同时重定向标准输出和标准错误
commandName -options arguments 1> output_destination 2> error_destination重定向标准输入(流编号 0):
# 长格式
commandName -options arguments 0< input_source
# 短格式
commandName -options arguments < input_source1.8 管道操作
管道是将一个命令的标准输出连接到另一个命令的标准输入。使用管道字符 | 进行管道操作(Shift + \)。
commandOne -options arguments | commandTwo -options arguments💡 说明: 两个命令都可以像往常一样拥有自己的选项和命令行参数。管道可以根据需要连接任意多个命令。
使用 tee 命令对管道数据进行"快照":
⚠️ 重定向会中断管道
# ❌ 这不会工作
commandOne -options arguments > snapshot.txt | commandTwo -options arguments
# ✅ 使用 tee 命令
commandOne -options arguments | tee snapshot.txt | commandTwo -options arguments使用 xargs 将数据管道传递给仅接受命令行参数的命令:
# ❌ echo 不接受标准输入,这不会工作
commandOne -options arguments | echo
# ✅ 使用 xargs 将标准输入转换为命令行参数
commandOne -options arguments | xargs echo1.9 别名(Aliases)
别名允许你用易记的昵称保存管道和命令。在家目录的 .bash_aliases 文件中定义别名。
alias aliasName="THING YOU WANT TO ALIAS"⚠️ 注意格式
- 等号
=、aliasName和引号之间 没有空格 - 引号可以是双引号
"或单引号'
示例:
alias calmagic="cal -A 1 -B 1 12 2017"
# 运行 calmagic 就像运行 cal -A 1 -B 1 12 2017将管道传递给别名:
# 如果别名中第一个命令接受标准输入,可以管道传递
alias calmagic="xargs cal -A 1 -B 1 12 2017"
commandOne -options arguments | calmagic
# 也可以从别名输出数据到管道
commandOne -options arguments | calmagic | commandTwo -options arguments💡 提示
将别名视为可以在更复杂管道中使用的构建块。
二、🌳 文件系统管理
2.1 Linux 文件系统
Linux 文件系统遵循 树状结构,从基础(或根)目录开始,用斜杠 / 表示。
文件路径:
| 路径类型 | 说明 | 示例 |
|---|---|---|
| 绝对路径 | 从基础目录 / 开始 | /home/sarah/Documents/file1.txt |
| 相对路径 | 从当前工作目录开始 | Documents/file1.txt |
💡 注意
相对路径假设 shell 在 Sarah 的家目录中。
2.2 导航文件系统的关键命令
| 命令 | 描述 | 示例 |
|---|---|---|
pwd | 打印当前工作目录路径 | pwd |
cd [位置] | 更改目录(无位置则进入家目录) | cd /home/user |
ls [位置] | 列出目录内容 | ls -la |
2.3 导航快捷键
| 快捷键 | 描述 | 用法 |
|---|---|---|
~ | 当前用户的家目录 | cd ~ |
. | 当前文件夹 | ls . |
.. | 父目录 | cd .. |
2.4 通配符和正则表达式
Globbing 是使用 通配符 创建正则表达式来匹配文件名。
| 通配符 | 描述 | 示例 | 匹配 |
|---|---|---|---|
* | 匹配任意长度字符 | *.txt | file.txt、document.txt |
? | 仅匹配一个字符 | file?.txt | file1.txt、fileA.txt |
[options] | 匹配任何选项(一个位置) | [abc]*.txt | a1.txt、book.txt |
2.5 创建文件和目录
创建文件:
touch <filename>
# 示例:touch ~/Desktop/file1.txt创建目录:
mkdir <directory_name>
# 示例:mkdir ~/newdir2.6 删除文件和目录
| 命令 | 描述 | 安全级别 | 示例 |
|---|---|---|---|
rm <file> | 删除文件 | ⚠️ 中等风险 | rm ~/Desktop/file1.txt |
rm -r <directory> | 递归删除目录 | 🚫 高风险 | rm -r ~/newdir |
rm -i | 交互式删除 | ✅ 安全 | rm -i important.txt |
rmdir <empty_dir> | 仅删除空目录 | ✅ 安全 | rmdir ~/emptydir |
🚫 安全提示
对重要文件始终使用 -i 选项!
2.7 使用 Nano 编辑器编辑文件
Nano 是一个用户友好的终端文本编辑器。
| 符号 | 键 | 描述 | 示例 |
|---|---|---|---|
^ | Ctrl | 控制键组合 | ^O = Ctrl + O(保存) |
M- | Alt/Meta | Meta 键 | M-X = Alt + X |
nano filename.txt2.8 locate 命令
基于数据库的快速文件搜索
locate *.txt # 在数据库中查找所有 .txt 文件| 命令 | 描述 | 使用场景 |
|---|---|---|
locate -S | 显示数据库信息 | 检查数据库状态 |
sudo updatedb | 更新数据库 | 刷新文件索引 |
locate --existing | 验证结果存在 | 避免过时条目 |
locate --limit 5 | 限制为 5 个结果 | 快速搜索 |
⚠️ 速度与准确性
locate 速度快但依赖于数据库更新!
2.9 find 命令
强大的实时文件搜索,具有高级选项
基本示例:
find . # 搜索当前目录
find / # 搜索整个系统
find / -maxdepth 4 # 限制搜索深度高级选项:
| 选项 | 描述 | 示例 | 结果 |
|---|---|---|---|
-type f | 仅文件 | find . -type f | 列出文件 |
-type d | 仅目录 | find . -type d | 列出文件夹 |
-name "*.txt" | 名称匹配 | find . -name "*.pdf" | PDF 文件 |
-iname | 不区分大小写 | find . -iname "*.TXT" | 任何大小写的 .txt |
-size +100k | 大小超过 100KB | find . -size +1M | 大文件 |
-size -5M | 大小小于 5MB | find . -size -100k | 小文件 |
对结果执行命令:
# 将 /etc 中的所有文件复制到桌面
find /etc -exec cp {} ~/Desktop \;
# 交互式复制(更安全)
find /etc -ok cp {} ~/Desktop \;💡 大小单位
c— 字节k— KiB(1 KiB = 1024 字节)M— MiB(1 MiB = 1024 KiB)G— GiB
2.10 查看文件内容
基本查看:
cat ~/Desktop/hello.txt # 显示整个文件
less ~/Desktop/hello.txt # 分页查看高级查看选项:
| 命令 | 描述 | 用法 | 输出 |
|---|---|---|---|
cat <file> | 显示完整内容 | cat file.txt | 完整文件 |
tac <file> | 垂直反转 | tac file.txt | 从底到顶 |
rev <file> | 水平反转 | rev file.txt | 从右到左 |
head -n 15 <file> | 前 15 行 | head -20 log.txt | 文件开头 |
tail -n 15 <file> | 后 15 行 | tail -f log.txt | 文件末尾(跟随) |
less <file> | 分页查看 | less large.txt | 用箭头导航 |
💡 导航
在 less 中,按 q 退出,使用箭头键导航。
2.11 数据排序
基本排序:
sort filename.txt排序选项:
| 选项 | 描述 | 示例 | 结果 |
|---|---|---|---|
sort -r | 反向排序 | sort -r names.txt | Z 到 A |
sort -n | 数字排序 | sort -n numbers.txt | 1、2、10、20 |
sort -u | 仅唯一值 | sort -u duplicates.txt | 删除重复项 |
sort -k 2 | 按第 2 列排序 | sort -k 2 data.csv | 基于列 |
高级列排序:
# 按第 5 列、数字、反向排序
sort -k 5nr data.txt💡 KEYDEF 格式:
<列><选项>—5nr= 第 5 列、数字、反向
2.12 搜索文件内容(grep)
基本用法:
grep hello myfile.txt # 在文件中搜索 "hello"
ls /etc | grep "*.conf" # 在管道数据中搜索grep 选项:
| 选项 | 描述 | 示例 | 使用场景 |
|---|---|---|---|
grep -i | 不区分大小写 | grep -i "ERROR" log.txt | 查找任何大小写 |
grep -v | 反向匹配 | grep -v "DEBUG" log.txt | 排除行 |
grep -c | 计数匹配 | grep -c "error" log.txt | 计数出现次数 |
grep -n | 行号 | grep -n "TODO" code.py | 显示行号 |
grep -r | 递归 | grep -r "password" /etc/ | 搜索目录 |
实用示例:
grep -i error /var/log/syslog # 查找所有错误条目(不区分大小写)
grep -c user access.log # 计算 "user" 出现的次数
grep -v success results.txt # 查找所有不包含 "success" 的行三、📦 文件归档与压缩
📌 整体流程
在 Linux 中归档和压缩文件是一个 两步过程:
- 创建 Tarball — 将要归档的文件打包在一起
- 压缩 — 使用压缩算法减小文件大小
3.1 创建 Tarball
创建 Tar Ball:
tar -cvf <tarball名称> <文件>…| 选项 | 描述 | 必需 |
|---|---|---|
-c | create(创建),允许我们创建 tarball | ✅ 必需 |
-v | verbose(详细),使 tar 提供进度反馈 | ❌ 可选 |
-f | 告诉 tar 下一个参数是 tarball 的名称 | ✅ 必需 |
💡 说明: 建议在文件名中添加
.tar以便清晰,例如~/Desktop/myarchive.tar
检查 Tarball 的内容:
tar -tf <tarball名称>| 选项 | 描述 | 必需 |
|---|---|---|
-t | test-label,允许我们检查 tarball 的内容 | ✅ 必需 |
-f | 告诉 tar 下一个参数是 tarball 的名称 | ✅ 必需 |
从 Tarball 提取:
tar -xvf <tarball名称>| 选项 | 描述 | 必需 |
|---|---|---|
-x | extract(提取),允许我们提取 tarball 的内容 | ✅ 必需 |
-v | verbose,使 tar 提供进度反馈 | ❌ 可选 |
-f | 告诉 tar 下一个参数是 tarball 的名称 | ✅ 必需 |
💡 注意
提取 tarball 不会清空 tarball。你可以根据需要多次从 tarball 提取,而不会影响 tarball 的内容。
3.2 压缩 Tarball
Tarball 只是文件的容器。它们本身不进行任何压缩,但可以使用多种压缩算法进行压缩。
| 算法 | 特点 | 文件扩展名 |
|---|---|---|
| gzip | 速度更快,压缩率较低 | .tar.gz |
| bzip2 | 速度较慢,压缩率更高 | .tar.bz2 |
使用 gzip 压缩和解压缩:
gzip <tarball名称> # 压缩,自动添加 .gz 扩展名
gunzip <tarball名称> # 解压缩使用 bzip2 压缩和解压缩:
bzip2 <tarball名称> # 压缩,自动添加 .bz2 扩展名
bunzip2 <tarball名称> # 解压缩3.3 一步完成所有操作
由于压缩 tar 归档是如此常见的功能,可以使用 tar 命令在一步中完成创建和压缩。
使用 gzip 压缩算法(选项 z):
tar -cvzf <tarball名称> <文件>… # 创建并压缩
tar -xvzf <tarball名称> # 解压缩并提取使用 bzip2 压缩算法(选项 j):
tar -cvjf <tarball名称> <文件>… # 创建并压缩
tar -xvjf <tarball名称> # 解压缩并提取使用 xzip 压缩算法(选项 J):
tar -cvJf <tarball名称> <文件>… # 创建并压缩
tar -xvJf <tarball名称> # 解压缩并提取3.4 创建 .zip 文件
虽然 .tar.gz 和 .tar.bz2 归档是 Linux 上的首选,但 .zip 归档在 Windows 和 Mac OSX 上很常见。
zip <zip文件名> <文件>… # 创建 .zip 归档
unzip <zip文件名> # 解压 .zip 归档3.5 快速参考总结
| 任务 | 命令 | 文件扩展名 |
|---|---|---|
| 创建 tarball | tar -cvf archive.tar files | .tar |
| 解压 tarball | tar -xvf archive.tar | .tar |
| 检查 tarball 内容 | tar -tf archive.tar | .tar |
| 创建 + gzip 压缩 | tar -cvzf archive.tar.gz files | .tar.gz |
| 解压 + gzip 解压缩 | tar -xvzf archive.tar.gz | .tar.gz |
| 创建 + bzip2 压缩 | tar -cvjf archive.tar.bz2 files | .tar.bz2 |
| 解压 + bzip2 解压缩 | tar -xvjf archive.tar.bz2 | .tar.bz2 |
| 创建 + xzip 压缩 | tar -cvJf archive.tar.xz files | .tar.xz |
| 解压 + xzip 解压缩 | tar -xvJf archive.tar.xz | .tar.xz |
| 创建 zip | zip archive.zip files | .zip |
| 解压 zip | unzip archive.zip | .zip |
常用选项速记:
c— 创建(create)x— 解压(extract)v— 详细(verbose)f— 文件(file)t— 测试/列出内容(test/list contents)z— gzip 压缩j— bzip2 压缩J— xzip 压缩
四、🎉 总结
✅ 你学到了什么
- 文件系统导航
- 文件和目录操作
- 内容查看和搜索
- 数据操作和排序
- 高级查找操作
- 文件归档和压缩
五、📚 相关资源
💡 提示
这份指南会持续更新和完善。建议将其加入书签以便随时查阅!
课程作者:Hugo | 最后更新:2025-11-23