我正在尝试执行以下操作:
exec &>filename
在此之后,我看不到任何内容,包括我键入的内容。
我疯狂地尝试了exec 1>&1
和exec 2>&2
,但没有任何反应。
现在,在不终止shell的情况下,如何将输出分别重定向到stdout和将错误重定向到stderr?文件描述符是引用标准[in | out] put和stderr的唯一方法吗?
运行后exec &>filename
,shell的标准输出和标准错误转到filename
。根据定义,标准输入为文件描述符0,标准输出为fd 1,标准错误为fd 2。
文件描述符既不是重定向的也不是非重定向的:它总是放在某个地方(假设进程打开了该描述符)。重定向文件描述符意味着更改它的位置。当您运行时exec &>filename
,stdout和stderr以前已连接到终端,然后已连接到filename
。
总有一种方法可以引用当前终端:/dev/tty
。当进程打开此文件时,无论它是哪个,它始终表示进程的控制终端。因此,如果您想找回该外壳程序的原始stdout和stderr,则可以这样做,因为它们所连接的文件仍然存在。
exec &>/dev/tty
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句