서버에 따라 다른 색상의 프롬프트를 얻으려면 어떻게 해야 합니까?

서버에 따라 다른 색상의 프롬프트를 얻으려면 어떻게 해야 합니까?

ssh항상 사용하고 있지만 가끔 내가 어느 서버에 있는지 잊어버릴 때가 있습니다 .

동일한 것을 사용하는 .bashrc다른 서버에서 다른 색상 프롬프트를 가질 수 있습니까(/home은 NFS 공유)? 서버를 나열하지 않는 것이 가장 좋습니다.

답변1

이 같은:

set_color_prompt() {
    _colorcombos() {
    PERL_HASH_SEED=109 perl -MB -e '
        use B;
        # color combinations that are readable (e.g. no red on red)
        @c =(map { "$_\n0\n" }
             6..7,9..11,13..15,40..51,75..87,113..123,147..159,171..231,249..254),
            (map { "$_\n231\n" }
             1..9,12..13,16..45,52..81,88..116,124..151,153,160..180,
             182..185,187..189,196..214,232..252,255..254);
        for(@ARGV) {
            print @c[hex(B::hash($_)) % $#c];
        }
        ' "$@"
    }
    local col=($(_colorcombos `whoami` `hostname` "`id`"))
    # (bg1,fg1)=user, (bg2,fg2)=host, (bg3,fg3)=path
    PS1='${debian_chroot:+($debian_chroot)}\[\033[48;5;'${col[0]}';38;5;'${col[1]}'m\]\u\[\033[00m\]\[\033[48;5;'${col[2]}';38;5;'${col[3]}'m\]@\h\[\033[00m\]:\[\033[48;5;'${col[4]}';38;5;'${col[5]}'m\]\w\[\033[00m\]\$ '
}

# set a fancy prompt (non-color, unless we know we "want" color)
case "$TERM" in
xterm-color)
    set_color_prompt
    ;;
xterm-256color)
    set_color_prompt
    ;;
*)
    PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
    ;;
esac

whoami, , 를 기준으로 hostname색상 팁을 설정하므로 , id다른 사용자로 로그인하면 색상이 다르게 나타납니다.

whoami, hostnameid해시되어 있으며 해시 값을 기준으로 색상 조합이 선택됩니다. 이러한 조합은 판독 가능한지 테스트되었습니다.

다른 색상을 얻으려면 변경하십시오 PERL_HASH_SEED=109(예를 들어 두 개의 중요한 서버가 동일한 값을 제공하는 경우).

관련 정보