내 쉘 프롬프트가 서버의 호스트 이름에 따라 자동으로 다르고 고유하며 일관된 색상을 갖기를 원합니다.
예를 들어, 특정 서버에 로그인할 때 프롬프트는 해당 서버에 특정한 색상이어야 하며 다음에 해당 서버에 로그인할 때에도 동일한 색상이어야 합니다. 서버 이름과 색상의 매핑을 하드코딩하고 싶지 않습니다. 색깔이 꼭 예뻐야 할 필요는 없지만, 어두운 배경에 대비가 높으면 좋아요.
따라서 호스트 이름의 결정적 해시를 생성하고 이를 프롬프트에 사용할 수 있는 색상 코드로 변환할 수 있을 것입니다.
어떻게 해야 하나요?
답변1
나는 결국 이 일을 하게 되었다
# get hash and byte size
prompt_hash_and_size=`hostname|cksum`
# get hash part and apply modulo 256 to put it in range 1..255
prompt_hashcolor=$(echo $prompt_hash_and_size|awk '{print $1%255 + 1}')
# use it as background color in prompt
PROMPT="%K{${prompt_hashcolor}}%F%~%f%k% "
압축해서 사용하시면 됩니다
prompt_hashcolor=$(hostname|cksum|awk '{print $1%256}')
답변2
로컬 네트워크인 경우 IP 주소의 마지막 옥텟을 기본으로 사용해 보세요. 대비를 보장하기 위해 일부 비트를 재정렬하고 일부 1 또는 중복을 혼합할 수도 있습니다.
/etc/hosts에서 호스트 이름과 IP를 추출하고 로컬 터미널에서 방법을 조정하여 이 프로세스를 로컬에서 평가할 수 있습니다.
원격 호스트의 구성 파일에서 이 작업을 수행하는 것이 좋습니다. 모든 프롬프트에 대해 이를 재생성하는 것은 너무 많은 비용이 듭니다.
답변3
이렇게 하면 읽을 수 있는 색상 조합이 선택됩니다.