Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 帮助我理解ABS指南中bash中的这个简单io重定向_Linux_Bash_Unix_Shell - Fatal编程技术网

Linux 帮助我理解ABS指南中bash中的这个简单io重定向

Linux 帮助我理解ABS指南中bash中的这个简单io重定向,linux,bash,unix,shell,Linux,Bash,Unix,Shell,我到了FD3关闭的第三条线路 怀疑:第1行将fd 3重定向到全球标准输出。。。对吗? 问题:第二行发生了什么?如果可能,请提供详细的解释。重定向是从外部命令到内部命令,并在命令内从左到右进行的。因此,ls-l2>&1>&33>&-最初将标准输出获取到管道。然后,stderr被重定向到管道,stdout成为原始stdout(未管道),额外的fd被关闭。因此,ls-l的常规输出保持不变,包含“bad”的错误输出行被发送到stdout,其余的错误输出被丢弃。这可能是我发现的最好的错误输出。每当我看到一

我到了FD3关闭的第三条线路

怀疑:第1行将fd 3重定向到全球标准输出。。。对吗?

问题:第二行发生了什么?如果可能,请提供详细的解释。

重定向是从外部命令到内部命令,并在命令内从左到右进行的。因此,
ls-l2>&1>&33>&-
最初将标准输出获取到管道。然后,stderr被重定向到管道,stdout成为原始stdout(未管道),额外的fd被关闭。因此,
ls-l
的常规输出保持不变,包含“bad”的错误输出行被发送到stdout,其余的错误输出被丢弃。

这可能是我发现的最好的错误输出。每当我看到一些时髦的重定向发生时,我都会引用它来帮助我度过难关。

尽管人们可以用*sh中的附加描述符来做复杂的把戏,但这是否应该对下一步必须阅读它的可怜的schlub(例如你)做不太确定。@msw我正在查看您的个人资料,您似乎对Linux/UNIX shell等有很好的了解。我尊重您的这一点,但我不感谢您称我为傻瓜。如果你帮不了忙,请把你的俏皮话留给你自己。我也是一个可怜的笨蛋,以后经常要重新阅读我自己的代码。我很抱歉你把我的评论当成了个人的评论,因为它是泛泛的,有点自嘲的意思,当然也没有侮辱的意思。我的个人资料大部分都是虚构的,除了我在周围的时间太长。@msw,别担心。我看到了schlub的字典意思,不喜欢它。很抱歉,我仓促下结论。我尊重你所拥有的一切知识。感谢您的评论/回复。最好。谢谢。但是:这个
exec 3>&1
如何保存标准输出的当前值?第一行将fd 3分配给fd 1,然后第二行将fd 1分配给fd 3?这是什么意思?我不明白。为什么在第二行中关闭fd 3两次?fd 3关闭两次是因为两个新进程都有自己的副本。我阅读了教程并进行了分析。这是我得到的:对于ls:0到终端,1到终端,2到管道。对于grep:0到管道,1到终端,2到终端。是吗?这篇文章内容丰富!!我阅读了教程并做了分析。这是我得到的:对于ls:0到终端,1到终端,2到管道。对于grep:0到管道,1到终端,2到终端。正确的?
exec 3>&1                           # Save current "value" of stdout.  
ls -l 2>&1 >&3 3>&- | grep bad 3>&- # Close fd 3 for 'grep' (but not 'ls').  
#              ^^^^   ^^^^
exec 3>&-                           # Now close it for the remainder of the script.