Bash + iTerm2를 사용하여 탭 이름을 지정하는 방법은 무엇입니까?


175

iTerm2 (빌드 1.0.0.20120203)에서 나는 일반적으로 여러 개의 탭을 열었습니다. 각 탭에는 분할 창이 있으며 수정 제어, 코딩, 파일 관리, mysql 터미널 작업과 같은 작업의 특정 주제에 관한 것입니다. 일반적으로 작업 흐름에서 5 개 이상의 탭간에 전환해야합니다. 화면의 내용을보고 어느 것이 어느 것인지 기억하거나 말하기가 어려운 경우가 있습니다. 어떻게 든 탭의 이름을 지정하고 싶기 때문에 빠르게 눈에 띄는 것이 무엇인지 신속하게 알 수 있습니다. 이것이 가능한가?



완전히 복제 된 것은 아닙니다. 그렇다면 현재 실행중인 앱을 탭 제목의 일부로 추가하는 방법은 무엇입니까? 즉, 어떤 탭에서 emacs, mysql 등을 실행하고 있습니까?
qazwsx

1
즉, 모든 탭에는 동일한 호스트와 사용자가 있습니다. 따라서 그것들을 사용하면 탭이 구별되지 않습니다.
qazwsx

iTerm 환경 설정에서 현재 작업 이름 표시 를 원 하십니까? 링크 된 주제는 사용자 이름 또는 호스트에 관한 것이 아닙니다.
Daniel Beck

오른쪽, 나는 어떤 프로그램이 실행 중이거나 각 탭에서 실행되었는지에 대한 표시를 보여주고 싶습니다. 또한 다른 게시물에 제공된 솔루션은 Bash + iTerm2에서 작동하지 않습니다.
qazwsx

답변:


212

Mac에서 iterm2를 사용하고 있기 때문에 또 다른 옵션은을 누르고 CmdI무언가를 입력 하고을 누르는 것 ESC입니다.

터미널 솔루션은 이보다 약간 빠르지 만 알려 드리고자합니다.


11
이것은 내가 이름을 바꾼 탭에서 리턴을 발행 할 때까지 잠시 동안 작동합니다.
Stewie

13
@Stewie 환경 설정-> 프로파일-> 터미널에서 "터미널이 보고서 창 제목을 허용하도록 허용"을 선택 취소하십시오.
Max Cantor

3
선택 해제되어 있습니다. 여전히 제목의 이름을 바꿉니다.
Stewie

6
@SteveBennett "테마"(실제로 "프로필")가 아닙니다. CMD + I 명령은 "현재 세션 편집 ..."(보기 메뉴 아래)이므로 해당 탭의 프로파일 인스턴스 만 변경합니다. Esc 키를 누르면 "닫기"버튼이 없기 때문에 창을 닫습니다.
MidnightLightning

4
여러 개의 창이 열려 있으면 어떻게합니까? 탭 자체의 이름을 완전히 지정하려면 각 이름을 바꿔야합니까?
theicfire

119

~/.bashrc도움이되도록 다음 기능을 찾았습니다 .

function title {
    echo -ne "\033]0;"$*"\007"
}

그런 다음 bash 프롬프트에서 다음과 같이 호출 할 수 있습니다.

> title I want a pony!

그리고 내 탭은 그에 따라 제목이 붙습니다.


1
나는 이것을 시도했지만 여전히 작동하지 않습니다. 나는에이 정의를 넣어 bash_aliases, 그것은에서로드 한 .profile( if [ -f ${HOME}/.bash_aliases ]; then . ${HOME}/.bash_aliases fi다음) 그러나 title dog"개"에 탭 제목을 설정하지 않았다
qazwsx '와

2
+1-/ etc / profile에 내 별칭을 추가 한 이유는 내 별칭이있는 위치입니다. 완료 후 파일을 소싱하는 것을 잊지 마십시오. 참고 : 이것은 터미널에서도 작동합니다.
blak3r

3
매우 도움이됩니다. 나는 조랑말을 원했다; 그리고 나는 하나를 얻었다!
SoEzPz

1
.bash_profile에 광산을 넣고 다시 시작하면 매력처럼 작동했습니다.
C Johnson

1
작동하지 않는다고 생각하는 사람들은 명령 프롬프트가 즉시 변경하기 때문입니다. 시도 title dog && sleep 5하면 작동한다는 것을 알 수 있습니다. @schpet의 답변을 참고하십시오.
Mikhail

45

이 명령을 실행하여 탭 또는 창의 제목을 설정하십시오.

export PROMPT_COMMAND='echo -ne "\033]0;YOUR NAME HERE\007"'

~/.bash_profile항상 내 홈 디렉토리와 관련된 현재 디렉토리를 나열 하기 위해 다음을 추가했습니다 .

export PROMPT_COMMAND='echo -ne "\033]0;${PWD/#$HOME/~}\007"'

도크에 100 개의 최소화 된 터미널이있을 때 유용

맥 월드에 모자 팁


꽤 몇 가지 이유 (v5.0.7)에 대한 내 bash는 작동하지 않았다 내보내기 명령에 탈출, 여기에 나를 위해 일한 무엇 :export PROMPT_COMMAND='echo -ne "\033]0;${PWD/$HOME/\~}\007"'
마이크 포겔

18

나는 위와 비슷한 솔루션을 꽤 오랫동안 사용했지만 쉬운 시각적 참조를 위해 색상으로 구분하기에 충분한 탭을 사용합니다. 그래서 각 탭에서 수행하는 작업 종류에 따라 탭 제목, 배지 및 색상을 설정하는 유틸리티 인 tabset을 채웠 습니다 .

예

node 가 필요 하지만 이제는 일반적으로 설치되는 플랫폼입니다. 설치하기 위해서:

npm install -g iterm2-tab-set

대단해! 나는 특히 탭 색상의 자동 설정을 좋아합니다. 고맙습니다!
Ashutosh Jindal

1
와우! 이것은 훌륭한 도구입니다!
dmulvi

현재 승인 된 답변 (<kbd> Cmd </ kbd> <kbd> I </ kbd>에 설명 된 방법 대신이 방법을 사용하고, 무언가를 입력하고 <kbd> ESC </ kbd>를
누름

but that is now a commonly installed platformHahaha.ha ... ha ......, 기다려, 진심 이니?
가짜 이름

예, 진지합니다. 오늘날 터미널 응용 프로그램의 대상이되는 개발자와 개발자는 Dev.s를 설치했습니다. 또는 쉽게 설치할 수 있습니다. bash / zsh / etc. 기반 접근 방식으로 돌아갈 수없는 / 환불 할 수없는 사람들.
조나단 유니스

16

이 기능을 ~/.bash_profile파일에 추가하면 작동합니다.

function title ()
{
    TITLE=$*;
    export PROMPT_COMMAND='echo -ne "\033]0;$TITLE\007"'
}

7

난이게 좋아:

#setup terminal tab title
function title {
    if [ "$1" ]
    then
        unset PROMPT_COMMAND
        echo -ne "\033]0;${*}\007"
    else
        export PROMPT_COMMAND='echo -ne "\033]0;${PWD/#$HOME/~}\007"'
    fi
}
title

사용자 정의 이름과 CWD 기본값 사이에서 탭 이름을 토글 할 수 있습니다.

title -> 탭 제목은 ~/YOUR_CWD/

title hey there -> 탭 제목은 hey there


있는 그대로, 이것은 iTerm 쉘 통합을 방해합니다.
Michael

5

나는 taylorstine의 답변을 정말로 좋아 하지만 변수에 의존하는 iTerm2의 쉘 통합 을 깨뜨립니다 PROMPT_COMMAND. 땜질 할 때마다 __bp_precmd_invoke_cmd다시 추가하여 Taylor의 코드를 수정하여이를 수정할 수 있습니다 PROMPT_COMMAND.

# iTerm2 shell integration
test -e "${HOME}/.iterm2_shell_integration.bash" && source "${HOME}/.iterm2_shell_integration.bash"

# iTerm2 tab titles
function title {
    if [ "$1" ]
    then
        export PROMPT_COMMAND='__bp_precmd_invoke_cmd'
        echo -ne "\033]0;${*}\007"
    else
        export PROMPT_COMMAND='echo -ne "\033]0;${PWD/#$HOME/\~}\007";__bp_precmd_invoke_cmd'
    fi
}
title

3

나는 마이클의 대답을 좋아한다 .

그러나 .iterm2_shell_integration.bash존재하지 않으면 어떻게됩니까?

여기 내 테이크가 있습니다 :

# iTerm2 shell integration
test -e "${HOME}/.iterm2_shell_integration.bash" && source "${HOME}/.iterm2_shell_integration.bash"

# iTerm2 tab titles
function title {
  if [ "$1" ] ; then
    test -e "${HOME}/.iterm2_shell_integration.bash" \
      && export PROMPT_COMMAND='iterm2_preexec_invoke_cmd' \
      || unset PROMPT_COMMAND
    echo -ne "\033]0;${*}\007"
  else
    test -e "${HOME}/.iterm2_shell_integration.bash" \
      && export PROMPT_COMMAND='echo -ne "\033]0;${PWD/#$HOME/~}\007";iterm2_preexec_invoke_cmd' \
      || export PROMPT_COMMAND='echo -ne "\033]0;${PWD/#$HOME/~}\007"'
  fi
}
title

1
버전 3.1에서이 참고 iterm2_preexec_invoke_cmd가되었다__bp_precmd_invoke_cmd
마이클

2

프로파일로 작업하는 경우 (매우 편리함) 환경 설정-> 모양-> 창 및 탭 제목 : '프로필 이름 표시'를 선택하십시오.

영상

그 방법은 다음과 같습니다.

메인 이미지에 연결된 썸네일


2
Preferences -> Profiles -> Terminal
  uncheck Terminal may set Tab/Window title

Max Cantor의 의견이 저에게 효과적이었습니다.


1

자동 프로필 전환배지 는 필요한 용도로 정확하게 설계 되었다고 생각 합니다.

자동 프로파일 전환 iTerm2는 현재 경로, 호스트 이름 및 사용자 이름에 대한 정보를 사용하여 프로파일을 변경할 수 있습니다. 예를 들어, 다른 호스트에 연결할 때 창의 배경색이나 터미널 문자 인코딩이 변경 될 수 있습니다.

배지 터미널 오른쪽 상단에 현재 세션에 대한 정보를 표시하는 배지를 넣을 수 있습니다. 사용자 이름, 호스트 이름 또는 현재 자식 분기와 같은 사용자 정의 데이터를 표시 할 수 있습니다.

결과는 다음과 같습니다.

여기에 이미지 설명을 입력하십시오


링크 된 페이지가 변경되면 답변이 유효하지 않을 수 있으므로 참조 링크에서 답변의 필수 부분을 인용하십시오.
DavidPostill

0

나는 절대적인 명확성 을 위해 B Seven 의 대답을 조금 확장하고 싶습니다 .

우리 대부분은 원격 쉘이 아닌 로컬 쉘에 있지 않은 경우에도 탭의 제목을 어떻게 설정할 수 있는지 알고 싶습니다 (예 : ssh 이상).

1 단계. Preferences -> Profiles -> Terminal uncheck Terminal may set Tab/Window title

2 단계. 각 탭마다 double click on the tab -> Session Title

이제 세션 제목에 설정 한 내용이 그대로 유지됩니다.


-2

Yuk, 그 모든 별칭과 기능. 더 쉬운 해결책 (루트 인 경우)을 터미널에 붙여 넣으십시오.

TARGET=/usr/bin/title
sudo tee "$TARGET" <<'EOF'
#!/usr/bin/env bash
echo -ne "\033]0;$*\007"
EOF
sudo chmod 755 "$TARGET"

또는 경로 또는 전역 경로의 어딘가에 파일 호출 제목을 만들고 EOF 사이에 두 줄을 붙여 넣습니다.


12
"모든 별명을 가진 유크." 아무도 손으로 기억하거나 타이핑 할 수없는 답을 입력합니다.
Dan

1
@ Dan은 이것이 훌륭하다고 말하지는 않습니다. 단지 title에서 호출 된 스크립트를 작성하기 때문에 기억할 필요가 없습니다 /usr/bin.
Emile Bergeron

@EmileBergeron thx, 비록 당신 (우리)이 소수에있는 것처럼 보입니다. 대답은 단 한 줄이었고 나머지는 게으른 사람들을위한 것입니다.
Orwellophile
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.