在下面的两个 C-shell 别名中,只有第一个打印时间命令的已用时间报告。如何获取带有管道的别名以打印时间报告?
alias make1 'time make'
alias make2 'time make |& tee make.log'
答案1
这时间C shell(csh 或 tcsh)内置的命令不支持管道。要避免此限制,请使用独立的时间命令,通常位于 /usr/bin/time(如果不是,请尝试whereis time
找到它)。
time
在命令行中将更改为/usr/bin/time
(或/usr/bin/time -p
) 或时间程序的路径,它就应该可以工作。
为什么没有奏效:
C shell(和其他一些 shell 一样)有一个内置的时间命令(参见内置请参阅手册页),优先使用非内置(独立)时间程序:
% which time
time: shell built-in command.
%
和csh 的手册页(实际上我的系统上的 tcsh)状态为:
time [command]
Executes command (which must be a simple command, not an alias,
a pipeline, a command list or a parenthesized command list) ...
/usr/bin/time 命令没有这个限制,内置的时间大多数其他 shell 的命令,例如 bash 或 zsh。
答案2
你是想在这里使用管道吗?你实际上做的是将第二个time
命令的结果通过管道传输到tee
。这就是为什么你的结果没有被打印出来 - 它实际上可能被写入 make.log。