# Linux命令之重定向 >、 >>、 1>、 2>、 1>>、 2>>

  1. > 和 >>

这两个区别在于 \>是重定向到一个文件,>>是追加内容到一个文件。如果文件不存在,那么这两个命令都会首先创建这个文件。

ls > test.log
cat test.log

ls >> test.log
  1. 1> 和 2>

他们两个用于将一个文件正确的输出,和错误的输出分开保存。

1> 将正确的输出重定向到某个文件

2> 将错误的输出重定向到某个文件

将错误输出和正确输出保存到同一个文件:

command 1> a.txt 2>&1 
或者:command > a.txt 2>&1
  1. 1>> 和 2>>

同理1>>, 2>>其实也就是追加数据到文件中,和前面介绍的>>没有什么不同,需要提到的一点是,如果我们想将错误的和正确的信息重定向追加到同一个文件应该怎么做呢?你可能会想到2>>&1

然而现实是,并没有这个语法。 然而我们却可以使用1>> a.txt 2>&1的语法实现这个功能,比如:

command 1>> a.txt 2>&1 

看似1>, 1>>, 2>, 2>>是相一一对应的,但是其实不是,他们可以混用,比方说正确的结果想追加,错误的结果我想覆盖

command 1>> right.txt 2> wrong.txt 

如果我们想保存正确的结果,错误的结果直接丢向垃圾站,既不保存为文件,也不在标准输出打印又该怎么做呢?

command 1>> right.txt 2> /dev/null 

直接将错误输出重定向到/dev/null就好了,他好像就是一个无底洞,丢进去的东西就不见了。

  1. <

< 可以将原本由标准输入改为由指定地方输入。