【Linux】重定向

参考资料:
1.视频课程《Linux运维》
2.书籍PDF版《Linux运维 Web集群实战》
3.https://ryanstutorials.net/linuxtutorial/piping.php
4.学习笔记保存在幕布:这里有完整Linux学习笔记哦~


重定向

管道和重定向的作用是保持数据在程序和文件之间流动。

比如说:通常情况下,我们会在屏幕上显示输出,这在大多数情况下很方便,但有时我们可能希望将其保存到文件中以保存为记录,输入另一个系统或发送给其他人。

大于运算符(>)向命令行指示我们希望程序输出(或发送到STDOUT的任何内容)保存在文件中而不是打印到屏幕上。如果我们重定向到不存在的文件,它将自动为我们创建。但是,如果我们保存到已经存在的文件中,那么它的内容将被清除,然后新的输出保存到它。

如果我们不希望原有文件被覆盖,我们可以使用(>>)运算符将新数据附加到文件中。

(<)及(<<)运算符同理。

而管道(|),该操作符可以将数据从一个程序发送到另一个程序。管道的作用是将左侧程序的输出作为右侧程序的输入。

摘要:

>
将输出保存到文件。
>>
将输出附加到文件。
<
从文件中读取输入。
2>
重定向错误消息。
|
将一个程序的输出作为输入发送到另一个程序。

本文主要介绍重定向及其相关内容。

  • >或1> 输出重定向:把前面输出的东西输入到后面的文件中,会清除文件原有内容
  • >>或1>> 追加输出重定向:把前面输出的东西追加到后边的文件尾部,不会清除原有文件
  • 0<或< 输入重定向
    例子:
echo '1 2 3 4' >oldboy.txt 
xargs -n 2 <old​boy.txt ( xargs -n 2意思即为两个一组分两组,<即把oldboy.txt文件的内容输入给左边处理 )
1 2
3 4​​
  • 0<<或<< 追加输入重定向:后跟字符串,用来表示输入结束,也可以用Ctrl+d来结束输入。
    例子:
cat >>/data/oldboy.txt <<EOF (其中cat是命令>>追加输出重定向,把命令放到文件里,然后EOF EOF把内容装到文件里)
i am studying linux
EOF​​​
  • 2> 错误重定向:把错误信息输出到后面的文件中,会删除文件原有内容
  • 2>>错误追加重定向:把错误信息追加到后边的文件中,不会删除文件原有内容
  • 说明: 箭头的指向就是数据的流向
  • 数字说明
    • 标准输入:0,0<<或0<,数据流向从左到右
    • 标准正常输出:1 ,1>>或1>,数据(正确数据)流向从右到左
    • 标准错误输出:2,2>或2>>,数据(错误数据)从左到右
      例子:
echo oldgirl 1>a.txt 2>b.txt 
cat b.txt
-bash​​​​ cho: command not found
echo oldgirl 1>a.txt 2>a.txt(正确错误都放一个文件)
echo oldgirl 1>a.txt 2>&1(把错误的输出放到和1的输出一样的里面,此方法为常用方法,推荐方法)
echo oldgirl &>a.txt (把正确错误的全放到a里)
            ​

推荐阅读更多精彩内容