为Linux的cp和mv命令添加进度条
为Linux的cp和mv命令添加进度条

为Linux的cp和mv命令添加进度条

内容纲要

为Linux的cp和mv命令添加进度条

我想拷贝一个大的文件,cp和mv可能是大家日常中使用最多的Linux命令之一。但是有一个突出的问题是这两个命令都不会有任何提示信息。看不到进度就很难受,介绍一个Gnu Coreutils(cp和mv的源代码包)的补丁Advanced Copy,用于给其增加进度条的功能。

Advanced Copy 是GNU cpGNU mv 程序的 mod 。它添加了一个进度条,并提供有关复制或移动文件和文件夹时发生的情况的一些信息。不仅是进度条,它还显示数据传输速率、估计剩余时间和当前正在复制的文件名。

下载和编译

wget http://ftp.gnu.org/gnu/coreutils/coreutils-9.0.tar.xz

tar xvJf coreutils-9.0.tar.xz

cd coreutils-9.0/

wget https://raw.githubusercontent.com/jarun/advcpmv/master/advcpmv-0.9-9.0.patch

#安装gcc和g++
sudo apt-get install g++
sudo apt-get install gcc

patch -p1 -i advcpmv-0.9-9.0.patch

export FORCE_UNSAFE_CONFIGURE=1

./configure

make

现在两个新的补丁的二进制文件即cpmv将在中创建coreutils-9.0/src的文件夹。只需将它们复制到你的 $PATH 中,如下所示:

cp ./src/cp /usr/local/bin/cpg
cp ./src/mv /usr/local/bin/mvg

使用

cpgmvg命令有现在进度条的功能。

每当你在复制或移动文件和目录时需要进度条时,只需添加-g如下标志:

$ cpg -g test.tar.gz test/

或使用--progress-bar标志:

$ cpg --progress-bar test.tar.gz test/

或使用--progress-bar标志:

$ cpg --progress-bar test.tar.gz test/

示例输出:

localhost:/home/data/wenjian/downloads# cpg -gR 111 home/data/wenjian1t/video/电视剧/

0 of 24 files copied (about  0h 32m 45s remaining)                                                                                                                         1.8 GiB /  53.8 GiB[======>                                                                                                                                                                              ]  3.4 %copying at  19.4 MiB/s (about  0h  0m 16s remaining)
111.MP4                                      1.8 GiB /   2.3 GiB[=================================================================================================================================================>                                   ] 80.7 %

在复制过程结束时,你将看到复制了多少文件、复制文件所用的时间以及每秒的数据传输速率。

1 files (  1.3 GiB) copied in 25.5 seconds ( 53.0 MiB/s).

要递归复制目录及其子目录,只需添加-R标志:

$ cpg -gR directory1/ directory2/

同样,要使用mv命令移动文件,请运行:

$ mvg -g nifi-1.14.0-bin.tar.gz test/

或者,使用--progress-bar标志:

$ mvg --progress-bar nifi-1.14.0-bin.tar.gz test/

要使用mv命令移动目录,请使用:

$ mvg -g directory1/ directory2/

你还可以创建别名。编辑~/.bashrc文件:

$ nano ~/.bashrc

在后添加以下几行:

alias cp='/usr/local/bin/cpg -gR'
alias mv='/usr/local/bin/mvg -g'

Ctrl+oCtl+x保存并关闭文件。

现在运行以下命令使更改生效:

$ source ~/.bashrc

从现在开始,你可以只使用没有(或)标志的cpmv命令。-g --progress-bar

请注意,原始程序不会被覆盖。你仍然可以随时通过/usr/bin/cp 或 呼叫他们 /usr/bin/mv

如果你经常复制或移动大量大文件和目录,推荐向cpmv命令添加进度条功能。

参考

https://zhuanlan.zhihu.com/p/273571991

https://z.itpub.net/article/detail/CF3376ECFEA0A659D48576FEEB954192

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注