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


11

쉘 프롬프트에서 GNU Screen 세션 이름과 창 제목을 제시 할 수있는 방법이 PS1있습니까?

답변:


14

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

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

"작성시"는 (창의 number명령을 사용하여) 창 번호를 다시 매길 경우 , 쉘에 변경 사항에 대한 정보가없고 $ WINDOW는 여전히 첫 번째 창 번호와 동일 함을 의미합니다.

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

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

1
완전한! 이것이 내가 찾던 것입니다. BTW, 창 번호 대신 창 제목을 얻는 방법이 있습니까?
brandizzi

내가 아는 것은 아니지만 화면에는 API가 없으며 명령을 실행할 때 출력이 없습니다. 화면의 현재 창으로 이동합니다. 예를 들어 screen -xr 2466 -X windows.
Arcege

번호를 다시 매기는 경우에 해당하지만 창으로 설정되어 있으면 창 이름에 액세스하는 방법이 Ctrl-a A있습니까?
Thalis K.

1
GNU이 경우 screen컴파일 된 -Q(쿼리) 옵션, 다음과 같은 몇 가지 명령을 실행할 수 있습니다 titlewindows후행 줄 바꿈없이, 그러나, 표준 출력에 데이터 표시가 있습니다.
Arcege

3

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

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

1

나는 이것을 사용한다 :

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

${STY}
창 번호를 포함 하여 프로세스 번호를 제거합니다 ( "작성시"에 언급 된대로)
창 제목을 포함합니다 (에서 반환 screen -Q title)

노트:

  • 처음 실행될 screen -Q때 리턴 키 입력을 기다립니다.
  • Ca CA로 창 제목을 설정 한 다음 프롬프트를 업데이트하기 위해 .profile을 제공합니다.

5
를 사용 ${STY#[0-9]*.}하면 배관 할 필요가 없습니다 sed.
dimo414
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.