简介
cp和mv可能是大家日常中使用最多的Linux命令之一。但是有一个突出的问题是这两个命令都不会有任何提示信息,这在操作大文件时候只能干等。可能大家对此已经习以为常,但是其实上也有解决解决方法,本文我们就介绍一个Gnu Coreutils(cp和mv的源代码包)的补丁Advanced Copy,用于给其增加进度条的功能。
Advanced Copy是cp和mv 程序mod。它通过给cp和mv添加了一个进度条,在进行文件(夹)复制或移动操作时候提供进度条,数据传输速率,估计的剩余时间以及当前正在操作文件名等信息。最后,还会提供一个操作的信息摘要显示操作多少个文件以及操作花费多长时间。
安装
前置依赖
安装前需要先安装以下工具:
yum install -y patch # 打补丁工具 yum install -y gcc-c++ # C编译器 yum install -y make # C构建工具
在执行脚本的过程中可能会遇到以下错误:
checking whether mknod can create fifo without root privileges... configure: error
需要临时修改一下设置:
export FORCE_UNSAFE_CONFIGURE=1
安装脚本
advcpmv
jarun • Updated Aug 30, 2023
curl https://raw.githubusercontent.com/jarun/advcpmv/master/install.sh --create-dirs -o ./advcpmv/install.sh && (cd advcpmv && sh install.sh) # 分解步骤 curl https://raw.githubusercontent.com/jarun/advcpmv/master/install.sh --create-dirs -o ./advcpmv/install.sh cd advcpmv sh install.sh
使用
增加系统路径
- 不覆盖原始的cp和mv命令:
sudo mv ./advcpmv/advcp /usr/local/bin/cpg sudo mv ./advcpmv/advmv /usr/local/bin/mvg # 使用 cpg -g mvg -g
- 覆盖原始的cp和mv命令:
只需将它们复制到系统的$PATH中,如下所示:
sudo cp src/cp /usr/local/bin/cp sudo cp src/mv /usr/local/bin/mv
这样cp和mv命令就附带了进度条的功能。在复制或移动文件和目录时需要进度条,只需添加-g参数或者--progress-bar标志:
cp -g archlinux.iso mydownload/ 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 %
在复制过程结束时,可以看到复制了多少文件,复制文件花费了多长时间以及每秒的数据传输速率。
要递归复制目录及其子目录,只需添加-Rflag:
cp -gR directory1/ directory2/
同样,要使用mv命令移动文件,请运行:
mv -g archlinux.iso mydownload/
或者,使用--progress-bar标志:
mv --progress-bar archlinux.iso mydownload/
要使用mv命令移动目录,同样使用-g参数:
mv -g directory1/ directory2/
添加别名
- 不覆盖原始的cp和mv命令:
sudo mv ./advcpmv/advcp /usr/local/bin/ sudo mv ./advcpmv/advmv /usr/local/bin/ echo alias cp '/usr/local/bin/advcp -g' >> ~/.bashrc echo alias mv '/usr/local/bin/advmv -g' >> ~/.bashrc source ~/.bashrc
- 覆盖原始的cp和mv命令:
还可以创建别名以保存一些按键。编辑~/.bashrc文件:
alias cp='/usr/local/bin/cp -gR' alias mv='/usr/local/bin/mv -g' source ~/.bashrc
这样在cp或mv默认就附带-g(或--progress-bar)标志的命令,而无需手动增加该标志。
要使用默认不带精度条的程序,可以通过
/usr/bin/cp
或 /usr/bin/mv
使用即可。