《Linux基础教程(第二版)》学习指南
前言:为什么学习Linux?
Linux不仅是一个操作系统,更是一种开源、自由、稳定、高效的计算哲学,它从服务器领域渗透到云计算、大数据、人工智能、物联网,甚至是我们的日常设备(安卓手机、路由器、智能家居),掌握Linux,是通往现代IT世界的必经之路,本教程旨在为你打下坚实的Linux基础,让你从“知道Linux”成长为“会用Linux”。
第一部分:Linux入门与基础概念
第1章:认识Linux
- 1 Linux的起源与发展
- Unix的诞生与影响。
- Linux的诞生:Linus Torvalds与自由软件基金会(FSF)、GNU项目。
- Linux内核与发行版的关系(Debian, Ubuntu, CentOS, Fedora等)。
- 2 Linux的特点与优势
- 开源与免费。
- 多用户、多任务。
- 稳定性与安全性。
- 丰富的网络功能。
- 可移植性。
- 3 Linux的应用领域
- 服务器领域(Web服务器、数据库服务器)。
- 云计算与虚拟化。
- 嵌入式系统与物联网。
- 个人桌面应用。
- 4 如何选择一个Linux发行版?
- 初学者友好:Ubuntu, Linux Mint。
- 稳定与企业级:Debian, CentOS Stream, Rocky Linux。
- 自由与定制:Arch Linux, Gentoo。
- 5 安装Linux(以Ubuntu为例)
- 虚拟机安装:推荐使用 VirtualBox 或 VMware,方便练习且不影响宿主系统。
- 物理机安装:制作启动U盘,进行分区规划(建议新手选择“ alongside existing operating system”)。
- 重点: 获取你的第一个Linux环境。
第2章:Linux的启动、登录与关机
- 1 Linux系统的启动流程
- BIOS/UEFI -> Boot Loader (GRUB) -> Linux Kernel -> Init进程 -> 系统服务。
- (简化版理解即可)
- 2 登录方式
- 图形界面登录。
- 命令行登录:
Ctrl + Alt + F1~F6切换到虚拟终端。
- 3 关机与重启命令
shutdown -h now:立即关机。shutdown -r +10:10分钟后重启。halt:关机。reboot:重启。init 0:关机,init 6:重启。- 重要提示: 在生产环境中,请使用
shutdown命令,可以通知其他用户。
第二部分:Linux文件系统与基本命令
第3章:Linux文件系统结构
- 1 一切皆文件
普通文件、目录文件、设备文件、链接文件等。
- 2 标准的Linux目录结构 (FHS - Filesystem Hierarchy Standard)
- 根目录,一切从这里开始。
/bin:基本命令,如ls,cp,mv。/sbin:系统管理员命令,如reboot,fdisk。/etc:系统配置文件。/home:普通用户的家目录。/usr:用户安装的软件和程序。/var:经常变化的文件,如日志 (/var/log)。/tmp:临时文件。/boot:启动文件。/dev:设备文件。/proc&/sys:内核与进程信息的虚拟文件系统。
- 3 绝对路径与相对路径
- 绝对路径:从根 开始的完整路径,如
/home/user1/docs。 - 相对路径:从当前目录开始的路径,如
../docs(上级目录下的docs)。
- 绝对路径:从根 开始的完整路径,如
第4章:核心基本命令
- 1 文件和目录操作
ls:列出文件。ls -l(长格式),ls -a(显示隐藏文件),ls -h(人性化显示大小)。cd:切换目录。cd ~(回家),cd -(回到上一次目录)。pwd:显示当前所在路径。mkdir:创建目录。mkdir -p a/b/c(递归创建)。touch:创建空文件或更新文件时间戳。cp:复制文件/目录。cp -r(递归复制目录),cp -p(保持属性)。mv:移动/重命名文件/目录。rm:删除文件/目录。rm -f(强制删除),rm -r(递归删除目录)。(慎用!)
- 2 查看文件内容
cat:查看整个文件内容。more/less:分页查看文件(less更强大,可前后翻页)。head:查看文件开头几行。head -n 20 file.txt。tail:查看文件结尾几行。tail -f file.txt(实时追踪日志文件变化)。
- 3 查找命令
find:按文件名、类型、大小等条件查找文件。find /home -name "*.txt"。locate:基于数据库的快速查找(updatedb更新数据库)。grep:在文件中搜索文本内容。grep "error" log.txt。
- 4 压缩与解压
gzip/gunzip:.gz文件。bzip2/bunzip2:.bz2文件。tar:打包/解包命令。tar -czvf archive.tar.gz file1 file2(打包并gzip压缩),tar -xzvf archive.tar.gz(解压)。
第三部分:用户、权限与管理
第5章:用户与用户组管理
- 1 用户与用户组的概念
UID (User ID) 和 GID (Group ID)。
- 2 重要配置文件
/etc/passwd:用户账户信息。/etc/shadow:用户密码(加密)。/etc/group:用户组信息。
- 3 常用管理命令
useradd:创建新用户。passwd:设置/修改用户密码。userdel:删除用户。groupadd:创建新用户组。su:切换用户。su - username(完全切换,包括环境变量)。sudo:以其他用户(通常是root)的身份执行命令。
第6章:文件权限与归属
- 1 权限的表示
r(读, 4),w(写, 2),x(执行, 1)。chmod:修改权限。chmod u+x script.sh(给用户添加执行权限),chmod 755 file.txt(数字表示法)。
- 2 归属的表示
chown:修改文件所有者。chown user1:group1 file.txt。chgrp:修改文件所属组。
- 3 特殊权限
SUID, SGID, Sticky Bit。(概念性了解,知道其作用即可)
第四部分:文本编辑器与软件管理
第7章:Linux文本编辑器
- 1
nano:新手友好的命令行编辑器简单易学,底部有快捷键提示。
- 2
vim/vi:强大的编辑器(必学)- 三种模式:普通模式、插入模式、命令行模式。
- 基本操作:
i:进入插入模式。Esc:回到普通模式。w:保存。q:退出。wq:保存并退出。q!:强制退出不保存。
- 移动光标、复制粘贴、删除等操作。(vim是Linux程序员的标配,请务必花时间练习)
第8章:软件包管理
- 1 包管理器简介
解决软件依赖、安装、卸载、更新的问题。
- 2 基于Debian/Ubuntu的系统 (
apt)sudo apt update:更新软件源列表。sudo apt upgrade:升级已安装的软件包。sudo apt install package_name:安装软件。sudo apt remove package_name:卸载软件。
- 3 基于RHEL/CentOS/Rocky的系统 (
yum/dnf)sudo yum check-update:检查更新。sudo yum update:升级所有软件。sudo yum install package_name:安装软件。sudo yum remove package_name:卸载软件。- (新版本如CentOS 8/Rocky Linux 8+使用
dnf,用法与yum几乎相同)
第五部分:进程管理与系统监控
第9章:进程管理
- 1 什么是进程?
正在执行的程序实例。
- 2 查看进程
ps:查看当前终端下的进程。ps aux(查看所有用户的所有进程)。top/htop:动态查看系统资源占用和进程。htop是top的增强版,更直观。
- 3 控制进程
&:让命令在后台运行。sleep 100 &。Ctrl + Z:暂停前台进程。jobs:查看后台任务。fg/bg:将后台任务调到前台/继续后台运行。kill:终止进程。kill PID(发送终止信号),kill -9 PID(强制杀死)。pkill:根据进程名杀死进程。
第10章:系统信息与监控
- 1 查看系统信息
uname -a:查看内核和系统信息。lscpu:查看CPU信息。free -h:查看内存使用情况。df -h:查看磁盘空间使用情况。
- 2 网络相关
ifconfig/ip addr:查看网络接口IP地址。ping:测试网络连通性。netstat -tuln/ss -tuln:查看监听的端口。
第六部分:Shell脚本入门
第11章:Shell基础
- 1 什么是Shell?
- 用户与Linux内核之间的命令解释器。
- 常见的Shell:Bash (Bourne Again Shell), Zsh等,Bash是默认的。
- 2 变量
- 定义:
NAME="value"(注意等号两边不能有空格)。 - 使用:
echo $NAME或echo ${NAME}。 - 只读变量:
readonly NAME。 - 删除变量:
unset NAME。
- 定义:
- 3 字符串
- 单引号 :原样输出。
- 双引号 :可以引用变量。
- 反引号
`:命令替换,会先执行命令。
- 4 注释
- 单行注释: 开头。
- 多行注释: 或 。
第12章:流程控制
- 1 条件判断
test命令或[ ](注意括号两边要有空格)。- 判断类型:整数比较 (
-eq,-ne,-gt,-lt)、字符串比较 (, )、文件判断 (-f,-d,-e)。
- 2
if-else语句if [ condition ] then # command elif [ condition ] then # command else # command fi - 3 循环
for循环:for i in 1 2 3 4 5 do echo "Number: $i" donewhile循环:count=1 while [ $count -le 5 ] do echo "Count: $count" count=$((count + 1)) done
第七部分:网络配置与服务管理
第13章:网络基础配置
- 1 IP地址配置
- 命令行临时配置:
ip addr add 192.168.1.100/24 dev eth0。 - 永久配置:修改配置文件(如
/etc/netplan/01-netcfg.yamlfor Ubuntu,/etc/sysconfig/network-scripts/ifcfg-eth0for CentOS),然后重启网络服务。
- 命令行临时配置:
- 2 主名解析
/etc/hosts:本地主机名与IP映射。- DNS配置:
/etc/resolv.conf。
第14章:服务管理(Systemd)
- 1 Systemd简介
现代Linux发行版(CentOS 7+, Ubuntu 16.04+)默认使用的系统和服务管理器。
- 2 常用命令
systemctl start nginx.service:启动服务。systemctl stop nginx.service:停止服务。systemctl restart nginx.service:重启服务。systemctl enable nginx.service:开机自启。systemctl disable nginx.service:禁止开机自启。systemctl status nginx.service:查看服务状态。journalctl -u nginx.service:查看服务日志。
第八部分:学习资源与进阶方向
第15章:持续学习
- 1 官方文档
- The Linux Documentation Project (TLDP): tldp.org
- 各发行版的官方Wiki和文档。
- 2 在线教程与社区
- Linux Command: linuxcommand.org
- 菜鸟教程 (Linux): runoob.com/linux/linux-tutorial.html
- Stack Overflow: 解决编程和系统问题的最佳社区。
- Reddit: r/linux, r/linux4noob。
- 3 进阶方向
- Shell脚本编程:深入学习,编写自动化运维脚本。
- Linux系统管理:深入理解内核、性能调优、安全加固。
- Linux网络:深入学习TCP/IP、防火墙、路由。
- 容器化技术:学习 Docker 和 Kubernetes。
- 内核编译与开发:挑战高阶领域。
Linux的学习之路漫长且充满乐趣,本教程为你铺设了坚实的基石,但真正的 mastery 来自于不断的实践、探索和解决问题,大胆地去敲命令,去尝试,去犯错,去修复,祝你在Linux的世界里学有所成!
