如何使用任意函数在zsh中包装命令

如何使用任意函数在zsh中包装命令,zsh,Zsh,所以我经常运行一些需要很长时间和输出很多东西的命令。当我返回时,我忘记了运行它时使用的参数,必须在控制台中搜索它。我想用一个函数来包装我的所有命令,该函数在命令完成后打印命令行,或者甚至是运行时等更奇特的东西 比如说, $ time ls ... ls --color=tty 0.00s user 0.01s system 12% cpu 0.062 total 我想要的是实现相同的结果,而不必键入“时间” ……此后: %定时\u运行\u和\u打印睡眠3 0.00s用户0.00s系统0%cp

所以我经常运行一些需要很长时间和输出很多东西的命令。当我返回时,我忘记了运行它时使用的参数,必须在控制台中搜索它。我想用一个函数来包装我的所有命令,该函数在命令完成后打印命令行,或者甚至是运行时等更奇特的东西

比如说,

$ time ls
...
ls --color=tty  0.00s user 0.01s system 12% cpu 0.062 total
我想要的是实现相同的结果,而不必键入“时间”

……此后:

%定时\u运行\u和\u打印睡眠3
0.00s用户0.00s系统0%cpu总计3.006
刚刚跑完:睡眠3

如果将
REPORTTIME
变量设置为非负数,则用户和系统时间之和大于该值的任何命令都将显示相同的输出,就像您首先使用
时间运行它一样。

请标记bash或zsh,而不是两者。它们是不兼容的外壳。现在,这个问题相当模糊——很难说答案是否完整和响应。这将有助于说明您尝试了什么以及它是如何失败的,或者至少给出具体的要求,而不是您通常在理论上想要做的示例。(例如,如果您只想让提示符打印您运行的最后一个命令的文本,则根本不需要函数包装器;如果这实际上是您的目标,则可以而且应该重新编写问题,以便更明确、更直接地提出问题)。(类似地,如果您想将每个命令包装到函数中,这与如何将特定命令包装到函数中是不同的问题;我将您解释为询问后者,但我不能100%确定该解释是否正确)。
$ ls
...
ls --color=tty  0.00s user 0.01s system 12% cpu 0.062 total
timed_run_and_print() {
  time "$@"
  printf "Just finished running: " >&2
  printf '%q ' "$@" >&2
  printf '\n' >&2
}