| 与xargs究竟有什么区别?
-
- 帖子: 980
- 注册时间: 2008-04-12 12:44
| 与xargs究竟有什么区别?
| 与xargs究竟有什么区别?
|用来将前一个命令的标准输出传递到下一个命令的标准输入,
xargs将前一个命令的标准输出传递给下一个命令,作为它的参数。
好难理解,什么时候用|,什么时候用xargs,他们的区别究竟在哪里?
tiger@debian:~$ ls | wc -l
110
tiger@debian:~$ ls |xargs wc -l
wc: (1000)《统计学》(第四版)—ppt—给教师用: Is a directory
0 (1000)《统计学》(第四版)—ppt—给教师用
50 a50
62 a50~
167017 adobe.deb
837 aliedit.sh
2882469 bsd.img
wc: coreutils-8.5: Is a directory
0 coreutils-8.5
80 coreutils_8.5-1.diff.gz
30 coreutils_8.5-1.dsc
40946 coreutils_8.5.orig.tar.gz
2 dd.sh
3 ddtime.sh
wc: Desktop: Is a directory
0 Desktop
为何
ls |wc -l ls |xargs wc -l 都能成立?
观察发现, ls |wc -l 显示的是当前目录下面的所有文件数目。ls | xargs wc -l 好像是当前目录下面各个文件的长度。
可否帮忙分析一下,我还是有点不 理解。
|用来将前一个命令的标准输出传递到下一个命令的标准输入,
xargs将前一个命令的标准输出传递给下一个命令,作为它的参数。
好难理解,什么时候用|,什么时候用xargs,他们的区别究竟在哪里?
tiger@debian:~$ ls | wc -l
110
tiger@debian:~$ ls |xargs wc -l
wc: (1000)《统计学》(第四版)—ppt—给教师用: Is a directory
0 (1000)《统计学》(第四版)—ppt—给教师用
50 a50
62 a50~
167017 adobe.deb
837 aliedit.sh
2882469 bsd.img
wc: coreutils-8.5: Is a directory
0 coreutils-8.5
80 coreutils_8.5-1.diff.gz
30 coreutils_8.5-1.dsc
40946 coreutils_8.5.orig.tar.gz
2 dd.sh
3 ddtime.sh
wc: Desktop: Is a directory
0 Desktop
为何
ls |wc -l ls |xargs wc -l 都能成立?
观察发现, ls |wc -l 显示的是当前目录下面的所有文件数目。ls | xargs wc -l 好像是当前目录下面各个文件的长度。
可否帮忙分析一下,我还是有点不 理解。
- YeLee
- 论坛版主
- 帖子: 26406
- 注册时间: 2008-08-13 8:48
- 系统: Fundu i64
- 来自: 东海硇州,一双管钥。
- 联系:
Re: | 与xargs究竟有什么区别?
xargs可以控制一大堆的参数吧,位置替换啊,等等。
◎当我站在道德的高度上俯视别人的时候,发现自己是多么渺小。
♥执着但不偏激,反对而不排斥,坚决捍卫矛盾体的存在方式。
★★★天气预报★★★
fcitx-yatable一个可以使用的码表输入法
[教程]几个实例攻克软件编译难关
Gentoo Development Guide
字体相关
♥执着但不偏激,反对而不排斥,坚决捍卫矛盾体的存在方式。
★★★天气预报★★★
fcitx-yatable一个可以使用的码表输入法
[教程]几个实例攻克软件编译难关
Gentoo Development Guide
字体相关
- eexpress
- 帖子: 58428
- 注册时间: 2005-08-14 21:55
- 来自: 长沙
-
- 帖子: 1318
- 注册时间: 2005-09-13 4:56
- 系统: Ubuntu Jammy Jellyfi
Re: | 与xargs究竟有什么区别?
xargs有两个作用
1 提供“源参数”,作为下一条指令的参数来源
2 自动循环,源参数不唯一时自动创建循环进程
你可以把xargs理解为一条流水线
1 提供“源参数”,作为下一条指令的参数来源
2 自动循环,源参数不唯一时自动创建循环进程
你可以把xargs理解为一条流水线
-
- 帖子: 1453
- 注册时间: 2008-05-24 8:30
Re: | 与xargs究竟有什么区别?
xargs 没有这个功能。罗非鱼 写了:| 与xargs究竟有什么区别?
|用来将前一个命令的标准输出传递到下一个命令的标准输入,
xargs将前一个命令的标准输出传递给下一个命令,作为它的参数。
好难理解,什么时候用|,什么时候用xargs,他们的区别究竟在哪里?
xargs 是将用标准输入来构建命令行,就是把标准输入作为命令的参数。要将前一条命令的标准输出作为命令的参数,必须同时有| 和 xargs,| 把标准输出管道到标准输入,xargs 把标准输入转换为命令行参数,二者各司其职。
-
- 帖子: 980
- 注册时间: 2008-04-12 12:44
Re: | 与xargs究竟有什么区别?
为何 ls /home/test |rm -rf 不起作用?我将ls的结果传递给rm,为何这个命令不接收这种输入呢?
- YeLee
- 论坛版主
- 帖子: 26406
- 注册时间: 2008-08-13 8:48
- 系统: Fundu i64
- 来自: 东海硇州,一双管钥。
- 联系:
Re: | 与xargs究竟有什么区别?
为什么rm会接收管道的参数呢?谁告诉你可以的?




◎当我站在道德的高度上俯视别人的时候,发现自己是多么渺小。
♥执着但不偏激,反对而不排斥,坚决捍卫矛盾体的存在方式。
★★★天气预报★★★
fcitx-yatable一个可以使用的码表输入法
[教程]几个实例攻克软件编译难关
Gentoo Development Guide
字体相关
♥执着但不偏激,反对而不排斥,坚决捍卫矛盾体的存在方式。
★★★天气预报★★★
fcitx-yatable一个可以使用的码表输入法
[教程]几个实例攻克软件编译难关
Gentoo Development Guide
字体相关
-
- 帖子: 1453
- 注册时间: 2008-05-24 8:30
Re: | 与xargs究竟有什么区别?
你输入罗非鱼 写了:为何 ls /home/test |rm -rf 不起作用?我将ls的结果传递给rm,为何这个命令不接收这种输入呢?
代码: 全选
rm -rf
-
- 帖子: 980
- 注册时间: 2008-04-12 12:44
Re: | 与xargs究竟有什么区别?
为何要这样设计这个命令?
-
- 帖子: 37
- 注册时间: 2012-03-06 0:22
Re: | 与xargs究竟有什么区别?
管道是把一个命令的标准输出传递给另一个命令的标准输入,xargs是把一个命令的标准输出以参数的形式传递给命令。功能不同。有些命令不支持管道,就用xargs将来自标准输出的数据以参数的形式传递给这个命令。(ls | wc -l) 是把ls 的标准输出传递给wc的标准输入,wc就象是在处理一个文本文件,(ls > hello.tt && wc -l hello.tt) 而(ls | xargs wc -l)就是 xargs把来自ls的标准输出转换成一个一个的参数传递给 wc,wc 就是在处理好多文件 (for i in `cat hello.tt`;do wc -l $i;done).我这样理解
- lilydjwg
- 论坛版主
- 帖子: 4258
- 注册时间: 2009-04-11 23:46
- 系统: Arch Linux
- 联系:
Re: | 与xargs究竟有什么区别?
管道是把前边程序的标准输入扔给后边程序的标准输入,xargs 是把它的标准输入的东西扔给它后边命令的参数。
你搞清楚什么叫命令行参数什么叫标准输入就明白了。
你搞清楚什么叫命令行参数什么叫标准输入就明白了。
-
- 帖子: 3
- 注册时间: 2012-11-08 15:17
- 系统: ubuntu12.4
Re: | 与xargs究竟有什么区别?
举个简单的例子吧,
ls | grep test ##在当前目录下的所有文件命中查找test
ls | xargs grep test ##简单说就是在当前目录下的所有文件的内容中查找test(==grep -r test ./)
ls | grep test ##在当前目录下的所有文件命中查找test
ls | xargs grep test ##简单说就是在当前目录下的所有文件的内容中查找test(==grep -r test ./)