从零基础学习 Linux:全面入门到实践指南
Linux 作为一款开源、免费且高度可定制的操作系统,已渗透到我们生活和工作的方方面面:从服务器(全球超 90% 的云服务器运行 Linux)、嵌入式设备(智能手机、路由器)到超级计算机、人工智能平台,甚至是日常办公和开发环境。其稳定性、安全性和灵活性使其成为技术领域的基石。
本文专为零基础学习者设计,将从 Linux 的核心概念出发,逐步深入到命令行操作、文件系统、用户权限、软件管理等关键技能,并结合大量实例和最佳实践,帮助你系统掌握 Linux 基础,为后续深入学习(如服务器管理、云计算、DevOps)打下坚实基础。
目录#
- 什么是 Linux?核心概念与历史
- 选择合适的 Linux 发行版
- Linux 安装指南:从虚拟机到双系统
- Linux 命令行入门:告别图形界面
- Linux 文件系统:理解目录结构
- 用户与权限:Linux 的多用户安全模型
- 软件包管理:安装与维护应用程序
- 进程管理:监控与控制系统任务
- 网络基础:连接 Linux 与世界
- Shell 脚本入门:自动化你的工作
- Linux 安全最佳实践
- 总结与进阶学习路径
- 参考资料
1. 什么是 Linux?核心概念与历史#
1.1 Linux 不是操作系统?#
严格来说,Linux 是一个内核(Kernel)——操作系统的核心组件,负责管理硬件资源(CPU、内存、磁盘)、进程调度和系统调用。我们日常所说的“Linux 操作系统”,实际是**“Linux 内核 + 各种工具和应用程序”的集合,称为Linux 发行版(Distribution)**。
1.2 历史:从 hobby 项目到技术巨头#
- 1991 年,芬兰大学生 Linus Torvalds 发布了 Linux 内核首个版本(0.01 版),初衷是为了开发一个类 Unix 的免费操作系统。
- 基于 GNU 项目(自由软件运动)的工具(如 GCC 编译器、Bash shell),Linux 逐渐形成完整生态。
- 如今,Linux 已成为服务器、云计算、嵌入式设备的主流系统,支持从 IoT 到超算的全场景。
2. 选择合适的 Linux 发行版#
Linux 发行版众多,不同版本针对不同用户群体优化。新手建议从以下几种开始:
| 发行版 | 特点 | 适用场景 | 包管理器 |
|---|---|---|---|
| Ubuntu | 易用性强,社区活跃,适合桌面/服务器 | 新手入门、日常办公、Web 服务器 | apt |
| CentOS Stream | 稳定、企业级支持,RHEL 上游版本 | 服务器、生产环境 | dnf/yum |
| Debian | 稳定性极高,开源洁癖,Ubuntu 的上游 | 服务器、开发环境 | apt |
| Fedora | 最新技术,Red Hat 社区版 | 桌面开发、尝鲜新技术 | dnf |
| Arch Linux | 轻量、滚动更新,高度可定制 | 技术爱好者、追求极致控制 | pacman |
新手推荐:#
- 桌面场景:Ubuntu(图形界面友好,软件生态完善)。
- 服务器场景:CentOS Stream(企业级稳定性)或 Ubuntu Server。
3. Linux 安装指南:从虚拟机到双系统#
3.1 安装前准备#
- 硬件要求:最低 2GB 内存、20GB 磁盘空间(推荐 4GB+ 内存、50GB+ SSD)。
- 安装方式:
- 虚拟机(推荐新手):通过 VirtualBox 或 VMware 安装,无需修改物理硬盘,支持快照回滚。
- 双系统:在物理机上与 Windows/macOS 共存,需划分磁盘分区。
- Live USB:制作启动盘,无需安装即可体验 Linux(性能有限)。
3.2 虚拟机安装 Ubuntu 示例(以 VirtualBox 为例)#
- 下载 Ubuntu ISO:Ubuntu 官网(选择 LTS 长期支持版,如 22.04 LTS)。
- 新建虚拟机:分配 4GB 内存、2 核 CPU、50GB 虚拟磁盘。
- 启动虚拟机,选择下载的 ISO 文件作为启动盘。
- 按向导完成安装:选择“安装 Ubuntu”→ 分区(新手选“清除磁盘并安装”)→ 设置用户名/密码。
- 安装完成后重启,即可进入 Ubuntu 桌面环境。
4. Linux 命令行入门:告别图形界面#
Linux 的强大之处在于命令行界面(CLI)。即使是图形界面系统,核心操作仍依赖命令行。
4.1 为什么要学命令行?#
- 高效:批量操作、远程控制(如 SSH)。
- 自动化:通过脚本实现任务自动化。
- 底层控制:图形界面隐藏的细节,命令行可直接操作。
4.2 常用基础命令(必学!)#
| 命令 | 功能 | 示例 |
|---|---|---|
pwd | 显示当前路径 | pwd → /home/yourname |
ls | 列出目录内容 | ls -l(详细列表)、ls -a(显示隐藏文件) |
cd | 切换目录 | cd /tmp(进入 tmp 目录)、cd ~(回家目录) |
mkdir | 创建目录 | mkdir project(单级)、mkdir -p a/b/c(多级) |
touch | 创建空文件 | touch note.txt |
cp | 复制文件/目录 | cp file.txt /tmp/(复制文件)、cp -r dir/ /tmp/(复制目录) |
mv | 移动/重命名文件 | mv old.txt new.txt(重命名)、mv file.txt /tmp/(移动) |
rm | 删除文件/目录 | rm file.txt(删除文件)、rm -r dir/(删除目录,谨慎使用!) |
cat | 查看文件内容 | cat /etc/os-release(查看系统版本) |
less/more | 分页查看大文件 | less large.log(按 q 退出) |
head/tail | 查看文件开头/结尾 | head -5 file.txt(前 5 行)、tail -f log.txt(实时跟踪日志) |
4.3 文件编辑工具#
- 新手首选:
nano(简单直观,纯文本编辑器)
示例:nano note.txt→ 编辑内容 →Ctrl+O保存 →Ctrl+X退出。 - 进阶选择:
vim(功能强大,需学习快捷键)
基础操作:vim note.txt→ 按i进入编辑模式 → 编辑后按Esc→ 输入:wq保存退出(:q!强制退出不保存)。
5. Linux 文件系统:理解目录结构#
Linux 文件系统采用单一树形结构,所有文件从根目录 / 开始,没有 Windows 的“C 盘”“D 盘”概念。
核心目录功能(必须掌握!)#
| 目录 | 功能描述 |
|---|---|
/ | 根目录,所有文件的起点 |
/home | 普通用户主目录(如 /home/yourname) |
/etc | 系统配置文件(如网络、用户、服务配置) |
/bin | 普通用户可执行命令(如 ls、cp) |
/sbin | 管理员命令(如 reboot、fdisk) |
/usr | 系统软件资源(/usr/bin 存放用户程序,/usr/share 存放共享数据) |
/var | 动态变化的文件(日志 /var/log、缓存、数据库) |
/tmp | 临时文件(重启后清空,所有用户可读写) |
/dev | 硬件设备文件(如硬盘 /dev/sda、键盘 /dev/input/event0) |
示例:用户配置文件通常在 /home/yourname/.bashrc(隐藏文件,以 . 开头),系统网络配置在 /etc/netplan/。
6. 用户与权限:Linux 的多用户安全模型#
Linux 是多用户操作系统,严格的权限控制是其安全性的核心。
6.1 用户类型#
- root(超级用户):拥有系统全部权限,操作需谨慎(建议通过
sudo临时提权,而非直接登录)。 - 普通用户:受权限限制,仅能操作自己目录下的文件。
6.2 用户管理命令#
| 命令 | 功能 | 示例 |
|---|---|---|
useradd | 创建用户 | sudo useradd -m alice(-m 自动创建家目录) |
passwd | 修改密码 | sudo passwd alice(设置 alice 的密码) |
usermod | 修改用户属性 | sudo usermod -aG sudo alice(添加 alice 到 sudo 组) |
userdel | 删除用户 | sudo userdel -r alice(-r 同时删除家目录) |
6.3 文件权限:rwx 与数字表示#
每个文件/目录的权限分为三类:所有者(User)、所属组(Group)、其他用户(Other),每类权限包含:
r(读,4):查看内容。w(写,2):修改内容。x(执行,1):运行程序/进入目录。
权限表示方式:
- 符号:如
-rw-r--r--(文件,所有者可读写,组和其他用户只读)。 - 数字:如
644(rw-r--r--)、755(rwxr-xr-x,可执行文件/目录)。
6.4 修改权限命令#
chmod:修改文件权限
示例:chmod 755 script.sh(所有者 rwx,组和其他 rx)、chmod +x script.sh(添加执行权限)。chown:修改文件所有者/所属组
示例:sudo chown alice:alice file.txt(所有者和组均改为 alice)。
7. 软件包管理:安装与维护应用程序#
Linux 软件通常通过包管理器安装,避免手动编译源码的繁琐。不同发行版使用不同的包管理器:
7.1 主流包管理器对比#
| 发行版系列 | 包管理器 | 常用命令(安装/更新/卸载) |
|---|---|---|
| Debian/Ubuntu | apt | 安装:sudo apt install 包名 更新: sudo apt update && sudo apt upgrade 卸载: sudo apt remove 包名 |
| RedHat/CentOS | dnf/yum | 安装:sudo dnf install 包名 更新: sudo dnf update 卸载: sudo dnf remove 包名 |
| Arch Linux | pacman | 安装:sudo pacman -S 包名 更新: sudo pacman -Syu 卸载: sudo pacman -R 包名 |
7.2 最佳实践#
- 定期更新:
sudo apt update && sudo apt upgrade(Ubuntu)或sudo dnf update(CentOS)。 - 优先使用官方源:第三方源(PPA)可能带来安全风险。
- 清理缓存:
sudo apt clean(Ubuntu)、sudo dnf clean all(CentOS)。
8. 进程管理:监控与控制系统任务#
进程(Process) 是运行中的程序实例。Linux 提供工具监控和管理进程:
8.1 查看进程#
ps:静态查看进程快照
示例:ps aux(查看所有用户进程,详细信息)、ps -ef | grep nginx(筛选 nginx 进程)。top/htop:动态监控进程(htop更直观,需安装)
操作:按P按 CPU 排序,M按内存排序,k终止进程。
8.2 控制进程#
kill:终止进程(通过 PID,可从ps/top获取)
示例:kill 1234(温和终止 PID 1234 的进程)、kill -9 1234(强制终止,慎用!)。bg/fg:后台/前台运行
示例:sleep 1000 &(后台运行 sleep)→jobs(查看后台任务)→fg 1(将任务 1 调至前台)。
9. 网络基础:连接 Linux 与世界#
9.1 网络配置命令#
ip addr:查看网络接口与 IP 地址(替代旧命令ifconfig)。ping:测试网络连通性
示例:ping google.com(测试与谷歌的连接)。curl/wget:下载文件
示例:curl -O https://example.com/file.zip(下载文件)、wget https://example.com/file.zip。ss:查看网络连接(替代旧命令netstat)
示例:ss -tuln(查看监听的 TCP/UDP 端口)。
9.2 远程登录:SSH#
通过 SSH 可远程控制 Linux 服务器:
示例:ssh username@remote_ip(如 ssh [email protected])。
安全最佳实践:禁用密码登录,使用 SSH 密钥(ssh-keygen 生成密钥,ssh-copy-id 复制公钥到服务器)。
10. Shell 脚本入门:自动化你的工作#
Shell 脚本是批量执行命令的文本文件,可实现任务自动化(如日志清理、数据备份)。
10.1 脚本基本结构#
- Shebang 行:指定解释器,通常为
#!/bin/bash。 - 命令序列:需要执行的 Linux 命令。
- 注释:以
#开头,说明脚本功能。
10.2 示例:简单备份脚本(backup.sh)#
#!/bin/bash
# 备份 /home/yourname/Documents 到 /tmp/backup
BACKUP_DIR="/tmp/backup"
SRC_DIR="/home/yourname/Documents"
# 创建备份目录(如不存在)
mkdir -p $BACKUP_DIR
# 压缩备份(使用 tar)
tar -czf $BACKUP_DIR/docs_$(date +%Y%m%d).tar.gz $SRC_DIR
echo "备份完成:$BACKUP_DIR"10.3 运行脚本#
- 添加执行权限:
chmod +x backup.sh。 - 执行脚本:
./backup.sh。
11. Linux 安全最佳实践#
- 最小权限原则:日常使用普通用户,仅在必要时
sudo提权。 - 定期更新系统:
sudo apt upgrade或sudo dnf update。 - 禁用不必要服务:
sudo systemctl disable servicename(如 unused 的 FTP 服务)。 - 防火墙配置:使用
ufw(Ubuntu)或firewalld(CentOS)限制端口访问
示例:sudo ufw allow 22/tcp(允许 SSH)、sudo ufw allow 80/tcp(允许 HTTP)。 - 日志监控:定期检查
/var/log/auth.log(登录日志)、/var/log/syslog(系统日志)。
12. 总结与进阶学习路径#
12.1 核心技能回顾#
- 掌握 Linux 命令行(文件操作、权限、进程)。
- 理解文件系统结构与用户管理。
- 熟练使用包管理器安装软件。
- 基础网络配置与远程登录。
- 编写简单 Shell 脚本自动化任务。
12.2 进阶方向#
- 服务器管理:Web 服务器(Nginx/Apache)、数据库(MySQL/PostgreSQL)。
- 容器化:Docker 部署应用,Kubernetes 容器编排。
- DevOps:CI/CD(Jenkins/GitLab CI)、监控(Prometheus/Grafana)。
- 内核与系统调优:深入理解 Linux 内核参数,优化性能。
13. 参考资料#
- 官方文档:
- Linux man 手册(命令帮助,如
man ls) - Ubuntu 文档
- Red Hat 文档
- Linux man 手册(命令帮助,如
- 书籍:
- 《The Linux Command Line》(William Shotts,免费在线版)
- 《鸟哥的 Linux 私房菜》(适合新手入门)
- 在线课程:
通过本文的学习,你已具备 Linux 基础知识。实践是掌握 Linux 的关键——多动手敲命令、解决实际问题(如搭建个人博客服务器),逐步积累经验。祝你在 Linux 的世界中探索愉快! 🐧