【跟我学Linux】第八天:2 个 “效率神器”+2 个 “偷懒技巧”

一、文本批量处理:用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 auxls -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 列是 “进程名”(比如bashsshd);
  • 结果:只显示内存占用超过 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  

测试:关掉终端重开,输llcdl,能生效就成功了!

今日必练实操清单(5 分钟就能完成)

  1. sedlong_text.txt里的 “系统” 换成 “操作系统”,预览后再修改原文件。
  2. ps aux | awk '{print $1, $3, $11}',看看能得到 “用户名 + CPU 占用 + 进程名”。
  3. ~/linux_study永久加入PATH,确保file_check.sh能直接运行。
  4. 设置别名alias dfh='df -h',输dfh查看磁盘空间(比敲df -h快)。

今日总结(3 句话记住核心)

  1. sed 's/旧/新/g' 文件名:批量替换文本(先预览,再加-i改原文件)。
  2. 命令 | awk '{print $列号}':按列提取信息(处理表格、日志超方便)。
  3. 环境变量PATH:把常用目录加进去,脚本直接输名就能跑;别名alias:长命令变短,少敲键盘少出错。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值