环境: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