stdin,stdout,stderr,2>&1

上一篇 / 下一篇  2017-06-23 16:38:26 / 个人分类:Linux

参考自知乎https://www.zhihu.com/question/53295083

Lniux的文件描述符有三种标准输入,标准输出和标准错误,stdin, stdout, stderr, 分别用数字0,1,2表示

如当前目录只有一个test文件,
cat test命令将正常列出test文件内容,这个就是stdout

cat mytest命令,系统会提示cat mytest: No such file or directory,这就是一个stderr

----------------------------
cat test 1>stdout.txt 命令,输出test文件内容到stdout.txt
cat test 2>stderr.txt 命令,stderr文件不会有内容,因为没有产生错误

cat mytest 2>stderr.txt, stderr文件内容为cat mytest: No such file or directory,也就是将输出信息写入stderr文件中

如果并不知道一条命令将会产生标准输出还是标准错误,可以这样
cat test 1>stdout 2>stderr
会将正确或错误的信息分别写入文件

如果想将正确或错误的信息都写入到同一个文件,
cat test > output.txt 2>&1

这里用到>作为重定向。注意,>会清除文件当前的内容写入,>>是在当前内容后面追加

最后再说到/dev/null
/dev/null相当于垃圾桶,如果结果不想要,也不想输出到屏幕,就丢给/dev/null
cat mytest 2>/dev/null 这个错误输出不会记录在文件中,也不会输出到屏幕上




TAG:

 

评分:0

我来说两句

Open Toolbar