Как я могу изменить цвет hardstatus экрана в зависимости от вошедшего в систему пользователя?

8

Я не редактировал / создавал файл .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, но я хочу выяснить, как я могу изменить цвет имени хоста в зависимости от пользователя, который вошел в систему. Возможно ли это? Прямо сейчас, имя хоста желтое, когда я вошел под любым пользователем; но я хочу, чтобы он был красным, если я root. Это то, что можно изменить в моем файле .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

Я также добавил фактические цветовые коды ANSI (ex:) \[\033[31m\]и экранирующие коды (ex:) %krк приведенному выше заявлению в моем .bashrc, но ни один из них не сработал.

РЕДАКТИРОВАТЬ 3

Если я использую это в качестве командной строки, имя хоста будет отображаться красным перед моим PS1:

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

Если я использую следующую подсказку, имя окна изменится на имя хоста (ДА!); но цвет остается по умолчанию (НЕТ!):

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

Я также пытался заменить \033[31m(и просто [31m) на экранирование цвета экрана (% kr), но это тоже не сработало.

EGR
источник
Вы хотите раскрасить его в зависимости от того, какой пользователь вошел в систему, если определенный пользователь вошел в систему?
SLM
Да. Я хочу сделать так, чтобы имя хоста сервера становилось красным, когда я захожу на этот сервер как root. Например, в моем файле .bashrc у меня есть строка, которая меняет мой PS1 на весь красный текст, когда я вхожу в систему как root. Я хочу эмулировать это поведение с именами хостов на экране.
EGr

Ответы:

1

Взгляните на это U & L Q & A.

Конкретно этот ответ, https://unix.stackexchange.com/a/16433/7453 .

Общая идея заключается в том, что вы поддерживаете 2 разных screenrcфайла с цветами и, основываясь на $USERсвоем bashrcфайле, указываете переменную окружения SCREENRCдля данного пользователя.

SLM
источник
Я взгляну. Единственный вопрос, который у меня есть по этому поводу, будут ли оба .screenrcфайла работать одновременно? Например, если я открою экран как сам, а затем sudo -sполучу root на другом компьютере в рамках этого сеанса экрана, будут ли мои другие окна экрана оставаться желтыми, а имя (имя хоста) окна, которое я только что стал root, станет красным?
EGr
Я не знаю, возможно ли это, возможно, так и есть, но это все еще слишком необычно, я имею в виду, если вы находитесь на одном сеансе экрана, он будет работать с использованием того же самого .screenrc. С двумя отдельными экземплярами экрана было бы просто сделать это, просто две отдельные конфигурации.
njsg
Это то, что я предположил, я буду продолжать искать и обновлять ветку, если найду решение (или если у кого-то еще есть решение). Спасибо за помощь!
EGr