设为首页收藏本站

LinuxTone | 运维专家网论坛 - 最棒的Linux运维与开源架构技术交流社区!

 找回密码
 注册

QQ登录

只需一步,快速开始

#公告#抱歉,网站将关闭,不再开放。由于PC时代已远逝 。在这个后移动互联网时代,我们继续携手前行,保持对技术的热情。共同构建linuxtone知识星球欢迎加入,一起讨论技术、招聘人才、分享资源。请新老linuxtone人 扫码移步到 知识星球:linuxtone

学习是一种信仰!分享是一种快乐!能力= 心态 * 沟通 * 知识 (你的每一天需要正能量!)

 网站的发展需要你贡献一份力量!希望你能每天坚持看贴1小时,并回答网友的问题!祝你在浏览论坛的过程中取得进步!谢谢!linuxtone加油!大家加油! 友情提示: 你今天学习了吗?你今天进步了吗?少一点抱怨!多一点进步!Life is short ! Why not linuxtone ?  

网站的发展、感谢每位坛友的努力!

查看: 5244|回复: 20

[shell] 最近被xargs的问题困扰.这是我老师给我解答的.大家看看   [复制链接]

Rank: 6Rank: 6

签到
120
注册时间
2011-5-8
最后登录
2014-8-15
在线时间
68 小时
阅读权限
70
积分
4627
帖子
86
主题
15
精华
0
UID
13539
发表于 2011-5-16 17:14:51 |显示全部楼层
本帖最后由 SharkShow 于 2011-5-16 17:17 编辑

碰到个好老师每次解答的非常详细.
还要谢谢源泉小哥的耐心解答.虽然他总说切勿客气。哈哈。
希望对大家有帮助。
帅老师:
我觉得你从这里下手理解会好点:
1、“|”管道符,cmd1 |cmd2
真正理解“|”的功能和使用范围,首先看一下管道符的作用:简单的说,管道符可以把标准输入流与标准输出流进行合并;或者把某个命令的标准输出流作为另外一个命令的标准输入流。
这里cmd1指令执行的结果作为标准输出流,通过“|”后将cmd1的标准输出流作为了cmd2的标准输入流,并让cmd2执行。
但是,并不是所有的指令都能直接识别标准输入流的,常见的直接识别标准输入流的指令比如:awk,grep,tee,less,more,cat等文件操作命令及所有的正则表达式指令,
但是还有很多指令并不直接识别标准输入流的,比如:ls 、which、ifconfig等,对这部分命令,我们就可以用
cmd1 | xargs cmd2的方式了
而xargs是专门构造参数列表的,比如,如果此时,cmd2不能识别cmd1通过“|”生成的标准输入流的时候,xargs就会将cmd1的标准输入流转换成参数,并用cmd2来执行这个参数就正常了。

帅老师  16:58:59

之所以能用到这个命令,关键是由于很多命令不支持|管道来传递参数,而日常工作中有有这个必要,所以就有了xargs命令,例如:

find /sbin -perm +700 |ls -l       这个命令是错误的

find /sbin -perm +700 |xargs ls -l   这样才是正确的

xargs 可以读入 stdin 的资料,并且以空白字元或断行字元作为分辨,将 stdin 的资料分隔成为 arguments 。

Rank: 2

注册时间
2010-8-2
最后登录
2011-8-9
在线时间
102 小时
阅读权限
20
积分
173
帖子
16
主题
1
精华
0
UID
9980
发表于 2011-5-16 18:13:09 |显示全部楼层
支持@!

使用道具 举报

Rank: 8Rank: 8

注册时间
2009-11-8
最后登录
2012-12-11
在线时间
304 小时
阅读权限
90
积分
11895
帖子
62
主题
2
精华
0
UID
6498
发表于 2011-5-16 18:49:35 |显示全部楼层
不错,学习了。

使用道具 举报

论坛元老

北京萍聚

Rank: 8Rank: 8

注册时间
2011-3-16
最后登录
2017-3-15
在线时间
1254 小时
阅读权限
90
积分
124098
帖子
1464
主题
79
精华
0
UID
12402
发表于 2011-5-16 19:53:45 |显示全部楼层
支持一个!非常不错!
吴光科,京峰教育创始人,京峰教育Linux Python高薪实战培训,博爱、感恩,帮助真正想改变的人!http://www.jfedu.net

使用道具 举报

Rank: 8Rank: 8

注册时间
2010-12-1
最后登录
2015-5-14
在线时间
911 小时
阅读权限
90
积分
45743
帖子
139
主题
7
精华
0
UID
11315
发表于 2011-5-16 22:09:43 |显示全部楼层
讲得太好了

使用道具 举报

Rank: 7Rank: 7Rank: 7

注册时间
2008-9-20
最后登录
2019-9-2
在线时间
489 小时
阅读权限
100
积分
38065
帖子
2202
主题
48
精华
0
UID
307

LT元老

发表于 2011-5-17 09:11:45 |显示全部楼层
^_^

不错的总结

使用道具 举报

论坛元老

~~IT公司打杂的&&LT社区划水的~~

Rank: 8Rank: 8

注册时间
2010-11-4
最后登录
2017-6-14
在线时间
594 小时
阅读权限
90
积分
41055
帖子
554
主题
7
精华
0
UID
10809
发表于 2011-5-17 09:26:23 |显示全部楼层
xargs传递参数的~~
~~开心快乐每一天~~

使用道具 举报

Rank: 8Rank: 8

注册时间
2010-12-28
最后登录
2015-2-6
在线时间
216 小时
阅读权限
90
积分
22788
帖子
177
主题
34
精华
0
UID
11616
发表于 2011-5-17 09:37:05 |显示全部楼层
被扫盲了~

使用道具 举报

Rank: 6Rank: 6

注册时间
2010-10-28
最后登录
2013-10-16
在线时间
167 小时
阅读权限
70
积分
2302
帖子
133
主题
16
精华
0
UID
10745
发表于 2011-5-17 10:04:03 |显示全部楼层
不错,认真学习了,O(∩_∩)O谢谢LZ

使用道具 举报

Rank: 6Rank: 6

注册时间
2009-12-2
最后登录
2013-1-8
在线时间
69 小时
阅读权限
70
积分
8494
帖子
7
主题
0
精华
0
UID
6955
发表于 2011-5-17 10:22:14 |显示全部楼层
解释的真好

使用道具 举报

Rank: 4

注册时间
2011-3-12
最后登录
2015-7-29
在线时间
80 小时
阅读权限
50
积分
854
帖子
36
主题
1
精华
0
UID
12356
发表于 2011-5-17 16:04:07 |显示全部楼层
还有个很常用的情况没说,就是遇到文件过多导致ls或rm出现too many arguments错误的情况,这个时候xargs(可以再加上-l -n 参数)就能很好解决

使用道具 举报

Rank: 6Rank: 6

注册时间
2011-5-8
最后登录
2014-8-15
在线时间
68 小时
阅读权限
70
积分
4627
帖子
86
主题
15
精华
0
UID
13539
发表于 2011-5-17 19:29:51 |显示全部楼层
回复 11st 的帖子

恩我一开始看的文档就是这样说的.
现在这样两个都了解了~~

使用道具 举报

Rank: 6Rank: 6

注册时间
2010-3-27
最后登录
2019-7-15
在线时间
98 小时
阅读权限
70
积分
9411
帖子
469
主题
257
精华
0
UID
8103
发表于 2011-5-17 20:05:24 |显示全部楼层
源泉小哥 切勿客气

使用道具 举报

论坛元老

LT fans

Rank: 8Rank: 8

注册时间
2011-5-31
最后登录
2019-7-22
在线时间
220 小时
阅读权限
90
积分
30041
帖子
243
主题
23
精华
0
UID
13960
发表于 2011-6-1 17:26:27 |显示全部楼层
讲解的真好

使用道具 举报

论坛元老

LT fans

Rank: 8Rank: 8

注册时间
2011-5-31
最后登录
2019-7-22
在线时间
220 小时
阅读权限
90
积分
30041
帖子
243
主题
23
精华
0
UID
13960
发表于 2011-7-6 10:43:48 |显示全部楼层
学习了 分析的很好

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

IT运维专家网感谢您的支持

合作联系: QQ:67888954/MSN:cnseek@msn.com/mail:netseek@linuxtone.org

Archiver|手机版|感谢所有关心和支持过LinuxTone的朋友们 转载本站内容请注明原作者名及出处 ( 京ICP备08103151 )   |

GMT+8, 2020-3-28 19:39 , Processed in 0.027511 second(s), 14 queries , Apc On.

Powered by Discuz! X2 Licensed

© 2001-2011 Comsenz Inc.

回顶部