cp和mv可能是您日常生活中最常用的Linux命令之一。但是有一个突出的问题就是这两个命令不会有任何提示信息,在操作大文件时只能等待。可能大家都对此习以为常,但其实是有解决办法的。本篇介绍GnuCoreutils的一个patchAdvancedCopy(cp和mv源码包),用于给它添加进度条的功能。AdvancedCopy是一个cp和mv程序mod。它为cp和mv增加了一个进度条,在文件(文件夹)复制或移动操作时,提供进度条、数据传输速率、预计剩余时间、当前操作的文件名等信息。最后,提供操作的信息摘要,显示操作了多少文件以及操作花费了多长时间。cp和mv命令是GNUcoreutils的一部分。为了给它添加插件,你需要下载源代码并编译安装。我们可以从GNU软件ftp或者通过源代码Git仓库cgit,或者镜像站gitweb和GitHub下载coreutils,最新版本是8.32。curl-Oftp.gnu.org/gnu/coreutils/coreutils-8.32.tar.xz使用如下命令解压源码包:tarxvJfcoreutils-8.32.tar.xz这样所有的源码都会解压到coreutils-8.32文件夹。cdcoreutils-8.32/AddAdvancedCopypatchtoit(downloadgithubthroughgithubwarehouse:jarun/advcpmv):在下载的补丁包中添加补丁,使用如下命令打补丁:patch-p1-i../advcpmv/advcpmv-0.8-8.32.patch编译运行编译程序,对打补丁的源码目录编译./configuremake编译完成后会在编译目录coreutils-8.32/src文件夹下生成应用程序cp和mv。要使用添加系统路径,只需像这样将它们复制到系统的$PATH中:sudocpsrc/cp/usr/local/bin/cpsudocpsrc/mv/usr/local/bin/mv所以cp和mv命令带有进度条的功能。当您在复制或移动文件和目录时需要进度条时,只需添加-g参数或--progress-bar标志:cp-garchlinux.isomydownload/cp--progress-bararchlinux.isomydownload/即可显示进度条:Copyingat2??5.7MiB/s(about0h0m1sremaining)archlinux.iso568.1MiB/646.0MiB[==============================================>]87.9%复制过程结束时,可以看到复制了多少个文件,复制文件用了多长时间,以及每秒的数据传输速率.1files(305.0MiB)copyedin1.8seconds(172.2MiB/s)要递归复制目录及其子目录,只需添加-Rflag:cp-gRdirectory1/directory2/同样,要使用mv命令移动文件,运行:mv-garchlinux.isomydownload/或者,使用--progress-bar标志:mv--progress-bararchlinux.isomydownload/要使用mv命令移动目录,还可以使用-g参数:mv-gdirectory1/directory2/添加别名你可以还创建一个别名来保存一些按钮。编辑~/.bashrc文件:在vim~/.bashrc末尾添加如下一行:aliascp='/usr/local/bin/cp-gR'aliasmv='/usr/local/bin/mv-g'按Shift+zz保存并关闭文件。现在运行source命令使更改立即生效:source~/.bashrc此命令在cp或mv中默认带有-g(或--progress-bar)标志,无需手动增加标志。要默认使用没有精度栏的程序,可以使用/usr/bin/cp或/usr/bin/mv。小结如果你经常复制或移动很多大文件和目录,在cp和mv操作中加入进度条功能是一个非常有用的功能。在这篇文章中,我们介绍了一个高级复制补丁来实现这个功能,让我可以随时了解操作情况,而不是傻傻地等待。
