码迷,mamicode.com
首页 > 系统相关 > 详细

Linux中的重定向

时间:2018-10-05 00:52:42      阅读:224      评论:0      收藏:0      [点我收藏+]

标签:pre   ext   命令执行   传递   host   比较   data   str   ble   

重定向符号(漏斗)

> 标准输出重定向(先把文件的内容清空,然后再放内容)

[root@localhost ~]# cat /data/test.txt 
a b c d f
[root@localhost ~]# echo g h i j k >/data/test.txt 
[root@localhost ~]# cat /data/test.txt 
g h i j k

> > 追加重定向(把内容放在文件的最后一行)

[root@localhost ~]# cat /data/test.txt 
a b c d f
[root@localhost ~]# echo g h i j k >>/data/test.txt 
[root@localhost ~]# cat /data/test.txt 
a b c d f
g h i j k

1 标准输出 命令执行正确的内容才会经过漏斗

1> 命令将执行正确的内容存放文件中

1>> 命令将执行正确的内容追加到文件中

2 错误输出

2> 命令将执行错误的内容存放文件中

2>> 命令将执行错误的内容存放文件中

那么问题来了,什么是错误的命令呢,举个例子,命令拼写错误就是典型的命令错误,下面试一试2>>效果

[root@localhost ~]# ech linux 2>>/data/test.txt 
[root@localhost ~]# cat /data/test.txt 
a b c d f
g h i j k
-bash: ech: command not found

一般来说,2>与2>>用的比较少,常常用到的是将正确的与错误的一起存放在文件中,这时候就需要用到2>&1,将它加在命令最后,它的作用是将错误的信息放入到对的信息中,这样正确的与错误的信息都可以存放到文件中。

[root@localhost ~]# echo g h i j k >/data/test.txt 2>&1

< 输入重定向

支持它的命令很少,其中之一是xargs,xargs的作用主要有两个,一是读取输入数据重新格式化之后输出(-n多列输出,-d自定义定界符),二是和管道符配合使用,管道符之前的结果作为参数传递给之后的命令。

[root@localhost ~]# cat /data/test.txt 
a b c d e
f g h i j
[root@localhost ~]# xargs -n6 </data/test.txt 
a b c d e f
g h i j
[root@localhost ~]# 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)为结束标志,当然也可以换成任意你指定的。

[root@localhost ~]# cat >>/data/test.txt <<EOF
> k l m n o
> p q r s t
> EOF
[root@localhost ~]# 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中的重定向

标签:pre   ext   命令执行   传递   host   比较   data   str   ble   

原文地址:https://www.cnblogs.com/ExBurner/p/9743817.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!