通道符和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是给命令传递参数的一个过滤器,也是组合多个命令的一个工具.它把一个数据流分割为一些足够小的块,以方便过滤器和命令进行处 ... 
随机推荐
- Eclipse使用maven创建struct2项目及遇到的各种坑
			参考创建教程:http://www.jb51.net/article/45138.htm 坑一: Eclipse创建maven项目报错:Could not resolve archetype or ... 
- win32 打印机api
			? 4. API之打印函数 AbortDoc 取消一份文档的打印 AbortPrinter 删除与一台打印机关联在一起的缓冲文件 AddForm 为打印机的表单列表添加一个新表单 AddJob 用于获 ... 
- 经典相关分析,典型关分析, CCA,Canonical Correlation Analysis,多元变量分析,线性组合,相关系数最大化
			1.从概率论中相关系数推广而来 在概率论中,研究两个变量之间的线性相关情况时,提出了 相关系数 这个概念.做一下推广,如果研究一个变量和多个随机变量之间的线性相关关系时,提出了 全相关系数(或者复相关 ... 
- VUE -- router 传参和获取参数
- Mac DBeaver Client home is not specified for connection解决办法
			问题: 一般出现这个问题是由于DBeaver 程序无法自动找到数据库的安装目录,在进行数据的导入导出时无法执行,这是因为执行指令需要数据库相关命令的支持. 解决办法: 我用的是mysql,这里拿mys ... 
- 在做了 BasePage 时: 只有在配置文件或 Page 指令中将 enableSessionState 设置为 true 时,才能使用会话状态。还请确保在应用程序配置的 / / 节中包括
			摘自: http://lichengguizy.blog.163.com/blog/static/11771858620122342749552/ 只有在配置文件或 Page 指令中将 enableS ... 
- MSSQL数据库迁移到Oracle(二)
			上一篇文章采用的PowerDesigner实现对MSSQL数据库迁移到Oracle,后来博友建议用ESF Database Migration Toolkit进行迁移会更加简单方便,本文就是通过一个实 ... 
- Vue 组件与复用
			(1)全局注册 <!DOCTYPE html> <html lang="zh"> <head> <meta charset="U ... 
- 在做和sap系统集成的一点心得
			最这一个月和sap做集成,把主数据中的数据写入到sap系统中,做集成就离不开联调,平时开发中,一个复杂点的系统还容易出问题,涉及到两个系统,由于两个或多个系统来自不同的厂家,各个厂家的开发对业务的理解 ... 
- win7保护眼睛的颜色设置方法(85,125,205)
			win7保护眼睛的颜色设置方法(85,125,205) 在电脑桌面空白处点击右键“个性化”按钮. 在弹出的对话框单击“窗口颜色”. 在弹出的新的对话框中单击“高级外观设置”. 在弹出的窗口颜色和外观中 ... 
