$PS1
현재 프롬프트( 일부 색상 포함) 를 창 제목(하드라인) 및 xterm 창 제목 \u@\h:\w$(__git_ps1 "(%s)")\$
으로도 사용하고 싶습니다 . screen
이것이 어떻게 달성될 수 있습니까?
답변1
하나불완전한해결책은 $PS1
GNU 화면에서 프롬프트를 수정하는 것입니다. 먼저 셸의 RC 파일(즉 ~/.bashrc
, )을 수정합니다. 하나를 찾고사례평가된 내용 $TERM
:
case "$TERM" in
xterm*|rxvt*)
PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
;;
*)
;;
esac
다음을 추가하세요이전에모든 것을 포괄하는(예: *)
):
screen)
PS1='\e]0;\u@\h:\w\a\ek\u@\h:\w\e\\\u@\h:\w$(__git_ps1 "(%s)")\$ '
;;
이렇게 하면 hardstatus가 수정됩니다.\e]0;...\a
그러면 창 제목이 수정됩니다. \ek...\e\\
하드 상태는 구성하지 않으면 표시되지 않습니다. 예를 들어 다음을 에 추가할 수 있습니다 .screenrc
.
hardstatus alwayslastline
복잡한 hardstatus string
옵션이 계속 중요한 역할을 할 것입니다. 현재 동적으로 저장된 하드 상태를 다음으로 바꿀 수 있습니다 %h
.
hardstatus string '%{= kw}[ %h ] %=%{w}[ %{r}%l%{w} ]%{w}[%{y} %Y-%m-%d %C %A %{w}]%{w}'
이는 하드 상태 줄을 화면 왼쪽의 두 괄호 사이에 저장된 하드 상태로 설정하고 날짜 및 시간과 함께 CPU 사용률을 오른쪽으로 설정합니다.
예:
[ username@host:~ ] [ 0.00 0.01 0.00 ][ 2012-11-27 4:13 PM ]
지침
이렇게 하면 쉘 기록에서 커서 오프셋이 깨질 가능성이 높습니다. (위쪽 화살표를 몇 번 클릭하고 줄을 편집해 보십시오. 무슨 뜻인지 알게 될 것입니다.) 이는 대부분의 쉘이 length 를 사용
$PS1
하고 여기에 추가된 인쇄할 수 없는 문자를 포함하기 때문 입니다$PS1
.이렇게 하면 xterm 제목 표시줄이 깨져서 GNU Screen을 실행하기 전에 설정된 마지막 상태로 "고정"될 가능성이 높습니다. 흥미롭게도 제목 표시줄을 업데이트하는 vim과 같은 애플리케이션은 계속 작동합니다.
C-A A
명령 프롬프트가 업데이트될 때까지 화면 제목(예:)을 수동으로 설정하는 것은 계속 작동합니다.
답변2
Bash를 사용하여 화면 제목을 $YourVariable(screenrc 제목 변수 %t)로 동적으로 변경합니다.
export PROMPT_COMMAND="echo -ne '\033k$YourVariable\033\\'"
"screen" 내부가 아닌 경우 hardstatus(screenrc 제목 변수 %h)를 사용할 수도 있습니다. 그러면 창(터미널 에뮬레이터) 제목이 변경됩니다.
export PROMPT_COMMAND="echo -ne '\033]0;$YourVariable\007'"