linux 如何将gnomon默认添加到所有shell命令中[关闭]

qyzbxkaa  于 2023-04-29  发布在  Linux
关注(0)|答案(1)|浏览(104)

**关闭。**这个问题是not about programming or software development。目前不接受答复。

这个问题似乎不是关于a specific programming problem, a software algorithm, or software tools primarily used by programmers的。如果你认为这个问题与another Stack Exchange site的主题有关,你可以留下评论,解释在哪里可以回答这个问题。
5天前关闭。
Improve this question
我想在zsh中默认将所有命令都传递给gnomon。
比如说,如果我给予cd folder。它应该自动地管道化指针。
这可能吗?

v6ylcynt

v6ylcynt1#

让我们先提一下,将 everything 重定向到gnomon是一个坏主意。有些命令将无法很好地与它一起工作。相反,您可以为真正想要重定向的命令创建别名:

alias ls='ls | gnomon'

或更好(支持命令行参数):

ls() {
    command ls "$@" | gnomon
}

话虽如此,如果您确切地知道自己在做什么,在zsh中有一种方法可以在每次输入命令时进行一些处理。这叫执行前挂钩你可以这样设置:

preexec () {
    eval "$3" | gnomon
    exec zsh
}

由于preexec钩子并不是用来修改或取消命令的,所以exec行将通过在zsh有机会第二次执行命令(没有管道)之前重新启动zsh来阻止常规命令的执行。

警告preexec黑客是一种蛮力方法,这里仅用于教学目的。对于所有的意图和目的,这是一个shell重新启动,而不是一个延续-环境变量丢失,设置重置,子进程将侧身,如果你安装了多个zsh版本,它甚至可能不是同一个shell,等等。

相关问题