下一个 上一个 目录

5. 打印当前作业名称

通常,用户会启动一个长时间运行的前台作业,例如 top、编辑器、电子邮件客户端等,并希望在标题中显示该作业的名称。这是一个更加棘手的问题,只有在 zsh 中才能轻松实现。

5.1 zsh

zsh 为此目的提供了一个理想的内置函数

preexec()   a function which is just before a command is executed
$*,$1,...   arguments passed to preexec()
因此,我们可以将作业名称插入到标题中,如下所示
case $TERM in
    xterm*)
      preexec () {
        print -Pn "\e]0;$*\a"
      }
    ;;
esac
注意:preexec() 函数出现在 zsh 的 3.1.2 版本左右,因此您可能需要从早期版本升级。

5.2 其他 shell

在其他缺少类似 preexec() 函数的 shell 中,这并不容易。如果有人有例子,请通过电子邮件发送给作者。


下一个 上一个 目录