로그인한 사용자에 따라 화면의 하드 상태 색상을 변경하는 방법은 무엇입니까?

로그인한 사용자에 따라 화면의 하드 상태 색상을 변경하는 방법은 무엇입니까?

.screenrc 파일을 편집/생성한 지 꽤 시간이 지났지만 현재 사용 중인 파일은 다음과 같습니다.

# Turn off the screen startup message
startup_message off

# Define format of bottom navigation/status/date/etc. line
hardstatus alwayslastline "%{yk}[ %H ] %-Lw%50>%{gk}(%{-}%n-%t%{gk})%{-}%+Lw%< %=%{yk}[ %c %d.%m.%Y ]"

# Increase scrollback buffer to 30000 lines
defscrollback 30000

솔직히 내 Hardstatus 라인의 모든 내용이 무엇을 나타내는지 기억할 수 없지만 로그인한 사용자를 기반으로 호스트 이름 색상을 변경하는 방법을 알아내려고 노력 중입니다. 가능합니까? 이제 임의의 사용자로 로그인할 때 호스트 이름은 노란색이지만 루트인 경우에는 빨간색을 원합니다. .bashrc 파일에서 변경할 수 있는 내용인가요? .bashrc의 새 화면 창 이름을 연결된 서버의 호스트 이름으로 변경했습니다.

# Set screen window title
case "$TERM" in
screen)
  PROMPT_COMMAND='echo -ne "\033k$HOSTNAME\033\\"'
  ;;
esac

도와주셔서 감사합니다!

편집하다

이것을 .bashrc 파일에 추가하려고 시도했지만 화면 하드 상태에서 호스트 이름 앞에 ANSI 코드가 추가되었습니다.

case "$TERM" in
screen)
  if (( $UID == 0 )); then
    PROMPT_COMMAND='echo -ne "\033k$FRED$HOSTNAME$RS\033\\"'
  else
    PROMPT_COMMAND='echo -ne "\033k$HOSTNAME\033\\"'
  fi
  ;;
esac

편집 2

\[\033[31m\]또한 위 명령문에 실제 ANSI 색상 코드(예: )와 화면 이스케이프 코드(예: )를 추가했지만 둘 다 작동하지 않았습니다.%kr.bashrc

편집 3

이것을 명령줄 프롬프트로 사용하면 PS1 앞에 호스트 이름이 빨간색으로 나타납니다.

PROMPT_COMMAND='echo -ne "\033[31m$HOSTNAME\033\\"'

다음 프롬프트를 사용하면 창 이름이 호스트 이름으로 변경되지만(예!) 색상은 기본값으로 유지됩니다(아니요!).

PROMPT_COMMAND='echo -ne "\033[31m\033k$HOSTNAME\033\\"'

\033[31m또한 를 화면 색상 이스케이프(%kr)로 바꾸려고 시도했지만 [31m역시 작동하지 않았습니다.

답변1

U&L Q&A를 확인해 보세요.

특히 이 답변은https://unix.stackexchange.com/a/16433/7453.

일반적인 아이디어는 2개의 서로 다른 screenrc색상 파일을 유지하고 파일 $USER의 색상을 기반으로 bashrc환경 변수가 SCREENRC특정 사용자의 환경 변수를 가리키는 것입니다.

관련 정보