linux - grep 时间命令输出

标签 linux

使用 time ls,我有以下输出:

$ time ls -l 
total 2
-rwx------+ 1 FRIENDS None 97 Jun 23 08:59 location.txt
-rw-r--r--+ 1 FRIENDS None 10 Jun 23 09:06 welcome
real    0m0.040s
user    0m0.000s    
sys     0m0.031s

现在,当我尝试 grepreal 值行时,实际结果是:

$ time ls -l | grep real
real    0m0.040s
user    0m0.000s
sys     0m0.031s

我的问题是,如何只获得真正的值(value)作为输出?在这种情况下,0m0.040s.

最佳答案

time 将其输出写入stderr,因此您需要通过管道传输stderr 而不是stdout。但同样重要的是要记住 time 是 bash 语法的一部分,它对整个管道进行计时。因此,您需要将管道包裹在大括号中,或者在子 shell 中运行:

 $ { time ls -l >/dev/null; } 2>&1 | grep real
 real   0m0.005s

使用 Bash v4.0(可能在 Linux 发行版上通用,但在 Mac OS X 上仍不是标准),您可以使用 |& 来管道 stdoutstderr:

{ time ls -l >/dev/null; } |& grep real

或者,您可以使用 time 实用程序,它可以控制输出格式。在我的系统上,该实用程序位于 /usr/bin/time:

/usr/bin/time -f%e ls -l >/dev/null 

man time 了解有关 time 实用程序的更多详细信息。

关于linux - grep 时间命令输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17257724/

相关文章:

php - 如何在 Linux 上用 PHP 发送 HTML 邮件

linux - 将公钥复制到远程节点,无需密码

arrays - Bash 移位更改关联数组的期望值

node.js - 在 Ubuntu 上安装 React Native 初学者工具包期间,spawn-sync 安装后失败

linux - 输入 spark-shell 时找不到 spark submit

c++ - 在 C++ 中计算毫秒的可移植方法?

c - Linux串口编程

linux - 将输入文件解析为环境变量

linux - 如何使用 Linux shell 脚本从文件中删除 ^[ 字符?

linux - Bash shell 脚本文件存在