我已经有一段时间没有编辑/创建.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代码放在主机名的屏幕hardstatus中:
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颜色代码(例如:)\[\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),但是那也不起作用。
您是否要根据已登录用户的颜色对其进行着色,直到某个用户已登录到系统?
—
slm
是。我想这样做,以便当我以root用户身份登录该服务器时服务器主机名变为红色。例如,在我的.bashrc文件中,当我以root用户身份登录时,有一行代码将PS1更改为所有红色文本。我想用屏幕上的主机名模拟此行为。
—
2013年