使用高级复制为 Linux 命令添加进度条

Linux 中的 cp 命令是一个非常好的程序,用于将文件和目录从一个位置复制到另一个位置。 同样,mv 命令可用于将文件从一个位置移动和重命名到另一个位置。 这两个命令都是 GNU CoreUtils 的一部分,并且在每个 Linux 发行版上都可用。

然而,这些命令缺少一些功能,虽然不是什么大问题,但开发人员可以轻松实现。

其中一项功能是进度条。

除非您在这些命令中使用详细标志 (-v),否则您无法通过其他方式了解传输进度。 如果您必须移动大量文件,即使是冗长的选项也会变得一团糟。

Advanced copy 是 GNU cp 和 mv 命令的模组,它只是为它们完成的所有传输添加了一个进度条。 在本教程中,我将向您展示如何在您的系统上安装和使用高级复制和移动工具,并创建一个 bash 别名以使其更容易使用。

安装高级副本

该工具在任何 Linux 发行版的存储库中均不可用,因此我们必须从源代码构建它。 只要确保你有 curl修补 命令安装在你的系统上(如果没有安装,你可以使用你的发行版的包管理器安装它)并从你的终端运行以下脚本:

curl https://raw.githubusercontent.com/jarun/advcpmv/master/install.sh --create-dirs -o ./advcpmv/install.sh && (cd advcpmv && sh install.sh)
脚本会自动安装 Advcp 命令

如果您在没有 root 权限的情况下运行此命令时遇到任何错误,您可以在从脚本构建之前先运行以下命令:

export FORCE_UNSAFE_CONFIGURE=1

调整和使用

命令已添加到 ./advcpv 目录中,该目录未添加到我们的 $PATH 中。 您可以将此目录添加到 $PATH 或简单地将文件移动到 /usr/local/bin 目录。 您可以通过键入以下命令来执行此操作:

sudo mv ~/advcpmv/advcp /usr/local/bin/cpg
sudo mv ~/advcpmv/advmv /usr/local/bin/mvg
移动 Bin 目录中的命令

最后,您可以添加 bash Bashrc 文件中的别名,以便终端始终分别使用 advmv 和 advcp 文件而不是 mv 和 cp。 类型:

echo alias cp=''/usr/local/bin/advcp -g' >> ~/.bashrc'
echo alias mv=''/usr/local/bin/advmv -g' >> ~/.bashrc'
制作终端别名以便更好地使用制作终端别名以便更好地使用

此屏幕截图中的第二个命令告诉终端读取我们在 bashrc 文件中设置的所有配置。 你不必输入命令,你可以 close 您的终端并重新打开它。 最后,像往常一样尝试移动或复制文件。

复制文件时进度条现在可见复制文件时进度条现在可见

如果你想递归地复制/移动一个目录,你可以使用 -R 标志和这样的命令:

advcp -gR path/to/source /path/to/destination
使用高级复制复制目录使用高级复制复制目录

如果您觉得这些命令没有帮助,那么您可以随时删除 /usr/本地/advcp/usr/本地/advmv 文件以卸载 Advanced Copy。 也可以调用原件 cpMV 通过键入命令 /usr/bin/cp/usr/bin/mv.

概括

高级复制似乎是对 cp 和 mv 命令的一个很棒的扩展。 令人遗憾的是,进度条功能不会向上流式传输到 cp 和 mv 命令中,因为 GNU coreutils 团队认为 cp 和 mv 命令功能完整。

我还觉得在官方存储库中添加这个命令会让人们更多地接触到它,因为并不是每个人都会从源代码构建它只是为了显示进度条。 另请注意,上面提到的脚本不会在“man”命令中为自己添加任何文档,因此您必须依赖 cp 或 mv 命令的手动输入或浏览他们的 GitHub 页面以了解更多信息。

参考

高级复制 – ADVCP GitHub 存储库