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

如何使用Cabal运行可执行文件且无额外输出?

解决cabal run冗余输出的问题

以下几种方法可以避免cabal的冗余输出混入你的程序输出文件:

  • 直接运行已构建的可执行文件
    先执行构建命令完成编译:

    cabal build exe:output-test
    

    构建完成后,找到dist-newstyle目录下生成的可执行文件(路径类似你示例中的/private/tmp/output-test/dist-newstyle/build/x86_64-osx/ghc-9.4.4/output-test-0.1.0.0/x/output-test/build/output-test/output-test),直接运行该文件并将输出重定向到目标文件:

    ./dist-newstyle/build/x86_64-osx/ghc-9.4.4/output-test-0.1.0.0/x/output-test/build/output-test/output-test > result.txt
    
  • 分离cabal输出与程序输出
    cabal的构建/状态信息默认输出到标准错误(stderr),而你的程序输出通常到标准输出(stdout)。利用这一点,你可以只重定向stdout到文件,同时将stderr丢弃:

    cabal run exe:output-test > result.txt 2>/dev/null
    

    这样程序的输出会保存到文件,cabal的冗余信息不会出现在终端也不会混入文件。

  • 使用cabal exec运行已构建程序
    如果已经完成过构建,使用cabal exec可以在项目环境中直接运行可执行文件,不会产生构建相关的输出:

    cabal exec -- output-test > result.txt
    

内容的提问来源于stack exchange,提问作者Noughtmare

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 07:52:16