Linux小白修炼日记 Day 04:路径、目录与文本编辑,运维每天都要用的基本功
- 一、为什么必须学这一课?
- 1.1 先建立当天工作目录
- 1.2 今天的操作习惯(背下来)
- 二、工作目录、家目录与路径
- 2.1 当前工作目录
- 2.2 家目录
- 2.3 绝对路径 vs 相对路径(重点)
- 2.4 路径中的特殊符号
- 2.5 使用 ls 查看目录
- 2.6 使用 mkdir 创建目录
- 2.7 使用 touch 创建空文件
- 三、Linux 目录体系与若依目录规划
- 3.1 从根目录观察
- 3.2 为若依规划目录
- 四、文件内容查看:不同场景用不同工具
- 4.1 cat:查看短文件
- 4.2 less:分页阅读
- 4.3 head / tail:查看首尾
- 4.4 tail -f:动态观察新增内容(运维必会)
- 五、Vim 与安全修改配置
- 5.1 三种核心模式
- 5.2 用真实命令输出练习 Vim(安全做法)
- 5.3 创建并保存若依配置样例
- 5.4 完成一次安全修改(完整流程)
- 5.5 使用 vimtutor 巩固(课后作业)
- 六、路径排障与课堂收尾
- 6.1 相对路径故障复现
- 6.3 最后检查(只检查,不再改动)
- 6.4 今天应该会做什么(验收)
- 6.5 清理与保留
- 七、课后拓展(选做)
- 7.1 使用 `{}` 批量生成名称
- 7.2 Vim 的临时设置与永久设置
- 八、写在最后
大家好,我是正在转行运维的小白。今天是我更新 Linux 学习日记的第四天。
前三天搞懂了安装、登录和命令执行模型。但真到了操作文件的时候,我发现自己连“我在哪、这个路径指向谁”都说不清楚。
今天这一课把路径、目录体系、文件查看、Vim 编辑、备份比较验证全部串起来。最大的收获不是记住了几个命令,而是建立了一套定位 → 查看 → 备份 → 编辑 → 比较 → 验证的工作习惯。以后改任何配置都不会慌。
一、为什么必须学这一课?
后面部署若依、Nginx、MySQL、Docker、K8s 时,操作形式一直在变,但下面这些问题每天都会遇到:
- 当前位于哪个目录?
- 命令里的路径最终指向哪个文件?
- 配置、程序、日志、数据应该放在哪里?
- 文件很长时怎么快速查看?
- 修改配置后,怎么证明只改了计划中的内容?
- 改错了怎么根据备份恢复?
路径判断错,命令本身完全正确,也可能读错文件或改错配置。今天的主线不是记目录名,而是建立工作习惯。
1.1 先建立当天工作目录
whoamihostnamemkdir-p~/cc-vm/day04cd~/cc-vm/day04pwd1.2 今天的操作习惯(背下来)
1. 定位:主机、用户、当前目录和完整目标路径 2. 查看:原文件内容和关键位置 3. 备份:修改前保存可识别的副本 4. 编辑:只修改计划中的内容 5. 比较:用 diff 确认实际变化 6. 验证:检查内容、语法或程序实际行为今天只用
cc-vm(10.0.0.10/24),不需要启用其他节点。
二、工作目录、家目录与路径
2.1 当前工作目录
pwd是Print Working Directory的缩写,显示当前工作目录。
Shell 解析相对路径时,从当前工作目录开始计算。所以排查路径问题的第一条命令通常是pwd。
⚠️ 当前工作目录属于进程运行环境。不同终端里的两个 Bash 可以在不同目录,不要根据另一个窗口的状态推断当前窗口。
2.2 家目录
每个用户都有自己的家目录:
| 用户 | 家目录 |
|---|---|
| 普通用户 cc | /home/cc |
| 普通用户 jinghui | /home/jinghui |
| root | /root |
cd和cd ~都回当前用户家目录。符号~由 Shell 展开,不是文件系统里真实存在的目录名。
练一组:
pwdcd/etcpwdcd~/cc-vm/day04pwdcdpwdcd~pwd2.3 绝对路径 vs 相对路径(重点)
先用地铁路线理解:起点为什么重要?
地铁里的“所在站”相当于当前工作目录,沿途站点相当于路径里的目录层级。目标没变,变的是从哪里开始描述路线。
读一条路径,固定问三个问题:
1. 从哪里出发:以 / 开头就从根目录;否则从 pwd 出发 2. 经过哪些目录:从左到右逐段读 3. 最后到达什么对象:最后一段通常是要访问的文件或目录| 类型 | 判断方法 | 示例 | 特点 |
|---|---|---|---|
| 绝对路径 | 从/开始 | /etc/hosts | 不依赖当前目录,含义稳定 |
| 相对路径 | 不以/开头 | ./hosts | 从当前工作目录计算 |
真实案例:目标都是/etc/ssh/sshd_config.d,但两人位置不同。
# 终端 A:cc从 / 出发cd/pwdls-ldetc/ssh/sshd_config.d# 终端 B:景会从 /etc 出发cd/etcpwdls-ldssh/sshd_config.d# 两边都用绝对路径,写法一样ls-ld/etc/ssh/sshd_config.d结论:相对路径随 pwd 改变,绝对路径不依赖当前位置。
💡 脚本、变更记录和生产操作更适合写完整路径;交互练习可以在确认
pwd后用相对路径。
2.4 路径中的特殊符号
| 写法 | 含义 | 示例 |
|---|---|---|
. | 当前目录 | ./config |
.. | 上级目录 | ../logs |
~ | 当前用户家目录 | ~/magedu |
- | 上一次所在目录(仅 cd 用) | cd - |
练一组:
pwd cd .. pwd cd ./day04 pwd cd /etc cd - pwd习惯:每次按 Enter 前,先根据当前 pwd 预测下一次会到哪里,再用新的 pwd 验证。
2.5 使用 ls 查看目录
先掌握四个常用组合:
| 选项 | 作用 |
|---|---|
-l | 长格式显示 |
-a | 显示隐藏文件 |
-h | 与 -l 配合,易读单位 |
-d | 查看目录本身,不展开内容 |
lsls-lls-lals-lh/var/logls-ld/var/log⚠️名称以点开头的文件默认不显示。ls -a可查看。隐藏 ≠ 加密或禁止访问,Bash、Git、SSH 和很多工具都把用户级配置保存在家目录的隐藏文件里。
ls~ls-a~ls-l~/.bashrc ~/.profile2.6 使用 mkdir 创建目录
mkdir -p可以补齐不存在的父目录,也可以在目录已存在时保持成功。
mkdir reports mkdir -p reports/2026/09 ls -ld reports reports/2026 reports/2026/092.7 使用 touch 创建空文件
touch app.log ls -l app.log⚠️文件不存在时touch 会创建一个 0 字节空文件;文件已存在时不会清空内容,只更新时间戳。所以 touch 前仍要确认路径。
三、Linux 目录体系与若依目录规划
Linux 从根目录/组织所有文件。目录名表达职责,今天先认识常用的,磁盘与挂载关系留到存储课程。
3.1 从根目录观察
cd/pwdlsls-ld/etc /var /usr /opt /home /tmp /proc| 目录 | 主要职责 | 后续典型对象 |
|---|---|---|
/etc | 系统和服务配置 | SSH、Nginx、systemd 配置 |
/var | 经常变化的数据 | 日志、缓存、队列 |
/usr | 发行版管理的程序和库 | /usr/bin、/usr/lib |
/opt | 额外部署的应用 | 若依应用目录 |
/home | 普通用户家目录 | 实验文件、用户配置 |
/tmp | 临时文件 | 可能被定期清理 |
/proc | 内核和进程运行视图 | CPU、内存、进程参数 |
现代 Linux 中
/bin、/sbin、/lib可能指向/usr下的对应目录,链接原理安排在 Day 05。
3.2 为若依规划目录
正式环境可以把额外应用放在/opt/ruoyi。今天先在用户家目录建一套职责相同的实验结构:
mkdir -p ~/cc-vm/ruoyi/config mkdir -p ~/cc-vm/ruoyi/logs mkdir -p ~/cc-vm/ruoyi/data mkdir -p ~/cc-vm/ruoyi/backup ls -ld ~/cc-vm/ruoyi ls -l ~/cc-vm/ruoyii五个目录分别保存:程序、配置、日志、数据、备份。后续发布与排障继续沿用这套结构。
四、文件内容查看:不同场景用不同工具
关键认知:读 20 行配置文件和观察不断增长的日志,不应该用同一种方式。
4.1 cat:查看短文件
cat/etc/hostnamecat/etc/os-releasecat-n/etc/hostscat会连续输出全部内容,适合较短文件。大文件一次铺满终端不利于定位。
4.2 less:分页阅读
less/etc/servicesless主要用于阅读,不会因为浏览文件而保存修改。查看长配置和日志时比cat更容易保留上下文。
less 里的按键:
| 按键 | 作用 |
|---|---|
Space | 向下翻一页 |
b | 向上翻一页 |
g | 跳到文件开头 |
G | 跳到文件结尾 |
/keyword | 向下搜索 |
n | 下一个匹配 |
N | 上一个匹配 |
q | 退出 |
4.3 head / tail:查看首尾
head/etc/passwdhead-n5/etc/passwdtail/etc/passwdtail-n20/var/log/dpkg.log默认 10 行,用-n指定行数。
4.4 tail -f:动态观察新增内容(运维必会)
tail -f ~/cc-vm/day04/app.logg再开一个终端模拟日志写入:
echo "request completed" >> ~/cc-vm/day04/app.logg回到第一个终端观察新增行,按Ctrl + C停止。
⚠️
Ctrl + C只结束当前tail -f,不会删除日志文件,也不会停止写日志的应用。
后面部署若依、Nginx、MySQL 时,会用同样方式观察实时日志。
五、Vim 与安全修改配置
为什么现在学 Vim?后面切换到 Ubuntu Server 后没有图形编辑器。Nginx、MySQL、systemd 和若依都要改文本配置。
5.1 三种核心模式
| 模式 | 主要工作 | 进入方式 |
|---|---|---|
| 命令模式(Normal) | 移动、删除、复制、粘贴、撤销 | 打开文件默认,或按Esc |
| 插入模式(Insert) | 输入和修改文本 | 命令模式按i |
| 末行模式(Command-line) | 保存、退出、设置 | 命令模式按: |
忘记当前模式时,先按
Esc回到命令模式。
5.2 用真实命令输出练习 Vim(安全做法)
ls -la > /tmp/file.txt cat /tmp/file.txt vim /tmp/file.txt⚠️
>会把左侧命令输出写入右侧文件,如果目标文件已存在,原内容会被覆盖。这里只用来准备练习文件。
Vim 常用按键:
| 操作 | 按键 |
|---|---|
| 左、下、上、右移动 | h、j、k、l |
| 文件开头、结尾 | gg、G |
| 搜索;上一个、下一个匹配 | /keyword;N、n |
| 替换当前行第一个匹配 | :s/旧内容/新内容/ |
| 替换全文所有匹配 | :%s/旧内容/新内容/g |
| 替换全文并逐项确认 | :%s/旧内容/新内容/gc |
| 删除字符、删除行 | x、dd |
| 复制行、粘贴 | yy、p |
| 撤销 | u |
在/tmp/file.txt中依次练习:
- 用
gg和G在开头、结尾间移动 - 输入
/app.log搜索,按n下一个、N上一个
3.输入:%s/cc/cc-vm/gc``,逐项确认(y替换、n跳过、q` 结束) - 按
u撤销替换,恢复原内容 - 用
yy复制当前行,p粘贴 - 用
dd删除一行,u撤销 :q!放弃练习改动并退出
💡替换命令拆解:
%全文范围,g一行内全部匹配,c每次确认。
处理正式配置时优先用带c的写法,确认匹配范围后再决定是否全部替换。
5.3 创建并保存若依配置样例
pwd vim application.yml按i进入插入模式,写入:
server:port:8080spring:profiles:active:lab⚠️YAML 用空格表达层次,不能用 Tab 代替缩进。
写完按Esc返回命令模式,输入:wq保存退出。
Vim 保存退出相关:
| 操作 | 按键 |
|---|---|
| 保存 | :w |
| 退出 | :q |
| 保存并退出 | :wq |
| 放弃修改并退出 | :q! |
5.4 完成一次安全修改(完整流程)
① 修改前确认
whoami hostname pwd cat -n application.yml② 创建备份并修改
cpapplication.yml../backup/application.yml.bakls-lapplication.yml../backup/application.yml.bakvimapplication.yml把端口从8080改成8081,不要同时调整其他字段。
③ 比较并验证
diff-u../backup/application.yml.bak application.ymlecho$?cat-napplication.ymldiff -u中,-开头来自旧文件,+开头来自新文件- 返回 0 表示没有差异,返回 1 表示存在差异
- 本次应只看到端口从
8080变为8081
④ 使用备份恢复
cp../backup/application.yml.bak application.yml.restoreddiff-u../backup/application.yml.bak application.yml.restoredecho$?结果为 0 表示恢复副本与原备份一致。
真正上线后还要增加语法检查和程序运行验证。
5.5 使用 vimtutor 巩固(课后作业)
command-vvimtutor vimtutor课堂只完成与配置编辑直接相关的章节。宏、寄存器、多窗口和插件不属于今天的大纲。
六、路径排障与课堂收尾
6.1 相对路径故障复现
cat ./config/application.yml pwd ls -ld . ls -ld ./confils -l ~/cc-vm/ruoyi/config/application.ymlmcat ~/cc-vm/ruoyi/config/application.ymlml ```当前命令会从 `~/cc-vm` 查找 `config/application.yml`,而实际文件在 `~/cc-vm/ruoyi/config/application.yml`。`。 > ⚠️ **不要看到文件不存在就立刻创建同名文件。** 先确认当前目录和预期目标,避免在错误位置制造第二份配置。 ### 6.2 路径与文件类问题的四步法 ```text 现象 → 范围 → 证据 → 验证- 现象:原样记录命令、输出和退出状态
- 范围:判断是当前文件、当前目录、当前用户还是整台主机
- 证据:用
pwd、ls -ld、cat和完整路径确认对象 - 验证:修正一个条件后重新执行原命令,确认结果真正恢复
6.3 最后检查(只检查,不再改动)
pwd ls -ls -l ~/cc-vm/ruoyi/configig逐项确认:
app、config、logs、data、backup五个目录存在- 写出
application.yml与.bak备份的完整路径 - 确认当前端口为
8081 - 记下
diff -u的关键输出,确认只改了目标行 - 用完整路径重新查看配置并记录结果
6.4 今天应该会做什么(验收)
- 能解释当前工作目录和家目录的区别
- 能区分绝对路径和相对路径,并正确使用
.、..、~、cd - - 能说明
/etc、/var、/usr、/opt、/home、/tmp、/proc的基本职责 - 能用
pwd、cd、ls、mkdir、touch浏览目录并创建练习对象 - 能根据文件规模选择
cat、less、head或tail - 能独立完成 Vim 的编辑、保存、退出、搜索、替换、删除、复制、粘贴、撤销
- 能执行修改前备份、修改后 diff、结果验证
- 能用四步法定位一次相对路径故障
6.5 清理与保留
保留若依目录、配置文件、备份和实验日志。下一天继续在这套目录上学习文件管理、通配符、查找、链接和归档。
七、课后拓展(选做)
7.1 使用{}批量生成名称
Bash 会先展开花括号内容,再执行后面的命令。先用echo观察:
echo file{1..3}.txt echo {app,config,logs}第一条生成file1.txt、file2.txt、file3.txt;第二条生成app、config、logs。
⚠️花括号中逗号两边不要加空格。
确认展开结果后,再与mkdir、touch组合:
💡
{}是 Bash 的花括号展开功能,不是文件系统目录语法。
执行批量创建或批量修改前,先把操作部分替换为 echo 确认名称。
7.2 Vim 的临时设置与永久设置
临时设置(只对当前 Vim 会话生效):
:set nu :set cul :set cuc :set et :set ts=2 :set sw=2关闭某项布尔设置时,在名称前加no:
:set nonu :set nocul :set nocuc :set noet永久设置(写入~/.vimrc):
vim~/.vimrc写入以下内容并:wq保存:
set nu set cul set cuc set et set ts=2 set sw=2| 完整写法 | 简写 | 作用 |
|---|---|---|
set number | set nu | 显示行号 |
set cursorline | set cul | 突出显示光标所在行 |
set cursorcolumn | set cuc | 突出显示光标所在列 |
set expandtab | set et | 按 Tab 时使用空格缩进 |
set tabstop=2 | set ts=2 | Tab 显示为 2 字符宽 |
set shiftwidth=2 | set sw=2 | 自动缩进用 2 个空格 |
重新打开任意文件确认生效。
~/.vimrc只影响当前用户,不需要为了个人设置改系统级 Vim 配置。
八、写在最后
今天最大的三点收获:
- 路径问题的第一步永远是
pwd。相对路径从当前目录算起,绝对路径从/算起——看错起点,后面全错。 - 修改配置有一套固定流程:定位 → 查看 → 备份 → 编辑 → 比较 → 验证。这六步以后改 Nginx、MySQL、SSH、若依,全部通用。
- 不同文件用不同查看工具:短文件
cat、长文件less、首尾head/tail、动态日志tail -f。选错工具,效率直接掉一半。
明天继续在这套目录上学习文件管理、通配符、查找、链接和归档。
如果这篇对你有帮助,点个赞让我知道,我会每天更新。有问题评论区见,一起从小白变熟手。
本文为个人学习笔记,命令均在 Ubuntu 26.04.1 Desktop + VMware Workstation 25H2 环境实测。不同版本界面可能略有差异,按选项含义操作即可。