Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

la commande time

5 réponses
Avatar
FAb
Bonjour,

On vient de me faire remarquer que la commande time n'apparaît pas dans la liste
des processus.
'time ps' par exemple ne le montre pas.

La personne d'origine est sous debian où il y a un éxécutable /usr/bin/time.
Moi sous fedora je n'en ai pas (which time : vide).

Bon si c'était un builtin pour cela n'apparît-il pas dans la doc (man & info).
Peut-être est-ce expliqué quelque part... mais où ?

FAb
et la quête du savoir

5 réponses

Avatar
Vincent Bernat
OoO En cette matinée pluvieuse du mercredi 20 avril 2005, vers 10:48,
FAb disait:

Bon si c'était un builtin pour cela n'apparît-il pas dans la doc
(man & info). Peut-être est-ce expliqué quelque part... mais où ?


Sous zsh, which time retourne :
time: shell reserved word
--
# Basic IBM dingbats, some of which will never have a purpose clear
# to mankind
2.4.0 linux/drivers/char/cp437.uni

Avatar
Laurent Wacrenier
FAb écrit:
Bon si c'était un builtin pour cela n'apparît-il pas dans la doc (man & info).
Peut-être est-ce expliqué quelque part... mais où ?


C'est souvent un builtin du shell, documenté dans le manuel du shell.

Avatar
Christophe Blaess
On vient de me faire remarquer que la commande time n'apparaît pas dans la liste
des processus.
'time ps' par exemple ne le montre pas.

La personne d'origine est sous debian où il y a un éxécutable /usr/bin/time.
Moi sous fedora je n'en ai pas (which time : vide).


En fait, "time" est un mot-clé du shell (au même titre que "if",
"for", etc.) et pas une commande interne (comme "cd") :

$ type time
time is a shell keyword
$ type cd
cd is a shell builtin


Bon si c'était un builtin pour cela n'apparît-il pas dans la doc (man & info).
Peut-être est-ce expliqué quelque part... mais où ?


$ man bash
[...]
Pipelines

Un pipeline est une séquence d'une ou plusieurs commandes
séparées par le caractère |. Le format d'un pipeline est :

[time [-p]] [ ! ] commande_1 [ | commande_2 ... ]

La sortie standard de la commande_1 est connectée à l'entrée
standard de la commande_2. Cette connexion est établie avant
toute redirection indiquée dans une commande elle-même (voir
le paragraphe REDIRECTION plus bas).

[...]

Si le mot réservé time précède le pipeline, les temps passés
par le programme en mode utilisateur et système sont indiqués
quand le pipeline se termine. L'option -p change le format de
sortie pour celui spécifié par POSIX. La variable TIMEFORMAT
peut être affectée avec une chaîne de format indiquant com-
ment les informations horaires doivent être présentées.

[...]


$ help time
time: time [-p] PIPELINE
Execute PIPELINE and print a summary of the real time, user CPU time,
and system CPU time spent executing PIPELINE when it terminates.
The return status is the return status of PIPELINE. The `-p' option
prints the timing summary in a slightly different format. This uses
the value of the TIMEFORMAT variable as the output format.
times: times
Print the accumulated user and system times for processes run from
the shell.
$


--
Christophe Blaess
http://www.blaess.fr/christophe/

Avatar
FAb
Christophe Blaess writes:
[...]
$ type time
time is a shell keyword
[...]

Bon si c'était un builtin pour cela n'apparît-il pas dans la doc (man &
info). Peut-être est-ce expliqué quelque part... mais où ?


$ man bash
[...]
Pipelines

Un pipeline est une séquence d'une ou plusieurs commandes
séparées par le caractère |. Le format d'un pipeline est :
[...]

[...]


$ help time
[...]

$



Oui je viens de faire un tour dans la doc info aux chapitres des mots réservés
et je suis bien évidemment tombé sur le passage des pipelines...

Au passage j'ai redécouvert la commande help. Je me demande bien comment ce
fait-ce que je m'en souvenais que si vaguement... man peut-être..

Bref, merci à tous de m'avoir répondu.

FAb


Avatar
cedric
La confusion vient de ce que time est à la fois un mot-clef du shell, et
une commande (sous debian, dans /usr/bin). La man page documente la
commande, mais le mot clef du schell prévaut (à moins de lancer
explicitement /usr/bin/time bien sur).

Il y en a surement d'autres : par exemple la commande test (ou '['),
echo (en tout cas sous zsh)...

Le but doit être de gagner le temps du lancement d'un programme
supplémentaire. Ca devait valoir le coup y'a 30 ans :-)

Je trouve ça un peu beurk.