You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在将程序输出写入压缩文件的同时在终端保留可读输出?

如何在将程序输出写入压缩文件的同时在终端保留可读输出?

这个需求真的太实用了!我之前处理海量日志输出的时候也碰到过一模一样的问题——既要实时看正常的输出内容,又不想让生成的日志文件占满磁盘空间。其实用tee配合进程替换就能轻松搞定,不用折腾复杂的工具链。

直接给你改好的命令,拿你举的例子来说:

python -c 'for i in range(0, 100): print("A" * 120)' | tee >(gzip --best > A.log.gz)

简单解释下原理:

  • tee的作用本来就是把输入同时复制到多个输出端,默认是终端+普通文件;
  • >(...)是shell的进程替换语法,它会创建一个临时管道,把tee的其中一份输出传给括号里的gzip命令处理,压缩后写入A.log.gz;
  • 而tee的另一份输出会直接流向你的终端,保持原始的可读格式,完全不会出现压缩后的乱码。

扩展小技巧:

  • 如果想换用其他压缩工具(比如压缩率更高的xz或者老牌的bzip2),直接替换gzip --best就行,比如:
    python -c 'for i in range(0, 100): print("A" * 120)' | tee >(xz -9 > A.log.xz)
    
  • 要是输出内容太多刷得太快,还可以配合less分页查看,同时不影响压缩文件的生成:
    python -c 'for i in range(0, 100): print("A" * 120)' | tee >(gzip --best > A.log.gz) | less
    

这样运行之后,你既能实时看到所有的"A"字符串,又能得到体积小巧的压缩日志文件,完美兼顾了监控和存储需求~

备注:内容来源于stack exchange,提问作者FalcoGer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.23 10:14:10