普通的管道和xargs有什么区别

系统安装、升级讨论
版面规则
我们都知道新人的确很菜,也喜欢抱怨,并且带有浓厚的Windows习惯,但既然在这里询问,我们就应该有责任帮助他们解决问题,而不是直接泼冷水、简单的否定或发表对解决问题没有任何帮助的帖子。乐于分享,以人为本,这正是Ubuntu的精神所在。
回复
头像
NewUserFF
帖子: 413
注册时间: 2010-11-19 22:55

普通的管道和xargs有什么区别

#1

帖子 NewUserFF » 2011-11-22 11:33

一直弄不懂,管道不就是把前一个命令的结果作为参数给下一个命令吗,那在 | 后面加不加xargs有什么区别
头像
懒蜗牛Gentoo
论坛版主
帖子: 7362
注册时间: 2007-03-02 17:36
系统: Linux Mint

Re: 普通的管道和xargs有什么区别

#2

帖子 懒蜗牛Gentoo » 2011-11-22 11:43

管道是实现“将前面的标准输出作为后面的标准输入”
xargs是实现“将标准输入作为命令的参数”

你可以试试运行:

代码: 全选

echo "--help"|cat
echo "--help"|xargs cat
看看结果的不同。
虽然世上没有完美的东西,但这并不影响我们追求完美,因为只有偏执狂才TMD能成功。
10.04新手入门——笨兔兔讲述自己的故事
头像
NewUserFF
帖子: 413
注册时间: 2010-11-19 22:55

Re: 普通的管道和xargs有什么区别

#3

帖子 NewUserFF » 2011-11-22 19:33

懒蜗牛Gentoo 写了:管道是实现“将前面的标准输出作为后面的标准输入”
xargs是实现“将标准输入作为命令的参数”

你可以试试运行:

代码: 全选

echo "--help"|cat
echo "--help"|xargs cat
看看结果的不同。
试过了,依然不是很确定的明白到底是什么意思,自己再探索一下看看把
头像
懒蜗牛Gentoo
论坛版主
帖子: 7362
注册时间: 2007-03-02 17:36
系统: Linux Mint

Re: 普通的管道和xargs有什么区别

#4

帖子 懒蜗牛Gentoo » 2011-11-23 9:09

lz学C不?在linux下编程不?
虽然世上没有完美的东西,但这并不影响我们追求完美,因为只有偏执狂才TMD能成功。
10.04新手入门——笨兔兔讲述自己的故事
头像
YeLee
论坛版主
帖子: 26406
注册时间: 2008-08-13 8:48
系统: Fundu i64
来自: 东海硇州,一双管钥。
联系:

Re: 普通的管道和xargs有什么区别

#5

帖子 YeLee » 2011-11-23 12:36

:em11 :em11 :em11 进来学习一下
◎当我站在道德的高度上俯视别人的时候,发现自己是多么渺小。
♥执着但不偏激,反对而不排斥,坚决捍卫矛盾体的存在方式。
★★★天气预报★★★
fcitx-yatable一个可以使用的码表输入法
[教程]几个实例攻克软件编译难关
Gentoo Development Guide
字体相关
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

Re: 普通的管道和xargs有什么区别

#6

帖子 eexpress » 2011-11-23 15:15

命令认STDIN的,或者认-参数的。就管道。
不认的,只能xargs,就是全面的输出补到命令的尾巴上。
● 鸣学
头像
liu滔
帖子: 7214
注册时间: 2010-10-09 23:01

Re: 普通的管道和xargs有什么区别

#7

帖子 liu滔 » 2011-11-23 15:16

NewUserFF 写了:
懒蜗牛Gentoo 写了:管道是实现“将前面的标准输出作为后面的标准输入”
xargs是实现“将标准输入作为命令的参数”

你可以试试运行:

代码: 全选

echo "--help"|cat
echo "--help"|xargs cat
看看结果的不同。
试过了,依然不是很确定的明白到底是什么意思,自己再探索一下看看把
如果你直接在命令行输入cat而不输入其余的任何东西,这时候的cat会等待标准输入,因此你这时候可以

通过键盘输入并按回车来让cat读取输入,cat会原样返回。而如果你输入--help,那么cat程序会在标准输出上

打印自己的帮助文档。也就是说,管道符 | 所传递给程序的不是你简单地在程序名后面输入的参数,它们会被

程序内部的读取功能如scanf和gets等接收,而xargs则是将内容作为普通的参数传递给程序,相当于你手写了

cat --help
头像
NewUserFF
帖子: 413
注册时间: 2010-11-19 22:55

Re: 普通的管道和xargs有什么区别

#8

帖子 NewUserFF » 2011-11-23 19:08

liu滔 写了:
NewUserFF 写了:
懒蜗牛Gentoo 写了:管道是实现“将前面的标准输出作为后面的标准输入”
xargs是实现“将标准输入作为命令的参数”

你可以试试运行:

代码: 全选

echo "--help"|cat
echo "--help"|xargs cat
看看结果的不同。
试过了,依然不是很确定的明白到底是什么意思,自己再探索一下看看把
如果你直接在命令行输入cat而不输入其余的任何东西,这时候的cat会等待标准输入,因此你这时候可以

通过键盘输入并按回车来让cat读取输入,cat会原样返回。而如果你输入--help,那么cat程序会在标准输出上

打印自己的帮助文档。也就是说,管道符 | 所传递给程序的不是你简单地在程序名后面输入的参数,它们会被

程序内部的读取功能如scanf和gets等接收,而xargs则是将内容作为普通的参数传递给程序,相当于你手写了

cat --help
谢谢啦!这个解释是最好理解的
头像
sunfish
帖子: 989
注册时间: 2008-05-03 1:53

Re: 普通的管道和xargs有什么区别

#9

帖子 sunfish » 2011-11-23 22:24

这个不错,以前遇到不接受-参数的就很麻烦,一直没想到用xargs
docker && kubernetes
itfoxnet
帖子: 2
注册时间: 2012-03-01 17:27

Re: 普通的管道和xargs有什么区别

#10

帖子 itfoxnet » 2012-03-01 17:30

懒蜗牛Gentoo 写了:管道是实现“将前面的标准输出作为后面的标准输入”
xargs是实现“将标准输入作为命令的参数”

你可以试试运行:

代码: 全选

echo "--help"|cat
echo "--help"|xargs cat
看看结果的不同。
很精辟 蜗牛
itfoxnet
帖子: 2
注册时间: 2012-03-01 17:27

Re: 普通的管道和xargs有什么区别

#11

帖子 itfoxnet » 2012-03-01 17:31

懒蜗牛Gentoo, 懒蜗牛Gentoo,
回复