通道符和xargs命令
通道符“|“:是将前一个命令的输出做为后一个命令的标准输入。注意:这里的标准输入指的是:通道符右侧命令的处理内容,也就是说左侧的标准输出不能作为右侧命令的参数,只能作为命令的处理对象。
简单讲:只有通道符时,右侧命令将左侧输出作为处理内容。加上xargs后,将左侧输出作为参数。具体看下面wc命令的执行,就明白了。
写起来都很别扭,理解起来也费劲啊,还是举例子吧:
1、环境:假设当前目录下,tesy文件夹内有3个文件,t1.c,t2.c,t3.c
t1.c内容:
hello,I am t1
ok
t2.c内容:
this is t2
t3.c内容:
I am t3
I have 3 lines
look it
然后,我再当前目录建立一个文件t,内容如下:
t1.c
t2.c
t3.c
最后,我在当前目录执行: cat t | ls -l
[root@noi ~]# cat t | ls -l
total
-rw-r--r-- root root Jun : t
drwxr-xr-x root root Jun : tesy
也输出了内容,和我们的想法不一样,我们想的是将t文件内的文件列表传给ls命令,然后一一列出详细属性。但是显然输出的不对,那么这些到底是怎么运作的呢?
cat t命令产生的标准输出通过通道符传给了ls命令,但是ls命令抛弃了,因为ls命令不能处理流,它不是一个文本处理软件,然后ls独自运行,因为没有参数,所以最终执行的命令是:
ls -l
就将当前目录作为默认参数,显示出来。
然后运行:
cat t | xagrs ls -l
[root@noi ~]# cat t | xargs ls -l
-rw-r--r-- root root Jun : tesy/t1.c
-rw-r--r-- root root Jun : tesy/t2.c
-rw-r--r-- root root Jun : tesy/t3.c
看到没?正确执行了我们的意图。xargs命令将从cat t得到的标准输出,作为参数传递给ls命令,这样ls命令得到3个参数,最终执行: ls -l t1.c t2.c t3.c
2、如果上题还有疑问,那么wc命令将最终为您解惑:
执行:
cat t | wc -l
wc命令将cat的输出作为处理内容,进行计算,最终输出3,表示有3行。
[root@noi ~]# cat t | wc -l
执行:
cat t | xargs wc -l
xargs将cat输出的3行作为wc的参数传递进来,于是最终执行: wc -l t1.c t2.c t3.c
[root@noi ~]# cat t | xargs wc -l
tesy/t1.c
tesy/t2.c
tesy/t3.c
total
看到没?wc最终计算的是t1.c,t2.c,t3.c这三个文件,而不是t文件。这就是xargs的作用,将标准输出转为命令的参数,而不是命令的处理内容。
通道符和xargs命令的更多相关文章
- linux中exec和xargs命令的区别和优劣分析
find的exec及ok命令 exec命令的格式为: exec command {} \; exec后面跟着的是操作命令,然后跟着{}表示每一个参数,然后空格,然后"\;".{}之 ...
- 重定向-管道技术-xargs命令详解
重定向 什么是重定向? 将原本要输出在屏幕的内容,重新定向输出到指定的文件或设备中. 为什么要使用重定向? 1.备份的时候需要知道备份的结果. 2.屏幕上输出信息比较重要的时候需要保存下来. 3.定时 ...
- xargs命令
xargs命令 常用工具命令 xargs命令是给其他命令传递参数的一个过滤器,也是组合多个命令的一个工具.它擅长将标准输入数据转换成命令行参数,xargs能够处理管道或者stdin并将其转换成特定命令 ...
- 关于 ‘--exec’ 参数( find 命令)及介绍 ‘xargs ’命令区别(新版)
前言: find 命令一直都是系统管理员的常用命令之一, 其参数中 "-exec" 尤其实用.而 "xargs" 命令,针对查询也有属于自己的见解.本文着重讲解 ...
- linux下xargs命令用法详解 【转】
转自:http://blog.chinaunix.net/uid-128922-id-289992.html xargs在linux中是个很有用的命令,它经常和其他命令组合起来使用,非常的灵活. xa ...
- linux包之findutils之find和xargs命令
解释 [root@localhost ~]# rpm -qa|grep findfindutils-4.4.2-6.el6.x86_64 find 路径 测试 动作 三个步骤的处理过程查找一个或多个目 ...
- linux下xargs命令用法详解
原文:http://blog.chinaunix.net/uid-128922-id-289992.html xargs在linux中是个很有用的命令,它经常和其他命令组合起来使用,非常的灵活. xa ...
- 【转】linux中的cut/tr/join/split/xargs命令
1. cut命令 cut命令用于从文件或者标准输入中读取内容并截取每一行的特定部分并送到标准输出. 截取的方式有三种:一是按照字符位置,二是按照字节位置,三是使用一个分隔符将一行分割成多个field, ...
- linux shell脚本学习xargs命令使用详解
作用是将参数列表转换成小块分段传递给其他命令,以避免参数列表过长的问题 xargs是给命令传递参数的一个过滤器,也是组合多个命令的一个工具.它把一个数据流分割为一些足够小的块,以方便过滤器和命令进行处 ...
随机推荐
- jQuery插件示例笔记
插件的种类 封装对象方法的插件 将对象方法封装起来,用于对通过选择器获取的jQuery对象进行操作. //注意,为了更好的兼容性开始前有个分号 ;(function($){ //此处将$作为匿名函数的 ...
- python笔记4-遍历文件夹目录os.walk()
前言 如何遍历查找出某个文件夹内所有的子文件呢?并且找出某个后缀的所有文件 walk功能简介 1.os.walk() 方法用于通过在目录树种游走输出在目录中的文件名,向上或者向下. 2.walk()方 ...
- jrat
JRat the Java Runtime Analysis Toolkit What is it? The Java Runtime Analysis Toolkit is a low overhe ...
- Mysql - 登录错误
来源: 问题的引出: 我 在CentOS上装完mysql后,用navicat链接的时候,抛出MySql - SQL Error (1130): Host IP is not allowed to co ...
- 玩转Google开源C++单元测试框架Google Test系列(gtest)(转)
转自:http://www.cnblogs.com/coderzh/archive/2009/04/06/1426755.html 前段时间学习和了解了下Google的开源C++单元测试框架Googl ...
- Delphi 对象模型学习笔记(转)
摘要 Borland Object Pascal 对象模型(现在已经正是命名为 Delphi 语言)与其他 OOP 语言一样,都提供了一些基础服务: 如对象创建服务.对象释放服务.对象识别服务 ...
- 3D游戏图形技术解析(7)——视差映射贴图(Parallax Mapping)【转】
http://www.cnblogs.com/taotaobujue/articles/2781371.html 视差映射贴图(Parallax Mapping) ● 传统纹理贴图的弊端 纹理贴图大家 ...
- Struts基本概念
内容源自: Struts2基本概念 一.struts2体系结构: 1.Web浏览器请求一个资源.2.过滤器Dispatcher查找方法,确定适当的Action.3.拦截器自动对请求应用通用功能,如验证 ...
- LVS+keepalived+nginx
LVS是Linux Virtual Server的简写,基于4层协议不处理,不响应,只转发,速度更快 wget -c http://www.linuxvirtualserver.org/softwar ...
- Android,TextView的所有属性和方法
XML 属性 属性名称 相关方法 描述 android:autoLink setAutoLinkMask(int) 设置是否当文本为URL链接/email/电话号码/map时,文本显示为可点击的链接. ...