Можно ли изменить единицу измерения, отображаемую на измерителе скорости передачи в pv?

perl -pale '$_ = join ".", reverse ++$h{$F[0]}, scalar keys %h'

Хэш % h содержит keyA => count и скалярные ключи.% H возвращает количество ключей в любой момент во время. Затем переворачиваем результат и соединяем их запятой.

Результат

1.1
1.2
1.3
1.4
2.1
2.2
2.3
3.1
3.2
3.3
3.4
1
23.03.2016, 04:52
1 ответ

В Linux хорошо то, что у вас есть доступ к исходным текстам, поэтому почти всегда можно что-то изменить, чтобы сделать то, что вы хотите сделай, если приложишь усилия.

В этом случае нетрудно загрузить исходники и просмотреть их, чтобы увидеть, очевидно ли, что нужно изменить. Затем просто перестройте свой собственный двоичный файл pv . Если вы используете систему на основе rpm , попробуйте следующее (как обычный пользователь):

$ yumdownloader --source pv

(Это должно работать, даже если у вас dnf вместо yum). У вас должен получиться файл с суффиксом .src.rpm . Остальная часть названия будет отличаться в зависимости от вашего выпуска. Установите и скомпилируйте его:

$ rpm -i pv-1.6.0-1.fc22.src.rpm
$ rpmbuild -bc ~/rpmbuild/SPECS/pv.spec

Вам не нужно быть пользователем root для установки исходников, поскольку они помещены в ~ / rpmbuild . Однако вам может потребоваться установить rpmbuild и другие пакеты для выполнения компиляции. Вы должны получить нормальный финальный двоичный pv в:

$ file ~/rpmbuild/BUILD/pv-1.6.0/pv

Grep через источники, например, MiB, чтобы найти вероятное изменение. Я нашел ~ / rpmbuild / BUILD / pv-1.6.0 / src / pv / display.c имеет подпрограмму pv__si_prefix () , которая принимает параметр is_bytes , который определяет, следует ли делить на 1000 или 1024. Я просто отредактировал эту процедуру, чтобы установить значение 0, добавив

is_bytes = 0;

​​сразу после объявлений (перед if (is_bytes) {). Затем выполните make , чтобы перекомпилировать двоичный файл следующим образом:

$ cd ~/rpmbuild/BUILD/pv-1.6.0/
$ make

Новый файл pv должен делать то, что вы хотите.


В системе упаковки deb вам необходимо выполнить аналогичные шаги:

$ sudo apt-get install dpkg-dev debhelper
$ apt-get source pv
$ cd pv-1.6.0/
$ dpkg-buildpackage -b -nc
  ...  edit src/pv/display.c
$ make
1
27.01.2020, 23:48

Теги

Похожие вопросы