Skip to content

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 命令结构

所有命令都遵循相同的基本结构:

bash
commandName -options arguments

命令名称:

commandName 必须是 Shell 路径中的有效程序。可以使用 which 命令检查:

bash
which commandName

💡 说明: 如果返回路径,则命令名称有效;反之则无效。

选项(Options):

可以为每个命令指定选项来自定义命令行为。选项有"短格式"和"长格式"两种形式。

格式示例说明
短格式(单独)commandName -a -b -c args每个选项前加 -
短格式(合并)commandName -abc args多个选项可合并
长格式commandName --alpha --beta --charlie args使用 -- 前缀,不能合并

命令行参数:

命令行参数是命令操作的输入类型。有些命令可以接受无限数量的输入,有些需要特定数量,有些则不接受任何输入。

bash
cal 12 2017
# cal 命令有 2 个参数:数字 12 和数字 2017

选项的参数:

有时,命令选项也可以接受自己的参数(输入)。

bash
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):

bash
# 长格式
commandName -options arguments 1> destination

# 短格式
commandName -options arguments > destination

重定向标准错误(流编号 2):

bash
commandName -options arguments 2> destination

# 同时重定向标准输出和标准错误
commandName -options arguments 1> output_destination 2> error_destination

重定向标准输入(流编号 0):

bash
# 长格式
commandName -options arguments 0< input_source

# 短格式
commandName -options arguments < input_source

1.8 管道操作

管道是将一个命令的标准输出连接到另一个命令的标准输入。使用管道字符 | 进行管道操作(Shift + \)。

bash
commandOne -options arguments | commandTwo -options arguments

💡 说明: 两个命令都可以像往常一样拥有自己的选项和命令行参数。管道可以根据需要连接任意多个命令。

使用 tee 命令对管道数据进行"快照":

⚠️ 重定向会中断管道

bash
# ❌ 这不会工作
commandOne -options arguments > snapshot.txt | commandTwo -options arguments

# ✅ 使用 tee 命令
commandOne -options arguments | tee snapshot.txt | commandTwo -options arguments

使用 xargs 将数据管道传递给仅接受命令行参数的命令:

bash
# ❌ echo 不接受标准输入,这不会工作
commandOne -options arguments | echo

# ✅ 使用 xargs 将标准输入转换为命令行参数
commandOne -options arguments | xargs echo

1.9 别名(Aliases)

别名允许你用易记的昵称保存管道和命令。在家目录的 .bash_aliases 文件中定义别名。

bash
alias aliasName="THING YOU WANT TO ALIAS"

⚠️ 注意格式

  • 等号 =aliasName 和引号之间 没有空格
  • 引号可以是双引号 " 或单引号 '

示例:

bash
alias calmagic="cal -A 1 -B 1 12 2017"
# 运行 calmagic 就像运行 cal -A 1 -B 1 12 2017

将管道传递给别名:

bash
# 如果别名中第一个命令接受标准输入,可以管道传递
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 是使用 通配符 创建正则表达式来匹配文件名。

通配符描述示例匹配
*匹配任意长度字符*.txtfile.txtdocument.txt
?仅匹配一个字符file?.txtfile1.txtfileA.txt
[options]匹配任何选项(一个位置)[abc]*.txta1.txtbook.txt

2.5 创建文件和目录

创建文件:

bash
touch <filename>
# 示例:touch ~/Desktop/file1.txt

创建目录:

bash
mkdir <directory_name>
# 示例:mkdir ~/newdir

2.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/MetaMeta 键M-X = Alt + X
bash
nano filename.txt

2.8 locate 命令

基于数据库的快速文件搜索

bash
locate *.txt  # 在数据库中查找所有 .txt 文件
命令描述使用场景
locate -S显示数据库信息检查数据库状态
sudo updatedb更新数据库刷新文件索引
locate --existing验证结果存在避免过时条目
locate --limit 5限制为 5 个结果快速搜索

⚠️ 速度与准确性

locate 速度快但依赖于数据库更新!

2.9 find 命令

强大的实时文件搜索,具有高级选项

基本示例:

bash
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大小超过 100KBfind . -size +1M大文件
-size -5M大小小于 5MBfind . -size -100k小文件

对结果执行命令:

bash
# 将 /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 查看文件内容

基本查看:

bash
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 数据排序

基本排序:

bash
sort filename.txt

排序选项:

选项描述示例结果
sort -r反向排序sort -r names.txtZ 到 A
sort -n数字排序sort -n numbers.txt1、2、10、20
sort -u仅唯一值sort -u duplicates.txt删除重复项
sort -k 2按第 2 列排序sort -k 2 data.csv基于列

高级列排序:

bash
# 按第 5 列、数字、反向排序
sort -k 5nr data.txt

💡 KEYDEF 格式: <列><选项>5nr = 第 5 列、数字、反向

2.12 搜索文件内容(grep)

基本用法:

bash
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/搜索目录

实用示例:

bash
grep -i error /var/log/syslog   # 查找所有错误条目(不区分大小写)
grep -c user access.log         # 计算 "user" 出现的次数
grep -v success results.txt     # 查找所有不包含 "success" 的行

三、📦 文件归档与压缩

📌 整体流程

在 Linux 中归档和压缩文件是一个 两步过程

  1. 创建 Tarball — 将要归档的文件打包在一起
  2. 压缩 — 使用压缩算法减小文件大小

3.1 创建 Tarball

创建 Tar Ball:

bash
tar -cvf <tarball名> <>
选项描述必需
-ccreate(创建),允许我们创建 tarball✅ 必需
-vverbose(详细),使 tar 提供进度反馈❌ 可选
-f告诉 tar 下一个参数是 tarball 的名称✅ 必需

💡 说明: 建议在文件名中添加 .tar 以便清晰,例如 ~/Desktop/myarchive.tar

检查 Tarball 的内容:

bash
tar -tf <tarball名>
选项描述必需
-ttest-label,允许我们检查 tarball 的内容✅ 必需
-f告诉 tar 下一个参数是 tarball 的名称✅ 必需

从 Tarball 提取:

bash
tar -xvf <tarball名>
选项描述必需
-xextract(提取),允许我们提取 tarball 的内容✅ 必需
-vverbose,使 tar 提供进度反馈❌ 可选
-f告诉 tar 下一个参数是 tarball 的名称✅ 必需

💡 注意

提取 tarball 不会清空 tarball。你可以根据需要多次从 tarball 提取,而不会影响 tarball 的内容。

3.2 压缩 Tarball

Tarball 只是文件的容器。它们本身不进行任何压缩,但可以使用多种压缩算法进行压缩。

算法特点文件扩展名
gzip速度更快,压缩率较低.tar.gz
bzip2速度较慢,压缩率更高.tar.bz2

使用 gzip 压缩和解压缩:

bash
gzip <tarball名>      # 压缩,自动添加 .gz 扩展名
gunzip <tarball名>    # 解压缩

使用 bzip2 压缩和解压缩:

bash
bzip2 <tarball名>     # 压缩,自动添加 .bz2 扩展名
bunzip2 <tarball名>   # 解压缩

3.3 一步完成所有操作

由于压缩 tar 归档是如此常见的功能,可以使用 tar 命令在一步中完成创建和压缩。

使用 gzip 压缩算法(选项 z):

bash
tar -cvzf <tarball名> <>   # 创建并压缩
tar -xvzf <tarball名>           # 解压缩并提取

使用 bzip2 压缩算法(选项 j):

bash
tar -cvjf <tarball名> <>   # 创建并压缩
tar -xvjf <tarball名>           # 解压缩并提取

使用 xzip 压缩算法(选项 J):

bash
tar -cvJf <tarball名> <>   # 创建并压缩
tar -xvJf <tarball名>           # 解压缩并提取

3.4 创建 .zip 文件

虽然 .tar.gz.tar.bz2 归档是 Linux 上的首选,但 .zip 归档在 Windows 和 Mac OSX 上很常见。

bash
zip <zip文件> <>   # 创建 .zip 归档
unzip <zip文件>         # 解压 .zip 归档

3.5 快速参考总结

任务命令文件扩展名
创建 tarballtar -cvf archive.tar files.tar
解压 tarballtar -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
创建 zipzip archive.zip files.zip
解压 zipunzip 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