在QShell中使用unix时间函数

在QShell中使用unix时间函数,unix,ibm-midrange,Unix,Ibm Midrange,我试图创建一个QShell命令来输出完成任务所需的时间。我的命令在cygwin中运行时看起来很好,但在QShell中不会产生任何结果。例如,这是我用来获取ls的实时数据的命令 (time ls) 2>&1 | grep real | cut -f2 >> log.txt 我在这里遗漏了什么吗?这里的区别是time是Cygwin中的一个程序,但在QSHELL中它是一个内置的实用程序(比如echo)。我认为您无法重定向内置实用程序的输出 要查看某个东西是内置实用程序还是程

我试图创建一个QShell命令来输出完成任务所需的时间。我的命令在cygwin中运行时看起来很好,但在QShell中不会产生任何结果。例如,这是我用来获取ls的实时数据的命令

(time ls) 2>&1 | grep real | cut -f2 >> log.txt

我在这里遗漏了什么吗?

这里的区别是
time
是Cygwin中的一个程序,但在QSHELL中它是一个内置的实用程序(比如
echo
)。我认为您无法重定向内置实用程序的输出

要查看某个东西是内置实用程序还是程序,可以使用
type
命令。例如,
类型echo
将输出:

echo is a shell built-in.
time is a reserved word.
输入时间时
将输出:

echo is a shell built-in.
time is a reserved word.
您还可以查看/usr/bin的内容<代码>ls/usr/bin/t*:

/usr/bin/tail    /usr/bin/test        /usr/bin/tr
/usr/bin/tar     /usr/bin/tnameserv
/usr/bin/tee     /usr/bin/touch
在Cygwin中(或者在我的例子中,在Linux机器上),键入
哪个时间
,您将得到

/usr/bin/time

这里的区别是,
time
是Cygwin中的一个程序,但在QSHELL中它是一个内置实用程序(如
echo
)。我认为您无法重定向内置实用程序的输出

要查看某个东西是内置实用程序还是程序,可以使用
type
命令。例如,
类型echo
将输出:

echo is a shell built-in.
time is a reserved word.
输入时间时
将输出:

echo is a shell built-in.
time is a reserved word.
您还可以查看/usr/bin的内容<代码>ls/usr/bin/t*:

/usr/bin/tail    /usr/bin/test        /usr/bin/tr
/usr/bin/tar     /usr/bin/tnameserv
/usr/bin/tee     /usr/bin/touch
在Cygwin中(或者在我的例子中,在Linux机器上),键入
哪个时间
,您将得到

/usr/bin/time

这似乎是一个与qshell、子shell和/或本机
time
实用程序相关的怪癖

QSH

===> time ls
  test_file

  real    0m0.054384s
  user    0m0.054384s
  sys     0m0.000000s

===> (time ls)
  test_file
它可以通过以下方式正常工作:

QP2TERM

===> time ls
  test_file

  real    0m0.10s
  user    0m0.01s
  sys     0m0.02s

===> (time ls)
  test_file

  real    0m0.14s
  user    0m0.01s
  sys     0m0.02s

这似乎是一个与qshell、子shell和/或本机
time
实用程序相关的怪癖

QSH

===> time ls
  test_file

  real    0m0.054384s
  user    0m0.054384s
  sys     0m0.000000s

===> (time ls)
  test_file
它可以通过以下方式正常工作:

QP2TERM

===> time ls
  test_file

  real    0m0.10s
  user    0m0.01s
  sys     0m0.02s

===> (time ls)
  test_file

  real    0m0.14s
  user    0m0.01s
  sys     0m0.02s

QSH是一个类似Unix的环境。重定向有一些奇怪之处。IBM有一个名为的文档简要介绍了这一点。如果笨重的话,我发现以下方法可行:

{ time ls *.txt; } > /dev/null 2> time.txt; grep real time.txt | cut -c10-20 >> log.txt; rm time.txt

我无法在不转到文件的情况下重定向STDERR。

QSH是一种类似Unix的环境。重定向有一些奇怪之处。IBM有一个名为的文档简要介绍了这一点。如果笨重的话,我发现以下方法可行:

{ time ls *.txt; } > /dev/null 2> time.txt; grep real time.txt | cut -c10-20 >> log.txt; rm time.txt

如果不转到文件,我就无法重定向STDERR。

太棒了!它可能很笨重,但一个笨重的解决方案比所有非笨重的非工作“解决方案”都好。太棒了-非常感谢(我花了几个小时在这一行代码上)!!太棒了,巴克!它可能很笨重,但一个笨重的解决方案比所有非笨重的非工作“解决方案”都好。太棒了-非常感谢(我花了几个小时在这一行代码上)!!如果巴克的解决方案对你有效,你应该。如果巴克的解决方案对你有效,你应该。