Linux   发布时间:2022-04-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了【原】Linux shell script 2>&1是什么意思大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

先说结论, 2>&1 的意思是,把标准错误(stderr)重定向到标准输出(stdout) 如果想了解为什么,可以继续阅读: 1和2 是什么 sHell中,有一些常用的文件描述符(file descriptor): 0: 标准输入(stdin) 1: 标准输出(stdout) 2: 标准错误(stderr) 所以 2>&1 中的2就是标准错误,1就是标准输出。 > 符号是什么 ">" 是sHell
@H_607_7@
@H_197_14@
@H_197_14@

先说结论,

如果想了解为什么,可以继续阅读:

1和2 是什么

sHell中,有一些常用的文件描述符(file descriptor):

所以 2>&1 中的2就是标准错误,1就是标准输出

> 符号是什么

">" 是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)

@H_197_14@

大佬总结

以上是大佬教程为你收集整理的【原】Linux shell script 2>&1是什么意思全部内容,希望文章能够帮你解决【原】Linux shell script 2>&1是什么意思所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:1linuxshell什么意思
猜你在找的Linux相关文章
其他相关热搜词更多
phpJavaPython程序员load如何string使用参数jquery开发安装listlinuxiosandroid工具javascriptcap