tmux
컴퓨터의 호스트 이름을 기반으로 색상을 동적으로 선택 하고 싶습니다 . tmux.conf
여러 컴퓨터에서 내 컴퓨터를 공유하기 때문에 각 호스트마다 고유 한 색상을 지정하는 것이 시각적으로 편리합니다 (특히 동시에 여러 컴퓨터에서 작업하는 경우). 이것이 가능합니까?
답변
이 기능도 원했습니다. 나는 기본적 으로이 모든 것을 .tmux.conf에 병합했습니다.
# cat <<__DATA__ >/dev/null
# Embed shell scripts
set -g status-utf8 on
set -g utf8 on
set -g default-terminal "screen-256color"
run "cut -c3- ~/.tmux.conf | bash -s apply_configuration"
# __DATA__
#
# apply_configuration() {
# tmux set -g status-bg colour$(hash_string256 $(hostname))
# }
# hash_string256() {
# hash_value=$(printf "%s" "$1" | md5sum | sed -e 's/[^[:alnum:]]\+//g' | tr "a-f" "A-F")
# if [ "x" != "x$2" ]
# then
# v2="+ $2"
# fi
# echo "$(((0x$hash_value $v2) % 255))" | tr -d "-"
# }
#
# $1
bc
git-bash에 없기 때문에 사용을 제거 했습니다. 따라서 추가 항목을 추가하지 않고 Linux 시스템과 cygwin이있는 Windows에서 모두 작동하기를 원했습니다.
답변
나는 다음과 같은 쉘 기능을 생각해 냈습니다.
hash_string256() {
# Hash $1 into a number
hash_value=$(printf "%s" "$1" | md5sum |tr -d " -"| tr "a-f" "A-F")
# Add the hash with $2 and modulo 256 the result
# if $2 == "" it is 0
printf "ibase=16; (%s + %X) %% 100\n" $hash_value "$2" | bc
}
이 함수는 다음과 같이 사용할 수 있습니다 ( $HOST
is 인 경우 결과는 참 LOL
) :
$hash_string256 $HOST
113
$hash_string256 $HOST 127
240
연결하려면 tmux
시작하고 구성하는 스크립트를 사용할 수 있습니다 tmux
.
#!/bin/sh
SESSION=$USER
hash_string256() {
hash_value=$(printf "%s" "$1" | md5sum |tr -d " -"| tr "a-f" "A-F")
printf "ibase=16; (%s + %X) %% 100 \n" $hash_value "$2" | bc
}
tmux -2 new-session -d -s $SESSION
tmux set -g status-fg colour$(hash_string256 $HOST)
tmux set -g status-bg colour$(hash_string256 $HOST 127)
# Attach to session
tmux -2 attach-session -t $SESSION
호스트 이름의 경우 LOL
그것은을 설정합니다 status-fg
에 colour113
와 status-bg
에 colour240
. 숫자가 127 in $(hash_string256 $HOST 127)
이므로 배경이 전경색과 같지 않고 서로 멀어집니다.
GNU 시스템이없는 경우
시스템 에 회선 md5
대신md5sum
hash_value=$(printf "%s" "$1" | md5sum |tr -d " -"| tr "a-f" "A-F")
로 교체 가능
hash_value=$(printf "%s" "$1" | md5 | tr "a-f" "A-F")