【原】Linux shell script 2>&1是什么意思
先说结论,
如果想了解为什么,可以继续阅读: 1和2 是什么shell中,有一些常用的文件描述符(file descriptor):
所以 2>&1 中的2就是标准错误,1就是标准输出。 > 符号是什么">" 是shell中的重定向符, 例如:echo "abc" > file1 就是把abc写到文件名交file1的文件中。 &是什么&符号在shell中有几个意思,在2>&1中, &用做一个“转义符”,和1结合,"&1"一起表示标准输出。 cat file1 > outfile 2>1 那这样,系统就会认为,把标准错误输出到文件名是1的文件中。为了消除歧义,&1在这个情景下,才表示标准输出,否则单独的1,就是文件名为1的文件。 cat file1 > outfile 2>&1 & 第二个&(command 最后的&),表示command在后台运行,意义与&1中的&不同。 这条命令背后是什么如果想深入了解一下,可以继续阅读:
dup2等效于: close(oldfd);fcntl(oldfd,F_DUPFD,newfd); 用strace可以看到, command > file 2>&1 这个命令中实现重定向的关键系统调用序列是: open(file) == 3 dup2(3,1) dup2(1,2) 参考文献linux之dup和dup2函数解析 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |