首先明白两个操作符的含义
> 表示重定向时,覆盖原有内容,是从头开始
>> 表示重定向时,是从最后开始追加,不覆盖原有内容
简单的重定向,将file1.txt 的内容导入到file2.txt,也就是说如果file2.txt不为空,就把file2.txt中的内容给覆盖掉
$ cat file1.txt > file2.txt
向set.conf,追加内容,把file1.txt中的内容,添加到set.conf的末尾
$cat file1.txt >> set.conf
然后是经常看到的重定向玩法
先理解空设备 /dev/null,表示什么都没有,可以理解为linux系统的一个“黑洞”,任何内容到这个空设备“黑洞”,就全部丢弃了,找不到了。
下面是个人总结:
/dev/null 2>&1
这条命令其实分为两命令,一个是>/dev/null,另一个是2>&1。
/dev/null
这条命令的作用是将标准输出1重定向到/dev/null中。/dev/null代表linux的空设备文件,所有往这个文件里面写入的内容都会丢失,俗称“黑洞”。那么执行了>/dev/null之后,标准输出就会不再存在,没有任何地方能够找到输出的内容。
2>&1
这条命令用到了重定向绑定,采用&可以将两个输出绑定在一起。这条命令的作用是错误输出将和标准输出同用一个文件描述符,说人话就是错误输出将会和标准输出输出到同一个地方。
">/dev/null" 等同于 "1>/dev/null" .
& 表示等同于的意思,2>&1,表示2的输出重定向等同于1
1>/dev/null 首先表示标准输出重定向到空设备文件,也就是不输出任何信息到终端,说白了就是不显示任何信息。
2>&1 接着,标准错误输出重定向等同于 标准输出,因为之前标准输出已经重定向到了空设备文件,所以标准错误输出也重定向到空设备文件。
linux在执行shell命令之前,就会确定好所有的输入输出位置,并且从左到右依次执行重定向的命令,所以>/dev/null 2>&1的作用就是让标准输出重定向到/dev/null中(丢弃标准输出),然后错误输出由于重用了标准输出的描述符,所以错误输出也被定向到了/dev/null中,错误输出同样也被丢弃了。执行了这条命令之后,该条shell命令将不会输出任何信息到控制台,也不会有任何信息输出到文件中。