如何根据登录用户更改屏幕的硬状态颜色?

如何根据登录用户更改屏幕的硬状态颜色?

我已经有一段时间没有编辑/创建 .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

我还在my 的上述语句中添加了实际的 ANSI 颜色代码(例如:\[\033[31m\])和屏幕转义代码(例如: ) ,但都不起作用。%kr.bashrc

编辑3

如果我使用它作为提示命令行,主机名会在我的 PS1 前面显示为红色:

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

如果我使用以下提示,窗口名称将更改为主机名(是!);但颜色仍然是默认的(不!):

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

我也尝试用屏幕颜色转义(%kr)替换\033[31m(并且只是[31m),但这也不起作用。

答案1

看看这个 U&L 问答。

具体这个答案,https://unix.stackexchange.com/a/16433/7453

总体思路是,您维护 2 个不同的screenrc颜色文件,并根据文件$USER中的bashrc颜色将环境变量指向SCREENRC给定用户的环境变量。

相关内容