Linux中Shell重定向
在shell脚本中,默认情况下,总是有三个文件处于打开状态,标准输入(键盘输入)、标准输出(输出到屏幕)、标准错误(也是输出到屏幕),它们分别对应的文件描述符是0,1,2。是一个描述符,如果1或2前不加,会被当成一个普通文件。默认为标准输出重定向,与1相同12意思是把标准输出重定向到标准错误。21意思是把标准错误输出重定向到标准输出。filename意思是把标准输出和标准错误输出都重定向到文件filename中。2即12也就是把结果输出到和标准错误一样
devnull是一个文件,这个文件比较特殊,所有传给它的东西它都丢弃掉标准输出和错误输出lsrumenz。txtlsrumenz。txt1。txtls:1。txt:Nosuchfileordirectoryrumenz。txt由于1。txt不存在,所以ls:1。txt:Nosuchfileordirectory就是错误输出就是2。rumenz。txt文件是存在的,所以rumenz。txt就是标准输出。就是1。把上述的标准输出和错误输出重定向到文件lsrumenz。txt1。txt1out。log2err。logcatout。logrumenz。txtrumenzcaterr。logls:1。txt:Nosuchfileordirectoryout。log存的是标准输出err。log存的是错误输出案例分析lsrumenz。txt1。txtout。txtls:1。txt:Nosuchfileordirectorycatout。txtrumenz。txt
由于只重定向了标准输出,所以out。txt文件只有标准输出lsrumenz。txt1。txtout。log12ls:cannotaccess1。txt:Nosuchfileordirectoryrumenz。txtcatout。log
out。log将标准输出重定向到文件,但是12将标准输出重定向到了错误输出,所以out。log里面什么也没有。lsrumenz。txt1。txtout。txt21catout。txtls:cannotaccess1。txt:Nosuchfileordirectoryrumenz。txt
out。log将标准输出重定向到文件,但是21将错误输出重定向到标准输出,所以out。log里面既有正常的输出也有错误的输出。devnull
devnull:表示的是一个黑洞,通常用于丢弃不需要的数据输出,或者用于输入流的空文件rmf(findnamerumenz)devnull