de sorte que la fonction de temps intégrée pour bash devrait sortir dans ce format Je souhaite enregistrer l'heure de l'utilisateur en millisecondes, comme 001 Qu'est-ce qu'un moyen propre de le faire? p> p>
3 Réponses :
Utilisation de la chaîne de chaîne intégrée de Bash Vous pouvez faire quelque chose comme ceci:
+ output='real 0m0.002s user 0m0.001s sys 0m0.000s' + user='0m0.001s sys 0m0.000s' + user=0m0.001 + min=0 + sec=0.001 + sec=0 + usec=001 + time=1
Le problème consiste à obtenir la sortie code> de code> dans $ sortie code> en premier lieu.
Le moyen propre consiste à utiliser la variable Puis, bien sûr, vous devez capturer la sortie de celle-ci. Cela est impossible à faire dans le pipeline, car il est fait à l'intérieur de la coquille, mais vous pouvez l'exécuter dans un sous-(-shirt, et la sortie ira à l'erreur standard. Mais vous devez ensuite rediriger la sortie de la commande ailleurs. Ici, je viens de le jeter, mais de nombreuses autres possibilités existent, selon exactement ce que vous devez faire. Ensuite, vous devez connaître Si vous le souhaitez, vous pouvez ajouter % R donnera du temps réel,% s du système système. Vous pouvez modifier la précision avec E.G. % 6U pour obtenir des microsecondes, bien que la plupart des systèmes ne soient nulle part à proximité de celle précise. P> timeformat code> shell pour imprimer uniquement les informations de l'utilisateur. ( homme bash code> pour plus de détails.) d.ddd code> dans dddd code>. Il suffit de supprimer la période le fera. P> | Sed S / ^ 0 * // Code> Pour éliminer les zéros principaux. P> homme bash code> pour obtenir de l'aide sur les redirections. Man TR code> et Man SED code> Pour obtenir de l'aide sur la façon de les utiliser. P> P>
Plutôt que de la tuyauterie à tr code>, une fois que vous avez foo = "0.00x" code> Vous pouvez simplement utiliser l'expansion de paramètre et la sortie $ {foo # *.} Code # *.} Code > Pour obtenir juste 00x code>. Quoi qu'il en soit, bon appel à la variable TimeFormat, n'a jamais vu celui-ci avant.
Homme, mon écran flash-fu Unix n'est jamais assez brillant. Il y a toujours i> une manière stupéfiante et très spécifique de faire quelque chose de froid dans un coin sombre de la documentation. +1 pour timeformat code> - beaucoup mieux que le script (bien que simple) SED que je allais faire.
BASH'S CODE> Heure CODE> Constrée est un peu difficile à capturer car il possède une manipulation spéciale de manière à pouvoir retourner le temps de traitement pour un pipeline entier comme La meilleure façon de capturer juste em> la sortie du temps est la technique de redirection suivante: p> à ce stade si vous deviez maintenant pour obtenir juste le maintenant si vous étaient à Time LS -L | Trier | UNIQ code> plutôt que le temps de traitement uniquement pour la commande ls -l code> dans mon exemple. echo "$ foo" code> Vous verriez quelque chose sur l'ordre de p> 004 code> une partie de ce que vous Avoir une autre option: sed, awk ou droite bash pour nommer le sommet 3. Mon préféré personnel serait awk et il ressemblerait à ceci comme suit: p> echo "$ foo" code> vous verriez juste 004 code> comme désiré p> p>