GNOME 终端 - 选项卡标题中的进程名称

GNOME 终端 - 选项卡标题中的进程名称

如何将当前正在运行的进程名称放入 GNOME 终端选项卡标题(或只有一个选项卡时的标题栏)?

- 更新 -

为了澄清起见,我希望在运行某个进程时更新选项卡标题,例如:

# title is currently "bash"
$ find / -name foo # while searching for foo, title is "find"
$ # title is once again "bash"
$ less /proc/cpuinfo # title changes to "less"
$ man ls # title changes to man
$ # title returns to "bash"

答案1

找到了。本网站为解决方案提供了很好的解释。
在您的 bashrc 中,它看起来如下:

case "$TERM" in
xterm*|rxvt*)
    set -o functrace
    trap 'echo -ne "\e]0;$BASH_COMMAND\007"' DEBUG
    PS1="\e]0;\s\007$PS1"
    ;;
*)
    ;;
esac

就我个人而言,我认为我不会将它添加到我的 bashrc 中,因为当您的所有 shell 启动时,DEBUG 与 trace 结合会抛出大量垃圾。如果您可以忍受,它实际上确实有效。但它确实会显示整个命令,而不仅仅是第一个单词。

答案2

好吧,既然每个人似乎都已经知道 David Pashley 的解决方案,我有点惊讶我花了这么长时间才找到这个,因为它几乎一样古老。

该解决方案实际上解决了 bash-completion 垃圾邮件问题。

需要说明的是:我在这里没有做任何自己的事情,只是做了研究。所有功劳都归于马里乌斯·格德米纳斯

对我来说,Gnome-Terminal/Terminator 非常适用

# If this is an xterm set the title to user@host:dir
case "$TERM" in
xterm*|rxvt*)
    PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME}: ${PWD}\007"'

    # Show the currently running command in the terminal title:
    # http://www.davidpashley.com/articles/xterm-titles-with-bash.html
    show_command_in_title_bar()
    {
        case "$BASH_COMMAND" in
            *\033]0*)
                # The command is trying to set the title bar as well;
                # this is most likely the execution of $PROMPT_COMMAND.
                # In any case nested escapes confuse the terminal, so don't
                # output them.
                ;;
            *)
                echo -ne "\033]0;${USER}@${HOSTNAME}: ${BASH_COMMAND}\007"
                ;;
        esac
    }
    trap show_command_in_title_bar DEBUG
    ;;
*)
    ;;
esac

这也是交叉发布因为我刚刚发现它并想分享,而且我认为它在这里也很有用。

答案3

下面应该可以工作。我在文件中有该函数,并在设置之前在文件.bash_functions中获取它。.bashrc$PROMPT_COMMAND

function term_title
{
        history 1 | awk '{print $2}';
}

PROMPT_COMMAND='echo -ne "\033]0;"$(term_title)"\007"'

答案4

在 zsh 中,您只需定义“precmd”函数。看这里

相关内容