一、文本批量处理:用sed
当 “自动改稿机器人”(1 小时)
生活场景:假设你写了 100 个文件,里面都把 “Linux” 写成了 “linxu”(手滑打错),手动改要改到天黑!sed
能一行命令改完所有文件,就像 “Word 的批量替换”,但更强大。
1. 先搞懂sed
的核心功能:“查找并替换”
命令格式(记这个就够了):
bash
sed 's/要替换的旧内容/替换后的新内容/g' 文件名
s
:表示 “替换”(substitute);g
:表示 “全局替换”(global),比如一行里有 3 个 “旧内容”,会全部换掉(不加g
只换第一个);- 文件名:你要处理的文件(比如
long_text.txt
)。
2. 实操 1:先预览替换效果(安全第一,别直接改文件!)
步骤 1:进入linux_study
目录(所有练习都在这里做,不乱):
bash
cd ~/linux_study
步骤 2:用之前的long_text.txt
做实验(如果没有,先创建一个,随便写几行带 “Linux” 的文字):
bash
# 如果没有long_text.txt,先创建并输入内容
echo "Linux是个好系统。我爱Linux!Linux真简单。" > long_text.txt
步骤 3:用sed
预览 “把‘Linux’换成‘Linux 操作系统’” 的效果:
bash
sed 's/Linux/Linux操作系统/g' long_text.txt
结果:终端会输出替换后的内容(原文件没被改,只是 “预览”):
plaintext
Linux操作系统是个好系统。我爱Linux操作系统!Linux操作系统真简单。
3. 实操 2:直接修改原文件(加-i
选项,谨慎使用!)
如果预览效果没问题,想真的改掉原文件,加个-i
(“in-place” 原地修改):
bash
sed -i 's/Linux/Linux操作系统/g' long_text.txt
验证:用cat
查看原文件,内容真的变了:
bash
cat long_text.txt # 会显示替换后的文字
4. 实操 3:批量修改多个文件(比如改所有.txt
文件)
场景:如果linux_study
目录下有 10 个.txt
文件,都要替换 “Linux” 为 “Linux 操作系统”:
bash
sed -i 's/Linux/Linux操作系统/g' *.txt # *.txt表示“所有以.txt结尾的文件”
- 瞬间完成!用
cat 任意一个.txt
检查,都会发现内容已改。
5. 救命技巧:删错了怎么办?(sed
的 “后悔药”)
如果手滑替换错了,别慌!如果是刚改的,且文件没关过终端,可以用ctrl+z
撤销(仅限部分情况);如果已经关了终端,提前备份文件才是王道 —— 修改前先复制一份:
bash
cp 要改的文件 备份文件名 # 比如:cp long_text.txt long_text_backup.txt
二、文本提取:用awk
当 “表格数据挖掘机”(1 小时)
生活场景:假设你用ps aux
查看进程,输出像 “乱码” 一样有十几列,你只想看 “哪个进程占了多少内存”——awk
能像 “Excel 筛选列” 一样,只提取你要的信息。
1. 先搞懂awk
的核心:“按列取数据”
Linux 里很多命令的输出是 “按空格 / 制表符分隔的列”(比如ps aux
、ls -l
),awk
能按 “列号” 提取内容:
$1
:第 1 列;$2
:第 2 列;$0
:整行内容(不用记,知道$+数字
代表列就行)。
2. 实操 1:从ps aux
里提取 “进程 ID + 内存占用”
步骤 1:先看ps aux
的原始输出(列太多,眼花缭乱):
bash
ps aux
步骤 2:用awk
只提取 “第 2 列(PID,进程 ID)” 和 “第 4 列(% MEM,内存占用率)”:
bash
ps aux | awk '{print $2, $4}' # 管道符|把ps的输出传给awk处理
结果:输出会简化成两列,清爽多了:
plaintext
1234 0.5 # 进程ID 1234,占用0.5%内存
5678 2.3 # 进程ID 5678,占用2.3%内存
3. 实操 2:按条件筛选(比如 “只看内存占用> 1% 的进程”)
命令:
bash
ps aux | awk '$4 > 1 {print $2, $11, $4}' # $4 > 1:第4列(%MEM)大于1
$11
:第 11 列是 “进程名”(比如bash
、sshd
);- 结果:只显示内存占用超过 1% 的进程,格式是 “PID 进程名 内存占比”。
4. 实操 3:处理自己的文件(比如从long_text.txt
里提取第 2 列)
步骤 1:先给long_text.txt
加几行 “带列的内容”(模拟表格数据):
bash
echo -e "序号 名称 分数\n1 Linux 90\n2 Shell 85" >> long_text.txt
(echo -e
能识别换行符\n
,让内容分 3 行)
步骤 2:用awk
提取第 2 列(“名称” 列):
bash
cat long_text.txt | awk '{print $2}'
结果:会输出第 2 列的内容:
plaintext
名称
Linux
Shell
三、环境变量:告诉系统 “我的程序藏在哪”(1 小时)
生活场景:你写了个脚本file_check.sh
,每次运行都要输全路径~/linux_study/file_check.sh
(太长了!)—— 设置环境变量后,直接输file_check.sh
就能运行,就像你把 “常用 APP” 放到手机桌面。
1. 什么是 “环境变量PATH
”?
PATH
是系统的 “程序通讯录”,系统会按PATH
里的路径顺序找你输入的命令(比如你输ls
,系统会在PATH
里的/bin
目录找到ls
程序并运行)。
查看自己的PATH
:
bash
echo $PATH # echo是“输出”,$PATH表示“取PATH变量的值”
输出类似(用冒号分隔的一堆路径):
plaintext
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
2. 实操 1:临时把linux_study
目录加入PATH
(当前终端有效)
步骤 1:命令(把你的linux_study
目录加到PATH
末尾):
bash
export PATH=$PATH:~/linux_study
$PATH
:表示 “原来的 PATH 内容”(别删,不然系统找不到默认命令了);:
:分隔符(把新路径加到后面);~/linux_study
:你存放脚本的目录(你的 “脚本仓库”)。
步骤 2:测试效果:直接输脚本名file_check.sh
,能运行就成功了!
3. 实操 2:永久生效(重启终端也能用,必学!)
临时设置的PATH
,关掉终端就没了。想永久生效,要改系统 “启动配置文件”:
步骤 1:打开配置文件(~/.bashrc
,每次启动终端都会自动读这个文件):
bash
nano ~/.bashrc # 用nano打开(简单)
步骤 2:在文件末尾加一行(复制粘贴,注意替换成你的目录):
bash
export PATH=$PATH:~/linux_study
步骤 3:保存并让配置生效:
- 按
Ctrl+O
→回车(保存);按Ctrl+X
(退出); - 输入
source ~/.bashrc
(让配置立即生效,不用重启终端)。
步骤 4:测试:关掉终端再重新打开,直接输file_check.sh
,能运行就 OK 了!
四、命令别名:给长命令起 “外号”(1 小时)
生活场景:你每天要敲ls -l ~/linux_study
(查看学习目录的详细内容),太麻烦!可以给它起个外号llstudy
,以后输llstudy
就等于输了长命令 —— 就像给 “英雄联盟” 起外号 “lol”。
1. 临时起别名(当前终端有效)
命令格式:
bash
alias 你的外号='原来的长命令'
实操 1:给ls -l
起外号ll
(很多系统默认有这个,试试你的有没有):
bash
alias ll='ls -l'
测试:输ll
,是不是和ls -l
效果一样?
实操 2:给 “进入linux_study
目录” 起外号cdl
:
bash
alias cdl='cd ~/linux_study'
测试:输cdl
,是不是直接跳进学习目录了?
2. 永久起别名(重启终端也能用)
和环境变量一样,改~/.bashrc
文件就能永久生效:
步骤 1:打开配置文件:
bash
nano ~/.bashrc
步骤 2:在末尾加 2 个别名(推荐这 2 个,超实用):
bash
alias ll='ls -l' # 详细列出文件
alias cdl='cd ~/linux_study' # 快速进入学习目录
步骤 3:保存退出,然后让配置生效:
bash
source ~/.bashrc
测试:关掉终端重开,输ll
和cdl
,能生效就成功了!
今日必练实操清单(5 分钟就能完成)
- 用
sed
把long_text.txt
里的 “系统” 换成 “操作系统”,预览后再修改原文件。 - 用
ps aux | awk '{print $1, $3, $11}'
,看看能得到 “用户名 + CPU 占用 + 进程名”。 - 把
~/linux_study
永久加入PATH
,确保file_check.sh
能直接运行。 - 设置别名
alias dfh='df -h'
,输dfh
查看磁盘空间(比敲df -h
快)。
今日总结(3 句话记住核心)
sed 's/旧/新/g' 文件名
:批量替换文本(先预览,再加-i
改原文件)。命令 | awk '{print $列号}'
:按列提取信息(处理表格、日志超方便)。- 环境变量
PATH
:把常用目录加进去,脚本直接输名就能跑;别名alias
:长命令变短,少敲键盘少出错。