linux 学习教程

第一章:地基搭建 —— 用 Docker 秒装 Linux 系统

1.1 为什么用 Docker 学 Linux?

  • 传统方式:装虚拟机(如 VMware)慢、占内存、容易卡。
  • Docker 方式:一条命令,1 秒启动一个 Linux,用完即删,完全不伤电脑。
  • 核心思想:把 Linux 当成一个“APP”来安装和卸载。
1.1.1 第一步:安装 Docker
1.1.2 第二步:拉取(下载)Linux 镜像

镜像 = 系统的“安装包”。

打开终端(Windows 用 CMD 或 PowerShell,Mac/Linux 用自带终端),输入:

docker pull ubuntu:22.04

1.1.3 第三步:启动并进入 Linux 容器

容器 = 正在运行的“系统实例”。

输入以下命令,即可一秒进入 Linux 内部:

docker run -it --name mylinux ubuntu:22.04 bash
1.1.4

终端前缀会变成类似:

root@72a3f1d0e8b9:/#
  • #:代表你现在是超级管理员(最高权限)。
  • /:代表你现在在系统根目录。

1.2在 Linux 命令行内输入以下三条命令,感受:

1.2.1 我是谁?

whoami

输出:root

1.2.2 我在哪?

pwd

输出:/(证明在根目录)

1.2.3 系统什么版本?

cat /etc/os-release

会显示 Ubuntu 22.04 的版本信息。

1.3 核心知识点

概念通俗解释关键命令
镜像 (Image)类似.iso 安装光盘,只读的docker pull 镜像名
容器 (Container)类似安装好的系统,可读写docker run -it 镜像名 bash
仓库 (Registry)类似应用商店,存镜像的地方默认是 Docker Hub
退出容器关闭当前系统连接输入exit或按Ctrl+D
重启容器重新连回刚才的系统docker start -ai mylinux

1.4 极简实操:安装一个软件

在容器内输入(更新软件列表):

apt update

再输入(安装一个文本编辑器):

apt install nano -y

能跑通这两条,说明你Linux 能联网、能装软件,一切正常。

1.5 本章结束前必须做的事:退出与保存

记住:Docker 容器的特殊性 —— 一旦退出,如果不保存,里面的改动会丢失。

正确退出的流程

  1. 先输入exit退出容器(回到 Windows 终端)。
  2. 输入以下命令,把当前的系统状态保存为新镜像(相当于给系统做快照):
docker commit mylinux ubuntu-mine:v1
  1. 下次再用这个带软件的系统:
docker run -it ubuntu-mine:v1 bash

本章总结(背诵口诀)

拉取镜像用 pull,
run -it 进系统,
exit 退出别慌张,
commit 保存才久长。

第二章:文件系统与基础操作 —— 学会在 Linux 里“走路”和“动手”

2.1 Linux 的“地图” —— 树状目录结构

Windows有 C盘、D盘。
Linux只有一个根目录/,所有东西都挂在这个根下面。

你只需要记住3个最重要的文件夹(其它的以后慢慢见):

目录通俗叫法里面装什么
/根目录整棵树的树根,所有文件的起点
/home宿舍楼普通用户的“家目录”(存放个人文件)
/etc办公室系统的配置文件都在这(比如网络设置)
/tmp临时工位临时文件存放地,重启后可能清空

你现在的家在哪?
因为你是root(管理员),你的家在/root(注意不是/home/root)。

2.2 核心命令一:我在哪?(pwd)和 看看有啥(ls)

2.2.1 pwd(Print Working Directory)
作用:显示你当前所在的路径。

pwd

输出示例:/root(你现在在管理员的家)

2.2.2 ls(LiSt)
作用:列出当前文件夹下所有的“文件”和“文件夹”。

ls

因为是刚装的纯净系统,很可能什么都没显示(空的)。

常用变体(记住这一个就够了):

ls -la
  • -l:显示详细信息(大小、权限、时间)
  • -a:显示隐藏文件(以.开头的文件)

口诀pwd看路牌,ls看货架。

2.3 核心命令二:换房间(cd)

cd(Change Directory)
作用:像在 Windows 里双击文件夹一样,切换目录

2.3.1 进入某个文件夹

cd /etc

然后输入pwd,你会看到现在在/etc

2.3.2 返回上一个目录(..)

cd ..

..代表上级目录(就像 Windows 里的“向上”按钮)。

2.3.3 直接回自己的家(~)

cd ~

~代表当前用户的家目录(对于你就是/root)。

2.3.4 一步回到根目录

cd /

小练习:依次输入以下命令,看看路径变化:

cd /etc cd .. cd ~

2.4 核心命令三:创建文件夹(mkdir)

mkdir(MaKe DIRectory)
作用:在当前位置创建新文件夹。

2.4.1 创建单层文件夹

mkdir mydata

2.4.2 创建多层文件夹(同时建父级和子级)

mkdir -p project/code/v1

-p的意思是:如果上级不存在,就自动帮我建好。

查看结果:

ls -la

2.5 核心命令四:创建文件(touch)和 查看文件(cat)

2.5.1 创建空白文件

touch hello.txt

2.5.2 向文件写入一句话(用 echo + 重定向)

echo "我的第一个Linux文件" > hello.txt
  • >的意思是:把左边的输出写入到右边的文件里(覆盖原有内容)。

2.5.3 查看文件内容

cat hello.txt

输出:我的第一个Linux文件

2.6 核心命令五:复制(cp)、移动(mv)、删除(rm)

这是最危险的三个命令,尤其rm,在 Linux 里没有回收站

2.6.1 复制文件

cp hello.txt hello_copy.txt

格式:cp 原文件 新文件

2.6.2 移动(或重命名)

mv hello_copy.txt mydata/

把文件移动到mydata文件夹里。
如果mv hello.txt world.txt,就是重命名(把 hello 改成 world)。

2.6.3 删除(⚠️ 谨慎!)

rm hello.txt

删除单个文件。

删除文件夹(必须加 -r,递归删除)

rm -r mydata/

-r代表把文件夹里的东西翻个底朝天全删光。

极度危险的组合(新手绝对不要用!)

rm -rf / # 这是删掉整个系统,千万不要试!!!

-f是强制,不询问。这条命令是 Linux 界著名的“自杀命令”。

2.7 本章实操:给自己建一个小仓库

在你的家目录下,完成以下操作:

  1. 回家:cd ~
  2. 建个项目文件夹:mkdir myproject
  3. 进入:cd myproject
  4. 建两个文件:touch readme.txttouch notes.txt
  5. 写入内容:echo "学习Linux第一天" > readme.txt
  6. 查看内容:cat readme.txt
  7. 把 notes 移动到上级:mv notes.txt ..
  8. 删掉空文件:rm readme.txt(别怕,只是文本)
  9. 返回上级:cd ..
  10. 删除整个 myproject 文件夹:rm -r myproject

能完整走一遍,说明你对文件操作已经入门了。

本章核心命令速查表

命令含义举例
pwd显示当前路径pwd
ls -la列出所有文件(含隐藏)ls -la
cd 路径切换目录cd /etc
mkdir 文件夹创建文件夹mkdir data
touch 文件创建空文件touch a.txt
cat 文件查看文件内容cat a.txt
cp 源 目标复制cp a.txt b.txt
mv 源 目标移动/重命名mv a.txt /tmp/
rm 文件删除rm a.txt
rm -r 文件夹删除文件夹rm -r data/

本章总结口诀

pwd 看路,ls 看货,
cd 点点到处走,
mkdir 建家,touch 触屏,
cp 复制,mv 挪窝,
rm 删除要问三遍,
-r 递归记心头。

第三章:权限与编辑器 —— 看懂 Linux 的“门禁卡”,学会写“便签”

3.1 为什么要学权限?

Linux 是多用户系统(一台服务器几百人同时用)。
权限就像公司的门禁卡

  • 老板(root):所有房间都能进。
  • 员工(普通用户):只能进自己的工位。
  • 客人(其他人):只能进会议室。

你的 Docker 容器默认是 root(老板),但真实服务器上,严禁随便用 root。

3.2 核心命令:查看权限(ls -l)

输入以下命令,看一个文件的详细信息:

ls -l

会看到类似这样的输出:

-rw-r--r-- 1 root root 24 Jul 27 10:00 hello.txt

我们只看最前面那一串:-rw-r--r--
这 10 个字符就是权限码,我们把它拆开看:

位置含义例子
第 1 位文件类型-普通文件,d文件夹
第 2-4 位拥有者(u)的权限rw-可读可写不可执行
第 5-7 位同组用户(g)的权限r--只读
第 8-10 位其他人(o)的权限r--只读

3.3 权限三字母:rwx

字母含义对文件对文件夹
r(read)能看文件内容能看文件夹里有哪些文件
w(write)能修改文件能在文件夹里新建/删除文件
x(execute)执行能运行这个程序能进入这个文件夹(cd

口诀r看,w改,x跑。

3.4 修改权限(chmod)—— 最简单的方法:用数字

权限可以用数字表示,超级好用:

权限数字
r4
w2
x1

把三个权限加起来:

  • rw-= 4+2+0 =6(可读可写)
  • r--= 4+0+0 =4(只读)
  • rwx= 4+2+1 =7(全部权限)

修改权限的命令格式:

chmod 数字 文件名

实操练习:

# 1. 先创建一个文件 touch test.txt # 2. 查看权限 ls -l test.txt # 输出:-rw-r--r-- (644) # 3. 改为只有自己能读写执行(700) chmod 700 test.txt ls -l test.txt # 输出:-rwx------ # 4. 改为所有人都能读写执行(777) chmod 777 test.txt ls -l test.txt # 输出:-rwxrwxrwx

⚠️ 警告777相当于把门禁卡发给全世界,生产环境绝对禁止!平时练习随便玩。

3.5 核心编辑器:nano(最简单,适合新手)

Linux 下有vim(高手用)和nano(新手用)。我们学nano,因为打开就能写

3.5.1 安装 nano(你的容器可能没有,先装上)

apt update apt install nano -y

3.5.2 用 nano 创建/编辑文件

nano mynote.txt

此时屏幕变成全白的编辑界面。

nano 的常用操作(就 4 个,背下来!)

操作快捷键说明
保存Ctrl + O然后按Enter确认文件名
退出Ctrl + X如果没保存,会问你是否保存
剪切整行Ctrl + K删除当前光标所在行
粘贴Ctrl + U把剪切的内容贴回来

实操:写一个配置文件

  1. 输入nano mynote.txt
  2. 打字:我的第一个nano文件
  3. Ctrl + O,按Enter保存
  4. Ctrl + X退出
  5. cat mynote.txt查看内容

对比:用nano能写多行,用echo只能写一行。

3.6 补充技能:查看和杀死进程(ps 和 kill)

有时候程序卡死了,需要强制关闭。

3.6.1 查看运行中的程序

ps aux

会列出所有进程。重点关注PID(进程编号)这一列。

3.6.2 模拟一个“卡死”的程序

sleep 9999 &
  • sleep是睡觉命令
  • 9999是秒数
  • &是让它在后台运行(不占用你的输入)

3.6.3 找到它的 PID 并杀死它

ps aux | grep sleep

找到类似root 12345 0.0 0.0 ... sleep 9999的一行,记下12345(你的数字可能不同)。

然后:

kill 12345

如果杀不掉,用kill -9 12345(强制杀死,-9 是终极武器)。

3.7 本章综合实战:搭建一个“个人笔记”文件夹

按顺序执行以下命令,把之前学的全串起来:

# 1. 回到家 cd ~ # 2. 建一个私人文件夹 mkdir private # 3. 进入 cd private # 4. 用 nano 写一篇日记 nano diary.txt # 输入:今天学会了 Linux 权限和 nano! # Ctrl+O 保存,Ctrl+X 退出 # 5. 查看文件权限 ls -l # 输出:-rw-r--r-- (644) # 6. 改为只有自己能读写 chmod 600 diary.txt ls -l # 输出:-rw------- (600) # 7. 验证:尝试用 cat 看(自己能看) cat diary.txt # 8. 尝试切到另一个用户试试(我们没有,跳过) # 记住:如果是真实服务器,其他用户就看不到你的日记了

本章核心命令速查表

命令含义举例
ls -l查看权限详情ls -l test.txt
chmod 数字 文件修改权限chmod 700 test.txt
nano 文件编辑文件nano a.txt
ps aux查看所有进程ps aux
kill PID关闭进程kill 1234
kill -9 PID强制关闭进程kill -9 1234

本章总结口诀

ls -l 看权限,
rwx 三字母记心间,
数字赋权 4-2-1,
nano 编辑两键走(Ctrl+O 存,Ctrl+X 退),
ps 查进程,kill 杀,
权限管理保平安。

第四章:包管理与命令组合 —— 学会"装APP"和"打组合拳"

4.1 什么是包管理?(用手机应用商店来理解)

场景手机Linux (Ubuntu)
应用商店App Store / 应用宝APT(Advanced Package Tool)
搜索应用搜"微信"apt search 软件名
安装应用点"安装"apt install 软件名 -y
卸载应用点"卸载"apt remove 软件名
更新所有应用点"全部更新"apt upgrade

核心:APT 会自动处理依赖关系(比如装游戏 A 必须装运行库 B,APT 会自动给你装上)。

4.2 核心命令:APT 三板斧(必须背熟)

在 Ubuntu 里,apt就是你的软件管家

4.2.1 更新软件列表(相当于刷新商店页面)

apt update

每次装软件前先执行这一条,确保知道最新版本。

4.2.2 安装软件

apt install 软件名 -y
  • -y表示自动确认(不加的话会问你是否安装,需要输y

4.2.3 卸载软件

apt remove 软件名 -y

4.3 实战:装几个好玩的小工具

4.3.1 装个小火车(娱乐向)

apt install sl -y sl

你会看到一辆小火车在屏幕上跑过。slls的打错版,作者专门做了个彩蛋。

4.3.2 装个系统监控工具

apt install htop -y htop

q退出。这比ps aux漂亮一万倍,是服务器的"任务管理器"。

4.3.3 装个下载工具

apt install wget -y

wget可以在命令行里下载文件,后面会用。

4.4 核心技能:输入输出重定向(> 和 >>)

之前我们简单用过>,现在系统学:

符号名称作用举例
>覆盖重定向把输出写入文件,覆盖原有内容echo "新内容" > a.txt
>>追加重定向把输出追加到文件末尾echo "追加一行" >> a.txt
<输入重定向从文件读取输入sort < a.txt(后面会讲)

实操对比:

# 1. 创建文件并写入第一行 echo "第1行" > test.txt cat test.txt # 输出:第1行 # 2. 用 > 覆盖(原来的没了) echo "第2行" > test.txt cat test.txt # 输出:第2行 # 3. 用 >> 追加(保留原来的) echo "第3行" >> test.txt cat test.txt # 输出: # 第2行 # 第3行

口诀>是覆盖(管杀不管埋),>>是追加(接着写)。

4.5 核心技能:管道(|)—— 把命令串起来

管道是 Linux 最强大的特性之一。
它的作用:把左边命令的输出,直接传给右边命令当输入

符号是|(在键盘上,一般在回车键上方,Shift + 反斜杠)。

4.5.1 场景:文件太多,只看我想要的部分

# 不加管道:列出 /etc 下所有文件(太多,刷屏) ls -la /etc # 加管道:只显示包含 "net" 的行(用 grep 过滤) ls -la /etc | grep net

grep是搜索工具,后面专门讲。这里先感受"筛选"的效果。

4.5.2 场景:想看进程,但只想找某个程序

ps aux | grep sleep

从所有进程里,只显示包含 "sleep" 的那几行。

4.5.3 场景:数一数有多少个文件

ls -la | wc -l

wc -l是统计行数。这会数出当前目录有多少个文件。

4.5.4 场景:一页一页地看长内容

cat /etc/services | less

空格翻页,按q退出。如果不加| less,内容会直接刷屏。

4.6 核心技能:搜索文件内容(grep)

grep是 Linux 的Ctrl+F(查找功能)。

4.6.1 在文件中搜索

grep "root" /etc/passwd

在用户密码文件里,找包含 "root" 的行。

4.6.2 常用参数

grep -i "ROOT" /etc/passwd # -i 忽略大小写 grep -v "root" /etc/passwd # -v 反向查找(显示不包含 root 的行) grep -r "error" /var/log/ # -r 递归搜索整个文件夹

最常用组合命令 | grep 关键词—— 从命令输出里快速查找。

4.7 综合实战:装一个网页服务器并测试

我们装个最简单的 Web 服务器nginx,感受下"装软件 + 配置 + 启动"的完整流程。

# 1. 更新软件列表 apt update # 2. 安装 nginx apt install nginx -y # 3. 启动 nginx service nginx start # 4. 测试是否启动成功(curl 是命令行浏览器) apt install curl -y curl localhost

如果看到一大段 HTML 代码(包含 "Welcome to nginx"),说明服务器跑起来了!

5. 用管道看日志

cat /var/log/nginx/access.log | grep "200"

查看访问日志里,哪些请求返回了成功状态码(200)。

4.8 本章核心命令速查表

命令含义举例
apt update刷新软件列表apt update
apt install 软件安装软件apt install nginx -y
apt remove 软件卸载软件apt remove sl -y
命令 > 文件输出覆盖写入文件echo "hi" > a.txt
命令 >> 文件输出追加到文件末尾echo "hi" >> a.txt
命令1 | 命令2把命令1输出传给命令2ls | grep ".txt"
grep 关键词 文件在文件中搜索grep "root" /etc/passwd
wc -l统计行数ls | wc -l

本章总结口诀

**apt 是管家,装软件全靠它,
update 刷新,install 拿下,

覆盖写入,>> 追加话,
管道 | 是桥梁,命令连成串,
grep 找内容,快速不眼花。**

当前进度检查(做完这几步就算小成)

  • 会用apt装软件(sl小火车跑起来)
  • 会区分>>>的用法
  • 会用|组合命令(比如ps aux | grep
  • 会用grep搜索文件内容
  • 装过nginx并访问过

第五章(完结篇):容器管理实战 —— 从"临时体验"到"永久服务"

5.1 回顾:我们之前的方式有什么问题?

之前我们都是用这条命令启动:

docker run -it ubuntu:22.04 bash

问题

  • 一旦输入exit,容器就停止了
  • 在里面安装的软件(nginx、nano 等)全没了(除非你 commit)。
  • 关掉终端窗口,容器也停了。

这一章解决:让 Linux 像真实服务器一样,在后台 24 小时运行,重启电脑后还能继续用。

5.2 核心概念:容器生命周期

状态含义类比
运行中 (Running)系统在后台跑着电脑开机状态
已停止 (Exited)系统关机了电脑关机了
已删除 (Removed)系统彻底没了电脑被砸烂了

查看所有容器(含已停止的)

docker ps -a

不加-a只能看到运行中的。

5.3 让容器在后台运行(detach 模式)

5.3.1 后台启动一个 Linux 系统

docker run -d --name myserver ubuntu:22.04 sleep infinity

命令拆解

  • -d:后台运行(detach),不占用你的终端
  • sleep infinity:让系统一直"睡觉",永远不退出(相当于保持开机)

5.3.2 进入一个已在后台运行的容器

docker exec -it myserver bash

docker exec= 进入正在运行的容器,不会导致容器停止
进去后随便玩,输入exit退出,容器继续在后台运行

实操验证

# 1. 后台启动 docker run -d --name myserver ubuntu:22.04 sleep infinity # 2. 查看运行状态(状态是 Up) docker ps # 3. 进入容器 docker exec -it myserver bash # 4. 在里面装个软件(比如装 nano) apt update apt install nano -y # 5. 输入 exit 退出 # 6. 再次进入,你会发现 nano 还在 docker exec -it myserver bash nano test.txt # 能打开,说明装好的软件保存了!

核心区别docker run -it进去退出就停;docker exec进去退出不停

5.4 核心操作:启停和删除容器

操作命令说明
启动已停止的容器docker start myserver相当于按开机键
停止运行中的容器docker stop myserver相当于长按关机键(优雅关机)
强制停止docker kill myserver相当于拔电源(粗暴)
删除容器docker rm myserver彻底销毁(慎用
删除所有停止的容器docker container prune一键清理垃圾

实操练习

# 1. 停止 myserver docker stop myserver # 2. 查看状态(Exited) docker ps -a | grep myserver # 3. 重新启动 docker start myserver # 4. 再次进入验证 docker exec -it myserver bash ps aux # 看到进程还在,说明 OK exit

5.5 终极技能:保存你的成果为镜像(commit)

你已经装了 nginx、nano、htop 等一堆软件,想把整个系统打包带走

docker commit myserver myubuntu:v1

myubuntu:v1是你给新镜像起的名字(v1 是版本号)。

验证新镜像

docker images | grep myubuntu

用它启动新容器(带所有已装软件):

docker run -it myubuntu:v1 bash # 进入后,输入 nginx、nano、htop,全都在!

意义:以后不管在哪个电脑上,只要docker pull你这个镜像,就能一秒还原整个环境。

5.6 终极实战:跑一个真正的 Web 服务(端口映射)

让外面的浏览器能访问到容器里的 nginx。

5.6.1 启动带端口映射的容器

docker run -d --name web -p 8080:80 myubuntu:v1

参数解析

  • -p 8080:80= 把容器的80端口(nginx默认)映射到电脑的8080端口
  • 意思:访问电脑的 8080 端口,就相当于访问容器的 80 端口

5.6.2 进入容器启动 nginx

docker exec -it web bash service nginx start exit

5.6.3 打开浏览器测试

  • 在地址栏输入:http://localhost:8080
  • 如果看到 "Welcome to nginx",大成功!

如果看不到:可能 nginx 没装。执行docker exec -it web bash进去,apt install nginx -y装好再启动。

5.7 数据持久化:容器删了数据还在(数据卷)

问题:容器一旦rm删除,里面所有文件(数据库、日志)全没了。
解决:用数据卷(Volume)把容器的文件夹挂载到电脑本地。

5.7.1 创建带数据卷的容器

docker run -d --name storage -v /root/data:/app/data ubuntu:22.04 sleep infinity
  • -v 电脑路径:容器路径= 把电脑的/root/data文件夹映射到容器的/app/data
  • 两边实时同步,容器删了,电脑上的文件还在。

5.7.2 验证同步

# 1. 在电脑(宿主机)上创建文件 echo "hello from host" > /root/data/host.txt # 2. 进入容器查看 docker exec -it storage bash cat /app/data/host.txt # 能看到! echo "hello from container" > /app/data/container.txt exit # 3. 在电脑上查看 cat /root/data/container.txt # 也能看到!

Windows 用户注意:路径要用C:/Users/你的用户名/data这种格式,不能用/root

5.8 全流程终极实战:搭建一个永久在线的 Web 服务

目标:一个自带 nginx、保存数据、重启电脑也能自动恢复的 Web 服务器。

# ========== 第一步:构建镜像(一次性) ========== # 1. 启动临时容器 docker run -it --name builder ubuntu:22.04 bash # 2. 在容器内安装 nginx apt update apt install nginx -y # 3. 写个自定义首页(证明这是你的) echo "<h1>我的第一个 Docker Linux 服务器!</h1>" > /var/www/html/index.html # 4. 退出(容器自动停止) exit # 5. 保存为镜像 docker commit builder myweb:v1 # 6. 删掉临时容器(已经不需要了) docker rm builder # ========== 第二步:启动永久服务 ========== # 7. 后台运行,映射端口,挂载日志目录(方便查看) docker run -d --name webserver -p 8888:80 -v /root/web_logs:/var/log/nginx myweb:v1 sleep infinity # 8. 进入容器启动 nginx docker exec -it webserver bash service nginx start exit # 9. 浏览器访问:http://localhost:8888 # 应该看到你的自定义首页! # ========== 第三步:验证持久化 ========== # 10. 重启容器(模拟电脑重启) docker restart webserver # 11. 进入重新启动 nginx(需要重新执行启动命令) docker exec -it webserver bash service nginx start exit # 12. 浏览器刷新,内容还在!

5.9 容器管理速查表(收官)

需求命令
后台运行容器docker run -d --name 名字 镜像 sleep infinity
进入运行中的容器docker exec -it 名字 bash
查看运行中的容器docker ps
查看所有容器docker ps -a
启动已停止的容器docker start 名字
停止容器docker stop 名字
删除容器docker rm 名字
保存容器为镜像docker commit 名字 新镜像名:v1
端口映射-p 电脑端口:容器端口
数据挂载-v 电脑路径:容器路径

全教程总结(五章核心口诀)

第一章pull拉镜像,run进系统,exit退出,commit保存。
第二章pwdlscd走,mkdirtouch建,cpmvrm删。
第三章chmod改权限,nano写文件,ps看进程,kill斩乱麻。
第四章apt装软件,>>>写文件,|串命令,grep搜关键。
第五章-d后台跑,exec进去玩,端口-p映射,数据-v挂载,commit打包带回家。