为什么Linux重定向操作符无法捕获go-sigma-rule-engine的命令输出
问题诱因
大部分Go语言开发的CLI工具(包括你使用的go-sigma-rule-engine)默认会将INFO、WARN、ERROR等不同级别的日志内容输出到**标准错误流(stderr)**而非标准输出流(stdout)。你使用的>重定向符默认仅会捕获stdout的内容,stderr的内容依旧直接输出到终端屏幕,所以最终生成的output.txt文件为空。
可用解决方案
你可以通过shell重定向规则调整流捕获范围,有以下几种常用方案:
- 方案1:将stdout和stderr同时写入文件
使用兼容POSIX标准的重定向写法即可捕获全部输出:
也可以使用bash/zsh支持的简化写法:./gsre/go-sigma-rule-engine run --rules-dir ./gsre/rules/ --sigma-input ./logs/exampleLog.json > output.txt 2>&1./gsre/go-sigma-rule-engine run --rules-dir ./gsre/rules/ --sigma-input ./logs/exampleLog.json &> output.txt - 方案2:同时保留屏幕输出和文件存储
如果需要一边运行一边在终端查看输出,同时将内容写入文件,可以结合tee命令实现:./gsre/go-sigma-rule-engine run --rules-dir ./gsre/rules/ --sigma-input ./logs/exampleLog.json 2>&1 | tee output.txt
内容的提问来源于stack exchange,提问作者Prithvi Boinpally
相关产品推荐
相关产品推荐

