linux 重定向标准输出标准输入到文件

linux 重定向 标准输出 标准输入到文件,测试程序用C语言,执行程序名为test_out

#include <stdio.h>
int main(int argc, char const *argv[])
{
  fprintf(stderr, "%s\n", "this is stderr");
  fprintf(stdout, "%s\n", "this is stdout");
  return 0;
}

测试1

$> test_out
=> stderr
=> stdout

测试2

$> test_out > out.log
=> stderr
文件 out.log中存放内容为stdout

测试3

$> test_out 2> err.log
=> stdout
文件 out.log中存放内容为stderr

测试4(常见写法,定义标准输出、标准错误到文件)

$> test_out > stdout_stderr.log 2>&1
文件 stdout_stderr.log中存放内容为
stderr
stdout

测试5 (标准输出/错误侧漏了)

$> test_out > stdout_stderr.log 1>&2
=> stderr
=> stdout
文件 stdout_stderr.log中存放内容为stdout

测试6 (等效于测试4,如果你能想到这么写,说明你已经彻底明白stderr/stdout了,并明白在shell里执行方式)

$> test_out 2> stdout_stderr.log 1>&2
文件 stdout_stderr.log中存放内容为
stderr
stdout