GNU 화면 : 새로운 창 이름 변경


20

Ctrl-a Shift-a를 사용하여 창의 이름을 변경할 수 있습니다. 여러 개의 창 이름을 직접 편집하는 대신 현재 디렉토리의 이름을 자동으로 지정하는 방법이 있습니까?


어떤 쉘을 사용하십니까?
marco

bash를 사용하고 있습니다.
liewl

답변:


21

디렉토리가 변경 될 때마다 또는 프롬프트가 표시 될 때마다 쉘이 창 제목을 변경하도록하십시오.

당신을 위해 ~/.bashrc:

if [[ "$TERM" == screen* ]]; then
  screen_set_window_title () {
    local HPWD="$PWD"
    case $HPWD in
      $HOME) HPWD="~";;
      $HOME/*) HPWD="~${HPWD#$HOME}";;
    esac
    printf '\ek%s\e\\' "$HPWD"
  }
  PROMPT_COMMAND="screen_set_window_title; $PROMPT_COMMAND"
fi

또는 ~/.zshrc(zsh 사용자의 경우) :

precmd () {
  local tmp='%~'
  local HPWD=${(%)tmp}
  if [[ $TERM == screen* ]]; then
    printf '\ek%s\e\\' $HPWD
  fi
}

자세한 내용 은 화면 설명서의 동적 제목 또는 매뉴얼 페이지의 "제목 (이름 지정 창)"을 참조하십시오.


내 .bashrc에에서 bash를 copypasted 그것은 이러한 오류 떨어져주고있다 : bash는 : PROMPT_COMMAND를 : 라인 0 : 구문 오류가 예기치 않은 토큰 근처에 ;' bash: PROMPT_COMMAND: line 0: , 'screen_set_window_title
liewl

@David : 죄송합니다. 요점은 PROMPT_COMMAND이미 무언가가 있다면 명령을 축적하는 것이었지만 잘못된 순서로 구성 요소를 가지고있었습니다.
Gilles 'SO- 악마 그만해'

2
위대한 속임수 @Gilles. 창 제목을 짧게 유지하려는 경우 전체 경로를 삭제하고 기본 이름 만 유지할 수 있습니다. 그냥 교체 $HOME/*) HPWD="~${HPWD#$HOME}";;와 함께*) HPWD=`basename "$HPWD"`;;

0

이것을 .bashrc에 넣으면 터미널 이름 (창 이름)을 현재 작업중인 마지막 디렉토리 (또는 파일 이름)로 변경할 수 있습니다.

case "$TERM" in xterm*|rxvt*) PROMPT_COMMAND='echo -ne "\033]0;${PWD##*/}\007"' ;; *) ;; esac

자세한 설명은 여기 : 링크

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