使用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

现在,当我try 只计算real值行时,实际结果是:

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

我的问题是,如何只获得真正的价值作为输出?在这种情况下,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相关问答推荐

Linux TTY 操作顺序

如何让xargs对 bash 脚本中find命令找到的所有文件执行?

`__meminit` 在 Linux 内核中意味着什么?

如何将一个变量的 2 行添加到另一个变量的特定行?

将 Visual Studio C++ 项目迁移到 Linux 和 CMake

如何在vim中使用正则表达式来切换文件中所有字符的大小写

如何从linux调度程序中屏蔽一个cpu(防止它调度线程到那个cpu上)?

Docker 容器立即退出

如何使用 Bash 读取文件中的倒数第二行?

将 awk 输出保存到变量

KDE 桌面效果中的 OpenGL 和 XRender 有什么区别?

如何让 PHP、Symlinks 和 __FILE__ 很好地协同工作?

如何从 linux 的命令行将 Sublime Text 2 文件打开到选项卡,而不是新窗口

在 linux 上查看文件大小

Linux AMD64 中如何使用 fs/gs 寄存器?

如何设置errno值?

在 Linux / Mono 上运行 ServiceStack 的最佳方式是什么?

如何在没有 root 用户的情况下在 Linux (CentOS) 中安装软件包并进行自动依赖处理?

如何停止 Linux 上的不间断进程?

在tmux中绑定Ctrl+Tab和Ctrl+Shift+Tab