大佬教程收集整理的这篇文章主要介绍了【原】Linux shell script 2>&1是什么意思,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
先说结论,
如果想了解为什么,可以继续阅读:
sHell中,有一些常用的文件描述符(file descriptor):
">" 是sHell中的重定向符, 例如:echo "abc" > file1 就是把abc写到文件名交file1的文件中。
其中要注意的是,一般"1>" 可以简写成">",也就是默认重定向是重定向标准输出。标准输入重定向用"<",标准错误重定向用"2>",这样三个标准文件描述符都能正确的区分重定向了。
&符号在sHell中有几个意思,在2>&1中, &用做一个“转义符”,和1结合,"&1"一起表示标准输出。
那为什么需要&呢?1不是已经表示标准输出了吗?
那我们假设我们用这样sHell script:
cat file1 > outfile 2>1
那这样,系统就会认为,把标准错误输出到文件名是1的文件中。为了消除歧义,&1在这个情景下,才表示标准输出,否则单独的1,就是文件名为1的文件。
如果你看到一个script是:
cat file1 > outfile 2>&1 &
第二个&(command 最后的&),表示command在后台运行,意义与&1中的&不同。
如果想深入了解一下,可以继续阅读:
这个命令其实是一个dup2()调用。dup2的作用是复制一个现存的文件描述符。
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函数解析
linux shell 中"2>&1"含义
shell重定向输出(1>&2 2>&1 &>file >&file)
以上是大佬教程为你收集整理的【原】Linux shell script 2>&1是什么意思全部内容,希望文章能够帮你解决【原】Linux shell script 2>&1是什么意思所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。