Linux设置cp命令显示进度条

1、前言

实现原理:
重新安装cp、mv命令,显示进度条

测试环境:Centos7.6

查看当前系统下的coreutils工具包的版本

rpm -qa | grep -w coreutils

当前版本8.22

2、下载coreutils安装包

不需要太新,8.32即可

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

3、下载补丁包

利用GitHub的开源项目advcpmv来实现cp与mv的进度条

http://github.com/jarun/advcpmv

下载版本:advcpmv-0.8-8.32.需要与coreutils安装的版本要保持一致
下载补丁包:

wget https://github.com/jarun/advcpmv/archive/refs/heads/master.zip

4、安装coreutils软件包和补丁包

先安装依赖包:

yum install gcc gcc-c++ unzip patch

解压软件包:

tar -Jxf coreutils-8.32.tar.xz
unzip master.zip

拷贝补丁包:
将补丁包拷贝到coreutils的安装目录下:

cp advcpmv-master/advcpmv-0.8-8.32.patch coreutils-8.32/

安装coreutils:
使用patch命令加载补丁包

cd coreutils-8.32
patch -p1 -i advcpmv-0.8-8.32.patch

安装coreutils软件包:

./configure FORCE_UNSAFE_CONFIGURE=1
make

5、替换原cp和mv命令

替换前先备份一下命令

cp /usr/bin/cp{,.bak}
cp /usr/bin/mv{,.bak}

因为原命令不在了,所以需要将新的命令复制到/usr/bin下面:

cd coreutils-8.32
src/cp src/cp /usr/bin/cp
src/cp src/mv /usr/bin/mv

修改配置文件设置别名,其实也可以不用设置别名,只要使用cp和mv的时候,手动加上-ig就能看到进度条了:

vim /etc/profile
#在文件末尾增加以下两行
alias cp='cp -ig'
alias mv='mv -ig'

使配置文件生效:

source /etc/profile

6、测试命令效果

cp
mv

这里直接用dd 命令快速生成一个1GB的文件:

dd if=/dev/zero of=filename bs=1M count=1000

然后复制查看效果:

cp filename filename1

image

posted @ 2024-05-05 16:24  nihinumbra  阅读(292)  评论(0编辑  收藏  举报