C'est peut-être une question pour les débutants, mais je ne comprends pas comment cela est configuré et pourquoi le format de sortie de la time
commande est différent dans ces deux cas:
si utilisé via time
, la sortie est de trois lignes avec des informations de base
$ time sleep 1
real 0m1.003s
user 0m0.000s
sys 0m0.000s
alors je peux vérifier quel binaire est utilisé
$ which time
/usr/bin/time
et appelez-le directement pour obtenir une sortie dans un format complètement différent, avec beaucoup plus d'informations
$ /usr/bin/time sleep 1
0.00user 0.00system 0:01.00elapsed 0%CPU (0avgtext+0avgdata 2000maxresident)k
0inputs+0outputs (0major+77minor)pagefaults 0swaps
il n'y a pas d'alias liés à time
$ alias | grep time
$
Je cours Ubuntu 16.04
.
which
est fondamentalement inutile ...Réponses:
Le premier est le
bash
propre mot clé intégrétime
(compilé avecbash
), et le second est l'exécutable externetime
(/usr/bin/time
, fourni avec letime
package).En outre,
which
ne peut pas afficher les commandes ou les mots clés intégrés du shell lors de la recherchePATH
, vous devez utilisertype
pour cela. Être un shell intégré lui-même,type
peut en outre vérifier les entités internes du shell (et aussiPATH
), vous pouvez donc repérer la différence en:Ici:
Le premier sera exécuté si vous utilisez simplement
time
. Vous pouvez également obtenir ce qui est exécuté en utilisant simplementtype
(sans-a
):Le
-a
dittype
de rechercher dans les entités internes du shell et aussi dansPATH
ie recherche dans toutes les sources possibles.Si pour une raison quelconque vous avez besoin de l'externe, utilisez l'un des éléments suivants:
la source
which
ne considère donc pas les builtins? Et je devrais toujours vérifier avec d'type -a
abord. En fait, il sembletype
supérieur àwhich
car il/usr/bin/time
which
alors?type
est en effet supérieur --- si vous utilisez bash. Un autre obus peut ne pas avoir detype
bulitine ni de fonctiontime
intégrée.time
d'être externe uniquement mais nontype
,type
est disponible dans tous les shells compatibles POSIX.Une autre différence entre l'utilitaire intégré et les utilitaires externes est que le programme intégré de Bash chronométrera
time
les pipelines complets ou les appels aux fonctions shell (apparemment même des boucles, mais le manuel ne semble pas le promettre). L'extérieurtime
ne peut pas, car étant en dehors du shell, ne connaît pas le code environnant.Bien que le temps soit spécifié dans la norme, il n'est pas spécifié comment il doit agir dans un pipeline, donc une implémentation interne plus puissante comme celle-ci est possible.
la source