Redirection.png
分类数据重定向主要分为三类:
stdin,表示标准输入,代码为0,使用<或<<操作符
符号<表示以文件内容作为输入
符号<<表示输入时的结束符号
stdout,表示标准输出,代码为1,使用>或>>操作符
符号>表示以覆盖的方式将正确的数据输出到指定文件中
符号>>表示以追加的方式将正确的数据输出到指定文件中
stderr,表示标准错误输出,代码为2,使用2>或2>>操作符
符号2>表示以覆盖的方式将错误的数据输出到指定文件中
符号2>>表示以追加的方式将错误的数据输出到指定文件中
当你输入ls命令,屏幕会显示当前目录有哪些文件和目录;而当你使用符号>时,输出结果将重定向到dir.txt文件,而不显示在屏幕上
stdin demo.png
而符号>与符号>>有什么区别呢?>表示当文件存在时,将文件内容清空,然后stdout结果存放到文件中。而>>表示当文件存在时,文件内容并没有清空,而是将stdout结果追加到文件尾部。
当你再次输入命令ls > dir.txt时,文件内容并没有改变,因为之前文件内容被清空,然后stdout结果存放在dir.txt文件
stdin demo 1.png
而你这次使用符号ls >> dir.txt的话,文件内容被追加到dir.txt文件
stdin demo 2.png
stderr这次我输入命令ls test显示一个不存在的文件,会显示错误信息。然后将错误信息输出到文件error.txt。
stderr demo 1.png
如果你想追加错误信息,可以使用2>>符号
stderr demo 2.png
stdout & stderr
将stdout和stderr分离:>和2>符号
输入ls README.md test,在屏幕显示既有正确信息,也有错误信息,如果想将正确信息和错误信息分离到不同文件,你可以同时使用>和2>符号
seperate stdout & stderr.png
将stdout和stderr合并:&>符号
如果你想将正确信息和错误信息合并,且输出到同一个文件,可以使用&>符号
combine stdout & stderr.png
stdin一般输入一些简单的数据的方式都是通过键盘,但是如果要输入大量的数据,最好还是通过文件的方式。举一个简单例子:
首先输入cat > test命令之后,你就可以输入内容,那些内容最终会存放在test文件
stdin demo 1.png
但如果有大量数据从一个文件导入到test文件时,此时需要用到<符号