2012-11-01 3 views
1

Je cherche une solution simple qui me donnerait une couleur RVB pour chaque nom d'hôte.Comment colorer un nom d'hôte depuis bash ou python?

Je prévois d'utiliser cette fonction pour définir la couleur de tabulation dans iTerm2, afin que je puisse facilement repérer l'hôte correct en fonction du piquet de couleur correspondant.

Maintenant, je ne peux pas utiliser tous les 3-octets parce que, dans certains cas, les différences peuvent être trop subtiles, et aussi parce que je dois interdire trop sombre à trop de couleur claire. Bases sur cela Je ne peux que supposer que je pourrais utiliser en toute sécurité 5 bits pour chaque couleur, cela me donnerait quelque chose comme 2^15 = 128 couleurs à choisir. Je peux prendre soin de la formule pour convertir le nombre en valeurs R, G, B;)

Donc ce dont j'ai besoin est un simple morceau de code qui me donnerait un hachage de 15 bits d'une chaîne (nom d'hôte).

Si cela serait faisable dans bash, ce serait parfait, mais j'accepte aussi un variant Python.

La solution doit fonctionner sur Debian, RedHat et OS X sans avoir à installer d'utilitaires ou de bibliothèques supplémentaires.

Répondre

1
#!/bin/bash 
MD5="md5sum" 
if [[ $OS == 'darwin' ]]; then MD5="md5" ; fi 
HASH=`hostname -s | ${MD5}` 
echo -n -e  "\033]6;1;bg;red;brightness;$((0x${HASH:0:2}))\a\033]6;1;bg;green;brightness;$((0x${HASH:2:2}))\a\033]6;1;bg;blue;brightness;$((0x${HASH:4:2}))\a" 
+0

pouvez-vous écrire une explication de la chaîne d'écho finale et ce que tout cela signifie? merci d'avance – Bob

+0

Principalement, il définit les valeurs RVB en fonction de la valeur du hachage du nom d'hôte. Considérant que nous avons 3 * 2^256 couleurs et que la valeur de hachage a une distribution aléatoire, vous obtiendrez une couleur différente pour chaque nom d'hôte, ou au moins la plupart d'entre eux. – sorin

Questions connexes