기본적으로 스크린 세션의 제목은 마지막으로 입력한 명령의 이름으로, 제 경우에는 잘 작동하지만 경우에 따라 변경하고 싶습니다. 나는 Ctrl- 명령에 대해 알고 있지만 A A다음 명령까지만 제목을 변경하고 달리 결정할 때까지 거기에 머물기를 원합니다.
편집하다:
이건 preexec
제가 찾아본 기능 이에요.zshrc
if [[ "$TERM" == "screen" ]]; then
local CMD=${1[(wr)^(*=*|sudo|-*)]}
echo -n "\ek$CMD\e\\"
fi
답변1
설정 방법에 따라 다르지만 기본적으로 이와 같은 것이 작동합니다.
settitle() {
printf "\033k$1\033\\"
}
그런 다음 다음을 실행하십시오.
settitle NEWTITLE
.
바라보다화면 제목 문서그리고GNU 화면 FAQ자세한 내용은.
주어진 + 는 (모든 쉘) 또는 / (bash에만 해당) 또는 / (zsh에만 해당)로 설정할 Ctrl수 있는 다음 명령 이전에만 변경됩니다 .A A$PS1
$PROMPT_COMMAND
DEBUG trap
precmd
preexec
\e
기본적으로 \033
위의 예와 같이 it 과 함께 또는 뒤에 나타나는 모든 위치를 찾아야 합니다 .k
\\
settitle
고쳐 쓰다
버릇이 있다고 하셨어요 preexec
.
이것을 다음과 같이 바꾸면 어떨까요?
if [[ "$TERM" == "screen" ]]; then
local CMD=${1[(wr)^(*=*|sudo|-*)]}
echo -n "\ek${TITLE:-$CMD}\e\\"
fi
그런 다음 다음 명령을 실행하여 사용자 정의 제목을 설정할 수 있습니다.
TITLE="my title"
다음을 실행하여 헤더 설정을 해제합니다.
TITLE=
필요한 경우 변경하는 것을 잊지 마십시오 precmd
.$PS1
옆에
합계를 하드코딩하지 않음으로써 이를 모든 터미널(예: xterm
등) 로 확장할 수도 있습니다.gnome-terminal
\ek
\e\\
이것이 내가 하는 방법이다:
terminit()
{
# determine the window title escape sequences
case "$TERM" in
aixterm|dtterm|putty|rxvt|xterm*)
titlestart='\033]0;'
titlefinish='\007'
;;
cygwin)
titlestart='\033];'
titlefinish='\007'
;;
konsole)
titlestart='\033]30;'
titlefinish='\007'
;;
screen*)
# status line
#titlestart='\033_'
#titlefinish='\033\'
# window title
titlestart='\033k'
titlefinish='\033\'
;;
*)
if type tput >/dev/null 2>&1
then
if tput longname >/dev/null 2>&1
then
titlestart="$(tput tsl)"
titlefinish="$(tput fsl)"
fi
else
titlestart=''
titlefinish=''
fi
;;
esac
}
# or put it inside a case $- in *i* guard
if test -t 0; then
terminit
fi
# set the xterm/screen/etc. title
settitle()
{
test -z "${titlestart}" && return 0
printf "${titlestart}$*${titlefinish}"
}
그런 다음 다음과 같이 변경할 수 있습니다 preexec
.
if [[ "$TERM" == "screen" ]]; then
local CMD=${1[(wr)^(*=*|sudo|-*)]}
settitle "${TITLE:-$CMD}"
fi
답변2
창 제목이 현재 창에서 실행 중인 응용 프로그램을 반영한다면 이는 쉘이 이를 수행하고 있기 때문입니다. 그렇다면 배포판, 시스템 관리자 또는 사용자가 구성했기 때문입니다.
실행 시 명령이 창 제목으로 표시되는 경우 이는 preexec
(zsh에서) 또는Bash에서의 시뮬레이션.
각 명령이 완료될 때 제목이 변경되면 이는 precmd
zsh의 함수, bash의 매개변수 또는 쉘의 프롬프트(매개변수)의 일부를 통해 PROMPT_COMMAND
수행 됩니다. PS1
(제목을 변경하는 명령은 터미널 출력 스트림의 일부로 모든 애플리케이션에서 실행되는 이스케이프 시퀀스이므로 프롬프트에 포함될 수 있습니다.)
\e]0;new title\a
, 또는 ( , , ...) 와 같은 쉘 초기화 파일에서 이스케이프 시퀀스를 찾으십시오 \e]2;new title\a
. 관련된 내용이 없으면 설정이 시스템 파일(예: )에 있을 수 있으며 자체 초기화 파일에서 매개변수나 함수를 재정의합니다.\eknew title\e\\
~/.bashrc
~/.zshrc
/etc/bash.bashrc
/etc/zsh/zshrc
바라보다미켈의 답변에서 재정의 가능한 제목 설정 preexec
.