EGr*_*EGr 8 colors bash gnu-screen bashrc
我有一段时间没有编辑/创建 .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
Run Code Online (Sandbox Code Playgroud)
老实说,我不记得我的 hardstatus 行中的所有内容代表什么,但我想弄清楚如何根据登录的用户更改主机名颜色。这可能吗?现在,当我以任何用户登录时,主机名是黄色的;但如果我是 root,我希望它是红色的。这是可以在我的 .bashrc 文件中更改的内容吗?我在我的 .bashrc 中有这个来将新的屏幕窗口名称更改为我连接到的服务器的主机名:
# Set screen window title
case "$TERM" in
screen)
PROMPT_COMMAND='echo -ne "\033k$HOSTNAME\033\\"'
;;
esac
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助!
编辑
我已经尝试将它添加到我的 .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
Run Code Online (Sandbox Code Playgroud)
编辑 2
我还在上面的语句中添加了实际的 ANSI 颜色代码(例如:)\[\033[31m\]和屏幕转义代码(例如:),但都不起作用。%kr.bashrc
编辑 3
如果我使用它作为提示命令行,主机名会在我的 PS1 前面显示为红色:
PROMPT_COMMAND='echo -ne "\033[31m$HOSTNAME\033\\"'
Run Code Online (Sandbox Code Playgroud)
如果我使用以下提示,窗口名称将更改为主机名(是!);但颜色仍然是默认的(不!):
PROMPT_COMMAND='echo -ne "\033[31m\033k$HOSTNAME\033\\"'
Run Code Online (Sandbox Code Playgroud)
我也试过用屏幕颜色转义 (%kr)替换\033[31m(并且只是[31m),但这也不起作用。
看看这个 U&L 问答。
具体来说这个答案,https://unix.stackexchange.com/a/16433/7453。
总体思路是,您维护 2 个不同的screenrc颜色文件,并根据文件$USER中的bashrc颜色将环境变量指向SCREENRC给定用户的环境变量。
| 归档时间: |
|
| 查看次数: |
2883 次 |
| 最近记录: |