Lam*_*mnk 68 cp wget architecture
请注意,我不问如何。我已经知道像pv和这样的选项rsync -P。
我想问一下为什么不cp实现进度条,至少作为标志?
Gil*_*il' 70
unix 工具的传统是仅在出现问题时才显示消息。我认为这是出于设计和实际原因。该设计旨在在出现问题时使其显而易见:您会收到一条错误消息,并且不会淹没在实际上不提供信息的消息中。实际的原因是在 unix 的早期,仍然有电传打字机;也就是说,程序的输出将打印在纸上,而您不想打印进度条。
不管是什么原因,只显示有用消息的传统在 unix 世界中根深蒂固。现代工具有时会引入进度条;在 rsync 的情况下,主要动机是 rsync 经常通过网络执行,并且网络比本地磁盘脆弱得多,因此进度条更有用。同样的道理也适用于 wget。
Cal*_*leb 18
在 unix 世界中,每个工具都旨在完成一项工作并做得很好。cp当另一个工具pv已经有了它时,为什么还要担心输出进度?同样,为什么这么多程序在没有任何分页的情况下将内容转储到屏幕上?因为已经有用于该工作的工具,例如more(或less)。为什么大多数需要编辑文件的程序不为您提供编辑器,而是外包给您$EDITOR?因为这让每个人都完成他们设计的一项任务,而用户则使用他们最喜欢的编辑器来完成所有任务。
切线地,大多数 shell 程序都被设计为将它们的输出通过管道传输到其他 shell 程序中。他们可能给出的唯一输出是在链中的下一个命令中解析出有用的东西。类似cp的程序在脚本中使用,也可以从终端手动使用,因此其输出集中在退出代码和失败或成功的文件列表上。
总是期望结合工具来实现您想要的效果。
这是那些支持和反对向 cp 添加进度条选项的边缘事物之一。反对的主要论点是,您可能无法提前知道您想了解进度。Ctrl-T/SIGINFO 在 BSD 上可用于此目的,如果在 GNU/Linux 平台上可用,那么可能有更多理由触发 cp 中的进度条逻辑。同时,更通用的解决方案是使用单独的工具,例如Coreutils Progress Viewer(progress以前称为cv)来显示系统上任何进程的状态。