考虑以下简单的程序,并假设它位于名为Test.c
的文件中。
#include <stdio.h>
int main(){
fprintf(stdout, "Hello stdout\n");
fprintf(stderr, "Hello stderr\n");
}
假设我将这个程序编译成一个名为
Test
的可执行文件,并按以下方式运行它。./Test > Out 2> Err
在此次运行结束后,我将会得到两个文件
Out
和Err
,它们分别包含着两条信息。这是很好的,因为我可以有两种不同类型的信息正常地输出到控制台,然后通过使用bash重定向来筛选其中一个或者两个。然而,我只能用两个文件描述符来进行这种类型的筛选似乎非常受限。
是否有某种方法可以打开第三个或更多的文件描述符,使其指向终端输出,以便我可以单独筛选它?
语法可能如下所示。./Test > Out 2> Err 3> Err2
我猜测
bash
可能会支持这个功能,因为以下测试似乎意味着 bash
会将 &
后面的数字视为文件描述符。$ ./Test >&2
Hello stdout
Hello stderr
$ ./Test >&3
bash: 3: Bad file descriptor