ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

SerenityOS grep 使用教程:从第一行命令到递归搜全盘

SerenityOS grep 使用教程:从第一行命令到递归搜全盘 SerenityOS grep 使用教程从第一行命令到递归搜全盘【免费下载链接】serenityThe Serenity Operating System 项目地址: https://gitcode.com/GitHub_Trending/se/serenity在 SerenityOS 的终端里想从几千行文本里揪出某一行不必手动翻文件grep 就是干这件事的它按你给的模式逐行筛选文本。本教程带你从一条最简单的命令写到递归搜索整个目录顺带把容易踩的边界行为和退出码讲透看完就能直接写出可进脚本的命令。一分钟认识 grepgrep 的活儿一句话就能说清逐行读入内容每行拿去和模式比对把命中的行打印出来。模式通常是第一个不带短横线的参数后面跟要扫描的文件。一个文件都不给时它就从标准输入里读管道送进来的东西比如cat notes.txt | grep TODO和grep TODO notes.txt效果相同。语法层面这些正则表达式基础最值得先记模式默认是 POSIX 基础正则BRE加-E切换到扩展语法ERE、?、|这类符号才能直接用加-F则把模式当纯字符串特殊符号全部按字面意思理解。常用选项随时可查这张表选项一句话说明-i匹配时不分大小写-n输出前面带上行号-v改输出不匹配的行-c只打印命中行数-r递归进入子目录扫描-q什么都不打印退出码说话-e Pattern指定模式可重复出现-f File从文件读模式一行一个-a/-I二进制文件当文本处理 / 直接跳过 三步上手第 1 步给个词加个文件马上能用grep Serenity README.md它会逐行扫 README.md把含 Serenity 的行原样打印一行都没匹配就什么都不输出。这是最原始的形态。第 2 步加上 -i 和 -n知道在哪grep -in serenity README.md-i让匹配忽略大小写SERENITY 与 Serenity 都会命中-n给输出左侧加行号方便回头定位。第 3 步打一个最实用的组合拳grep -rnI debug src/递归扫 src/ 全目录、带行号、顺手跳过二进制文件。日常大部分搜索都是在这一条的基础上微调。 高频场景速查多个关键词多模式或build 日志里想同时捞 error 和 warning 两种行不用跑两遍grep -e error -e warning build.log多个模式之间是或的关系一行只要命中任意一个就打印。模式清单很长时可以写进文件再用-f按行读入每行算一个独立模式。挑不含的行用 -vgrep -v TODO main.cpp-v把选择反转输出的是不包含 TODO 的行剔除注释和噪音、快速留下真内容时很顺手。只数行数不输出内容用 -cgrep -c error app.log只给出命中的行数搜多个文件时每个文件一行文件名:数量谁在刷屏一眼可见。递归搜索整个目录用 -rgrep -rnI debug /usr/src-r会逐层走进所有子目录没指定路径时从当前目录起步配上-I跳过二进制扫全盘也不会被提示刷屏。只做有/无判断用 -qgrep -q password /etc/config.ini echo found-q下没有任何输出剩下的全靠退出码0 命中、1 未命中、2 出错。后面只在找到了时才执行可直接当脚本里的分支条件。⚠️ 这些边界行为别踩坑几个容易想当然的地方写脚本前值得过一遍-f 模式文件中间的空行是合法模式空模式会命中每一行相当于没做筛选只有文件末尾那次读到空才被当作结束、忽略掉。正则括号不匹配会直接报错像[0-9这种模式会打印regex parse error并以退出码 2 结束不会悄悄跳过。-q 连错误一起静默安静模式下文件打不开这类错误同样不打印。以上行为都能在源码 Userland/Utilities/grep.cpp 里核对到。二进制文件有三种处理方式默认 binary 模式命中时只打印一行binary file xxx matches随后立刻停止读这个文件-a把整文件当文本、照打命中行-I则整份文件不参与匹配。判据是行内容里含不含 NUL 字节。管道里颜色和超链接会自动关默认auto只在输出到交互式终端TTY就是你眼前这个键盘屏幕时开高亮一旦走管道或重定向颜色与超链接终端里让文件路径可点击、由 OSC 8 转义实现都自动关闭避免往脚本里混进控制字符。非要彩色就加--color always。 彩蛋rgrep / egrep / fgrep在 SerenityOS 里这三个并不是独立程序而是同一个 grep 的三个入口名实现启动时看一眼自己被叫成什么就自动换一套行为系统也在 /bin 里备好了对应的符号链接叫rgrep 模式 路径→ 等价grep -r叫egrep 模式 文件→ 等价grep -E叫fgrep a.b 文件→ 等价grep -F那个点就只是个点高频用法能省下敲长选项的功夫不用背一堆开关。延伸阅读pgrep 与 grep 分工很明确grep 在文件内容里找文本pgrep 按进程名找正在运行的程序。选项权威全集可查系统手册 Base/usr/share/man/man1/grep.md第一次写 manpage 的话照 Documentation/WritingManPages.md 定义的结构来即可。到这里SerenityOS grep 的退出码约定、模式语法、二进制策略已经够用进脚本了。下一步打开终端在真实目录上把第 3 步那条递归命令跑一遍再顺手用-q给自己写一句存在性检查。【免费下载链接】serenityThe Serenity Operating System 项目地址: https://gitcode.com/GitHub_Trending/se/serenity创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表