cargo build日志重定向至文件失败,如何正确输出构建日志?
问题原因
cargo build --verbose的构建日志默认输出到标准错误流(stderr),你用的>符号仅重定向了标准输出流(stdout),stderr的内容并没有被写入build.log,所以文件是空的。
正确的命令写法
有两种常用方式可以把所有构建日志写入文件:
- 同时重定向标准输出和标准错误到同一个文件:
这里cargo build --verbose > build.log 2>&12>&1的作用是将stderr(文件描述符2)的内容重定向到stdout(文件描述符1)的输出目标,也就是build.log。 - 简化写法(bash 4及以上版本支持):
这个命令和上面的效果完全一致,只是写法更简洁。cargo build --verbose &> build.log
如果只想单独捕获错误日志,也可以直接重定向stderr:
cargo build --verbose 2> build.log
内容的提问来源于stack exchange,提问作者Dolphin
相关产品推荐
相关产品推荐

