Aller au contenu
Korben, roi d’internet, logo bébé avec des lunettes en mode thug life

Avoir une barre de progression avec la commande cp sous Linux

Capture d'écran de la commande cp sous Linux en train de copier un fichier

Sous Linux, ce qui est chiant quand on fait un « copier » (cp) en ligne de commande, c’est qu’on ne sait jamais où on en est…alors qu’avec Wget, on a une belle barre de progression qui donne l’avancement du téléchargement.Pour ceux que ça intéresse, voici le script qui va permettre d’avoir le même genre de barre de progression avec « cp ».. Il vous suffit de créer un fichier script avec ce qu’il y a ci-dessous dedans, de le nommer cp_p et de le copier dans /usr/bin

#!/bin/sh
cp_p()
{
   set -e
   strace -q -ewrite cp -- "${1}" "${2}" 2>&1 
      | awk '{
	    count += $NF
            if (count % 10 == 0) {
               percent = count / total_size * 100
               printf "%3d%% [", percent
               for (i=0;i<=percent;i++)
                  printf "="
               printf ">"
               for (i=percent;i<100;i++)
                  printf " "
               printf "]r"
            }
         }
         END { print "" }' total_size=$(stat -c '%s' "${1}") count=0
}

Ca donnera alors un truc comme ça lorsque vous copierez des fichiers en ligne de commande :

% cp_p /mnt/files/ubuntu.iso.iso /home/korben
 70% [=========================================>                      ]

Pratique non ?


Les articles du moment