web-dev-qa-db-ja.com

GNOMEターミナル-タブタイトルのプロセス名

現在実行中のプロセス名をGNOMEターミナルのタブタイトル(またはタブが1つしかない場合はタイトルバー)に入れるにはどうすればよいですか?

-更新-

明確にするために、プロセスを実行するときにタブタイトルを更新する必要があります。次に例を示します。

# 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"
9
adurity

それを見つけた。 このサイト 解決策の良い説明を提供します。
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に追加することはないと思います。トレースと組み合わせたDEBUGは、すべてのシェルが起動したときに大量のゴミを捨てるからです。あなたがそれと一緒に暮らすことができれば、それは実際に機能します。ただし、最初のWordだけでなく、コマンド全体が表示されます。

8
DaveParillo

さて、誰もがすでにDavid Pashleyのソリューションを知っているように見えるので、これはほぼ同じくらい古いので、これを見つけるのに非常に長い時間がかかったことに少し驚いています。

このソリューションは、実際にbash完了スパムのゴミを処理します。

明確にするために:私はここで自分で何もしませんでしたが、研究しました。すべてのクレジットは Marius Gedminas に送られます。

これは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

また、これは cross-post です。なぜなら、私はそれについて知り、共有したかったので、ここでも役立つと思います。

3
user173944

以下が機能するはずです。関数は.bash_functionsファイルにあり、.bashrcを設定する前に、$Prompt_COMMANDファイルでソースします。

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

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

zshでは、「precmd」関数を定義するだけです。 ここを参照

2
akira