linux 学习教程

📅 2026/7/30 23:02:15
linux 学习教程
第一章地基搭建 —— 用 Docker 秒装 Linux 系统1.1 为什么用 Docker 学 Linux传统方式装虚拟机如 VMware慢、占内存、容易卡。Docker 方式一条命令1 秒启动一个 Linux用完即删完全不伤电脑。核心思想把 Linux 当成一个“APP”来安装和卸载。1.1.1 第一步安装 Docker1.1.2 第二步拉取下载Linux 镜像镜像 系统的“安装包”。打开终端Windows 用 CMD 或 PowerShellMac/Linux 用自带终端输入docker pull ubuntu:22.041.1.3 第三步启动并进入 Linux 容器容器 正在运行的“系统实例”。输入以下命令即可一秒进入 Linux 内部docker run -it --name mylinux ubuntu:22.04 bash1.1.4终端前缀会变成类似root72a3f1d0e8b9:/##号代表你现在是超级管理员最高权限。/代表你现在在系统根目录。1.2在 Linux 命令行内输入以下三条命令感受1.2.1 我是谁whoami输出root1.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或按CtrlD重启容器重新连回刚才的系统docker start -ai mylinux1.4 极简实操安装一个软件在容器内输入更新软件列表apt update再输入安装一个文本编辑器apt install nano -y能跑通这两条说明你Linux 能联网、能装软件一切正常。1.5 本章结束前必须做的事退出与保存记住Docker 容器的特殊性 —— 一旦退出如果不保存里面的改动会丢失。正确退出的流程先输入exit退出容器回到 Windows 终端。输入以下命令把当前的系统状态保存为新镜像相当于给系统做快照docker commit mylinux ubuntu-mine:v1下次再用这个带软件的系统docker run -it ubuntu-mine:v1 bash本章总结背诵口诀拉取镜像用 pullrun -it 进系统exit 退出别慌张commit 保存才久长。第二章文件系统与基础操作 —— 学会在 Linux 里“走路”和“动手”2.1 Linux 的“地图” —— 树状目录结构Windows有 C盘、D盘。Linux只有一个根目录/所有东西都挂在这个根下面。你只需要记住3个最重要的文件夹其它的以后慢慢见目录通俗叫法里面装什么/根目录整棵树的树根所有文件的起点/home宿舍楼普通用户的“家目录”存放个人文件/etc办公室系统的配置文件都在这比如网络设置/tmp临时工位临时文件存放地重启后可能清空你现在的家在哪因为你是root管理员你的家在/root注意不是/home/root。2.2 核心命令一我在哪pwd和 看看有啥ls2.2.1 pwdPrint Working Directory作用显示你当前所在的路径。pwd输出示例/root你现在在管理员的家2.2.2 lsLiSt作用列出当前文件夹下所有的“文件”和“文件夹”。ls因为是刚装的纯净系统很可能什么都没显示空的。常用变体记住这一个就够了ls -la-l显示详细信息大小、权限、时间-a显示隐藏文件以.开头的文件口诀pwd看路牌ls看货架。2.3 核心命令二换房间cdcdChange 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 核心命令三创建文件夹mkdirmkdirMaKe DIRectory作用在当前位置创建新文件夹。2.4.1 创建单层文件夹mkdir mydata2.4.2 创建多层文件夹同时建父级和子级mkdir -p project/code/v1-p的意思是如果上级不存在就自动帮我建好。查看结果ls -la2.5 核心命令四创建文件touch和 查看文件cat2.5.1 创建空白文件touch hello.txt2.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 本章实操给自己建一个小仓库在你的家目录下完成以下操作回家cd ~建个项目文件夹mkdir myproject进入cd myproject建两个文件touch readme.txt和touch notes.txt写入内容echo 学习Linux第一天 readme.txt查看内容cat readme.txt把 notes 移动到上级mv notes.txt ..删掉空文件rm readme.txt别怕只是文本返回上级cd ..删除整个 myproject 文件夹rm -r myproject能完整走一遍说明你对文件操作已经入门了。本章核心命令速查表命令含义举例pwd显示当前路径pwdls -la列出所有文件含隐藏ls -lacd 路径切换目录cd /etcmkdir 文件夹创建文件夹mkdir datatouch 文件创建空文件touch a.txtcat 文件查看文件内容cat a.txtcp 源 目标复制cp a.txt b.txtmv 源 目标移动/重命名mv a.txt /tmp/rm 文件删除rm a.txtrm -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—— 最简单的方法用数字权限可以用数字表示超级好用权限数字r4w2x1把三个权限加起来rw- 420 6可读可写r-- 400 4只读rwx 421 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 -y3.5.2 用 nano 创建/编辑文件nano mynote.txt此时屏幕变成全白的编辑界面。nano 的常用操作就 4 个背下来操作快捷键说明保存Ctrl O然后按Enter确认文件名退出Ctrl X如果没保存会问你是否保存剪切整行Ctrl K删除当前光标所在行粘贴Ctrl U把剪切的内容贴回来实操写一个配置文件输入nano mynote.txt打字我的第一个nano文件按Ctrl O按Enter保存按Ctrl X退出用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 # CtrlO 保存CtrlX 退出 # 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.txtchmod 数字 文件修改权限chmod 700 test.txtnano 文件编辑文件nano a.txtps aux查看所有进程ps auxkill PID关闭进程kill 1234kill -9 PID强制关闭进程kill -9 1234本章总结口诀ls -l 看权限rwx 三字母记心间数字赋权 4-2-1nano 编辑两键走CtrlO 存CtrlX 退ps 查进程kill 杀权限管理保平安。第四章包管理与命令组合 —— 学会装APP和打组合拳4.1 什么是包管理用手机应用商店来理解场景手机Linux (Ubuntu)应用商店App Store / 应用宝APT(Advanced Package Tool)搜索应用搜微信apt search 软件名安装应用点安装apt install 软件名 -y卸载应用点卸载apt remove 软件名更新所有应用点全部更新apt upgrade核心APT 会自动处理依赖关系比如装游戏 A 必须装运行库 BAPT 会自动给你装上。4.2 核心命令APT 三板斧必须背熟在 Ubuntu 里apt就是你的软件管家。4.2.1 更新软件列表相当于刷新商店页面apt update每次装软件前先执行这一条确保知道最新版本。4.2.2 安装软件apt install 软件名 -y-y表示自动确认不加的话会问你是否安装需要输y4.2.3 卸载软件apt remove 软件名 -y4.3 实战装几个好玩的小工具4.3.1 装个小火车娱乐向apt install sl -y sl你会看到一辆小火车在屏幕上跑过。sl是ls的打错版作者专门做了个彩蛋。4.3.2 装个系统监控工具apt install htop -y htop按q退出。这比ps aux漂亮一万倍是服务器的任务管理器。4.3.3 装个下载工具apt install wget -ywget可以在命令行里下载文件后面会用。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 netgrep是搜索工具后面专门讲。这里先感受筛选的效果。4.5.2 场景想看进程但只想找某个程序ps aux | grep sleep从所有进程里只显示包含 sleep 的那几行。4.5.3 场景数一数有多少个文件ls -la | wc -lwc -l是统计行数。这会数出当前目录有多少个文件。4.5.4 场景一页一页地看长内容cat /etc/services | less按空格翻页按q退出。如果不加| less内容会直接刷屏。4.6 核心技能搜索文件内容grepgrep是 Linux 的CtrlF查找功能。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 updateapt install 软件安装软件apt install nginx -yapt remove 软件卸载软件apt remove sl -y命令 文件输出覆盖写入文件echo hi a.txt命令 文件输出追加到文件末尾echo hi a.txt命令1 | 命令2把命令1输出传给命令2ls | grep .txtgrep 关键词 文件在文件中搜索grep root /etc/passwdwc -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 bashdocker 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 exit5.5 终极技能保存你的成果为镜像commit你已经装了 nginx、nano、htop 等一堆软件想把整个系统打包带走docker commit myserver myubuntu:v1myubuntu: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 进入容器启动 nginxdocker exec -it web bash service nginx start exit5.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打包带回家。