macOS下用>>或tee重定向命令输出到文本文件出现乱码怎么办?
解决命令重定向输出出现退格乱码的问题
你遇到的N^HNA^HAM^HME^HE这类乱码,本质是ASCII退格字符(\b,显示为^H)。当命令检测到输出目标是终端时,会用这类控制字符实现动态输出效果(比如临时输出后修改内容),但重定向到文件/管道时,终端不会解析这些控制字符,导致它们被直接写入文件,就变成了乱码。
以下是几种解决方法:
用
col命令过滤控制字符:这是通用方案,适合所有产生控制字符的命令。col -b会删除所有退格和换行控制字符,保留纯文本内容:bundle --help | col -b >> temp.txt # 或用tee同时输出到终端和文件 bundle --help | col -b | tee temp.txt使用命令自带的纯文本输出参数:很多CLI工具提供了禁用控制字符的参数,比如
--no-color、--plain等,直接添加参数即可输出干净文本:# 以bundle为例,具体参数需参考对应命令的帮助 bundle --help --no-color >> temp.txt用
script模拟终端环境:如果前两种方法无效,script可以模拟终端让命令输出正常的文本,同时避免控制字符:# 直接输出到文件(无额外头信息) script -q -c 'bundle --help' /dev/null | tee temp.txt
内容的提问来源于stack exchange,提问作者stevec
相关产品推荐
相关产品推荐

