我正在使用 Shake,调用wget
下载文件。如果我在命令行上执行此操作,我会看到一个单行进度条,但是当从 Shake 调用时,我会看到很多行点。举个例子:
shake shakeOptions $
action
(cmd "wget http://hackage.haskell.org/packages/index.tar.gz" :: Action ())
我希望它显示单行进度条。
我正在使用 Shake,调用wget
下载文件。如果我在命令行上执行此操作,我会看到一个单行进度条,但是当从 Shake 调用时,我会看到很多行点。举个例子:
shake shakeOptions $
action
(cmd "wget http://hackage.haskell.org/packages/index.tar.gz" :: Action ())
我希望它显示单行进度条。
解决方案是:
shake shakeOptions{shakeLineBuffering=False} $
action
(cmd "wget http://hackage.haskell.org/packages/index.tar.gz --progress=bar:force" :: Action ())
这里有两件事:
1)wget
检测到它没有直接发送到控制台(因为cmd
使用管道捕获输出),并关闭进度条。使用wget
,您可以使用 重新打开它--progress=bar:force
。
2) 完成此操作后,进度条实际上不会显示,因为 Shake 默认打开行缓冲(它有助于并行运行的命令显示较少的交错输出),并且进度条仅在一行内更新。您可以通过设置选项来解决此问题
shakeLineBuffering=False
。