Linux基础及应用教程
目录
-
第一部分:Linux入门与概览
- 1 什么是Linux?
- 2 Linux vs. Windows
- 3 Linux发行版简介
- 4 为什么学习Linux?
- 5 如何安装Linux?(虚拟机方案推荐)
-
第二部分:Linux核心基础
- 1 Linux文件系统结构
- 2 基础Shell命令
- 2.1 文件和目录操作
- 2.2 文件内容查看
- 2.3 文本处理
- 2.4 用户与权限管理
- 2.5 系统信息与管理
- 3 用户、权限与组
- 4 软件包管理
- 5 VIM编辑器入门
-
第三部分:Linux进阶应用
- 1 Shell脚本编程基础
- 2 进程管理
- 3 网络配置与工具
- 4 系统服务管理
- 5 日志管理
-
第四部分:常用服务与应用
- 1 Web服务器:Nginx
- 2 数据库:MySQL/MariaDB
- 3 版本控制:Git
- 4 容器化:Docker入门
-
第五部分:学习资源与进阶路径
- 1 推荐书籍
- 2 优质网站
- 3 实践项目
第一部分:Linux入门与概览
1 什么是Linux?
Linux不是一个操作系统,而是操作系统的内核,内核是硬件和软件之间的核心程序,负责管理CPU、内存、硬盘等硬件资源,我们通常所说的“Linux操作系统”,更准确地说是Linux发行版,它包含了Linux内核以及大量的GNU软件工具(如Shell、Bash、Coreutils等)和应用程序,组合成一个完整的、可用的操作系统。
2 Linux vs. Windows
| 特性 | Linux | Windows |
|---|---|---|
| 内核 | 开源 | 闭源 |
| 文件系统 | 一切皆文件,树状结构 | 驱动器盘符 (C:, D:) |
| 用户界面 | 主要为命令行,GUI可选 | 主要为图形界面 |
| 软件安装 | 软件包管理器 | .exe / .msi 安装包 |
| 安全性 | 权限模型严格,病毒少 | 用户权限较高,病毒多 |
| 适用场景 | 服务器、开发、嵌入式 | 桌面办公、游戏、专业软件 |
3 Linux发行版简介
发行版是Linux内核和软件的不同打包组合。
- Ubuntu: 最流行的桌面发行版,对新手友好,社区支持强大。
- CentOS / Rocky Linux / AlmaLinux: 专注于服务器和企业级应用,极其稳定。
- Debian: 社区驱动,非常稳定,是Ubuntu的基础。
- Fedora: Red Hat赞助,技术前沿,适合开发者尝鲜。
- Arch Linux: 滚动更新,高度可定制,适合高级用户。
建议初学者从 Ubuntu 或 CentOS 开始。
4 为什么学习Linux?
- 服务器领域霸主: 超过90%的互联网服务器运行着Linux。
- 开发者的必备技能: 大量的后端开发、容器化、云计算环境都基于Linux。
- 强大的可定制性: 从内核到桌面,你可以完全掌控你的系统。
- 免费与开源: 无需支付许可费用,自由使用和修改。
- 安全性高: 权限模型和开源社区使得安全问题能被快速发现和修复。
5 如何安装Linux?(虚拟机方案推荐)
对于初学者,强烈建议在虚拟机中安装Linux,这样不会影响你现有的Windows或macOS系统。
- 工具: VirtualBox (免费) 或 VMware Workstation Player (免费个人版)。
- 步骤:
- 下载并安装虚拟机软件。
- 下载你选择的Linux发行版ISO镜像文件(如Ubuntu Desktop)。
- 打开虚拟机软件,创建一个新的虚拟机,选择下载的ISO镜像作为光盘启动。
- 按照向导完成虚拟机的创建和Linux的安装过程,过程类似于安装普通软件。
第二部分:Linux核心基础
1 Linux文件系统结构
Linux采用树状的单根文件系统,所有文件和目录都从根目录 开始。
- 根目录
/home: 用户的主目录/etc: 系统配置文件/var: 经常变化的文件,如日志、缓存/usr: 用户安装的程序/boot: 系统启动相关文件/tmp: 临时文件/opt: 可选的大型软件包/dev: 设备文件
2 基础Shell命令
打开终端,你将看到一个命令行提示符,命令的基本格式是:命令 [选项] [参数]。
2.1 文件和目录操作
ls(list): 列出目录内容。ls -l: 以长格式显示(权限、所有者、大小、日期)。ls -a: 显示所有文件,包括隐藏文件(以开头)。ls -h: 以人类可读的方式显示文件大小(K, M, G)。
cd(change directory): 切换目录。cd /home: 切换到/home目录。cd ..: 切换到上一级目录。cd ~: 切换到当前用户的主目录。cd -: 切换到上一个所在的目录。
pwd(print working directory): 显示当前所在的工作目录。mkdir(make directory): 创建新目录。mkdir mydir: 创建mydir目录。mkdir -p parent/child: 递归创建多级目录。
touch: 创建一个空文件或更新文件时间戳。touch file.txt: 创建file.txt。
cp(copy): 复制文件或目录。cp source.txt dest.txt: 复制文件。cp -r sourcedir destdir: 递归复制目录。
mv(move/rename): 移动文件或目录,或重命名。mv oldname.txt newname.txt: 重命名文件。mv file.txt /home/username/: 移动文件。
rm(remove): 删除文件或目录。rm file.txt: 删除文件。rm -r mydir: 递归删除目录。rm -f file.txt: 强制删除,不提示。- 警告:
rm -rf是一个威力巨大的命令,会强制递归删除,请谨慎使用!
man(manual): 查看命令的帮助手册。man ls: 查看ls命令的详细用法。
2.2 文件内容查看
cat(concatenate): 查看文件的全部内容,适合小文件。cat file.txt
less: 分页查看文件内容,适合大文件,可以使用q退出。less file.txt
head: 查看文件的开头几行。head -n 10 file.txt: 查看前10行。
tail: 查看文件的结尾几行。tail -n 10 file.txt: 查看后10行。tail -f file.log: 实时追踪文件内容更新(常用于看日志)。
2.3 文本处理
grep: 在文本中搜索匹配的行。grep "error" log.txt: 在log.txt中搜索包含 "error" 的行。grep -i "Error" log.txt: 忽略大小写。grep -r "error" /var/log/: 在目录中递归搜索。
find: 在文件系统中查找文件。find . -name "*.txt": 在当前目录下查找所有.txt文件。
wc(word count): 统计文件的行数、单词数和字节数。wc -l file.txt: 只统计行数。
sort: 对文件内容进行排序。sort file.txt
uniq: 去除重复的行。sort file.txt | uniq: 先排序再去重。
2.4 用户与权限管理
chmod(change mode): 修改文件或目录的权限。- 权限分为:
r(读, 4),w(写, 2),x(执行, 1)。 - 用户类型:
u(所有者),g(组),o(其他人),a(所有人)。 chmod u+x script.sh: 给文件所有者添加执行权限。chmod 755 script.sh: 直接设置权限为rwxr-xr-x。
- 权限分为:
chown(change owner): 修改文件或目录的所有者。sudo chown username:groupname file.txt
sudo(superuser do): 以超级用户(root)身份执行命令。sudo apt update: 更新软件包列表(需要输入当前用户密码)。
2.5 系统信息与管理
top/htop: 实时查看系统进程和资源占用。htop是top的增强版,更直观。ps(process status): 查看当前运行的进程。ps aux: 查看所有进程的详细信息。
kill: 终止进程。kill -9 <PID>: 强制杀死进程(PID为进程ID)。
df -h(disk free): 查看磁盘空间使用情况。free -h(free memory): 查看内存使用情况。uname -a: 显示所有系统信息。
3 用户、权限与组
- 用户: 系统的使用者。
- 组: 用户的集合,便于权限管理。
- 权限: 分为读、写、执行,分别针对文件所有者、所属组和其他用户。
- root用户: 超级管理员,拥有对系统的最高控制权,日常操作应避免使用root用户,只在必要时使用
sudo。
4 软件包管理
不同的发行版使用不同的包管理器。
- 基于 Debian/Ubuntu 的系统 (
apt):sudo apt update: 更新软件源列表。sudo apt upgrade: 升级所有已安装的软件包。sudo apt install package_name: 安装软件包。sudo apt remove package_name: 卸载软件包。
- 基于 CentOS/RHEL 的系统 (
yum/dnf):sudo yum check-update: 检查更新。sudo yum update: 升级所有软件包。sudo yum install package_name: 安装软件包。sudo yum remove package_name: 卸载软件包。
5 VIM编辑器入门
VIM (Vi IMproved) 是Linux下最强大的文本编辑器之一。
- 三种模式:
- 普通模式: 默认模式,用于移动光标、复制粘贴等,按
Esc进入此模式。 - 插入模式: 用于输入文本,按
i(在光标前插入),a(在光标后插入),o(新开一行) 进入。 - 命令行模式: 用于保存、退出、搜索等,按 (冒号) 进入。
- 普通模式: 默认模式,用于移动光标、复制粘贴等,按
- 常用操作:
i: 进入插入模式。Esc: 退出插入模式,回到普通模式。w: 保存。q: 退出。wq: 保存并退出。q!: 强制退出,不保存修改。/keyword: 在普通模式下,按 然后输入关键词搜索。dd: 删除一行。yy: 复制一行。p: 粘贴。
第三部分:Linux进阶应用
1 Shell脚本编程基础
Shell脚本是将一系列命令写入一个文件,通过bash script.sh来执行。
- 首行:
#!/bin/bash(Shebang),告诉系统用哪个解释器来执行。 - 变量:
name="Alice"(注意等号两边不能有空格),使用时$name或${name}。 - 条件判断:
if...then...else...fi#!/bin/bash age=20 if [ $age -ge 18 ]; then echo "You are an adult." else echo "You are a minor." fi - 循环:
for...do...done#!/bin/bash for i in 1 2 3 4 5 do echo "Number: $i" done - 参数:
$0(脚本名),$1(第一个参数),$2(第二个参数), 以此类推。 是参数个数, 是所有参数列表。
2 进程管理
- 前台进程: 直接在终端运行的进程,关闭终端进程会终止。
- 后台进程: 在终端运行,但不占用终端,使用
&符号:command &。 - 进程控制:
Ctrl + Z: 暂停当前进程,并将其放入后台。jobs: 查看后台任务列表。bg %<jobid>: 将后台任务继续运行。fg %<jobid>: 将后台任务调回前台。nohup command &: 让命令忽略挂断信号,即关闭终端后进程仍会继续运行。
3 网络配置与工具
ifconfig/ip addr: 查看和配置网络接口信息。ping <hostname>: 测试与另一台主机的网络连通性。ssh username@hostname: 安全地远程登录到另一台主机。scp file.txt username@hostname:/remote/path: 安全地复制文件到远程主机。netstat -tuln/ss -tuln: 查看当前监听的TCP/UDP端口。
4 系统服务管理
现代Linux发行版多使用 systemd 来管理系统服务。
systemctl status <service_name>: 查看服务状态。sudo systemctl start <service_name>: 启动服务。sudo systemctl stop <service_name>: 停止服务。sudo systemctl restart <service_name>: 重启服务。sudo systemctl enable <service_name>: 设置服务开机自启。sudo systemctl disable <service_name>: 禁止服务开机自启。
5 日志管理
- 日志位置: 主要在
/var/log/目录下。 - 常用日志文件:
/var/log/syslog: 系统日志。/var/log/auth.log: 用户认证日志。/var/log/nginx/access.log: Nginx访问日志。
- 查看日志:
journalctl是systemd的日志查询工具。journalctl -u nginx.service: 查看nginx服务的日志。journalctl -f: 实时追踪日志。
第四部分:常用服务与应用
1 Web服务器:Nginx
Nginx是一个高性能的HTTP和反向代理服务器。
- 安装:
sudo apt install nginx(Ubuntu) 或sudo yum install nginx(CentOS)。 - 配置文件:
/etc/nginx/nginx.conf和/etc/nginx/sites-available/。 - 启动服务:
sudo systemctl start nginx。 - 测试: 在浏览器中输入你的服务器IP地址,看到 "Welcome to nginx!" 页面表示成功。
2 数据库:MySQL/MariaDB
MariaDB是MySQL的一个分支,是CentOS等系统的默认数据库。
- 安装:
sudo apt install mariadb-server(Ubuntu) 或sudo yum install mariadb-server(CentOS)。 - 安全配置:
sudo mysql_secure_installation,设置root密码、移除匿名用户等。 - 登录:
mysql -u root -p。 - 基本操作:
CREATE DATABASE mydb;: 创建数据库。USE mydb;: 使用数据库。CREATE TABLE users (id INT, name VARCHAR(100));: 创建表。INSERT INTO users VALUES (1, 'Alice');: 插入数据。
3 版本控制:Git
Git是世界上最先进的分布式版本控制系统。
- 安装:
sudo apt install git。 - 配置:
git config --global user.name "Your Name" git config --global user.email "your.email@example.com"
- 基本工作流:
git init: 初始化一个Git仓库。git add .: 将所有文件添加到暂存区。git commit -m "Initial commit": 提交更改,并添加备注。git status: 查看仓库状态。git log: 查看提交历史。git push origin main: 推送代码到远程仓库(如GitHub)。git pull origin main: 从远程仓库拉取代码。
4 容器化:Docker入门
Docker是一个开源的应用容器引擎,让开发者可以打包应用及其依赖到一个可移植的容器中。
- 安装: 参考Docker官方文档,因为安装步骤因发行版而异。
- 基本概念:
- 镜像: 一个只读的模板,用来创建容器。
- 容器: 镜像的运行实例,是轻量级、可移植的“沙箱”。
- 常用命令:
docker images: 查看本地镜像。docker pull nginx: 拉取Nginx镜像。docker run -d -p 8080:80 nginx: 以后台模式运行Nginx容器,并将容器的80端口映射到主机的8080端口。docker ps: 查看正在运行的容器。docker stop <container_id>: 停止容器。
第五部分:学习资源与进阶路径
1 推荐书籍
- 《鸟哥的Linux私房菜》: 中文世界最经典的Linux入门书籍,内容详尽。
- 《Linux命令行与Shell脚本编程大全》: 深入讲解命令行和脚本,非常实用。
- 《How Linux Works》: 从底层原理角度讲解Linux,适合想深入理解系统的人。
2 优质网站
- The Linux Documentation Project (tldp.org): Linux官方文档,有大量HOWTO指南。
- Stack Overflow: 解决编程和系统问题的最佳社区。
- GitHub: 查看开源项目的配置文件和脚本,是学习的绝佳素材。
- 菜鸟教程: 提供快速入门的命令参考。
3 实践项目
- 搭建个人博客: 使用Nginx + WordPress或Hexo (静态博客)。
- 部署一个简单的Web应用: 比如Flask或Django应用,用Nginx做反向代理。
- 搭建家庭媒体服务器: 使用Plex或Jellyfin。
- 学习使用Docker: 尝试将你的个人项目容器化。
- 贡献开源项目: 从修复一个小bug或改进文档开始。
学习Linux是一个持续的过程,不可能一蹴而就,最好的方法是多动手、多实践、多犯错、多总结,从今天开始,打开你的虚拟机,尝试每一个命令,尝试搭建一个小服务,你会逐渐发现Linux世界的强大与魅力,祝你学习愉快!
