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中的重定向的主要内容,如果未能解决你的问题,请参考以下文章

Linux中的重定向

Linux - Linux中的重定向和管道符

shell中的重定向(输入输出)

如何从 Java 桌面应用程序中的重定向 uri 获取 facebook 代码

MVC 中的重定向无法按预期工作

跨域 ajax 不适用于移动 Safari 中的重定向