我已经有一段时间没有编辑/创建 .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
给定用户的环境变量。