是否可以在将cout重定向到outfile时cout到终端?

zeb*_*man 5 c++ bash shell redirect cout

我正在运行一个程序并重定向cout到一个outfile,如下所示:

./program < infile.in > outfile.o  
Run Code Online (Sandbox Code Playgroud)

我希望能够从命令行读取选项('-h'或'--help')并向终端输出帮助消息.有没有办法可以做到这一点,但仍然有cout其他程序的常规转到outfile?

cout要使用这样的事情合适的对象?

mea*_*gar 15

您应该使用cerr将帮助消息输出到STDERR,这不包含在重定向到outfile.o中.

鉴于./program < infile.in > outfile.o:

cout << "This writes to STDOUT, and gets redirected to outfile.";
cerr << "This doesn't get redirected, and displays on screen.";
Run Code Online (Sandbox Code Playgroud)

如果,稍后,您想要重定向STDOUT和STDERR,您可以这样做

./program < infile.in &> outfile.o
Run Code Online (Sandbox Code Playgroud)

如果要仅重定向STDERR,但允许显示STDOUT,请使用

./program < infile.in 2> outfile.o
Run Code Online (Sandbox Code Playgroud)

Bash重定向比大多数人意识到的更复杂,并且除了最简单的形式(">")之外的所有内容都会被忽略.