【问题标题】:Redirecting the output of time command to a file [duplicate]将时间命令的输出重定向到文件[重复]
【发布时间】:2018-12-09 11:49:31
【问题描述】:

我刚刚发现,以下内容在我的 Ubuntu 16.04 上无法正常运行:

$ time >file 2>&1

real    0m0.000s
user    0m0.000s
sys     0m0.000s
$ cat file
$

输出到终端,文件是空的,虽然有 2>&1(描述符 2 重定向到描述符 1 的地址)STDERR 应该去 STDOUT 去的地方。我一直在寻找关于这个主题的现有主题,并且在描述一个更复杂的问题时,通常会提到这里这样一个简单的问题,它做得很好。为什么会出现这样的行为不端?

UPD:得到答案,时间是 BASH 中的内置命令。也许有人对完全相同的事情感到困惑(可能是那些通过 Kernighan 和 Pike 的旧书学习 Unix 的人)。

【问题讨论】:

    标签: linux time


    【解决方案1】:

    您正在使用bash,它确实有一个名为time 的内置关键字,其功能类似。

    您可以访问已安装的二进制文件(如果有),而不是使用内置的 time (bash) 命令,例如 /usr/bin/time -p [command] >file 2>&1。这将完全符合您的期望。 请注意-p 选项,这是您在上面看到的“便携式输出格式”所必需的。

    另外请看一下手册页:man time

    【讨论】:

    • 谢谢,第一次听说内置命令。我应该尝试用 C 编写一些写入 STDERR 的代码并在询问之前尝试)
    • 很高兴听到!请记住接受答案,以便其他人可以看到它已解决或有帮助。
    • 如果您需要一些 stderr 来在交互式 shell 命令中进行测试,您可以使用 echo hello >&2 或只使用不带参数的 cp,因为它会打印错误
    猜你喜欢
    • 2020-10-14
    • 2017-04-24
    • 2018-06-07
    • 1970-01-01
    • 2012-11-15
    • 2018-07-23
    • 2015-10-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多