重定向,主要是指将标准输入、标准输出、标准错误,重新输入或输出到指定的位置,比如文件中。

1. 标准输入、标准输出、标准错误

  • 标准输入:一般主要是指键盘,通过键盘的输入信息;
  • 标准输出:可以是控制台、文件等
  • 标准错误:输出的错误信息

比如:
输入命令:ls
可以查看到控制台中,列出来了当前目录下的所有文件和文件夹信息,在这里,标准输入,主要是指通过键盘输入的ls命令;标准输出,是在当前控制台输出的当前目录下的所有文件和文件夹信息;标准错误,是指该命令执行失败后的错误信息。

标准输入、标准输出、标准错误,对应的文件描述符(file descriptor),分别是0,1,2.

2. 重定向

2.1 怎样重定向

通过符号> 和 >> 来进行重定向。
>表示将内容重定向到后面的文件等位置,从头开始写起,之前的内容被清理掉;
>>表示将内容重定向到后面的文件等位置,从文件尾开始写起,会保留之前的内容。

2.2 重定向到哪里?

1)可重定向到文件
  1. cmd > file
  2. cmd >> file
  3. cmd 2>&1 > /dev/null

注意:2表示标准错误,2>必须一起写,中间不能有空格,2>&1表示将标准错误、标准输入同时重定向。
标准错误重定向流:2> 2>>
合并标准输出和标准错误:&> &>>
合并标准输出和标准错误:2>&1 2>>&1

2)可重定向到/dev/null

如果对文件内容不是很在意,可直接将内容重定向到/dev/null中,/dev/null表示位桶,可理解为是一个黑洞,将所有内容,全部倾倒在一个黑洞中,不在关注。
如果查看/dev/null,也会发现该文件是一个空文件。

3)只有输出才能重定向吗?

只有输出才可以重定向吗?比如标准输出、标准错误才可以重定向吗?不是,标准输入也可以重定向。

3. 注意事项

1)命令的书写格式

在输入1> /dev/null中,1后紧跟>,中间不能有空格,否则命令会出错。

2)注意顺序