当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 12 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : | 与xargs究竟有什么区别?
帖子发表于 : 2012-10-07 14:15 

注册: 2008-04-12 12:44
帖子: 980
送出感谢: 1
接收感谢: 2
| 与xargs究竟有什么区别?

|用来将前一个命令的标准输出传递到下一个命令的标准输入,
xargs将前一个命令的标准输出传递给下一个命令,作为它的参数。
好难理解,什么时候用|,什么时候用xargs,他们的区别究竟在哪里?
[email protected]:~$ ls | wc -l
110
[email protected]:~$ 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 好像是当前目录下面各个文件的长度。
可否帮忙分析一下,我还是有点不 理解。


页首
 用户资料  
 
2 楼 
 文章标题 : Re: | 与xargs究竟有什么区别?
帖子发表于 : 2012-10-07 14:51 
头像

注册: 2008-08-13 8:48
帖子: 26391
地址: 东海硇州,一双管钥。
系统: Fundu i64
送出感谢: 50
接收感谢: 344
xargs可以控制一大堆的参数吧,位置替换啊,等等。


_________________
◎当我站在道德的高度上俯视别人的时候,发现自己是多么渺小。
♥执着但不偏激,反对而不排斥,坚决捍卫矛盾体的存在方式。
★★★天气预报★★★
fcitx-yatable一个可以使用的码表输入法
[教程]几个实例攻克软件编译难关
Gentoo Development Guide
字体相关


页首
 用户资料  
 
3 楼 
 文章标题 : Re: | 与xargs究竟有什么区别?
帖子发表于 : 2012-10-07 14:54 
头像

注册: 2005-08-14 21:55
帖子: 58428
地址: 长沙
送出感谢: 4
接收感谢: 274
管道。无限的。作为输入。
xargs,有限的,作为参数。

明显不是一个东西。


_________________
● 鸣学


页首
 用户资料  
 
4 楼 
 文章标题 : Re: | 与xargs究竟有什么区别?
帖子发表于 : 2012-10-07 15:09 

注册: 2005-09-13 4:56
帖子: 1110
系统: Ubuntu QQ
送出感谢: 0 次
接收感谢: 46
xargs有两个作用

1 提供“源参数”,作为下一条指令的参数来源

2 自动循环,源参数不唯一时自动创建循环进程

你可以把xargs理解为一条流水线


_________________
添加ppa后只更新此ppa:
update-ppa()
{ sudo apt-get update -o Dir::Etc::sourcelist="sources.list.d/$1.list" -o Dir::Etc::sourceparts="-" -o APT::Get::List-Cleanup="0"
}
写入~/.bashrc,source一下,就可以直接用,是不是很方便?觉得方便就按个赞。


页首
 用户资料  
 
5 楼 
 文章标题 : Re: | 与xargs究竟有什么区别?
帖子发表于 : 2012-10-07 21:58 

注册: 2008-05-24 8:30
帖子: 1453
送出感谢: 2
接收感谢: 30
罗非鱼 写道:
| 与xargs究竟有什么区别?

|用来将前一个命令的标准输出传递到下一个命令的标准输入,
xargs将前一个命令的标准输出传递给下一个命令,作为它的参数。
好难理解,什么时候用|,什么时候用xargs,他们的区别究竟在哪里?

xargs 没有这个功能。
xargs 是将用标准输入来构建命令行,就是把标准输入作为命令的参数。要将前一条命令的标准输出作为命令的参数,必须同时有| 和 xargs,| 把标准输出管道到标准输入,xargs 把标准输入转换为命令行参数,二者各司其职。


页首
 用户资料  
 
6 楼 
 文章标题 : Re: | 与xargs究竟有什么区别?
帖子发表于 : 2012-10-09 19:45 

注册: 2008-04-12 12:44
帖子: 980
送出感谢: 1
接收感谢: 2
为何 ls /home/test |rm -rf 不起作用?我将ls的结果传递给rm,为何这个命令不接收这种输入呢?


页首
 用户资料  
 
7 楼 
 文章标题 : Re: | 与xargs究竟有什么区别?
帖子发表于 : 2012-10-09 19:47 
头像

注册: 2008-08-13 8:48
帖子: 26391
地址: 东海硇州,一双管钥。
系统: Fundu i64
送出感谢: 50
接收感谢: 344
为什么rm会接收管道的参数呢?谁告诉你可以的? :em01 :em01 :em01


_________________
◎当我站在道德的高度上俯视别人的时候,发现自己是多么渺小。
♥执着但不偏激,反对而不排斥,坚决捍卫矛盾体的存在方式。
★★★天气预报★★★
fcitx-yatable一个可以使用的码表输入法
[教程]几个实例攻克软件编译难关
Gentoo Development Guide
字体相关


页首
 用户资料  
 
8 楼 
 文章标题 : Re: | 与xargs究竟有什么区别?
帖子发表于 : 2012-10-09 20:36 

注册: 2008-05-24 8:30
帖子: 1453
送出感谢: 2
接收感谢: 30
罗非鱼 写道:
为何 ls /home/test |rm -rf 不起作用?我将ls的结果传递给rm,为何这个命令不接收这种输入呢?

你输入
代码:
rm -rf

它会等待你输入要删除的文件名吗?不会吧,它根本不读标准输入,因而无法处理管道过来的数据。


页首
 用户资料  
 
9 楼 
 文章标题 : Re: | 与xargs究竟有什么区别?
帖子发表于 : 2012-10-10 9:19 

注册: 2008-04-12 12:44
帖子: 980
送出感谢: 1
接收感谢: 2
为何要这样设计这个命令?


页首
 用户资料  
 
10 楼 
 文章标题 : Re: | 与xargs究竟有什么区别?
帖子发表于 : 2012-10-12 0:54 

注册: 2012-03-06 0:22
帖子: 36
送出感谢: 1
接收感谢: 0 次
管道是把一个命令的标准输出传递给另一个命令的标准输入,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).我这样理解


页首
 用户资料  
 
11 楼 
 文章标题 : Re: | 与xargs究竟有什么区别?
帖子发表于 : 2012-10-12 10:13 
头像

注册: 2009-04-11 23:46
帖子: 4130
系统: Arch Linux
送出感谢: 11
接收感谢: 124
管道是把前边程序的标准输入扔给后边程序的标准输入,xargs 是把它的标准输入的东西扔给它后边命令的参数。

你搞清楚什么叫命令行参数什么叫标准输入就明白了。


_________________
我的博客 https://blog.lilydjwg.me/
提问的智慧
Arch Linux 中文论坛

我的vimrc: https://git.io/vimrc


页首
 用户资料  
 
12 楼 
 文章标题 : Re: | 与xargs究竟有什么区别?
帖子发表于 : 2012-11-08 15:57 

注册: 2012-11-08 15:17
帖子: 3
系统: ubuntu12.4
送出感谢: 0 次
接收感谢: 0 次
举个简单的例子吧,
ls | grep test ##在当前目录下的所有文件命中查找test
ls | xargs grep test ##简单说就是在当前目录下的所有文件的内容中查找test(==grep -r test ./)


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 12 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 1 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译