NO.12 · Linux 与工具
Linux、Shell 与正则表达式:文本处理三件套
Linux(Ubuntu)系统管理、Shell 脚本编程与正则表达式语法笔记,涵盖文件权限、进程管理、crontab、条件循环、awk 文本处理与正则元字符速查。
嵌入式开发离不开 Linux。这份笔记整理三块内容:Linux(Ubuntu)系统管理基础、Shell 脚本编程、正则表达式语法,合起来就是日常开发中最常用的”文本处理三件套”。
学习路线
1 | Linux 基础 |
内容概览
Linux(Ubuntu)系统管理
- 环境搭建:VMware + Ubuntu + Xshell 远程登录,理解 Linux 目录层级结构;
- 系统管理:
systemctl管理服务与开机自启、防火墙、APT 软件包管理器; - 基本命令:
pwd、ls、cd、mkdir、cp、rm、mv,输出重定向>、>>与管道|; - 编辑器与用户:VI/VIM 三种模式,
adduser、passwd、sudo等用户管理命令; - 权限与搜索:
chmod、chown、chgrp管理权限,find搜索,grep过滤; - 磁盘、进程与定时任务:
df、du、ps、kill、top、netstat、crontab。
Shell 脚本编程
- 脚本格式与解释器声明,编写第一个
helloworld.sh; - 特殊变量:
$n(位置参数)、$#(参数个数)、$*/$@(所有参数)、$?(退出状态); - 条件表达式判断字符串、整数和文件状态,
if/case分支,for/while循环; basename、dirname等系统函数,自定义 Shell 函数;cut提取字段,awk完成字段处理、过滤和格式化输出。
正则表达式语法
| 类别 | 语法 | 说明 |
|---|---|---|
| 边界 | ^、$、\b、\B |
行首、行尾与单词边界 |
| 量词 | .、*、+、?、{n,m} |
重复次数控制 |
| 分组 | (pattern)、(?:pattern) |
捕获与非捕获分组 |
| 选择 | `x | y` |
| 字符集 | [xyz]、[^xyz]、[a-z] |
字符集、排除集与范围 |
| 字符类 | \d、\s、\w |
数字、空白、单词字符 |
| 断言 | (?=pattern)、(?!pattern) |
正向 / 负向先行断言 |
| 引用 | \num |
反向引用,匹配重复内容 |
不同工具对正则的支持范围不同,实际使用时应以目标工具的语法实现为准。
常用命令速查
| 类别 | 命令 | 主要用途 |
|---|---|---|
| 目录 | ls、cd、mkdir |
查看、切换和创建目录 |
| 查看 | cat、less、tail |
查看文件内容 |
| 文本 | grep、cut、awk |
搜索、截取和处理文本 |
| 权限 | chmod、chown、chgrp |
修改权限、所有者和用户组 |
| 进程 | ps、top、kill |
查看和管理进程 |
| 压缩 | gzip、tar |
压缩、解压和归档 |
| 服务 | systemctl |
管理系统服务 |
| 定时 | crontab |
配置周期性任务 |
安全注意事项
rm、权限修改和防火墙配置可能影响系统,执行前应确认目标;- 涉及
sudo、系统服务和用户管理的操作,建议先在虚拟机中验证; - 修改权限时遵循最小权限原则,避免无必要地使用
777; - 编写定时任务时确认脚本路径、环境变量、日志路径和执行用户。
学习建议
- 先完成 Linux 文件、目录、权限和进程管理,再学习 Shell 自动化;
- 每学习一个命令,都记录输入、输出、退出状态和常用参数;
- 使用小规模测试文件验证
grep、cut、awk和正则表达式; - 将多个命令通过管道、重定向和 Shell 函数组合成可复用脚本。