如何在Linux终端禁用gcc错误颜色 避免输出存文件时出现特殊字符
问题解决方法
你可以根据需求选择禁用颜色输出,或者保留颜色格式两类方案:
方案一:禁用颜色输出,生成纯文本无特殊字符的文件
方法1:给gcc传递颜色禁用参数
直接在gcc编译命令中添加 -fdiagnostics-color=never 参数,即可强制关闭gcc的诊断信息颜色输出,示例:
gcc -fdiagnostics-color=never your_code.c 2>&1 | tee build.log
如果是通过make编译,可直接在make命令中注入编译参数:
make CFLAGS="-fdiagnostics-color=never" CXXFLAGS="-fdiagnostics-color=never" 2>&1 | tee build.log
方法2:临时修改环境变量禁用颜色
执行命令前将GCC_COLORS环境变量置空,gcc会自动关闭颜色输出,不需要修改原有编译命令:
GCC_COLORS= your_command 2>&1 | tee filename.txt
方法3:管道过滤颜色控制码
如果不想修改编译相关命令,可以直接在管道中用sed删除ANSI颜色控制字符:
your_command 2>&1 | sed 's/\x1b\[[0-9;]*m//g' | tee filename.txt
方案二:保留颜色格式,可正常查看带颜色的输出
你观察到的特殊字符是标准ANSI颜色控制码,不需要额外处理,直接用支持ANSI转义码的工具打开文件即可正常显示颜色,看不到特殊字符:
- 终端中直接用
cat filename.txt即可查看带颜色的输出 - 如需后续转成纯文本,可安装
ansi2txt工具执行转换:cat filename.txt | ansi2txt > plain_text.txt
内容的提问来源于stack exchange,提问作者Anirudh _k
相关产品推荐
相关产品推荐

