答案1
根据我的说法man curl
,-q
它并没有按照你想象的那样做:
-q, --disable
If used as the first parameter on the command line,
the curlrc config file will not be read and used.
See the -K, --config for details on the default
config file search path.
您可能想要使用选项-s
:
-s, --silent
Silent or quiet mode. Don't show progress meter or error messages.
Makes Curl mute. It will still output the data you ask for,
potentially even to the terminal/stdout unless you redirect it.
Use -S, --show-error in addition to this option to disable
progress meter but still show error messages.
答案2
这是常规的 curl 状态输出,仅在意外情况下显示。当将 curl 的输出重定向到文件(或终端以外的其他东西)时,您通常会看到这种进度条,在这种情况下,您需要选择-s
隐藏它。
现在进度条不应该当 curl 已经输出到终端时显示——这里的问题是由于 Windows 中“终端”的工作方式(尤其是当 MSYS 的 MinTTY 参与其中时),curl 实际上可能不理解它正在写入什么。
git-bash 使用 MSYS 工具包来模拟某些 Unix 功能——看起来你正在使用 MinTTY 终端,它可以在 Windows 本机控制台输入/输出之上执行各种操作来模拟 Unix 风格的“伪终端”功能,而这在传统上是有效的非常与 Unix tty 不同——很长一段时间以来,Windows 根本没有任何类似 Unix tty 设备的东西,因此为了实现类似 Unix 的“流”行为,MinTTY 很可能不得不使用管道。
因此,很可能只有专门为 MSYS 构建的程序才会将 MinTTY 识别为“终端”(即能够理解其模拟),而本机 Win32 程序(例如 Windows 内置的 curl.exe)将会看到输出附加到管道,就像在管道中使用 curl 一样,这会导致它激活进度条显示。
如果您使用 MSYS 版本的 curl.exe,它就不会出现,否则请-s
强制将其关闭。