找回密码
 注册
搜索
热搜: 回贴
  • 前程无忧官网首页 有什么好的平台可以
  • 最新的销售平台 互联网营销的平台有哪
  • 制作网页的基本流程 网页制作和网页设
  • 【帝国CMS】输出带序号的列表(数字排
  • 网站建设公司 三一,中联,极东泵车的
  • 织梦 建站 织梦网站模版后台怎么更改
  • 云服务官网 哪些网站有免费的简历模板
  • 如何建网站要什么条件 建网站要用什么
  • 吉林市移动公司电话 吉林省退休人员网
  • 设计类毕业论文 网站设计与实现毕业论
查看: 9027|回复: 1

xargs的用法

[复制链接]
发表于 2009-11-29 02:16:19 | 显示全部楼层 |阅读模式 IP:江苏扬州
今天看书,讲到将一个命令的输出结果放到另一个变量中,可以通过:
# x=$(echo $(ls -l))或者x=`echo $(ls -l)`
# echo $x
   这种把命令的执行结果放到变量中的能力是很强大的,它使得在脚本程序中使用现有命令并捕获其输出的工作变得很容易。如果需要把一条命令在标准输出上的输出结果,转换为另一个程序或或者另一个命令的参数,可以用xargs命令。
# man xargs
可以看到例子:
1、 find /tmp -name core -type f -print | xargs /bin/rm -f
用find命令在tmp目录下查找以core命名的文件,然后删除它们。需要注意的是如果文件名字包含新行或者空格的话,这条命令将会被错误操作。
  
2、find /tmp -name core -type f -print0 | xargs -0 /bin/rm -f
    这条命令就正确地处理了新行和空格,有可能带来的错误。
    这条命令和上一条意思一样。
  
3、cut -d: -f1 < /etc/passwd | sort | xargs echo
      大概列举了系统的用户。
4、find ./ -type f -print | xargs -i mv -f {} ./newdir
      -i 表示 find 传递给xargs的结果 由{}来代替
   管道是把一个命令的输出传递给另一个命令作为输入,比如:
command1 | command2
    但是command2仅仅把输出的内容作为输入参数。
    find . -name "install.log" -print打印出的是install.log这个字符串,如果仅仅使用管道,那么command2能够使用的仅仅是install.log这个字符串,不能把它当作文件来进行处理。当然这个command2除了xargs。xargs就是为了能够对find搜索到的文件进行操作而编写的。它能把管道传来的字符串当作文件交给其后的命令执行。
举个例子:
(1)$find . -name "install.log" -print | cat
./install.log #显示从管道传来的内容,仅仅作为字符串来处理
(2)$find . -name "install.log" -print | xargs cat
aaaaaa        #将管道传来的内容作为文件,交给cat执行。也就是说,该命令执行的是如果存在install.log,那么就打印出这个文件的内容。

   通过这个例子,应该很容易理解这样有什么不同了。当你要对匹配文件操作时,使用find and xargs。其实这都是运用了管道。xargs是shell命令的一个,可以把管道输入的内容转化为其参数要操作的文件。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏ICP备08020429号 )

GMT+8, 2024-9-29 15:19 , Processed in 0.278351 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表