by jesse

Ich hatte mich schon immer gefragt, ob man bei cp oder mv nicht auch eine Fortschrittsanzeige einbauen könnte. In den famosen Gentoo Foren bin ich dann tatsächlich fündig geworden. Die Patches waren in einigen Versionen der coreutils enthalten, allerdings auf Dauer nicht von den Upstream Maintainern geduldet worden.

I have mixed feelings about progress bars. I do like the progress bars in rsync, but am reluctant to embed such functionality in fundamental programs like cp and mv. I’d like to avoid adding any unnecessary complexity. When having a progress bar is important, can you use rsync?
Jim Meyering

Hm. Ist ein Wort. Kann man so sehen, muss man aber nicht. Die Patches werden nach wie vor gepflegt, also patchen wir uns selbst. Mit Gentoo und ein wenig Geschick sind wir in ein paar Sekunden damit durch und können etwa 9 Minuten später ein leuchtendes coreutils in unserem System wissen.

$ emerge -v coreutils

Genau wenn es heisst:

 * Done with patching

STRG+Z drücken!

Das legt emerge in den Hintergrund und wir können den Patch an Portage vorbei in den Code schummeln. Am besten ihr macht ab coreutils- mit tab completion weiter um die richtige Version zu finden.

cd /var/tmp/portage/sys-apps/coreutils-6.9-r1/work/coreutils-6.9/
wget http://dev.gentoo.org/~vapier/dist/coreutils-6.9-patches-1.2.tar.bz2
tar -xjf coreutils-6.9-patches-1.2.tar.bz2

Wir brauchen nur den progress-bar Patch, nach dem Patchen holen wir emerge mit fg zurück.

patch -p1 < patch/generic/001_all_coreutils-gen-progress-bar.patch
fg

Von nun an zeigen cp und mv mit der -g Option zusätzlich Fortschritt in Prozent, Grösse der Datei, Übertragungsgeschwindigkeit und verbleibende Dauer an. Ein Alias in der .zshrc (oder .bashrc) macht sich bei mir ganz gut.

cp -g /mnt/etcbackup.zip ~/temp
etcbackup.zip          |   1% |   175 MiB |   122 KiB/s | ETA 00:24.03

Wie man den Patch auf Ubuntu/Debian einbaut steht übrigens in den Ubuntu Foren.