터미널 / ssh를 사용할 때 다른 시스템에 다른 색상 프롬프트가 표시됩니까?


11

나는 일을하기 위해 끊임없이 ssh하는 5 대의 기계를 가지고 있습니다. 잘못된 상자에 잘못된 명령을 내릴 때 점점 좌절감을 느끼고 있습니다. 운 좋게도 나는 아직 나쁜 일을하지 않았습니다. 하드 코딩 할 수있는 해킹이 있는지 알고 싶었습니다. 내 컴퓨터에 따라 프롬프트를 다른 색상으로 표시합니다. desktop1의 경우 파란색, 노트북의 경우 자주색, 서버의 경우 빨간색 등? 이게 가능해?

현재이 명령 export PS1 = "\ e [0; 31m [\ u @ \ h \ W] \ $ \ e [m"을 사용하고 있습니다 . -change-the-color-of-my-shell-prompt-under-linux-or-unix / 이지만 분명히 ssh에서는 작동하지 않습니다.

또한, 시력을 완화시키는 데 도움이되는 다른 멋진 배쉬 팁이 있다면 훌륭 할 것입니다. 매뉴얼 페이지를 색칠하는이 팁을 받았습니다.

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


1
각 명령 앞 의 name@ ** server** 행은 어떤 서버를 전달하지 않습니까? 익숙해
져야

랩톱에서 어떤 운영 체제를 사용하고 있습니까?
SamK

1
name @ server는 모든 부팅이 변경되고 상자의 목적이나 기억하기 쉬운 이름 (user @ ip-xxxx)을 전달하지 않기 때문에 Amazon 클라우드와 같은 것을 사용할 때 특히 도움이되지 않습니다. 이 질문에 대해 +1 :)
Rafiq Maniar

답변:


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)을 전경에서 제외합니다.


그래서 전경과 배경 모두에 대해 동일한 색상을 생성 할 수 있습니까?
Chris S

배경색이 생성되지 않습니다. 그러나 생성 된 색상이 배경과 일치 할 수있는 것은 맞습니다. 흰색 (37)과 시안 (36)은 내가 사용하는 터미널 배경과 잘 작동하지 않기 때문에 제외합니다. 명확하게하기 위해 답변을 편집했습니다.
Dan Midwood

3

당신은 올바른 길을 가고 있습니다. 링크 한 페이지에 자세히 설명 된 방법을 사용했으며 내 블로그에 대한 방법을 자세히 설명했습니다 . 그것은 Windows 상자에서 PuTTY를 사용하고 한 CentOS 서버에서 다른 CentOS 서버로 SSH를 사용하여 작동합니다. 그것이 당신을 위해 작동하지 않고 구문이 정확하다고 확신한다면, 그것은 SSH 클라이언트에 달려있을 수 있습니다.


안녕하세요, .bashrc를 변경했는데 로컬에서 색상을 변경할 수 있다는 것을 알고 있습니다. 내가 원하는 것은 다른 컴퓨터로 ssh 할 때 프롬프트 색상이 변경되는 것이 었습니다. 나는 터미널이 자동으로 알지 못하므로 이것을 가능하게 할 포인터를 찾고있었습니다.
bcrawl

1
편집 : 네, 맞습니다. 각 컴퓨터에서 .bashrc 파일을 변경하면 ssh를 실행하면 구성된 색상이 표시됩니다. 올바른 파일을 편집하지 않았습니다. 감사. 해결되었다고 생각하십시오.
bcrawl

2
이 답변으로 솔루션으로 직접 이동 한 경우 답변 왼쪽의 확인 표시 개요를 클릭하여 수락 된 답변으로 표시하십시오.
케빈 M

1

내 직업에는 다른 단계의 서버가 있습니다

생산 준비 개발

준비를 위해 자극과 녹색으로 빨간색 프롬프트를 사용합니다. 이제 모든 준비 시스템이 도메인에서 준비되었습니다.

그래서 자극은

web1.domain.com
web2.domain.com

스테이징 / 데브는

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

이것은 실제로 redhat / centos에서만 작동합니다.

그러나 prod 서버의 경우 다음이 있습니다.

/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
                ;;

블록이 있으면 .. 다른 부분의 색상을 녹색으로 변경했습니다. 33은 녹색입니다.


0

각 컴퓨터 에서 bash.rc 변경하여 서로 다른 프롬프트 색상을 지정할 수 있습니다 . 또는 충분한 권한이있는 경우 PermitUserEnvironment지시문을 통해 사용자 환경 전송을 허용하도록 sshd config를 변경하십시오 .


0

우리는 이 요점을 포함 하여보다 포괄적 인 호스트 이름 문자열 체크섬 기반 솔루션을 개발하고 있습니다. 256 색 호환성. 실제로 각 서버의 특정 색상을 결정하는 데 관심이있는 경우를 제외하고는 이것이 "컴퓨터에있는 것"문제 중 하나라고 생각하므로 "랜덤"색상을 기반으로 결정합니다. 체크섬은 좋은 접근 방식이어야합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.