Linux中的重定向
Posted exburner
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux中的重定向相关的知识,希望对你有一定的参考价值。
重定向符号(漏斗)
> 标准输出重定向(先把文件的内容清空,然后再放内容)
[[email protected] ~]# cat /data/test.txt
a b c d f
[[email protected] ~]# echo g h i j k >/data/test.txt
[[email protected] ~]# cat /data/test.txt
g h i j k
> > 追加重定向(把内容放在文件的最后一行)
[[email protected] ~]# cat /data/test.txt
a b c d f
[[email protected] ~]# echo g h i j k >>/data/test.txt
[[email protected] ~]# cat /data/test.txt
a b c d f
g h i j k
1 标准输出 命令执行正确的内容才会经过漏斗
1> 命令将执行正确的内容存放文件中
1>> 命令将执行正确的内容追加到文件中
2 错误输出
2> 命令将执行错误的内容存放文件中
2>> 命令将执行错误的内容存放文件中
那么问题来了,什么是错误的命令呢,举个例子,命令拼写错误就是典型的命令错误,下面试一试2>>效果
[[email protected] ~]# ech linux 2>>/data/test.txt
[[email protected] ~]# cat /data/test.txt
a b c d f
g h i j k
-bash: ech: command not found
一般来说,2>与2>>用的比较少,常常用到的是将正确的与错误的一起存放在文件中,这时候就需要用到2>&1,将它加在命令最后,它的作用是将错误的信息放入到对的信息中,这样正确的与错误的信息都可以存放到文件中。
[[email protected] ~]# echo g h i j k >/data/test.txt 2>&1
< 输入重定向
支持它的命令很少,其中之一是xargs,xargs的作用主要有两个,一是读取输入数据重新格式化之后输出(-n多列输出,-d自定义定界符),二是和管道符配合使用,管道符之前的结果作为参数传递给之后的命令。
[[email protected] ~]# cat /data/test.txt
a b c d e
f g h i j
[[email protected] ~]# xargs -n6 </data/test.txt
a b c d e f
g h i j
[[email protected] ~]# xargs -n2 </data/test.txt
a b
c d
e f
g h
i j
<< 追加输入重定向
当我们不需要用vi/vim编辑器进入文件修改,但想要输入多行数据时应该怎么办,这时候就需要用到<<,它的基本使用是这样的cat >>/data/test.txt<<EOF
,其中EOF(end of file)为结束标志,当然也可以换成任意你指定的。
[[email protected] ~]# cat >>/data/test.txt <<EOF
> k l m n o
> p q r s t
> EOF
[[email protected] ~]# cat /data/test.txt
a b c d e
f g h i j
k l m n o
p q r s t
标准输入重定向 | < xargs -n2 <test.txt |
把文件作为命令的输入 |
追加输入重定向 | << cat >test.txt<<EOF |
|
标准输出重定向 | > | 重定向到文件,如果有内容则清空 |
追加输出重定向 | >> | 追加到文件最后一行 |
标准错误输出重定向 | 2> | 标准错误重定向到文件,如果有内容则清空 |
追加错误输出重定向 | 2>> | 标准错误追加到文件最后一行 |
正确的与错误的重定向 | 2>&1 | 标准错误与标准输出同时定向到文件 |
以上是关于Linux中的重定向的主要内容,如果未能解决你的问题,请参考以下文章