Je suis sous sous Ubuntu 10.04 et mon shell est le bash.
1) Je souhaite mesurer le temps d'exécution d'une commande avec :
~$ time maCommande
Au lieu d'avoir en sortie les 3 lignes real+user+sys, je ne voudrais
avoir en sortie que la ligne real. Comment faut-il faire ?
J'avais pensé d'abord au naïf :
~$ time maCommande | grep real
mais ça ne marche pas car, si je comprends bien, dans ce cas time mesure
le temps d'exécution de la commande "maCommande | grep real" et ensuite
fait son travail, c'est-à-dire affiche les 3 lignes et non une seule.
2) Du coup, j'ai voulu chercher des infos sur time avec 'man time'. J'ai
vu plein d'options avec cette commande mais aucune ne marchaient. J'ai
fini par comprendre que le time que j'utilise dans 1) est une commande
interne de mon shell et que le time de 'man time' est /usr/bin/time, une
commande externe à mon shell.
Y a-t-il un moyen, via le shell, de savoir qui exactement (le time
interne ou /usr/bin/time) est utilisé lorsque je tape 'time XXX' ? Je
pensais au départ que 'which time' le faisait mais justement il
m'indique /usr/bin/time et j'ai pu lire que which ne s'occupait pas des
commandes interne au shell (which cd n'affiche rien). Je sais bien que
ce sont les commandes internes qui priment, mais je ne les connais pas
toutes. Est-ce que ça existe une commande du genre ci-dessous ?
~$ whichPourDeVrai time
commande interne time
~$ whichPourDeVrai
/usr/bin/pdflatex
On Tue, 24 Aug 2010 19:37:39 +0200, Francois Lafont :
Au lieu d'avoir en sortie les 3 lignes real+user+sys, je ne voudrais avoir en sortie que la ligne real. Comment faut-il faire ?
(time ma_commande) 2>&1 |grep real
On met le bloc "time ma_commande" entre parenthèses pour que le reste concerne ce bloc entier. Par ailleurs, time, si je ne m'abuse, affiche le résultat sur stderr. Il faut donc ramener ça sur stdout, d'où le "2>&1". Une fois qu'on a le bon texte au bon endroit, on peut lui appliquer grep.
On Tue, 24 Aug 2010 19:37:39 +0200, Francois Lafont
<francois.lafont@nospam.invalid>:
Au lieu d'avoir en sortie les 3 lignes real+user+sys, je ne voudrais
avoir en sortie que la ligne real. Comment faut-il faire ?
(time ma_commande) 2>&1 |grep real
On met le bloc "time ma_commande" entre parenthèses pour que le reste
concerne ce bloc entier.
Par ailleurs, time, si je ne m'abuse, affiche le résultat sur stderr.
Il faut donc ramener ça sur stdout, d'où le "2>&1".
Une fois qu'on a le bon texte au bon endroit, on peut lui appliquer
grep.
On Tue, 24 Aug 2010 19:37:39 +0200, Francois Lafont :
Au lieu d'avoir en sortie les 3 lignes real+user+sys, je ne voudrais avoir en sortie que la ligne real. Comment faut-il faire ?
(time ma_commande) 2>&1 |grep real
On met le bloc "time ma_commande" entre parenthèses pour que le reste concerne ce bloc entier. Par ailleurs, time, si je ne m'abuse, affiche le résultat sur stderr. Il faut donc ramener ça sur stdout, d'où le "2>&1". Une fois qu'on a le bon texte au bon endroit, on peut lui appliquer grep.
Yliur
Y a-t-il un moyen, via le shell, de savoir qui exactement (le time interne ou /usr/bin/time) est utilisé lorsque je tape 'time XXX' ? Je pensais au départ que 'which time' le faisait mais justement il m'indique /usr/bin/time et j'ai pu lire que which ne s'occupait pas des commandes interne au shell (which cd n'affiche rien). Je sais bien que ce sont les commandes internes qui priment, mais je ne les connais pas toutes. Est-ce que ça existe une commande du genre ci-dessous ?
~$ whichPourDeVrai time commande interne time ~$ whichPourDeVrai /usr/bin/pdflatex
Merci d'avance.
Si which n'a rien trouvé, c'est qu'il s'agit d'une commande interne. Facile, non ? :)
Y a-t-il un moyen, via le shell, de savoir qui exactement (le time
interne ou /usr/bin/time) est utilisé lorsque je tape 'time XXX' ? Je
pensais au départ que 'which time' le faisait mais justement il
m'indique /usr/bin/time et j'ai pu lire que which ne s'occupait pas
des commandes interne au shell (which cd n'affiche rien). Je sais
bien que ce sont les commandes internes qui priment, mais je ne les
connais pas toutes. Est-ce que ça existe une commande du genre
ci-dessous ?
~$ whichPourDeVrai time
commande interne time
~$ whichPourDeVrai
/usr/bin/pdflatex
Merci d'avance.
Si which n'a rien trouvé, c'est qu'il s'agit d'une commande interne.
Facile, non ? :)
Y a-t-il un moyen, via le shell, de savoir qui exactement (le time interne ou /usr/bin/time) est utilisé lorsque je tape 'time XXX' ? Je pensais au départ que 'which time' le faisait mais justement il m'indique /usr/bin/time et j'ai pu lire que which ne s'occupait pas des commandes interne au shell (which cd n'affiche rien). Je sais bien que ce sont les commandes internes qui priment, mais je ne les connais pas toutes. Est-ce que ça existe une commande du genre ci-dessous ?
~$ whichPourDeVrai time commande interne time ~$ whichPourDeVrai /usr/bin/pdflatex
Merci d'avance.
Si which n'a rien trouvé, c'est qu'il s'agit d'une commande interne. Facile, non ? :)
Francois Lafont
Le 24/08/2010 19:57, Fabien LE LEZ a écrit :
(time ma_commande) 2>&1 |grep real
Ah merci bien ! Avec les explications, c'est parfaitement clair. En regardant dans 'man bash', j'ai pu voir que ceci fonctionne bien aussi.
~$ { time sleep 0.2; } 2>&1 | grep real
C'est curieux que time envoie son résultat sur stderr, mais bon.
Merci beaucoup, la question 1) est résolue. :-)
-- François Lafont
Le 24/08/2010 19:57, Fabien LE LEZ a écrit :
(time ma_commande) 2>&1 |grep real
Ah merci bien ! Avec les explications, c'est parfaitement clair. En
regardant dans 'man bash', j'ai pu voir que ceci fonctionne bien aussi.
~$ { time sleep 0.2; } 2>&1 | grep real
C'est curieux que time envoie son résultat sur stderr, mais bon.
Ah merci bien ! Avec les explications, c'est parfaitement clair. En regardant dans 'man bash', j'ai pu voir que ceci fonctionne bien aussi.
~$ { time sleep 0.2; } 2>&1 | grep real
C'est curieux que time envoie son résultat sur stderr, mais bon.
Merci beaucoup, la question 1) est résolue. :-)
-- François Lafont
Francois Lafont
Le 24/08/2010 20:09, Yliur a écrit :
Si which n'a rien trouvé, c'est qu'il s'agit d'une commande interne. Facile, non ? :)
C'est juste, si which ne trouve rien, c'est une commande interne. Mais la réciproque n'est pas forcément vraie, en particulier avec time justement. J'ai ça :
~$ which time /usr/bin/time
Moi j'ai cru alors que lorsque je tapais "time XXXX", c'était forcément /usr/bin/time qui était utilisée. Mais c'est faux car c'est la commande time interne qui est utilisée. D'où ma question : quelle est la commande qui permet de savoir qui est utilisé exactement quand je tape "time XXXX". which ne répond pas à cette question là ? :-)
-- François Lafont
Le 24/08/2010 20:09, Yliur a écrit :
Si which n'a rien trouvé, c'est qu'il s'agit d'une commande interne.
Facile, non ? :)
C'est juste, si which ne trouve rien, c'est une commande interne. Mais
la réciproque n'est pas forcément vraie, en particulier avec time
justement. J'ai ça :
~$ which time
/usr/bin/time
Moi j'ai cru alors que lorsque je tapais "time XXXX", c'était forcément
/usr/bin/time qui était utilisée. Mais c'est faux car c'est la commande
time interne qui est utilisée. D'où ma question : quelle est la commande
qui permet de savoir qui est utilisé exactement quand je tape "time
XXXX". which ne répond pas à cette question là ? :-)
Si which n'a rien trouvé, c'est qu'il s'agit d'une commande interne. Facile, non ? :)
C'est juste, si which ne trouve rien, c'est une commande interne. Mais la réciproque n'est pas forcément vraie, en particulier avec time justement. J'ai ça :
~$ which time /usr/bin/time
Moi j'ai cru alors que lorsque je tapais "time XXXX", c'était forcément /usr/bin/time qui était utilisée. Mais c'est faux car c'est la commande time interne qui est utilisée. D'où ma question : quelle est la commande qui permet de savoir qui est utilisé exactement quand je tape "time XXXX". which ne répond pas à cette question là ? :-)
-- François Lafont
xavier
Francois Lafont wrote:
C'est juste, si which ne trouve rien, c'est une commande interne. Mais la réciproque n'est pas forcément vraie, en particulier avec time justement. J'ai ça :
~$ which time /usr/bin/time
Et moi, j'ai ça avec la commande type :
[ ~]$ type time time is a shell keyword [ ~]$ which time ...rien...
-- XAv In your pomp and all your glory you're a poorer man than me, as you lick the boots of death born out of fear.
C'est juste, si which ne trouve rien, c'est une commande interne. Mais
la réciproque n'est pas forcément vraie, en particulier avec time
justement. J'ai ça :
~$ which time
/usr/bin/time
Et moi, j'ai ça avec la commande type :
[xavier@enterprise ~]$ type time
time is a shell keyword
[xavier@enterprise ~]$ which time
...rien...
--
XAv
In your pomp and all your glory you're a poorer man than me,
as you lick the boots of death born out of fear.
C'est juste, si which ne trouve rien, c'est une commande interne. Mais la réciproque n'est pas forcément vraie, en particulier avec time justement. J'ai ça :
~$ which time /usr/bin/time
Et moi, j'ai ça avec la commande type :
[ ~]$ type time time is a shell keyword [ ~]$ which time ...rien...
-- XAv In your pomp and all your glory you're a poorer man than me, as you lick the boots of death born out of fear.
Damien Goutte-Gattat
On Tue, 24 Aug 2010 20:46:22 +0200, Francois Lafont wrote:
D'où ma question : quelle est la commande qui permet de savoir qui est utilisé exactement quand je tape "time XXXX". which ne répond pas à cette question là ? :-)
"type", qui permet de distinguer entre les commandes internes, les alias, les fonctions shell, et les exécutables.
$ type time time is a shell keyword $ type type type is a shell builtin $ type ls ls is aliased to `ls -b -T 0 --color=auto` $ type vi vi is /usr/bin/vi
On Tue, 24 Aug 2010 20:46:22 +0200, Francois Lafont wrote:
D'où ma question : quelle est la commande
qui permet de savoir qui est utilisé exactement quand je tape "time
XXXX". which ne répond pas à cette question là ? :-)
"type", qui permet de distinguer entre les commandes internes, les alias,
les fonctions shell, et les exécutables.
$ type time
time is a shell keyword
$ type type
type is a shell builtin
$ type ls
ls is aliased to `ls -b -T 0 --color=auto`
$ type vi
vi is /usr/bin/vi
On Tue, 24 Aug 2010 20:46:22 +0200, Francois Lafont wrote:
D'où ma question : quelle est la commande qui permet de savoir qui est utilisé exactement quand je tape "time XXXX". which ne répond pas à cette question là ? :-)
"type", qui permet de distinguer entre les commandes internes, les alias, les fonctions shell, et les exécutables.
$ type time time is a shell keyword $ type type type is a shell builtin $ type ls ls is aliased to `ls -b -T 0 --color=auto` $ type vi vi is /usr/bin/vi
Erwan David
Francois Lafont écrivait :
Le 24/08/2010 20:09, Yliur a écrit :
Si which n'a rien trouvé, c'est qu'il s'agit d'une commande interne. Facile, non ? :)
C'est juste, si which ne trouve rien, c'est une commande interne. Mais la réciproque n'est pas forcément vraie, en particulier avec time justement. J'ai ça :
~$ which time /usr/bin/time
Moi j'ai cru alors que lorsque je tapais "time XXXX", c'était forcément /usr/bin/time qui était utilisée. Mais c'est faux car c'est la commande time interne qui est utilisée. D'où ma question : quelle est la commande qui permet de savoir qui est utilisé exactement quand je tape "time XXXX". which ne répond pas à cette question là ? :-)
ça dépend de ton shell...
En zsh which te dira ce qu'il faut.
-- Le travail n'est pas une bonne chose. Si ça l'était, les riches l'auraient accaparé
Si which n'a rien trouvé, c'est qu'il s'agit d'une commande interne.
Facile, non ? :)
C'est juste, si which ne trouve rien, c'est une commande interne. Mais
la réciproque n'est pas forcément vraie, en particulier avec time
justement. J'ai ça :
~$ which time
/usr/bin/time
Moi j'ai cru alors que lorsque je tapais "time XXXX", c'était forcément
/usr/bin/time qui était utilisée. Mais c'est faux car c'est la commande
time interne qui est utilisée. D'où ma question : quelle est la commande
qui permet de savoir qui est utilisé exactement quand je tape "time
XXXX". which ne répond pas à cette question là ? :-)
ça dépend de ton shell...
En zsh which te dira ce qu'il faut.
--
Le travail n'est pas une bonne chose. Si ça l'était,
les riches l'auraient accaparé
Si which n'a rien trouvé, c'est qu'il s'agit d'une commande interne. Facile, non ? :)
C'est juste, si which ne trouve rien, c'est une commande interne. Mais la réciproque n'est pas forcément vraie, en particulier avec time justement. J'ai ça :
~$ which time /usr/bin/time
Moi j'ai cru alors que lorsque je tapais "time XXXX", c'était forcément /usr/bin/time qui était utilisée. Mais c'est faux car c'est la commande time interne qui est utilisée. D'où ma question : quelle est la commande qui permet de savoir qui est utilisé exactement quand je tape "time XXXX". which ne répond pas à cette question là ? :-)
ça dépend de ton shell...
En zsh which te dira ce qu'il faut.
-- Le travail n'est pas une bonne chose. Si ça l'était, les riches l'auraient accaparé
Yliur
Le Tue, 24 Aug 2010 20:46:22 +0200 Francois Lafont a écrit :
Le 24/08/2010 20:09, Yliur a écrit :
> Si which n'a rien trouvé, c'est qu'il s'agit d'une commande interne. > Facile, non ? :)
C'est juste, si which ne trouve rien, c'est une commande interne. Mais la réciproque n'est pas forcément vraie, en particulier avec time justement. J'ai ça :
~$ which time /usr/bin/time
Moi j'ai cru alors que lorsque je tapais "time XXXX", c'était forcément /usr/bin/time qui était utilisée. Mais c'est faux car c'est la commande time interne qui est utilisée. D'où ma question : quelle est la commande qui permet de savoir qui est utilisé exactement quand je tape "time XXXX". which ne répond pas à cette question là ? :-)
Oui, il faudrait faire un script whichPourDeVrai qui vide la variable PATH le temps d'un test. Mais d'après d'autres réponses "type" répond au problème efficacement.
Le Tue, 24 Aug 2010 20:46:22 +0200
Francois Lafont <francois.lafont@nospam.invalid> a écrit :
Le 24/08/2010 20:09, Yliur a écrit :
> Si which n'a rien trouvé, c'est qu'il s'agit d'une commande interne.
> Facile, non ? :)
C'est juste, si which ne trouve rien, c'est une commande interne. Mais
la réciproque n'est pas forcément vraie, en particulier avec time
justement. J'ai ça :
~$ which time
/usr/bin/time
Moi j'ai cru alors que lorsque je tapais "time XXXX", c'était
forcément /usr/bin/time qui était utilisée. Mais c'est faux car c'est
la commande time interne qui est utilisée. D'où ma question : quelle
est la commande qui permet de savoir qui est utilisé exactement quand
je tape "time XXXX". which ne répond pas à cette question là ? :-)
Oui, il faudrait faire un script whichPourDeVrai qui vide la variable
PATH le temps d'un test. Mais d'après d'autres réponses "type" répond au
problème efficacement.
Le Tue, 24 Aug 2010 20:46:22 +0200 Francois Lafont a écrit :
Le 24/08/2010 20:09, Yliur a écrit :
> Si which n'a rien trouvé, c'est qu'il s'agit d'une commande interne. > Facile, non ? :)
C'est juste, si which ne trouve rien, c'est une commande interne. Mais la réciproque n'est pas forcément vraie, en particulier avec time justement. J'ai ça :
~$ which time /usr/bin/time
Moi j'ai cru alors que lorsque je tapais "time XXXX", c'était forcément /usr/bin/time qui était utilisée. Mais c'est faux car c'est la commande time interne qui est utilisée. D'où ma question : quelle est la commande qui permet de savoir qui est utilisé exactement quand je tape "time XXXX". which ne répond pas à cette question là ? :-)
Oui, il faudrait faire un script whichPourDeVrai qui vide la variable PATH le temps d'un test. Mais d'après d'autres réponses "type" répond au problème efficacement.
Francois Lafont
Le 24/08/2010 20:53, Xavier a écrit :
Et moi, j'ai ça avec la commande type :
[ ~]$ type time time is a shell keyword
Parfait, merci beaucoup. C'est type qui résout ma question 2. Un petit coup de :
~$ type commande ~$ which commande
et je saurai sans ambiguïté qui sera appelé lors d'une instruction du style 'commande XXX'.
Impeccable, le fil est résolu pour moi.
[ ~]$ which time ...rien...
Ah, chez moi ça donne /usr/bin/time et je trouve que c'est bizarre d'avoir un programme dans /bin qui porte le même le même nom qu'un mot clé du shell.
Petite question subsidiaire :
~$ type time time est un mot-clé du shell ~$ type cd cd est une primitive du shell
C'est quoi la nuance entre 'mot-clé' et 'primitive' ?
-- François Lafont
Le 24/08/2010 20:53, Xavier a écrit :
Et moi, j'ai ça avec la commande type :
[xavier@enterprise ~]$ type time
time is a shell keyword
Parfait, merci beaucoup. C'est type qui résout ma question 2. Un petit
coup de :
~$ type commande
~$ which commande
et je saurai sans ambiguïté qui sera appelé lors d'une instruction du
style 'commande XXX'.
Impeccable, le fil est résolu pour moi.
[xavier@enterprise ~]$ which time
...rien...
Ah, chez moi ça donne /usr/bin/time et je trouve que c'est bizarre
d'avoir un programme dans /bin qui porte le même le même nom qu'un mot
clé du shell.
Petite question subsidiaire :
~$ type time
time est un mot-clé du shell
~$ type cd
cd est une primitive du shell
C'est quoi la nuance entre 'mot-clé' et 'primitive' ?
Parfait, merci beaucoup. C'est type qui résout ma question 2. Un petit coup de :
~$ type commande ~$ which commande
et je saurai sans ambiguïté qui sera appelé lors d'une instruction du style 'commande XXX'.
Impeccable, le fil est résolu pour moi.
[ ~]$ which time ...rien...
Ah, chez moi ça donne /usr/bin/time et je trouve que c'est bizarre d'avoir un programme dans /bin qui porte le même le même nom qu'un mot clé du shell.
Petite question subsidiaire :
~$ type time time est un mot-clé du shell ~$ type cd cd est une primitive du shell
C'est quoi la nuance entre 'mot-clé' et 'primitive' ?
-- François Lafont
Erwan David
Francois Lafont écrivait :
Le 24/08/2010 20:53, Xavier a écrit :
Et moi, j'ai ça avec la commande type :
[ ~]$ type time time is a shell keyword
Parfait, merci beaucoup. C'est type qui résout ma question 2. Un petit coup de :
~$ type commande ~$ which commande
et je saurai sans ambiguïté qui sera appelé lors d'une instruction du style 'commande XXX'.
Impeccable, le fil est résolu pour moi.
[ ~]$ which time ...rien...
Ah, chez moi ça donne /usr/bin/time et je trouve que c'est bizarre d'avoir un programme dans /bin qui porte le même le même nom qu'un mot clé du shell.
Petite question subsidiaire :
~$ type time time est un mot-clé du shell ~$ type cd cd est une primitive du shell
C'est quoi la nuance entre 'mot-clé' et 'primitive' ?
Dis déjà de quel shell tu parles...
sh, csh, ksh, tcsh, dash, zsh, bash ? Ou un autre ?
-- Le travail n'est pas une bonne chose. Si ça l'était, les riches l'auraient accaparé
[xavier@enterprise ~]$ type time
time is a shell keyword
Parfait, merci beaucoup. C'est type qui résout ma question 2. Un petit
coup de :
~$ type commande
~$ which commande
et je saurai sans ambiguïté qui sera appelé lors d'une instruction du
style 'commande XXX'.
Impeccable, le fil est résolu pour moi.
[xavier@enterprise ~]$ which time
...rien...
Ah, chez moi ça donne /usr/bin/time et je trouve que c'est bizarre
d'avoir un programme dans /bin qui porte le même le même nom qu'un mot
clé du shell.
Petite question subsidiaire :
~$ type time
time est un mot-clé du shell
~$ type cd
cd est une primitive du shell
C'est quoi la nuance entre 'mot-clé' et 'primitive' ?
Dis déjà de quel shell tu parles...
sh, csh, ksh, tcsh, dash, zsh, bash ?
Ou un autre ?
--
Le travail n'est pas une bonne chose. Si ça l'était,
les riches l'auraient accaparé
Parfait, merci beaucoup. C'est type qui résout ma question 2. Un petit coup de :
~$ type commande ~$ which commande
et je saurai sans ambiguïté qui sera appelé lors d'une instruction du style 'commande XXX'.
Impeccable, le fil est résolu pour moi.
[ ~]$ which time ...rien...
Ah, chez moi ça donne /usr/bin/time et je trouve que c'est bizarre d'avoir un programme dans /bin qui porte le même le même nom qu'un mot clé du shell.
Petite question subsidiaire :
~$ type time time est un mot-clé du shell ~$ type cd cd est une primitive du shell
C'est quoi la nuance entre 'mot-clé' et 'primitive' ?
Dis déjà de quel shell tu parles...
sh, csh, ksh, tcsh, dash, zsh, bash ? Ou un autre ?
-- Le travail n'est pas une bonne chose. Si ça l'était, les riches l'auraient accaparé