让 gnome-terminal 显示以标题运行的命令

让 gnome-terminal 显示以标题运行的命令

我希望正在运行的命令的名称,例如 unzip 可以通过 gnome-terminal 的标题栏看到,但如果正在运行的应用程序没有明确设置标题,这似乎是不可能的,即使我在配置文件对话框中选择了“替换初始标题”选项。

答案1

这是一个更完整的解决方案,实际上可以解决 bash-completion 垃圾邮件问题。

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

对于我来说,Gnome-Terminal/Terminator 非常适用(将它放在你的 .bashrc 或某个获取源代码的地方)

# 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

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

答案2

这已经得到了某种程度的回答这里

  • trap 'command' DEBUG使 bashcommand在每个命令之前运行。
  • echo -ne "\033]0;Title\007"将标题更改为“标题”
  • $BASH_COMMAND包含正在运行的命令。

结合这些我们得到

trap 'echo -ne "\033]0;$BASH_COMMAND\007" > /dev/stderr' DEBUG

然后,我们只需在完成命令后重置标题即可。我通过将$PS1标题更改为当前路径来实现此目的。

tl;dr: 将这两行(按此顺序,否则我会得到乱码提示)添加到~/.bashrc

PS1="\033]0;\w\007${PS1}"
trap 'echo -ne "\033]0;$BASH_COMMAND\007" > /dev/stderr' DEBUG

编辑:您$PS1可能已经更改了标题,在这种情况下只需要最后一行。

相关内容