网站首页 > 技术教程 正文
说起Linux的管道命令,肯定Linuxer们会说,简单,不就|和><三个符号吗?
- 其中|表示将上一个命令的输出传递到下一个命令。
- >表示将命令结果输入到文件,<表示将文件内容提取作为命令的输入参数。
这时,一位隐于角落的老者喃喃道,不不,“你知道茴香豆的回字一共是有四种写法的”(鲁迅《孔乙己》,现在已经从中学教材中删除)。
Linux的文化就是将众多晦涩难懂的小工具组合起来,从而产生连原作者都无法想象的威力,而这些小工具往往2个字母,无数个命令参数,学习曲线颇为陡峭。而这组合的方式就是利用管道,所以在Linux的规范中,小工具们产生的格式一定是纯文本,这样后面的工具才能正确地解读。那管道的写法究竟几种方式,只是用|把命令们串起来就可以了吗?
我们使用find和grep两个命令做一个示范:
- find命令按照文件名称找出需要的文件。
- grep命令从文件内容中筛选出符合要求的部分。
第一式,使用find的exec参数。
find . -type f -name "cron*" -exec grep -l log {} \;
命令 | 解释 |
-type f | 只查找文件,不涉及文件夹 |
-name “cron*” | 查找以cron开头的文件 |
-exec | 运行后面的命令,最后以\;结束。 |
grep -l | 找到文件含有相关内容后,只列出文件。 |
log | 查找文件内容中是否含有“log”字样。 |
{} | 代表find出来的结果,可以理解为参数 |
exec很强大,有时可以解决你用其他方式时非常别扭的情况。
第二式,使用xargs大法,这个工具使用得非常多。
find . -type f -name "cron*" | xargs grep -l log
命令 | 解释 |
| xargs | 使用管道传给xargs命令,xargs命令负责将前面的结果转成后面紧接命令的最后一个参数。 |
xargs为什么以x开头呢,这个命令类似于excel的转置,将前面的列,变为后面的行。这样其实就是让后面的命令根据前面找的文件逐条执行。
这时,有小伙伴要问了,我有时参数并不在最后一个啊,如果在中间怎么办,放心,xargs有-I(大i)参数,可以让你生成带变量的命令:
find . -type f -name "cron*" | xargs -I % grep log % -li
声明%作为变量,代表前面命令的结果,然后在grep中使用%变量。
第三式,使用$()来优先求结果。
grep -l log $(find . -type f -name "cron*")
$()将优先计算,随后结果和grep共同构成最终的命令。但是要注意一个大坑,如果find找不出文件,grep命令将会无限执行,需要按ctrl+c结束。
好了,大概就讲这么多了,如果大家觉得还有更加奇妙的写法,欢迎在下方留言。
原创版权,如引用需要注明来源和链接。
- 上一篇: linux搜索命令
- 下一篇: Linux系统编程—有名管道
猜你喜欢
- 2025-05-28 通过代码执行或命令执行写Shell
- 2025-05-28 安卓系统再曝ROM级木马“万蓝” 360手机卫士首家查杀
- 2025-05-28 常用液压元件符号
- 2025-05-28 Linux 的这几种搜索方式,你都会了吗?
- 2025-05-28 R语言——带有误差线和显著性标记的柱状图如何做?
- 2025-05-28 管道图纸上常用符号知多少?管网图常用符号大全!值得收藏备用!
- 2025-05-28 收藏 | 记住这些符号,你也能看懂消防工程图!
- 2025-05-28 「干货」Linux 中的零拷贝技术你居然还不知道?
- 2025-05-28 IT运维与网络工程师必会的30个网络抓包/调试工具
- 2025-05-28 linux 系统中正则表达式的使用
你 发表评论:
欢迎- 最近发表
-
- Win11学院:如何在Windows 11上使用WSL安装Ubuntu
- linux移植(Linux移植freemodbus)
- 独家解读:Win10预览版9879为何无法识别硬盘
- 基于Linux系统的本地Yum源搭建与配置(ISO方式、RPM方式)
- Docker镜像瘦身(docker 减小镜像大小)
- 在linux上安装ollama(linux安装locale)
- 渗透测试系统Kali推出Docker镜像(kali linux渗透测试技术详解pdf)
- Linux环境中部署Harbor私有镜像仓库
- linux之间传文件命令之Rsync傻瓜式教程
- 解决ollama在linux中安装或升级时,通过国内镜像缩短安装时长
- 标签列表
-
- 下划线是什么 (87)
- 精美网站 (58)
- qq登录界面 (90)
- nginx 命令 (82)
- nginx .http (73)
- nginx lua (70)
- nginx 重定向 (68)
- Nginx超时 (65)
- nginx 监控 (57)
- odbc (59)
- rar密码破解工具 (62)
- annotation (71)
- 红黑树 (57)
- 智力题 (62)
- php空间申请 (61)
- 按键精灵 注册码 (69)
- 软件测试报告 (59)
- ntcreatefile (64)
- 闪动文字 (56)
- guid (66)
- abap (63)
- mpeg 2 (65)
- column (63)
- dreamweaver教程 (57)
- excel行列转换 (56)
本文暂时没有评论,来添加一个吧(●'◡'●)