그놈 터미널-탭 제목의 프로세스 이름


9

현재 실행중인 프로세스 이름을 그놈 터미널 탭 제목 (또는 탭이 하나만있을 때 제목 표시 줄)에 어떻게 넣을 수 있습니까?

-업데이트-

명확히하기 위해 프로세스를 실행할 때 탭 제목을 업데이트하려고합니다.

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

답변:


8

그것을 발견. 이 사이트 는 솔루션에 대한 좋은 설명을 제공합니다.
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는 모든 쉘이 시작될 때 많은 쓰레기를 버리지 않기 때문입니다. 그것으로 살 수 있다면 실제로 작동합니다. 그러나 첫 번째 단어뿐만 아니라 전체 명령이 표시됩니다.


2
좋은 질문을 해주셔서 감사합니다. 이것은 처음에는 간단한 질문처럼 보였습니다 ... 처음 10 분 후, 그것은 나를 미치게하기 시작했습니다! 그것이 좋은 질문이라고 생각하는 이유입니다. 간단하게 들리지만 쉘, 터미널 및 신호 간의 상호 작용에 대해 더 깊이 배우도록했습니다.
DaveParillo

PS1할당? 그것은 나를 어리둥절하게 만들고 실제로 여기에 필요하지 않은 것 같습니다 ...?
phil294

나를 위해 단지 오류.
Kzqai

4

글쎄, 모두가 이미 David Pashley의 솔루션을 알고있는 것처럼 보이므로 거의 오래 되었기 때문에이 것을 찾는 데 너무 오래 걸렸습니다.

이 솔루션은 실제로 bash-completion spamming 쓰레기를 처리합니다.

분명히하기 위해 : 나는 연구를 제외하고는 아무것도하지 않았다. 모든 크레딧은 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

또한 이것은 단지 그것에 대해 알고 공유하고 싶었고 여기에서도 유용하다고 생각하기 때문에 교차 게시물 입니다.


2

아래가 작동합니다. .bash_functions파일에 함수가 있으며 .bashrc설정하기 전에 파일 에서 소스로 사용하십시오 $PROMPT_COMMAND.

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

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

1
당신은 가까이 있지만, 나는 훨씬 나아지지 않습니다. 이렇게하면 마지막으로 실행 된 명령 이 제공 되지만 실제로 내구성이 무엇인지는 아닙니다. 나는 term_title을 다음과 같이 바꾸려고 생각했다.`if [jobs]; 그때 역사 1 | awk '{print $ 2}'; 그렇지 않으면 echo -ne 'bash em'fi`가 작동하지만 수명이 짧은 프로세스를 잡는 데 일관성이 없으며 프로세스가 끝나면 다시 전환되지 않습니다. xterm의 내부 작업에 대해 그 트리거 / 이벤트를 혼란스럽게하는 방법을 알지 못합니다.
DaveParillo

bash는 프롬프트를 표시하기 직전에 $ PROMPT_COMMAND를 실행하므로 이것이이 방법으로 할 수있는 최선입니다. Enter 키를 누른 직후 실행할 수있는 다른 트리거가있을 수 있지만 잘 모르겠습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.