使用终端/ ssh时,不同机器的颜色提示是否不同?


11

我有5台不断投入工作的机器。当我在错误的盒子上发出错误的命令时,它变得越来越令人沮丧。幸运的是我还没有做任何坏事。我想知道是否有任何我可以硬编码的hack,它们会根据我所使用的计算机以不同的颜色显示提示?例如,蓝色代表Desktop1,紫色代表笔记本电脑,红色代表服务器等?这可能吗?

当前,我正在使用此命令export PS1 =“ \ e [0; 31m [\ u @ \ h \ W] \ $ \ e [m”从这里获取http://www.cyberciti.biz/faq/bash-shell更改Linux或unix /下我的外壳提示的颜色, 但显然在ssh上不起作用。

另外,如果您还有其他一些不错的bash技巧可以帮助我缓解视力,那将是很棒的。我得到了为手册页上色的技巧。

http://linuxtidbits.wordpress.com/2009/03/23/less-colors-for-man-pages/


1
每个命令前面的name@ ** server**行不会传达您在哪个服务器上?它需要一些时间来适应,但它是目前最好的方法
TheLQ 2011年

您的笔记本电脑正在使用什么操作系统?
SamK 2011年

1
使用亚马逊云之类的服务时,name @ server尤其无济于事,因为它会更改每次启动,并且无法传达包装箱的用途或容易记住的名称(user @ ip-xxxx)。因此对该问题+1 :)
Rafiq Maniar 2011年

Answers:


11

我使用方法是根据主机名为主机名生成颜色。没有太多颜色可供选择,因此很容易产生冲突,但是对于我管理的少量机器很有用。

hostnamecolor=$(hostname | od | tr ' ' '\n' | awk '{total = total + $1}END{print 30 + (total % 6)}')

PS1='\[\e]0;\w\a\]\n\[\e[32m\]\u@\[\e[${hostnamecolor}m\]\]\h \[\e[32m\]\w\[\e[0m\]\n$ '

第一行从计算机的主机名生成一个介于30(inc)和36(exc)之间的数字。第二行将其应用于提示,用户名和路径为绿色(32),主机名为生成的颜色。

没有设置背景色,我从前景中排除了青色(36)和白色(37),以避免与我使用的终端背景发生冲突。


因此,它可以为前景和背景生成相同的颜色吗?
克里斯S

没有生成背景色。但是您所生成的颜色可以与背景匹配是正确的。我排除了白色(37)和青色(36),因为它们在我使用的终端背景下效果不佳。我已经对答案进行了编辑,以使其更加清楚。
丹·米德伍德

3

您走在正确的轨道上。我使用了您链接到的页面上详细介绍的方法,并在我的Blog上详细介绍了该方法。它适用于我从Windows盒使用PuTTY,以及从一台CentOS服务器到另一台CentOS服务器的SSH。如果它不适合您,并且您确定语法正确,则可能取决于您的SSH客户端。


嗨,我确实更改了.bashrc,并且我了解可以在本地更改颜色。我想要的是,当我切换到另一台计算机时,提示颜色会更改。我知道终端将不会自动知道,所以我一直在寻找使这种情况发生的指针。
bcrawl 2011年

1
编辑:好的,是的,您是对的。如果.bashrc文件在每台计算机上都更改,则在ssh时,它将显示其配置的颜色。我没有编辑正确的文件。谢谢。认为它解决了。
bcrawl 2011年

2
如果此答案直接将您引向解决方案,则可以考虑单击答案左侧的对勾标记,将其标记为“已接受”。
凯文M

1

在我的工作中,我们有不同阶段的服务器

生产阶段开发

我使用红色提示作为产品,使用绿色提示进行分期。现在,所有登台计算机都在域中具有stg。

所以刺

web1.domain.com
web2.domain.com

分期/开发将是

stg-web1.domain.com
stg-web2.domain.com
dev-web1.domain.com
etc

这仅适用于redhat / centos

但是对于产品服务器,我有以下内容

/etc/sysconfig/bash-prompt-xterm

里面是

export PS1="\[[\e[1;31m\]\u@\[\e[1;31m\]\h\[\e[0m\] \W] "

这将使提示变为红色。。现在您无法触摸/ etc / bashrc,所有其他非产品机器将保持您使用的正常前景色。但是我将它们设置为绿色。

if [ "$PS1" ]; then
    case $TERM in
        xterm*)
                if [ -e /etc/sysconfig/bash-prompt-xterm ]; then
                        PROMPT_COMMAND=/etc/sysconfig/bash-prompt-xterm
                else
                        PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME%%.*}:${PWD/#$HOME/~}"; echo -ne "\007"'
                fi
                ;;

那个if块应该在那儿..我只是将else部分的颜色改为绿色。.33是绿色


0

您可以在每台机器上更改bash.rc 以赋予它们不同的提示颜色。或者,如果您有足够的特权,请更改sshd config以允许通过PermitUserEnvironment指令传输用户环境。


0

这个要点中,我们正在研究一个更全面的基于主机名字符串校验和的解决方案。256色兼容性。除了您实际上有兴趣自己为每个服务器确定特定颜色的情况之外,我认为这是“这是我们的计算机所要处理的”问题之一,因此可以根据以下情况为您确定“随机”颜色校验和应该是一个好方法。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.