重定向与管道

Posted Panda.li

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了重定向与管道相关的知识,希望对你有一定的参考价值。

一、输出重定向:

    一般情况下默认输入是键盘;输出是输出到屏幕上面

    希望执行命令的时候不希望输出在屏幕上面,输出在文件里面去

  

  1、把正确的输出导入到文件里面去  (只能重定向正确的结果,不能重定向错误的结果)

  ①、   >

    如果该文件不存在的话,直接创建一个文件
    如果该文件存在的话,就会把改文件里面的内容覆盖

  ②、  >> 

    如果该文件不存在的话,直接创建一个文件
    如果该文件存在的话,直接在该文件的内容后面追加,不会把改文件覆盖

  

技术分享图片View Code

  注意:该重定向只能重定向正确的结果,不能重定向错误的结果。如果想重定向出的结果像正确的重定向一样导入的话: 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   (企业里面常用的用法)

 





















以上是关于重定向与管道的主要内容,如果未能解决你的问题,请参考以下文章

Linux06--Shell程序设计02 数据流重定向与管道

3.管道符重定向与环境变量

管道与重定向(有重定向习题未做)

Linux 重定向与管道符

2023.6.2 Linux重定向与管道

重定向与管道