web-dev-qa-db-fra.com

L'utilisation de -v (verbose) ralentit-elle les commandes?

Dans cette question: Comment supprimer tous les fichiers et sous-répertoires d'un répertoire SANS supprimer le répertoire dans bash? il est demandé comment supprimer tous les fichiers d'un dossier et non le dossier lui-même.

La réponse excellente de Matt inclut l'utilisation de l'indicateur -v dans la commande 'rm'.

rm -rfv dontDeleteMe && mkdir dontDeleteMe

La commande avec laquelle je suis parti était celle ci-dessus. Certainement utile, mais l'indicateur -v dans 'rm' et/ou en général ralentit les tâches effectuées via la ligne de commande?

J'ai un dossier avec des fichiers .txt (environ 100.000 d'entre eux) que j'ai créé, supprimé et recréé pour moi plusieurs fois. Quelques fois avec rm, parfois dans le navigateur de fichiers, et j’ai le sentiment que c’est encore plus lent d’utiliser la commande rm comme indiqué ci-dessus. Le drapeau -v a-t-il quelque chose à voir avec cela?

34
Eiriks

Oui, l'indicateur -v ralentit la commande.

La plupart, sinon tous les logiciels (ou commandes) vérifient si un indicateur est fourni, puis exécutent une série de codes liés à cet indicateur. Dans le cas de l'option -v, ils exécuteraient probablement un ensemble de commandes de sortie (telles que echo ou printf), qu'elles auraient plutôt ignorées sans l'indicateur.

Cela signifie plus de cycles d'instruction pour le processeur et donc plus de temps d'exécution.

Il est préférable que vous n'utilisiez pas l'option -v si vous n'allez pas lire/n'avez pas besoin des messages.

D'autre part, la CLI serait/devrait être plus rapide que l'interface graphique, en supposant que vous n'incluez pas le temps nécessaire pour taper les commandes et en appuyant sur la touche Enter clé.

De ce blog de superutilisateur cette image explique très bien la lenteur

enter image description here

Pour la commande spécifique en question, les résultats de la commande time sont:

//with -v
real    0m8.753s
user    0m0.816s
sys     0m2.036s

//without -v
real    0m1.282s
user    0m0.124s
sys     0m1.092s

cela a été fait avec le répertoire contenant 100 000 fichiers vides

37
Registered User

Pourquoi ne pas découvrir vous-même: utilisez le temps.

$ time rm -rfv dontDeleteMe && mkdir dontDeleteMe
real    0m0.003s
user    0m0.001s
sys     0m0.002s

$ time rm -rf dontDeleteMe && mkdir dontDeleteMe
real    0m0.002s
user    0m0.001s
sys     0m0.001s
5
sethmuss