高级复制 - 添加进度条到Linux中的CP和MV命令中
"GNU CP"和"GNU MV"工具用于复制和移动GNU/Linux操作系统中的文件和目录。
这两个实用程序中的一个缺少功能是他们没有向我们展示任何进度条。
如果复制大文件或者目录,则我们真的不知道复制过程需要多长时间才能完成,或者复制的数据百分比。
我们将不会看到当前正在复制哪个文件,或者已复制多少文件。
所有我们将看到的只是闪烁的光标和硬盘驱动器LED指示灯。
感谢"GNU Coreutils"的补丁,我们现在可以将进度列添加到Linux中的"CP"和"MV"命令,并在复制和/或者移动大文件和目录时显示进度列。
高级复制是"GNU CP"和"GNU MV"程序的Mod。
它添加了一个进度条,并提供有关复制或者移动文件和文件夹时发生的内容的一些信息。
不仅是进度列,它还显示了数据传输速率,剩余估计的时间和当前正在复制的文件名。
最后,我们将看到有关复制的文件的简短摘要以及复制文件所需的时间。
安装'高级复制'修补程序将进度列添加到Linux中的CP和MV命令
CP和MV命令是"GNU Coreutils"的一部分。
因此,我们需要从这里下载最新的"GNU Coreutils"。
$wget http://ftp.gnu.org/gnu/coreutils/coreutils-8.32.tar.xz
使用命令提取下载的存档:
$tar xvJf coreutils-8.32.tar.xz
此命令将在当前目录中的名为'coreutils-8.32'的文件夹中提取coreutils存档。
CD进入其中:
$cd coreutils-8.32/
使用以下命令下载高级复制补丁:
$wget https://raw.githubusercontent.com/jarun/advcpmv/master/advcpmv-0.8-8.32.patch
最后,通过逐个运行以下命令来应用修补程序:
$patch -p1 -i advcpmv-0.8-8.32.patch
$./configure
$make
现在将在'cororutils-8.32/src'文件夹中创建两个新修补的二进制文件即'cp'和'mv'。
只需将它们复制到$LACK,如下所示:
$sudo cp src/cp /usr/local/bin/cp
$sudo cp src/mv /usr/local/bin/mv
"CP"和"MV"命令现在具有进度条功能。
每当我们想要复制或者移动文件和目录时想要进度列时,只需添加以下"-g"标志:
$cp -g archlinux.iso mydownload/
或者使用'--progress-bar'标志:
$cp --progress-bar archlinux.iso mydownload/
示例输出:
Copying at 25.7 MiB/s (about 0h 0m 1s remaining) archlinux.iso 568.1 MiB/646.0 MiB [=========================================================================> ] 87.9 %
在副本进程结束时,我们将看到复制了多少个文件,复制文件需要多长时间,并且每秒数据传输速率。
很好,不是吗?
1 files (646.0 MiB) copied in 11.8 seconds ( 54.7 MiB/s).
要递归复制目录及其子目录,只需添加'-r'标志:
$cp -gR directory1/directory2/
同样,要使用"MV"命令移动文件,请运行:
$mv -g archlinux.iso mydownload/
或者,使用'--progress-bar'标志:
$mv --progress-bar archlinux.iso mydownload/
要使用"MV"命令移动目录,请使用:
$mv -g directory1/directory2/
我们还可以创建别名以保存几个关键笔程。
为此,请编辑"~/.bashrc"文件:
$nano ~/.bashrc
结束添加以下行:
alias cp='/usr/local/bin/cp -gR' alias mv='/usr/local/bin/mv -g'
按"Ctrl + O"和"CTL + X"保存并关闭文件。
现在运行以下命令以生效更改:
$source ~/.bashrc
从现在开始,我们只能使用'-g'(或者'--progress-bar')标志的'cp'或者'mv'命令。
请注意,原始程序不会被覆盖。
我们仍然可以通过'/usr/bin/cp'或者'/usr/bin/mv'随时调用它们。
如果我们经常复制或者移动大量大文件和目录,将进度条形图和"MV"命令添加到"CP"和"MV"命令是一个好主意。
我们现在可以看到复制和移动文件时究竟发生了什么,而不是盯着屏幕。