쉘 프롬프트에 GNU 화면 세션 이름 및 창 제목 표시

쉘 프롬프트에 GNU 화면 세션 이름 및 창 제목 표시

쉘 프롬프트(예: 에서 정의한 Bash 프롬프트 ) PS1에 GNU 화면 세션 이름과 창 제목을 표시하는 방법이 있습니까?

답변1

screenScreen은 (1) 맨페이지 에서 일부 환경 변수를 제공합니다 .

STY              Alternate socket name.
WINDOW           Window number of a window (at creation time).

"생성 시"는 창 번호를 다시 지정하면(screen number명령을 사용하여) 쉘에 변경 사항이 통보되지 않으며 $WINDOW는 여전히 첫 번째 창 번호와 동일하다는 의미입니다.

다음과 같은 것을 사용할 수 있습니다.

PS1='\u@\h(${STY}:${WINDOW}):\w$ '

답변2

나는 항상 정확한 스크린 세션 이름을 사용합니다. 그런 다음 화면의 STY 환경 변수를 PS1에 추가하고 숫자 ID를 제거할 수 있었습니다(dimo414 덕분에). 나는 항상 세션에 있지 않기 때문에 중괄호 등으로 장식하지 않을 것입니다. 간단한 예:

PS1='\u@\h ${STY#[0-9]*.} \w$ '

답변3

나는 이것을 사용합니다 :

(`echo ${STY} | sed -e 's/[0-9]*\.//g'`:${WINDOW}:`screen -Q title`)

${STY}
창 번호 포함("생성 시"에 설명된 대로) 에서 프로세스 번호 제거
창 제목 포함(에서 반환 screen -Q title)

노트:

  • 처음 실행할 때 screen -QEnter 키를 기다립니다 .
  • Ca CA를 사용하여 창 제목을 설정한 다음 .profile을 가져와 프롬프트를 업데이트합니다.

답변4

나는 보통 다음과 같은 명명된 화면을 사용합니다.screen -S vim ## see: screen -h

스크린 세션 이름을 화면에 표시하도록 PS1 프롬프트를 얻으려면(스크린 세션을 일반 터미널 세션과 구별하기 위해) 두 부분으로 구성된 접근 방식을 수행해야 합니다.

  1. 파일에 힌트를 설정합니다 ~/.screenrc.
  2. 일반 BASH 별칭을 통해 (스크린 세션 내에서) 파일을 가져옵니다 ~/.bashrc.
# -----------------------------------------------------------------------------
# ~/.screenrc    ## or whatever you want to name it

PS1='[\u@\h (screen: ${STY#[0-9]*.}) \w]$ '
# -----------------------------------------------------------------------------
# -----------------------------------------------------------------------------
# ~/.bashrc

alias ssrc='source ~/.screenrc'    ## or whatever you named it (comment above)
# -----------------------------------------------------------------------------

용법:

[me@vps1360 ~]$ screen -S test

  # -----------------------------------------------------------------------------
  # Named screen session:

  [me@vps1360 ~]$ ssrc
  [me@vps1360 (screen: test) ~]$    ## PS1 prompt with screen session name
  # Ctrl-a d
  [detached from 9278.test]
  # -----------------------------------------------------------------------------

[me@vps1360 ~]$

관련 정보