time--shell保留字输出无法重定向解决

原文 作者:good bai    mail: bf.wolf@gmail.com

原文请看:http://blogold.chinaunix.net/u3/104336/showart_2060136.html

 

话说time是一个bash的保留字。别人这样讲,但是我没有看出来是为什么这样讲,经查time命令是time包中的一个文件。我不知道这样讲(保留字)的目的,但是运行测试,这个命令(time)的确有点特殊。

正常运行time命令:

[root@dy dic]# time sleep 5

real    0m5.001s
user    0m0.001s
sys    0m0.000s

我们重定向命令输出:

[root@dy dic]# time sleep 5 >out.txt

real    0m5.001s
user    0m0.002s
sys    0m0.001s
屏幕仍然输出,且out.txt文件为空,重定向失败。
使用time sleep 5 2>out.txt命令测试仍然无效。大概上面这个情况就是time成为bash保留字的理由,据说因为这个命令的一些特殊性,所以要求它要以一种 特殊的形式运行。那么我们该如何解决类似此种的号称为保留字的命令输出不可重定向的问题呢?

那天刚好看到了
一篇博文 如此介绍。因为time作为保留字的原因导致它按常规方式输出不可被重定向,我们可以通过让它运行在子shell(subshell)形态下,这样我们就可以正常的重定向它的输出了。
在console下,两种让命令运行在子shell的方式是给命令加小括号和加大括号。按这样最终实现如下:
1  ( time  sleep 5 ;) 2> out.txt
2 { time sleep 5;} 2>out.txt

注:time命令正常的输出是stderr(所以要在重定向是加2)。
经测试上面两种方式都有效。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值