相关疑难解决方法(0)

让 bash 使用外部 `time` 命令而不是内置的 shell

如何让 bash 默认使用时间二进制文件 (/usr/bin/time) 而不是 shell 关键字?

which time返回/usr/bin/time
type time返回time is a shell keyword
运行time显然是在执行shell关键字:

$ time

real    0m0.000s
user    0m0.000s
sys     0m0.000s
$ /usr/bin/time
Usage: /usr/bin/time [-apvV] [-f format] [-o file] [--append] [--verbose]
   [--portability] [--format=format] [--output=file] [--version]
   [--quiet] [--help] command [arg...]
Run Code Online (Sandbox Code Playgroud)

enable -n time 返回 bash: enable: time: not a shell builtin

bash shell-builtin time-utility

28
推荐指数
3
解决办法
8396
查看次数

如何将 `time` 输出和命令输出重定向到同一个管道?

假设我有一个名为foo.

如果我想将 的输出重定向foo到某个其他进程bar,我可以编写./foo | bar.

另一方面,如果我想timefoo 并重定向time我可以编写的输出,time (./foo) | bar.

我的问题是,如何将 的输出粘贴到输出time的末尾foo并将其通过同一管道输送

以下解决方案不是我正在寻找的,因为它启动了进程的两个单独实例bar,而我想要一个共享管道,到bar.

time (./foo | bar)  | bar
Run Code Online (Sandbox Code Playgroud)

对于任何好奇的人,不想启动两个实例的bar原因是因为bar可以是网络客户端,并且我希望将计时信息http POST作为与进程输出相同的消息的一部分发送到服务器。

command-line shell pipe time-utility

28
推荐指数
2
解决办法
2万
查看次数

关键字、保留字和内置字之间的区别?

Make bash use external `time` 命令而不是 shell built-in,Stéphane Chazelas 写道:

没有time内置 bash。time是一个关键字,所以你可以做例如time { foo; bar; }

我们可以验证一下:

$ type -a time
time is a shell keyword
time is /usr/bin/time
Run Code Online (Sandbox Code Playgroud)

它没有显示time可以是内置命令。

  1. “关键字”的定义是什么?
  2. “关键字”与“Bash 参考手册”中的“保留字”是同一个概念吗?

    保留字

    一个对壳有特殊意义的词。大多数保留字都引入了 shell 流控制结构,例如forwhile

  3. 关键字是否一定不是命令(或不是内置命令)?

    作为关键字,是time不是命令(或不是内置命令)?

    根据关键字和内建的定义,为什么time 不是内建而是关键字?

  4. 为什么“你可以做例如time { foo; bar; }”因为“time是一个关键字”?

bash

11
推荐指数
1
解决办法
4584
查看次数

我们如何让“时间”适用于管道或其组件?

time command1 | command2
Run Code Online (Sandbox Code Playgroud)

time适用command1command1 | command2?如果你的答案是两者之一,你会如何指定另一个?

您能否根据 bash 的语法或 shell 如何解释命令来解释您的答案?

shell解析命令的时候,time在识别|为控制操作符之前是否识别为保留字?识别time为保留字和识别|为控制运算符之间的顺序是否决定time适用于command1command1 | command2

谢谢。

bash pipe time

1
推荐指数
1
解决办法
323
查看次数

标签 统计

bash ×3

pipe ×2

time-utility ×2

command-line ×1

shell ×1

shell-builtin ×1

time ×1