当前位置: 首页 > Linux

Linux中的shell重定向

时间:2023-04-06 06:33:20 Linux

在shell脚本中,默认总是打开三个文件,标准输入(键盘输入),标准输出(输出到屏幕),标准错误(也输出到屏幕),它们对应的文件描述符分别为0、1、2。&是一个描述符,如果1或2前面没有&,会被当做普通文件。>默认是标准输出重定向,同1>。1>&2表示将标准输出重定向到标准错误。2>&1表示将标准错误输出重定向到标准输出。&>filename表示将标准输出和标准错误输出重定向到文件filename。>&2表示1>&2是将结果输出到与标准错误相同的文件中。/dev/null是一个文件。这个文件很特别。All无论传递给它什么,它都会丢弃标准输出和错误输出>lsrumenz.txt>lsrumenz.txt1.txtls:1.txt:Nosuchfileordirectoryrumenz.txt因为1.txt不存在,ls:1.txt:Nosuchfileordirectory错误输出为2.rumenz.txt文件存在,所以rumenz.txt是标准输出。那是1。将上面的标准输出和错误输出重定向到一个文件>lsrumenz.txt1.txt1>out.log2>err.log>catout.logrumenz.txt>rumenzcaterr.logls:1.txt:Nosuchfileordirectoryout.log存储标准输出err.log存储错误输出案例分析>lsrumenz.txt1.txt>out.txtls:1.txt:Nosuchfileordirectory>catout.txttrumenz.txt由于只有标准输出是重定向,所以out.txt文件只有标准输出>lsrumenz.txt1.txt>out.log1>&2ls:cannotaccess1.txt:Nosuchfileordirectoryrumenz.txt>catout.log>out。log将标准输出重定向到文件,但是1>&2将标准输出重定向到错误输出,所以out.log中没有任何内容。>lsrumenz.txt1.txt>out.txt2>&1>catout.txtls:cannotaccess1.txt:Nosuchfileordirectoryrumenz.txt>out.log将标准输出重定向到文件,但是2>&1将错误输出重定向到标准输出,所以out.log中既有正常输出也有错误的输出。/dev/null/dev/null:表示黑洞,通常用于丢弃不需要的数据输出,或者输入流的空文件>rm-f$(find/-namerumenz)&>/dev/null原文链接:https://rumenz.com/rumenbiji/...微信公众号:入门