从零基础学习 Linux:全面入门到实践指南

Linux 作为一款开源、免费且高度可定制的操作系统,已渗透到我们生活和工作的方方面面:从服务器(全球超 90% 的云服务器运行 Linux)、嵌入式设备(智能手机、路由器)到超级计算机、人工智能平台,甚至是日常办公和开发环境。其稳定性、安全性和灵活性使其成为技术领域的基石。

本文专为零基础学习者设计,将从 Linux 的核心概念出发,逐步深入到命令行操作、文件系统、用户权限、软件管理等关键技能,并结合大量实例和最佳实践,帮助你系统掌握 Linux 基础,为后续深入学习(如服务器管理、云计算、DevOps)打下坚实基础。

目录#

  1. 什么是 Linux?核心概念与历史
  2. 选择合适的 Linux 发行版
  3. Linux 安装指南:从虚拟机到双系统
  4. Linux 命令行入门:告别图形界面
  5. Linux 文件系统:理解目录结构
  6. 用户与权限:Linux 的多用户安全模型
  7. 软件包管理:安装与维护应用程序
  8. 进程管理:监控与控制系统任务
  9. 网络基础:连接 Linux 与世界
  10. Shell 脚本入门:自动化你的工作
  11. Linux 安全最佳实践
  12. 总结与进阶学习路径
  13. 参考资料

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 为例)#

  1. 下载 Ubuntu ISO:Ubuntu 官网(选择 LTS 长期支持版,如 22.04 LTS)。
  2. 新建虚拟机:分配 4GB 内存、2 核 CPU、50GB 虚拟磁盘。
  3. 启动虚拟机,选择下载的 ISO 文件作为启动盘。
  4. 按向导完成安装:选择“安装 Ubuntu”→ 分区(新手选“清除磁盘并安装”)→ 设置用户名/密码。
  5. 安装完成后重启,即可进入 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普通用户可执行命令(如 lscp
/sbin管理员命令(如 rebootfdisk
/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--(文件,所有者可读写,组和其他用户只读)。
  • 数字:如 644rw-r--r--)、755rwxr-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/Ubuntuapt安装:sudo apt install 包名
更新:sudo apt update && sudo apt upgrade
卸载:sudo apt remove 包名
RedHat/CentOSdnf/yum安装:sudo dnf install 包名
更新:sudo dnf update
卸载:sudo dnf remove 包名
Arch Linuxpacman安装: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 脚本基本结构#

  1. Shebang 行:指定解释器,通常为 #!/bin/bash
  2. 命令序列:需要执行的 Linux 命令。
  3. 注释:以 # 开头,说明脚本功能。

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 运行脚本#

  1. 添加执行权限:chmod +x backup.sh
  2. 执行脚本:./backup.sh

11. Linux 安全最佳实践#

  • 最小权限原则:日常使用普通用户,仅在必要时 sudo 提权。
  • 定期更新系统sudo apt upgradesudo 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 基础知识。实践是掌握 Linux 的关键——多动手敲命令、解决实际问题(如搭建个人博客服务器),逐步积累经验。祝你在 Linux 的世界中探索愉快! 🐧