如何将set -x输出的所有执行命令信息写入指定文件?
Shell命令追踪输出写入指定文件的实现方法
直接全局重定向追踪输出
set -x的追踪日志默认输出到标准错误(stderr),可以通过重定向stderr直接将所有追踪内容写入文件,无需逐命令处理:
- 交互式Shell环境下:
执行后所有set -x exec 2> /path/to/your/trace.logset -x的追踪信息都会写入目标文件,不再打印到终端。 - Shell脚本中,直接在开头添加:
#!/bin/bash set -x exec 2> /path/to/your/trace.log # 后续脚本命令
局部命令追踪写入文件
若只需追踪某一段命令,可使用子Shell包裹目标命令,同时重定向stderr:
( set -x # 这里放置需要追踪的命令示例 ls -l mkdir test_dir ) 2> /path/to/partial_trace.log
仅子Shell内的命令追踪内容会写入文件,不影响外部Shell的正常输出。
同时保留终端输出与文件记录
如果需要既在终端查看追踪内容,又将其写入文件,可借助tee命令实现:
set -x exec 2> >(tee -a /path/to/trace.log)
tee -a以追加模式写入文件,同时将内容输出到终端(原stderr输出目标)。
提示:执行set +x可关闭命令追踪模式。
内容的提问来源于stack exchange,提问作者angrylittlebird
相关产品推荐
相关产品推荐

