重定向与管道
Posted Panda.li
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了重定向与管道相关的知识,希望对你有一定的参考价值。
一、输出重定向:
一般情况下默认输入是键盘;输出是输出到屏幕上面
希望执行命令的时候不希望输出在屏幕上面,输出在文件里面去
1、把正确的输出导入到文件里面去 (只能重定向正确的结果,不能重定向错误的结果)
①、 >
如果该文件不存在的话,直接创建一个文件
如果该文件存在的话,就会把改文件里面的内容覆盖
②、 >>
如果该文件不存在的话,直接创建一个文件
如果该文件存在的话,直接在该文件的内容后面追加,不会把改文件覆盖
注意:该重定向只能重定向正确的结果,不能重定向错误的结果。如果想重定向出的结果像正确的重定向一样导入的话: xxxxxx 2> nn 1>&2 (举例)
2、重定向错误的结果 (只能重定向错误的结果,不能重定向正确的结果)
①、 2>
如果该文件不存在的话,直接创建一个文件
如果该文件存在的话,就会把改文件里面的内容覆盖
②、 2>>
如果该文件不存在的话,直接创建一个文件
如果该文件存在的话,直接在该文件的内容后面追加,不会把改文件覆盖
[[email protected] opt]# mmmmmmmmmmm 2> s [[email protected] opt]# cat s bash: mmmmmmmmmmm: command not found... [[email protected] opt]# xxxxxxxxxxxxx 2> s [[email protected] opt]# cat s bash: xxxxxxxxxxxxx: command not found... [[email protected] opt]# aaaaaaaaaa 2>> s [[email protected] opt]# cat s bash: xxxxxxxxxxxxx: command not found... bash: aaaaaaaaaa: command not found... [[email protected] opt]#
注意:如果想错误的结果像正确的导入 xxxxxxxxx > mm 2>&1 (举例) 企业常用的方法
[[email protected] opt]# xxxxxx > mm 2>&1 [[email protected] opt]# cat mm bash: xxxxxx: command not found... [[email protected] opt]# yyyyy > mm 2>&1 [[email protected] opt]# cat mm bash: yyyyy: command not found... [[email protected] opt]#
3、不管输出正确与否,都导入。
&> (注意:没有 2&>)
[[email protected] opt]# xxxx &> kk [[email protected] opt]# cat kk bash: xxxx: command not found... [[email protected] opt]# date &> kk [[email protected] opt]# cat kk Tue Jun 6 23:59:34 CST 2017 [[email protected] opt]#
二、输入重定向-------------- < 或 <<
把hosts文件里面的小谢字母全部转换为大写字母
[[email protected] opt]# cat hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
[[email protected] opt]# tr ‘a-z‘ ‘A-Z‘ < hosts tr 命令
127.0.0.1 LOCALHOST LOCALHOST.LOCALDOMAIN LOCALHOST4 LOCALHOST4.LOCALDOMAIN4
::1 LOCALHOST LOCALHOST.LOCALDOMAIN LOCALHOST6 LOCALHOST6.LOCALDOMAIN6
[[email protected] opt]#
三、输入重定向和输出重定向一起使用
forexample: cat >xxx << ufo XXXXXXXXX ufo
// 注意:结尾必须要和ufo一致,才能退出(重定向里面还支持变量的引用)
[[email protected] opt]# mm=123456 [[email protected] opt]# cat > files << ufo (要和下面配对) > 1111111111111 > ssssssssssssss > $mm > Thanks! > ufo [[email protected] opt]# cat files 1111111111111 ssssssssssssss 123456 Thanks! [[email protected] opt]#
总结:
> 或 1> 输出重定向:把前面的输出东西输入到后面的文件中,会清除文件里面原有的内容
>> 或 1>> 追加输出重定向:把前面输出的东西追加到后面的文件尾部,不会清除原文件里面的内容
0< 或 < 输入重定向:输入重定向用于改变命令的输入,后面指定输入内容,前面跟文件名
0<<或 << 追加输入重定向:后跟字符串,用来表示“输入结束”,也可以Ctrl+d 来结束输入
2> 错误的重定向:把错误的信息输入到后面的文件中,会删除源文件里面的内容
2>> 错误的追加重定向:把错误的信息追加到后面的文件中,不会删除源文件里面的内容
使用说明:
1、箭头的流向介绍数据的流向
2、数字说明:
标准正常输出: 代码为1,使用> 或 >> 。数据流向从左向右
标准输入: 代码为0,使用< 或 << 。数据流向从右向左
标准错误输出: 代码为2,使用2>或 2>>。数据流向从左向右
2>&1 : 标准错误输出和标准正常输出一样,相当于跟屁虫。1放到哪,2就放到哪里。
echo ‘oldboy‘ > a.txt 2>&1 (企业里面常用的用法)
以上是关于重定向与管道的主要内容,如果未能解决你的问题,请参考以下文章