1>&2, 2>&1, &>

网友投稿 616 2022-08-27

1>&2, 2>&1, &>

1>&2, 2>&1, &>

进行一个标准输出、标准错误输出分流的试验:

edemon@ubuntu1:~/workspace$ ./test.shhello world./test.sh: line 3: pt: command not foundedemon@ubuntu1:~/workspace$ ./test.sh 1>out 2>erredemon@ubuntu1:~/workspace$ vim -O out err2

现在尝试直接重定向标准错误到标准输出: ​​​edemon@ubuntu1:~/workspace$ ./test.sh 2>1​​

但是很遗憾,出现这样的结果: ​​​hello world​​

接着我们能发现一个新的文本1,并在文件1中发现错误信息。 bash将1当做了一个普通文件。 使用​​​2 >& 1​​是为了避免这样的坏事发生。

edemon@ubuntu1:~/workspace$ ./test.sh 2 >& 1hello world./test.sh: line 3: pt: command not found# 或者改成:edemon@ubuntu1:~/workspace$ ./test.sh 2>/dev/stdouthello./test.sh: line 3: pt: command not

能在2的前面加上&吗?不能,bash会将sh脚本在后台执行。

edemon@ubuntu1:~/workspace$ ./test.sh &2 >& 1[1] 3497hello world./test.sh: line 3: pt: command not found2: command not found[1]+ Exit 127

总结: 1和2是文件描述符,而不是文件,需要加上&告诉bash。

例如:

$ cat readthis is a story about herotext block# 创建文件描述符3$ exec 3

1>&2 意思是把标准输出重定向到标准错误. 2>&1 意思是把标准错误输出重定向到标准输出。

​​&>​​​是​​2>&1 >​​的缩写

&>filename 意思是把标准输出和标准错误输出都重定向到文件filename中

例如:

$ cat read 2>&1 > read1$ cat read1this is a story about herotext block$ cat /dev/null > read1$ cat read &> read1$ cat read1this is a story about herotext

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:SDL 加载显示JPEG图片
下一篇:【github notepad】QT 自动备份,(正则表达式)搜索替换
相关文章

 发表评论

暂时没有评论,来抢沙发吧~