Linux 操作系统实用教程
目录
-
第一部分:Linux 基础入门
(图片来源网络,侵删)- 什么是 Linux?
- 为什么学习 Linux?
- Linux 发行版介绍与选择
- 如何安装 Linux(以 Ubuntu 为例)
- 第一次启动与图形界面概览
-
第二部分:核心概念与文件系统
- Linux 的哲学思想:一切皆文件
- Linux 文件系统结构(FHS)
- 核心目录详解 (,
/home,/etc,/var等) - 绝对路径与相对路径
-
第三部分:核心技能一:Shell 命令行操作
- 什么是 Shell?为什么它如此重要?
- 终端模拟器简介
- 基础命令速查表
- 文件和目录操作 (
ls,cd,pwd,mkdir,touch,cp,mv,rm) - 查看 (
cat,more,less,head,tail) - 文本处理 (
grep,find,wc) - 权限管理 (
chmod,chown,chgrp) - 压缩与解压 (
tar,gzip,zip) - 系统信息 (
uname,top,df,free) - 用户管理 (
useradd,passwd,su,sudo) - 关机与重启 (
shutdown,reboot,halt)
- 文件和目录操作 (
- 命令行技巧:Tab 自动补全、历史命令、通配符
-
第四部分:核心技能二:软件包管理
- 什么是软件包管理器?
- Debian/Ubuntu 系统 (
apt) - RedHat/CentOS/Fedora 系统 (
yum,dnf) - 使用 Snap 和 Flatpak(跨发行版方案)
-
第五部分:文本编辑器:Vim 入门
(图片来源网络,侵删)- 为什么是 Vim?(高效、无处不在)
- Vim 的三种模式:普通模式、插入模式、末行模式
- 基本操作指南(打开、保存、退出、移动、删除、复制粘贴)
- 强大的 Vim 资源
-
第六部分:进程管理与服务控制
- 什么是进程?
- 查看进程 (
ps,top,htop) - 控制进程 (
kill,pkill,jobs,fg,bg) - Systemd:现代 Linux 的服务管理 (
systemctl)
-
第七部分:网络配置与常用命令
- 查看网络信息 (
ip addr,ifconfig) - 网络连通性测试 (
ping,traceroute,mtr) - 网络数据传输 (
curl,wget) - 端口与网络服务 (
netstat,ss)
- 查看网络信息 (
-
第八部分:Shell 脚本编程入门
- 什么是 Shell 脚本?
- 第一个脚本:
Hello, World! - 变量、条件判断 (
if-else)、循环 (for,while) - 函数与参数传递
-
第九部分:学习路径与资源推荐
(图片来源网络,侵删)- 进阶学习方向
- 推荐书籍、网站和社区
第一部分:Linux 基础入门
1 什么是 Linux?
Linux 是一套免费使用和自由传播的类 Unix 操作系统内核,它由林纳斯·托瓦兹(Linus Torvalds)在 1991 年首次发布,我们通常所说的 "Linux",其实是指包含了 Linux 内核和各种 GNU 工具的完整操作系统,即 Linux 发行版。
2 为什么学习 Linux?
- 服务器领域霸主:全球超过 90% 的服务器、云计算平台(如 AWS, Azure, GCP)都运行着 Linux,是后端开发、运维、云计算工程师的必备技能。
- 开发者的首选环境:许多编程语言(如 Python, Go, Rust, Node.js)在 Linux 上有最佳的开发和运行体验,Docker、Kubernetes 等容器化技术也基于 Linux。
- 稳定与安全:Linux 以其出色的稳定性、安全性和高并发处理能力而闻名。
- 免费与开源:你可以免费使用、修改和分发其源代码,拥有极高的自由度。
- 强大的可定制性:从内核到桌面环境,你可以完全根据自己的需求定制系统。
3 Linux 发行版介绍与选择
发行版是将 Linux 内核与 GNU 软件、桌面环境、应用软件打包而成的操作系统。
- 新手推荐:
- Ubuntu:最流行的桌面发行版,社区庞大,文档丰富,硬件兼容性好,有长期支持版本,非常稳定。
- Linux Mint:基于 Ubuntu,提供更接近 Windows 的传统桌面体验,开箱即用。
- 进阶用户/开发者推荐:
- Debian:Ubuntu 的上游,以稳定著称,软件包极其丰富。
- Fedora:Red Hat 的社区版,拥有最新的软件和技术,是 RHEL(Red Hat Enterprise Linux)的前身。
- Arch Linux:滚动更新,安装过程需要手动配置,但能让你深入了解系统,极度灵活。
- 服务器推荐:
- Ubuntu Server:社区支持好,部署简单。
- CentOS Stream / Rocky Linux / AlmaLinux:企业级稳定,与商业版 RHEL 高度兼容。
建议:如果你是初学者,请从 Ubuntu Desktop 开始,它提供了一个友好的图形界面,让你可以平滑过渡到命令行。
4 如何安装 Linux(以 Ubuntu 为例)
- 下载镜像:访问 Ubuntu 官网 下载最新的桌面版 ISO 镜像文件。
- 制作启动盘:
- Windows: 使用
Rufus或balenaEtcher工具。 - macOS: 使用
balenaEtcher或命令行工具dd。
- Windows: 使用
- BIOS/UEFI 设置:重启电脑,在开机时按特定键(如 F2, F12, Del)进入 BIOS/UEFI 设置,将启动顺序第一项设置为你的 U 盘。
- 开始安装:从 U 盘启动后,选择 "Install Ubuntu" 开始图形化安装过程,按照提示选择语言、时区、键盘布局,并进行分区(新手建议选择 "清除整个磁盘并安装")。
- 创建用户:设置一个用户名和密码,这个用户默认具有
sudo权限(管理员权限)。
5 第一次启动与图形界面概览
启动后,你会看到一个类似 Windows 或 macOS 的桌面环境,包含:
- 桌面图标
- 任务栏:通常在底部,包含“应用程序”菜单、运行程序、通知区和系统托盘。
- 文件管理器:类似 Windows 的资源管理器。
- 设置中心:用于调整系统外观、网络、账户等。
关键一步:点击桌面左上角的“应用程序”菜单,找到并打开 “终端” (Terminal),这是你未来与 Linux 深度交流的主要窗口。
第二部分:核心概念与文件系统
1 Linux 的哲学思想:一切皆文件
在 Linux 中,几乎所有东西都被视为文件,包括:
- 普通文件(文本、图片)
- 目录
- 硬件设备(如硬盘
/dev/sda,鼠标/dev/mouse) - 套接字、管道等
这使得你可以用统一的命令(如 cat, echo)来处理它们,非常优雅。
2 Linux 文件系统结构
Linux 文件系统是树状结构,有且只有一个根目录 ,与 Windows 的 C:\, D:\ 不同,所有设备和文件都挂载到这棵树上。
3 核心目录详解
| 目录 | 用途 |
|---|---|
| 根目录,唯一顶级目录 | |
/bin |
存放基本命令的可执行文件(如 ls, cp, mv),所有用户可用 |
/sbin |
存放系统管理员使用的系统命令(如 fdisk, reboot) |
/etc |
系统配置文件的目录(如 network, passwd) |
/dev |
设备文件目录(如 sda, tty) |
/proc |
虚拟文件系统,存储内核与进程信息(如 cpuinfo, meminfo) |
/var |
经常变化的文件,如日志 (/var/log)、缓存、邮件 |
/home |
普通用户的家目录,存放个人文件和配置 |
/usr |
用户安装的软件和程序(类似 Program Files),最大目录 |
/tmp |
临时文件目录,重启后通常被清空 |
/boot |
启动文件,如 Linux 内核 (vmlinuz) 和引导加载程序 |
/lib |
系统库文件,被 /bin 和 /sbin 中的程序使用 |
/opt |
可选的大型软件包,如 Google Chrome, Office |
/mnt, /media |
临时挂载点,用于挂载 U 盘、光盘等 |
4 绝对路径与相对路径
- 绝对路径:从根 开始的完整路径,唯一确定一个位置。
/home/user/Documents/report.txt。 - 相对路径:从当前目录开始的路径。
- : 代表当前目录。
- : 代表上级目录。
- : 代表当前用户的家目录(
~/Downloads)。
第三部分:核心技能一:Shell 命令行操作
Shell 是用户与 Linux 内核交互的桥梁,最常见的是 Bash Shell。
1 基础命令速查表
提示:所有命令都可以用
man [命令名]查看详细手册(man ls)。
文件和目录操作
| 命令 | 全称 | 功能 | 示例 |
| :--- | :--- | :--- | :--- |
| ls | list | 列出目录内容 | ls -l (长格式), ls -a (隐藏文件) |
| cd | change directory | 切换目录 | cd /home, cd .., cd ~ |
| pwd | print working directory | 显示当前工作目录 | pwd |
| mkdir | make directory | 创建新目录 | mkdir new_folder |
| touch | - | 创建空文件或更新文件时间戳 | touch file.txt |
| cp | copy | 复制文件或目录 | cp source.txt dest.txt, cp -r dir1/ dir2/ (递归复制目录) |
| mv | move | 移动/重命名文件或目录 | mv old_name new_name, mv file.txt /path/to/dest/ |
| rm | remove | 删除文件或目录 | rm file.txt, rm -r dir/ (递归删除), rm -f file.txt (强制删除) |
查看**
| 命令 | 功能 | 示例 |
| :--- | :--- | :--- |
| cat | 显示整个文件内容 | cat large_file.log (慎用) |
| more | 分页显示文件内容 | cat file.txt \| more |
| less | 更强大的分页显示,可前后翻页 | less file.txt |
| head | 显示文件开头几行 | head -n 20 file.txt (显示前20行) |
| tail | 显示文件结尾几行 | tail -n 20 file.txt (显示后20行), tail -f log.txt (实时跟踪日志) |
文本处理
| 命令 | 功能 | 示例 |
| :--- | :--- | :--- |
| grep | 文本搜索 | grep "error" /var/log/syslog (在syslog中搜索"error") |
| find | 在文件系统中查找文件 | find /home -name "*.txt" (在home目录下查找所有txt文件) |
| wc | 统计文件的行数、字数、字节数 | wc -l file.txt (统计行数) |
权限管理
Linux 权限分为:读、写、执行,分别对应 r, w, x。
chmod:修改文件权限。chmod u+x script.sh(给用户添加执行权限)chmod 755 script.sh(数字法:r=4, w=2, x=1; 7=rwx, 5=r-x, 5=r-x)
chown:修改文件所有者。chown user:group file.txt(将文件所有者改为user,组改为group)
chgrp:修改文件所属组。
压缩与解压
| 命令 | 格式 | 功能 |
| :--- | :--- | :--- |
| tar | .tar, .tar.gz, .tar.bz2 | 打包/解包工具,常与 gzip/bzip2 结合使用 |
| gzip | .gz | 压缩/解压单个文件 |
| zip | .zip | 压缩/解压,跨平台格式 |
| 命令 | 示例 |
|---|---|
tar |
tar -czvf archive.tar.gz /path/to/dir (打包并压缩) tar -xzvf archive.tar.gz (解压并解包) |
gzip |
gzip file.txt (压缩) gunzip file.txt.gz (解压) |
系统信息
| 命令 | 功能 |
| :--- | :--- |
| uname -a | 显示所有系统信息 |
| top / htop | 实时显示进程和系统资源占用 (推荐 htop,更直观) |
| df -h | 显示磁盘空间使用情况 (-h 以人类可读方式显示) |
| free -h | 显示内存使用情况 |
用户管理
| 命令 | 功能 |
| :--- | :--- |
| sudo [command] | 以管理员身份执行命令 |
| su - [user] | 切换到指定用户 (如 su - root 切换到root) |
| passwd | 修改当前用户密码 |
关机与重启
| 命令 | 功能 |
| :--- | :--- |
| shutdown -h now | 立刻关机 |
| shutdown -r now | 立刻重启 |
| reboot | 重启 |
2 命令行技巧
- Tab 自动补全:输入命令或文件名的前几个字母,按
Tab键,系统会自动补全,如果多个匹配,按两次Tab列出所有选项。 - 历史命令:按 和 键可以浏览之前执行过的命令。
- Ctrl + R:搜索历史命令。
- Ctrl + C:终止当前正在运行的命令。
- Ctrl + D:输入文件结束符,相当于
exit退出当前 Shell。 - 通配符:
- 匹配任意多个字符。
- 匹配单个任意字符。
[]:匹配括号内的任意一个字符。- 示例:
ls *.txt(列出所有txt文件),ls picture?.jpg(列出 picture1.jpg, picture2.jpg...)
第四部分:核心技能二:软件包管理
1 什么是软件包管理器?
用于自动化安装、更新、卸载软件的工具,并自动处理依赖关系(即安装软件A时,自动安装它所需要的B和C库)。
2 Debian/Ubuntu 系统 (apt)
- 更新软件包列表(非常重要!)
sudo apt update
- 升级已安装的包
sudo apt upgrade
- 安装软件
sudo apt install [软件包名] # sudo apt install vim git
- 卸载软件
sudo apt remove [软件包名] # 完全卸载(包括配置文件) sudo apt purge [软件包名]
3 RedHat/CentOS/Fedora 系统 (yum, dnf)
- 在较新的 Fedora 和 RHEL/CentOS 8+ 中,使用
dnf。 - 在旧的 CentOS 7 中,使用
yum。
- 更新软件包列表
sudo dnf check-update
- 升级所有已安装的包
sudo dnf upgrade
- 安装软件
sudo dnf install [软件包名] # sudo dnf install vim git
- 卸载软件
sudo dnf remove [软件包名]
4 使用 Snap 和 Flatpak(跨发行版方案)
- Snap:由 Canonical (Ubuntu) 开发,包含所有依赖的独立软件包。
- 安装:
sudo snap install [软件名]
- 安装:
- Flatpak:由社区驱动,也包含所有依赖。
- 安装:
flatpak install [软件名]
- 安装:
它们的优势是解决跨发行版的依赖问题,但可能占用更多空间。
第五部分:文本编辑器:Vim 入门
Vim (Vi IMproved) 是一个极其高效、功能强大的 modal 文本编辑器,一旦学会,你将离不开它。
1 Vim 的三种模式
- 普通模式:默认模式,用于导航、复制、粘贴、删除等操作,按
Esc键进入此模式。 - 插入模式:用于输入文本,在普通模式下按
i,a,o等键进入。 - 末行模式:用于保存、退出、搜索、替换等,在普通模式下按 键进入。
2 基本操作指南
启动和退出
vim filename:打开或创建文件filename。w:保存。q:退出。wq或x:保存并退出。q!:不保存强制退出。
移动光标(普通模式)
h,j,k,l:左,下,上,右。w:移动到下一个单词开头。b:移动到上一个单词开头。0:移动到行首。- 移动到行尾。
gg:移动到文件第一行。G:移动到文件最后一行。
编辑(普通模式 -> 插入模式)
i:在光标前插入。a:在光标后追加。o:在下一行插入新行并进入插入模式。O:在上一行插入新行并进入插入模式。I:在行首插入。A:在行尾追加。
删除和复制(普通模式)
x:删除光标所在字符。dd:删除(剪切)一整行。dw:删除一个单词。yy:复制一整行。p:在光标后粘贴。P:在光标前粘贴。
撤销和重做(普通模式)
u:撤销。Ctrl + r:重做。
搜索和替换(末行模式)
/keyword:从光标处向下搜索keyword。?keyword:从光标处向上搜索keyword。n:跳到下一个搜索结果。N:跳到上一个搜索结果。%s/old/new/g:将文件中所有的old替换为new。
学习建议:不要试图一次性记住所有命令,在
vimtutor(一个交互式教程) 中练习是最好的方式,在终端输入vimtutor即可开始。
第六部分:进程管理与服务控制
1 什么是进程?
进程是正在执行的程序实例,每个进程都有一个唯一的 ID,称为 PID (Process ID)。
2 查看进程
ps aux:查看系统中所有运行的进程详细信息。top:动态显示进程和系统资源,按 CPU、内存排序。htop:top的增强版,彩色显示,更直观(需安装)。
3 控制进程
kill [PID]:发送信号终止进程(默认是 SIGTERM,允许进程清理后退出)。kill -9 [PID]:强制杀死进程(发送 SIGKILL 信号,无法被忽略)。pkill [进程名]:根据进程名杀死进程。jobs:查看后台任务。fg %1:将后台任务1调到前台。bg %1:将后台任务1继续在后台运行。
4 Systemd:现代 Linux 的服务管理
systemctl 是 Systemd 的核心命令,用于管理系统服务(如 Nginx, Apache, SSH)。
systemctl start [服务名]:启动服务。systemctl stop [服务名]:停止服务。systemctl restart [服务名]:重启服务。systemctl reload [服务名]:重新加载配置文件(不中断服务)。systemctl enable [服务名]:设置服务开机自启。systemctl disable [服务名]:取消开机自启。systemctl status [服务名]:查看服务状态。
第七部分:网络配置与常用命令
1 查看网络信息
ip addr:查看所有网络接口的 IP 地址信息(现代 Linux 推荐)。ifconfig:同上,旧版命令(可能需要安装net-tools)。
2 网络连通性测试
ping [域名或IP]:测试与另一台主机的网络连通性。traceroute [域名或IP]:显示数据包到目标主机的路径。mtr [域名或IP]:ping和traceroute的结合体,持续显示网络质量。
3 网络数据传输
curl [URL]:强大的命令行工具,用于发送 HTTP 请求、下载文件等。wget [URL]:另一个流行的文件下载工具。
4 端口与网络服务
netstat -tuln:查看当前监听的 TCP 和 UDP 端口(旧版)。ss -tuln:netstat的现代替代品,速度更快(推荐)。-t: TCP,-u: UDP,-l: 只显示监听端口,-n: 以数字形式显示地址和端口。
第八部分:Shell 脚本编程入门
Shell 脚本可以将一系列命令写入一个文件,然后一次性执行,实现自动化。
1 第一个脚本:Hello, World!
-
创建一个文件
hello.sh:touch hello.sh
-
用 Vim 打开并编辑:
vim hello.sh
-
#!/bin/bash # 这是一个注释 echo "Hello, World!"
#!/bin/bash:Shebang,告诉系统用哪个解释器来执行此脚本。
-
保存并退出 (
wq)。 -
添加执行权限:
chmod +x hello.sh
-
运行脚本:
./hello.sh
2 变量
name="Alice" echo "Hello, $name"
3 条件判断
age=18
if [ $age -ge 18 ]; then
echo "You are an adult."
else
echo "You are a minor."
fi
[ ]是test命令的简写。-ge:大于等于。-eq:等于,-ne:不等于,-lt:小于,-gt:大于。
4 循环
# for 循环
for i in 1 2 3 4 5
do
echo "Number: $i"
done
# while 循环
count=0
while [ $count -lt 5 ]
do
echo "Count: $count"
count=$((count + 1))
done
5 函数与参数
#!/bin/bash
# 定义一个函数
greet() {
echo "Hello, $1! Your ID is $2."
}
# 调用函数,并传递参数
greet "Bob" "123"
# 脚本参数
echo "Script name: $0"
echo "First argument: $1"
echo "All arguments: $@"
$1,$2是脚本的 positional parameters。$0是脚本名。- 代表所有参数。
第九部分:学习路径与资源推荐
1 进阶学习方向
- 系统管理:深入理解用户权限、文件系统、磁盘管理、LVM、软件 RAID。
- 网络管理:学习 TCP/IP 协议栈、防火墙配置 (
iptables,nftables)、网络服务配置 (DNS, DHCP, Web Server)。 - Shell 脚本编程:掌握更高级的语法、函数、正则表达式、文本处理工具 (
sed,awk)。 - 容器化技术:学习 Docker 和 Kubernetes,这是现代应用部署的标准。
- 内核编译与调优:为追求极致性能和定制化的用户。
2 推荐资源
- 网站:
- The Linux Documentation Project (TLDP):最权威的 Linux 文档。
- Linux Command:详细的命令教程。
- Vim Tutor:在线交互式 Vim 教程。
- Stack Overflow:解决编程和系统问题的首选社区。
- 菜鸟教程:中文入门教程。
- 书籍:
- 入门:《鸟哥的 Linux 私房菜》、《Linux 就该这么学》。
- 进阶:《Linux 系统管理技术手册》、《深入理解 Linux 内核》。
- 社区:
- Reddit:
r/linux,r/linux4noobs,r/vim。 - IRC / Matrix:各种 Linux 发行版和软件的官方聊天频道。
- Reddit:
学习 Linux 是一个持续的过程,但只要你坚持实践,从基础命令开始,逐步深入,你会发现它不仅是一个强大的操作系统,更是一种高效、自由的工作哲学,祝你学习愉快!
