学习目标
- 理解本节涉及的核心主题:Linux 基本命令、文件压缩与解压、
unzip- 解压缩 ZIP 文件、总结。 - 掌握重点命令或工具:
unzip、/、/home、/dev、/proc、/sys。 - 能够结合示例完成常见操作,并理解关键参数、使用场景与结果差异。
- 能够识别本节相关的常见风险、易错点或排查思路。
学习重点
- 主题范围:Linux 基本命令、文件压缩与解压、
unzip- 解压缩 ZIP 文件、总结、Linux 文件系统、Linux 文件系统结构 - 重点命令:
unzip、/、/home、/dev、/proc、/sys - 学习重点:命令用途、关键参数、典型场景、与相近命令的区别
- 复习方式:先理解场景,再动手练习,最后对照结果检查
Linux 基本命令
文件压缩与解压
unzip - 解压缩 ZIP 文件
unzip 是用于解压缩 .zip 文件的工具,支持解压整个压缩包或其中的部分文件。
基本用法
命令语法:
unzip [选项] 压缩包名
示例: 解压 documents.zip 到当前目录。
unzip documents.zip
输出示例:
Archive: documents.zip
inflating: report.docx
inflating: summary.txt
常用选项(如 -d, -l)
-d:指定解压缩到的目标目录。-l:列出压缩包内容而不解压。-o:覆盖现有文件而不提示。-n:不覆盖现有文件,跳过。-j:解压缩时不保留目录结构。
示例 1:将压缩包解压到指定目录
unzip projects.zip -d /home/user/restore_projects
输出示例:
Archive: projects.zip
creating: /home/user/restore_projects/projects/
creating: /home/user/restore_projects/projects/project_alpha/
inflating: /home/user/restore_projects/projects/project_alpha/main.py
inflating: /home/user/restore_projects/projects/project_alpha/utils.py
inflating: /home/user/restore_projects/projects/project_alpha/README.md
creating: /home/user/restore_projects/projects/project_beta/
inflating: /home/user/restore_projects/projects/project_beta/app.js
inflating: /home/user/restore_projects/projects/project_beta/index.html
inflating: /home/user/restore_projects/projects/project_beta/styles.css
示例 2:列出压缩包内容
unzip -l full_backup.zip
输出示例:
Archive: full_backup.zip
Length Date Time Name
--------- ---------- ----- ----
1024 2024-04-27 10:00 documents/report.docx
512 2024-04-27 10:01 documents/summary.txt
2048 2024-04-27 10:02 documents/data.csv
1024 2024-04-27 10:03 documents/old_reports/report_2020.docx
1024 2024-04-27 10:04 documents/old_reports/report_2021.docx
4096 2024-04-27 10:05 projects/project_alpha/main.py
4096 2024-04-27 10:06 projects/project_alpha/utils.py
256 2024-04-27 10:07 projects/project_alpha/README.md
4096 2024-04-27 10:08 projects/project_beta/app.js
2048 2024-04-27 10:09 projects/project_beta/index.html
1024 2024-04-27 10:10 projects/project_beta/styles.css
--------- -------
15360 12 files
解压部分文件
示例场景: 仅解压 README.md 文件。
unzip projects.zip projects/project_alpha/README.md -d /home/user/restore_projects
输出示例:
inflating: /home/user/restore_projects/projects/project_alpha/README.md
示例操作
示例 1:解压带密码保护的压缩包
假设 secure_backup.zip 使用密码保护。
unzip secure_backup.zip
操作过程:
系统提示输入密码:
Archive: secure_backup.zip
[secure_backup.zip] documents/summary.txt password:
输入正确密码后,开始解压。
示例 2:解压时覆盖现有文件
unzip -o documents.zip
解释:
-o:覆盖现有文件而不提示。
输出示例:
inflating: report.docx
inflating: summary.txt
示例 3:解压时不保留目录结构
假设压缩包中包含多个目录结构,但只希望将所有文件解压到单一目录。
unzip -j archive.zip -d /home/user/flat_directory
解释:
-j:不保留目录结构。-d /home/user/flat_directory:指定目标目录。
输出示例:
inflating: report.docx
inflating: summary.txt
inflating: data.csv
inflating: report_2020.docx
inflating: report_2021.docx
所有文件将被解压到 /home/user/flat_directory,不包含原有的目录层次。
示例:解压带密码保护的压缩包
假设 secure_backup.zip 使用密码保护。
unzip secure_backup.zip
操作过程:
系统提示输入密码:
Archive: secure_backup.zip
[secure_backup.zip] documents/summary.txt password:
输入正确密码后,开始解压。
示例:解压特定文件并指定目标目录
仅解压 README.md 文件到 /home/user/restore_projects。
unzip projects.zip projects/project_alpha/README.md -d /home/user/restore_projects
输出示例:
inflating: /home/user/restore_projects/projects/project_alpha/README.md
总结
掌握文件压缩与解压工具是高效进行文件管理、传输和备份的基础。以下是基于假设目录结构和文件的具体应用总结:
tar:适用于打包和解包多个文件和目录,常与gzip或bzip2结合使用以实现压缩。- 创建压缩包:
tar -czvf project_alpha.tar.gz /home/user/projects/project_alpha - 解压缩包:
tar -xzvf project_alpha.tar.gz - 查看归档内容:
tar -tzvf documents_backup.tar.gz
- 创建压缩包:
gzip:用于压缩单个文件,通常与tar结合使用。- 压缩文件并保留原文件:
gzip -k /home/user/documents/data.csv - 解压缩文件:
gzip -d /home/user/documents/data.csv.gz
- 压缩文件并保留原文件:
bzip2:提供更高的压缩比,适合需要最大限度压缩的场景。- 压缩文件:
bzip2 /home/user/documents/report.docx - 解压缩文件并保留压缩文件:
bzip2 -dk /home/user/documents/report.docx.bz2
- 压缩文件:
zip:支持压缩多个文件和目录,并提供密码保护功能。- 创建带密码保护的压缩包:
zip -re logs_backup.zip /home/user/logs - 压缩多个文件和目录:
zip -r full_backup.zip /home/user/documents /home/user/projects /home/user/logs
- 创建带密码保护的压缩包:
unzip:用于解压缩.zip文件,支持解压整个压缩包或其中的部分文件。- 解压指定文件到目标目录:
unzip projects.zip projects/project_alpha/README.md -d /home/user/restore_projects - 列出压缩包内容:
unzip -l full_backup.zip
- 解压指定文件到目标目录:
Linux 文件系统
Linux 文件系统结构
Linux 文件系统采用树状结构,从根目录 / 开始,向下分支出各种子目录。每个目录都有其特定的用途和重要性。为了更直观地理解文件系统结构,假设我们有以下的目录结构:
假设的目录结构
/
├── bin
├── boot
├── dev
├── etc
│ ├── passwd
│ ├── fstab
│ └── nginx
│ └── nginx.conf
├── home
│ ├── alice
│ │ ├── Documents
│ │ ├── Downloads
│ │ ├── Projects
│ │ │ ├── project_alpha
│ │ │ │ ├── main.py
│ │ │ │ └── utils.py
│ │ │ └── project_beta
│ │ │ ├── app.js
│ │ │ └── index.html
│ │ └── .bashrc
│ └── bob
│ ├── Documents
│ └── .bashrc
├── lib
├── media
├── mnt
├── opt
├── proc
├── root
├── run
├── sbin
├── srv
├── sys
├── tmp
├── usr
│ ├── bin
│ ├── lib
│ └── local
├── var
│ ├── log
│ │ ├── syslog
│ │ └── error.log
│ ├── spool
│ └── www
│ └── html
└── tmp
根目录 /
作用与重要性
根目录 / 是 Linux 文件系统的起点,所有其他目录和文件都是其子节点。它是系统的核心,包含了操作系统运行所需的所有基本文件和目录。根目录下的子目录按照功能和用途进行组织,确保系统的高效运行和管理。
常见子目录概述
/bin:包含系统启动和运行时所需的基本命令,如ls、cp、mv等。/boot:存放启动加载器和内核文件,如vmlinuz、initrd.img。/dev:设备文件目录,包含系统中的所有设备,如硬盘、终端、打印机等。/etc:系统配置文件目录,存放系统和应用程序的配置文件。/home:用户的主目录,每个用户在此目录下有自己的个人空间。/lib:包含系统和应用程序运行所需的共享库文件。/media:用于自动挂载的可移动媒体设备,如 USB 驱动器、光盘等。/mnt:临时挂载点,用于手动挂载文件系统。/opt:用于安装附加应用程序和软件包。/proc:虚拟文件系统,提供内核和进程的信息。/root:超级用户(root)的主目录。/run:运行时数据目录,存放系统启动后产生的临时文件。/sbin:包含系统管理员使用的基本命令,如shutdown、reboot。/srv:存放服务相关的数据,如 Web 服务器的数据文件。/sys:虚拟文件系统,提供系统设备和内核接口的信息。/tmp:临时文件目录,存放临时文件,系统重启后通常会清空。/usr:包含用户应用程序和共享资源,如/usr/bin、/usr/lib。/var:可变数据目录,存放日志文件、邮件、打印队列等。
用户目录 /home
每个用户的个人空间
/home 目录是每个普通用户的主目录所在的位置。每个用户在 /home 下都有一个以用户名命名的子目录,作为其个人工作空间。例如,用户 alice 的主目录为 /home/alice,用户 bob 的主目录为 /home/bob。
配置文件与隐藏文件
用户主目录中常包含许多隐藏文件和目录,这些文件以点 (.) 开头,存放用户的个性化配置和设置。例如:
.bashrc:Bash Shell 的配置文件,包含用户的别名、环境变量等。.ssh/:存放 SSH 相关配置和密钥文件。.config/:应用程序的配置文件目录。
用户主目录结构
以用户 alice 的主目录为例:
/home/alice/
├── Documents
├── Downloads
├── Projects
│ ├── project_alpha
│ │ ├── main.py
│ │ └── utils.py
│ └── project_beta
│ ├── app.js
│ └── index.html
└── .bashrc
Documents:存放文档文件。Downloads:存放下载的文件。Projects:存放用户的项目文件,每个项目有自己的子目录。.bashrc:用户的 Bash 配置文件。
系统目录
系统目录包含了操作系统运行所需的核心文件和应用程序。这些目录通常由系统管理员管理,不建议普通用户随意修改。
/bin - 基础命令与可执行文件
基础命令与可执行文件
/bin 目录包含了系统启动和运行时所需的基本命令和可执行文件。这些命令对所有用户都是可用的,且在单用户模式下也能访问。例如:
ls:列出目录内容。cp:复制文件和目录。mv:移动或重命名文件和目录。rm:删除文件和目录。cat:连接并显示文件内容。
系统启动与维护
在系统启动过程中,许多基本命令会被使用来配置和检查系统状态。例如,init 进程会调用 /bin 目录下的命令来启动系统服务。
示例:查看 /bin 目录下的内容
ls /bin
输出示例:
bash cat chmod cp ls mkdir mv rm sh sync
/usr - 用户程序与共享资源
/usr 目录包含了用户安装的应用程序和共享资源,通常是只读的,供所有用户共享使用。它进一步分为多个子目录:
/usr/bin:存放大多数用户级别的可执行文件。/usr/local:存放本地安装的应用程序,通常由系统管理员自行管理。/usr/share:存放共享的文件,如文档、图标、配置模板等。
示例:查看 /usr/bin 目录下的部分内容
ls /usr/bin | head -n 10
输出示例:
2to3-3.8 ag awk basename bc bg
bison bluez-test-device brctl bunzip2 bzcat c99
cal cat chmod chown cksum clear
cmp comm command cp cpio cpp
/usr/bin 示例操作
示例:查找 grep 命令的位置
which grep
输出:
/usr/bin/grep
/usr/local 示例操作
/usr/local 目录通常用于安装由源代码编译的软件,避免与系统自带的软件发生冲突。
示例:在 /usr/local/bin 安装自定义脚本
sudo cp myscript.sh /usr/local/bin/
sudo chmod +x /usr/local/bin/myscript.sh
/etc - 系统配置文件
/etc 目录存放了系统和应用程序的配置文件。这些文件通常是文本文件,可以手动编辑以更改系统行为。
常见配置文件
/etc/passwd:存储用户账户信息。/etc/fstab:文件系统挂载信息。/etc/nginx/nginx.conf:Nginx 服务器配置文件。
示例:查看 /etc/passwd 文件内容
cat /etc/passwd
输出示例:
root:x:0:0:root:/root:/bin/bash
alice:x:1000:1000:Alice:/home/alice:/bin/bash
bob:x:1001:1001:Bob:/home/bob:/bin/bash
/etc/fstab 示例操作
/etc/fstab 文件定义了系统启动时需要自动挂载的文件系统。
示例:查看 /etc/fstab 文件内容
cat /etc/fstab
输出示例:
UUID=123e4567-e89b-12d3-a456-426614174000 / ext4 defaults 0 1
UUID=123e4567-e89b-12d3-a456-426614174001 /home ext4 defaults 0 2
/etc/nginx/nginx.conf 示例操作
配置 Nginx 服务器的行为。
示例:查看 Nginx 配置文件
cat /etc/nginx/nginx.conf
输出示例:
user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;
events {
worker_connections 768;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
...
}
/var - 可变数据目录
/var 目录存放了系统运行过程中产生的可变数据,如日志文件、邮件、打印队列等。
/var/log 示例操作
/var/log 目录存放了系统和应用程序的日志文件,用于监控和调试。
示例:查看系统日志文件 syslog
cat /var/log/syslog
输出示例:
Apr 27 10:00:00 hostname systemd[1]: Started Session 1 of user alice.
Apr 27 10:05:00 hostname CRON[12345]: (root) CMD (run-parts /etc/cron.hourly)
/var/spool 示例操作
/var/spool 目录存放了等待被处理的任务文件,如邮件、打印任务等。
示例:查看打印队列
ls /var/spool/cups/
输出示例:
c0s0
c0s1
c0s2
/var/www 示例操作
/var/www 目录通常用于存放 Web 服务器的网页文件。
示例:查看 Web 服务器根目录内容
ls /var/www/html
输出示例:
index.html
about.html
contact.html
特殊目录
除了常规的系统和用户目录外,Linux 文件系统中还包含了一些特殊目录,这些目录具有特定的功能和用途。
/dev - 设备文件
设备文件
/dev 目录包含了系统中的所有设备文件,这些文件代表了物理设备(如硬盘、终端、打印机)和虚拟设备(如 /dev/null、/dev/zero)。设备文件允许用户和程序与硬件设备进行交互。
常见设备文件示例
/dev/sda:第一个 SATA 硬盘。/dev/sda1:硬盘上的第一个分区。/dev/null:空设备,所有写入的数据都会被丢弃,读取时返回 EOF。/dev/tty:当前终端设备。/dev/random:提供高质量的随机数生成器。
示例:查看设备文件 /dev/null
ls -l /dev/null
输出示例:
crw-rw-rw- 1 root root 1, 3 Apr 27 09:00 /dev/null
使用 /dev/null 示例
/dev/null 常用于丢弃不需要的输出或作为输入的空设备。
示例 1:丢弃命令的输出
ls /nonexistent_directory > /dev/null 2>&1
说明:
- 将标准输出 (
stdout) 和标准错误 (stderr) 重定向到/dev/null,使其不在终端显示。
示例 2:从 /dev/null 读取数据
cat /dev/null
输出:
无输出,因为 /dev/null 是一个空设备。
/proc - 虚拟文件系统,提供内核与进程信息
虚拟文件系统
/proc 是一个虚拟文件系统,动态生成,提供了系统内核和正在运行的进程的信息。它不占用实际的磁盘空间,所有内容都是内存中的表示。
常见文件与目录
/proc/cpuinfo:CPU 信息。/proc/meminfo:内存信息。/proc/uptime:系统运行时间。/proc/[pid]/:特定进程的信息,其中[pid]是进程 ID。
示例:查看 CPU 信息
cat /proc/cpuinfo
输出示例:
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 142
model name : Intel(R) Core(TM) i7-8550U CPU @ 1.80GHz
stepping : 10
cpu MHz : 1992.000
...
示例:查看内存信息
cat /proc/meminfo
输出示例:
MemTotal: 16384256 kB
MemFree: 1234567 kB
MemAvailable: 2345678 kB
Buffers: 345678 kB
Cached: 4567890 kB
...
/proc/[pid]/ 示例操作
每个正在运行的进程在 /proc 目录下都有一个以其进程 ID 命名的子目录,包含了该进程的详细信息。
示例:查看进程 ID 为 1234 的进程信息
cat /proc/1234/status
输出示例:
Name: bash
State: S (sleeping)
Tgid: 1234
Pid: 1234
PPid: 567
Uid: 1000 1000 1000 1000
...
/sys - 系统设备与驱动信息
系统设备与驱动信息
/sys 是另一个虚拟文件系统,提供了系统设备和驱动程序的信息以及与之交互的接口。它用于设备管理和配置,允许用户和系统管理员动态调整设备参数。
文件系统接口与设备管理
通过 /sys,可以访问和修改设备属性,监控设备状态。例如:
/sys/class/net/:网络接口信息。/sys/block/:块设备信息,如硬盘、SSD 等。/sys/devices/:设备树结构,详细描述系统中的所有设备。
示例:查看网络接口信息
ls /sys/class/net/
输出示例:
eth0
lo
wlan0
示例:查看 eth0 的状态
cat /sys/class/net/eth0/operstate
输出示例:
up
调整设备参数示例
示例:启用或禁用网络接口
禁用 eth0 接口:
echo "0" | sudo tee /sys/class/net/eth0/carrier
启用 eth0 接口:
echo "1" | sudo tee /sys/class/net/eth0/carrier
注意: 直接修改 /sys 中的文件可能会影响系统稳定性,请谨慎操作。
本节总结
- 本节主要围绕 Linux 基本命令、文件压缩与解压、
unzip- 解压缩 ZIP 文件、总结、Linux 文件系统 展开。 - 需要重点掌握的命令或工具包括:
unzip、/、/home、/dev、/proc、/sys。 - 学习时应优先抓住「命令解决什么问题、在什么场景下使用、执行后会产生什么结果」。
- 对涉及权限、覆盖、网络、系统服务、删除或安全配置的操作,建议先在测试环境练习。
复习建议
- 先用自己的话复述本节每个主题或命令的作用,避免只记参数不懂用途。
- 按原文示例至少手敲一遍典型命令,并观察输出变化。
- 对高风险操作先确认路径、权限和目标对象,再执行实际命令。
- 可优先复习这些高频命令:
unzip、/、/home、/dev、/proc、/sys。