Поиск

2 нояб. 2020 г.

Как добавить индикатор выполнения в команды cp и mv в Linux



Утилиты cp и mv используются для копирования и перемещения файлов и папок в операционной системе GNU / Linux. В этих двух утилитах отсутствует одна особенность - они не показывают индикатор выполнения. Если вы копируете большой файл или каталог, вы действительно не знаете, сколько времени займет процесс копирования, или какой процент скопированных данных. Вы не увидите, какой файл в данный момент копируется или сколько уже скопировано. Вы увидите только мигающий курсор и светодиодный индикатор жесткого диска. Благодаря Advanced Copy теперь мы можем добавить прогресс бар для cp и mv команд в Linux и показать прогресс бар при копировании и/или перемещения больших файлов и каталогов.

Advanced Copy является модом для  GNU cp и  GNU mv программ. Он добавляет индикатор выполнения и предоставляет некоторую информацию о том, что происходит при копировании или перемещении файлов и папок. Это не только индикатор выполнения, он также показывает скорость передачи данных, оставшееся время и имя файла, который в данный момент копируется. В конце вы увидите краткую сводку о том, сколько файлов скопировано и сколько времени потребовалось для копирования файлов.

Установите патч Advanced Copy, чтобы добавить индикатор выполнения в команды cp и mv в Linux. Команды 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 в папку с именем coreutils-8.32в текущем каталоге. Перейдите в ​​него:

$ cd coreutils-8.32/

Загрузите патч Advanced Copy с помощью следующей команды:

$ 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

Теперь в папке будут созданы два новых пропатченных двоичных файла cp и mv . Просто скопируйте их в свой $ PATH, как показано ниже:

$ sudo cp src/cp /usr/local/bin/cp

$ sudo cp src/mv /usr/local/bin/mv

Вот и все.

Когда вам понадобится индикатор выполнения при копировании или перемещении файлов и каталогов, просто добавьте -g флаг, как показано ниже:

$ cp -g archlinux.iso mydownload/

Или используйте --progress-bar флаг:

$ cp --progress-bar archlinux.iso mydownload/

В конце процесса копирования вы увидите, сколько файлов было скопировано, сколько времени потребовалось для копирования файла (ов) и скорость передачи данных в секунду. Красиво, не правда ли?

Чтобы рекурсивно скопировать каталог и его подкаталоги, просто добавьте -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'

Теперь выполните следующую команду, чтобы изменения вступили в силу:

$ source ~/.bashrc

С этого момента вы можете просто использовать команды cpили mvбез флага -g(или --progress-bar).

Обратите внимание, что оригинальные программы не перезаписываются. Вы все еще можете позвонить им в любое время с помощью  /usr/bin/cp или  /usr/bin/mv.

Добавление функциональных прогресс бар для cp и mv команд является хорошей идеей , если вы часто копируете или перемещаете много больших файлов и каталогов. Теперь вы можете видеть, что именно происходит при копировании и перемещении файлов, вместо того, чтобы смотреть на пустой экран.

Комментариев нет: