重定向:就是改变原操作方向,重新指向一个新的目标。

 

输入重定向:是将文件的内容输入到命令中

输出重定向:是将命令的结果输出到文件中

 

 

标准输入输出

Linux中存在三种默认重定向,对应的文件描述符0、1、2

标准输入重定向(STDIN,文件描述符为0):默认从键盘输入,也可从其他文件或命令中输入。

标准输出重定向(STDOUT,文件描述符为1):默认输出到屏幕。

错误输出重定向(STDERR,文件描述符为2):默认输出到屏幕。

 

例如

[root@linuxprobe ~]# touch linuxprobe
[root@linuxprobe ~]# ls -l linuxprobe 
-rw-r--r--. 1 root root 0 Aug 5 05:35 linuxprobe
[root@linuxprobe ~]# ls -l xxxxxx
ls: cannot access xxxxxx: No such file or directory

因为存在linuxprobe 这个文件,执行 "ls -l linuxprobe" ,屏幕显示正常输出结果,这是标准输出

但是由于不存在xxxxxx文件,执行"ls -l xxxxxx",屏幕显示一个异常,这是错误输出

 

 

重定向

我们可以利用重定向符,来改变标准输入输出

格式:<命令> <重定向符> <文件>

 

<:标准输入 (覆盖)                              <:标准输入(追加)

>:标准输出(覆盖)                               >>:标准输出(追加)

2>:错误输出 (覆盖)                            2>>:错误输出 (追加)

&>>:标准&错误输出(追加)                 &>>:标准&错误输出(追加)

 

输入重定向中用到的符号及其作用

符号 作用
命令 < 文件 将文件作为命令的标准输入
命令 << 分界符 从标准输入中读入,直到遇见分界符才停止
命令 < 文件1 > 文件2 将文件1作为命令的标准输入并将标准输出到文件2

 

输出重定向中用到的符号及其作用

符号 作用
命令 > 文件 将标准输出重定向到一个文件中(清空原有文件的数据)
命令 2> 文件 将错误输出重定向到一个文件中(清空原有文件的数据)
命令 >> 文件 将标准输出重定向到一个文件中(追加到原有内容的后面)
命令 2>> 文件 将错误输出重定向到一个文件中(追加到原有内容的后面)
命令 >> 文件 2>&1 

命令 &>> 文件
将标准输出与错误输出共同写入到文件中(追加到原有内容的后面)

 

 

参考:https://www.linuxprobe.com/chapter-03.html