译至:http://unicus.jp/skmk/archives/338

由于输出 time 命令的结果到文件时使用的错误的方式,所以将其记录下来。

环境是bash。

目标

将运行的a.out程序的输出和其所花的时间重定向到日志文件中

无效的例子1
time ./a.out > logfile
time ./a.out | tee logfile

上面的例子是重定向结果到logfile,下面的例子是通过tee把标准输出输出到文件。
但是只有time的输出没有被记录到文件中。
    这是因为time的结果是通过标准错误输出的。
所以不把标准错误输出重定向到文件中是不行的。

无效的例子2

把错误输出也重定向到文件。

time ./a.out >& logfile
time ./a.out > logfile 2>&1
time ./a.out 2>&1 | tee logfile

然而,这也是没有用的。

./a.out >& logfile
./a.out > logfile 2>&1
./a.out 2>&1 | tee logfile

因为这只是意味着把a.out的错误和标准输出重定向到logfile。

OK的例子

我们是想把 time ./a.out 的结果输出到logfile,所以:

(time ./a.out) >& logfile
(time ./a.out) > logfile 2&>1
(time ./a.out) 2>&1 | tee logfile

用括号括起来。这样就搞定了。换句话说,你是在一个子shell中运行。

另外最新的bash不仅支持>&也支持&>。

也可以用{;} 指定一组命令。

{ time ./a.out ; } >& logfile
{ time ./a.out ; } > logfile 2&1
{ time ./a.out ; } 2>&1 | tee logfile

{ 后一定要加空格,如果没有的话,会报错 -bash: syntax error near unexpected token `}’ 。后面的冒号;也不要忘了。

/usr/bin/time

顺便说一下,bash内置的命令time和GNU的time命令是不一样的。通过追加完整的路径/usr/bin/time 可以执行GNU命令。
但是和内置的bash不同的是,不加括号也可以将所有的输出重定向到文件。当然加括号也没问题。

/usr/bin/time ./a.out >& logfile
/usr/bin/time ./a.out > logfile 2>&1
/usr/bin/time ./a.out 2>&1 | tee logfile

而且有输出到文件的选项-o。

/usr/bin/time -o logfile ./a.out

但是这只会把time的结果写到文件。使用追加选项-a就可以了。

/usr/bin/time -a -o logfile ./a.out > logfile

GNU的time命令跟bash的time比的话,数据更详细,也能指定多种输出格式。

详细的情况请使用man time,bash的time的话使用help time。

输出 time 命令的结果到文件中的更多相关文章

  1. Shell 命令行 从日志文件中根据将符合内容的日志输出到另一个文件

    Shell 命令行 从日志文件中根据将符合内容的日志输出到另一个文件 前面我写了一篇博文Shell 从日志文件中选择时间段内的日志输出到另一个文件,利用循环实现了我想要实现的内容. 但是用这个脚本的同 ...

  2. 复制/etc/profile至/tmp/目录,用查找替换命令删除/tmp/profile文件中的 行首的空白字符及在vim中设置tab缩进为4个字符

    1.复制/etc/profile至/tmp/目录,用查找替换命令删除/tmp/profile文件中的 行首的空白字符 在命令模式下,使用正则表达式匹配 行首有空白字符行的模式:^[[:space:]] ...

  3. 使用 sed 命令查找和替换文件中的字符串的 16 个示例

    当你在使用文本文件时,很可能需要查找和替换文件中的字符串.sed 命令主要用于替换一个文件中的文本.在 Linux 中这可以通过使用 sed 命令和 awk 命令来完成. 在本教程中,我们将告诉你使用 ...

  4. shell脚本就是由Shell命令组成的执行文件,将一些命令整合到一个文件中,进行处理业务逻辑,脚本不用编译即可运行。它通过解释器解释运行,所以速度相对来说比较慢。

    shell脚本?在说什么是shell脚本之前,先说说什么是shell. shell是外壳的意思,就是操作系统的外壳.我们可以通过shell命令来操作和控制操作系统,比如Linux中的Shell命令就包 ...

  5. java 写一个"HelloJavaWorld你好世界"输出到操作系统文件Hello.txt文件中

    package com.beiwo.homework; import java.io.File; import java.io.FileOutputStream; import java.io.IOE ...

  6. linux grep命令(linux在文件中搜索内容)

    转自:https://www.cnblogs.com/end/archive/2012/02/21/2360965.html linux grep命令 1.作用Linux系统中grep命令是一种强大的 ...

  7. [Shell学习笔记] read命令从键盘或文件中获取标准输入(转载)

    转自:http://www.1987.name/151.html read命令是用于从终端或者文件中读取输入的内部命令,read命令读取整行输入,每行末尾的换行符不被读入.在read命令后面,如果没有 ...

  8. 将输出语句打印至tomcat日志文件中

    tomcat-9.0.0 将程序中            System.out.println("------------这是输出语句System.out.println()-------- ...

  9. [Linux] sed命令使用之在文件中快速删除/增加指定行

    1.删除文档的第一行 sed -i '1d' <file> 2.删除文档的最后一行sed -i '$d' <file> 3.在文档指定行中增加一行例如文档如下:echo &qu ...

随机推荐

  1. 针对spring mvc的controller内存马-学习和实验

    1 基础 实际上java内存马的注入已经有很多方式了,这里在学习中动手研究并写了一款spring mvc应用的内存马.一般来说实现无文件落地的java内存马注入,通常是利用反序列化漏洞,所以动手写了一 ...

  2. yml配置从nacos配置中心取数据(单个或多个)

    读取单个文件 spring: application: name: test-server cloud: nacos: config: server-addr: localhost:8848 name ...

  3. 树莓派 PICO基础教程(基于MicroPython)

    目录 1 树莓派 PICO 简介 1.1 简介 1.2 配置 [^2] 1.3 引脚图 1.4 尺寸 2 安装 2.1 烧录固件 2.2 安装IDE(Thonny IDE) 2.3 离线运行程序 3 ...

  4. 【补档_STM32单片机】脉搏波采集显示硬件设计

    一.脉搏波简介 ​ 脉搏一般情况下指的都是动脉脉搏.每分钟的脉搏次数称为脉率,正常情况下与心率是一致的.心脏的一次收缩和舒张成为一个心动周期.在每个心动周期内,心室的收缩和舒张会引起脉内压力的周期性波 ...

  5. vue相关面试知识点总结

    vue v-for循环中为什么要用key?为什么index不能作为key? key 的特殊 attribute 主要用在 Vue 的虚拟 DOM 算法,在新旧 nodes 对比时辨识 VNodes.如 ...

  6. CRC校验原理简介及C代码实现说明

    1 原理 参考文档:CRC校验 (qq.com) 参考书籍:<计算机网络(第7版)-谢希仁> 1.1 原理简介 CRC是一种检错方法. 在发送端,先把数据划分为组,假定每组k个比特.现假定 ...

  7. es 查询更新操作

    # es 查询更新操作# _*_ coding: utf-8 _*_ import time import datetime import pymysql from elasticsearch imp ...

  8. 安装Linux操作系统过程及出现的问题

    写在前面的话:由于是昨天装的,很多图片没来得及及时的保存,只好凭记忆回想,出现的问题只能回忆起大致的操作及应用软件. 另外,目前是小白一枚. 在安装时,我一开始想直接采用硬盘安装,参考帖子:http: ...

  9. javascript获取日期,年月,日

    <SCRIPT LANGUAGE="JavaScript"> var myDate = new Date();     myDate.getYear();       ...

  10. 网页站点下载器teleport ultra

    软件名称:teleport ultra 介绍:teleport ultra是一款专门的网页站点下载器,使用这款工具可以方便地下载网页数据,包括网站的文字.图片.flash动画等,可以轻松下载所有的网站 ...