Linux学习笔记_系统输入输出标准(重定向,>,>>,<,2>&1,xargs)

来源:互联网 发布:单片机是什么专业 编辑:程序博客网 时间:2024/06/05 05:11

环境:centos7

需求:了解linux的输入输出标准,重定向使用方法,xargs含义


实践:

linux中有三种标准输入输出,分别是STDIN,STDOUT,STDERR,对应的数字是0,1,2。

0:标准输入,符号“<”

1:标准输出,符号“1>”,简写成“>”

2:错误输出,符号“2>”。


例:

ls /data

a b  // data路径下有a,b两个文件


cat a

test a


cat b

test b


-----------------------------------------------

cat a c >b 2>&1       // 将a文件和c文件(不存在)的内容重定向至b文件中(覆盖方式)

                                // 2>&1表示错误信息输出方式(路径)与标准输出方式(路径)相同

cat b

test a
cat: c: No such file or directory      //错误信息也重定向至b文件中


-----------------------------------------------

 cat a c >>b 2>&1          //使用>>的输出方式为追加内容,不会覆盖,2>&1写法不变。


cat b

test b

test a

cat: c: No such file or directory

-----------------------------------------------


xargs


xargs命令是给其他命令传递参数的一个过滤器,也是组合多个命令的一个工具。

xargs擅长将标准输入数据转换成命令行参数,xargs能够处理管道或者stdin并将其转换成特定命令的命令参数。

xargs也可以将单行或多行文本输入转换为其他格式,例如多行变单行,单行变多行。

xargs的默认命令是echo,空格是默认定界符。

这意味着通过管道传递给xargs的输入将会包含换行和空白,不过通过xargs的处理,换行和空白将被空格取代。

xargs是构建单行命令的重要组件之一。


例:

find  /data  -type  -f  -name  "*.txt"  |xargs  rm  -f    

//find命令的多行显示结果输出,经过xargs处理后变成单行输入作为rm命令的参数使用(推荐用此方法代替rm删除命令


cat test.txt 

a b c d 

e f g h i j k 

l m n 

o p q r s t u v 

w x y z


cat test.txt | xargs 

a b c d e f g h i j k l m n o p q r s t u v w x y z


cat test.txt | xargs -n3 

a b c 

d e f 

g h i 

j k l 

m n o 

p q r 

s t u 

v w x 

y z