当前位置:  技术问答>linux和unix

关于管道的用法

    来源: 互联网  发布时间:2017-01-06

    本文导语:  例如: find path -name filename  假设在path路径下找到一些filename文件,然后我向继续对找到的这些文件操作 find path -name filename | rm -r    # error 正确的一个方法是: find path -name filename | xargs rm -r  问题1:为...

例如:
find path -name filename 
假设在path路径下找到一些filename文件,然后我向继续对找到的这些文件操作
find path -name filename | rm -r    # error
正确的一个方法是:
find path -name filename | xargs rm -r 

问题1:为什么使用管道不可以向rm传递参数,必须用xargs指明?

问题2:换一种写法,效果达到了(即删除了找到的文件),但是最后却提示找不到文件?
find path -name filename -exec rm -r {} ;


请指导!

|
rm不接受标准输入作为参数,所以不可以直接用管道
xargs就是把标准输入的内容构造成命令行再执行的


|
程序分两种,一种是运行前传命令行参数的,一种是跑起来之后读STDIN_FILENO的。

如果是需要命令行参数的,管道是没有用的,所以需要用xargs这个程序读管道的标准输出作为命令行参数,由xargs来execl你的程序传入命令行参数。

如果是需要标准输入的,直接管道就可以了,因为管道命令创建的子进程会调用dup2把自己的STDIN_FILENO描述符共享管道的读端文件表项,今后子进程execl管道线后的程序,那个程序读标准输入就等于在读管道的读端。

楼主可能单纯从记忆上很难理解这些,但如果熟悉LINUX编程开发的话,这些都不是什么难题。

    
 
 

您可能感兴趣的文章:

  • 请教一个管道的用法
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • linux管道问题,管道建立后如何同步?
  • 哪位大侠知道Linux里的有名管道传送数据快不快?有名管道操作的过程是否有读写硬盘的操作?
  • 1哪位大侠知道Linux里的有名管道传送数据快不快?有名管道操作的过程是否有读写硬盘的操作?
  • 怎么样以非阻塞的方式从管道中读取数据?因为我用read函数时,如果管道没有数据就会阻塞住???
  • (100)"断开的管道" 在Socket编程当中,如果我连续发送包,例如1000次,总会出现"断开的管道"的错误提示,请问如何解决
  • 管道(|)是怎么实现的?
  • 我用管道作为一个程序的标准输入时,程序报错说不是一个终端不能做为标准输入,请问怎么样管道成为它的标准输入呢???具体错误信息见内
  • 多进程通讯的管道相关问题
  • 请问何时删除命名管道哪?
  • Linux下面的"匿名管道",是否对应着某种实体?
  • 串口和管道诡异的问题,在线急等解答
  • linux进程管道通信
  • 请问如何让自己编写的Shell程序支持管道?
  • 命名管道open时被阻塞了
  • 如何实现管道和后台进程
  • 关于有名管道的权限问题?
  • 命名管道问题
  • linux 管道通信
  • 请教大家一个关于管道的问题
  • 创建了一个管道,写入数据正确,读数据失败。为什么?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3