【问题标题】:How to color code a hostname from bash or python?如何从 bash 或 python 对主机名进行颜色编码?
【发布时间】:2012-11-01 15:03:55
【问题描述】:

我正在寻找一种简单的解决方案,可以为每个主机名提供 RGB 颜色。

我打算用它来设置 iTerm2 中的标签颜色,这样我就可以根据它的颜色选择轻松找到正确的主机。

现在,我不能使用所有 3 字节,因为在某些情况下差异可能过于微妙,而且我需要禁止颜色太深太浅。

基于此,我只能假设我可以安全地为每种颜色使用 5 位,这将给我提供 2^15 = 128 种颜色可供选择。我可以处理将数字转换为 R、G、B 值的公式;)

所以我需要的是一段简单的代码,它会给我一个字符串(主机名)的 15 位哈希。

如果这在 bash 中可行,那将是完美的,但我也接受 Python 变体。

该解决方案必须在 Debian、RedHat 和 OS X 上运行,而无需安装额外的实用程序或库。

【问题讨论】:

    标签: hash text-coloring


    【解决方案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"
    

    【讨论】:

    • 你能解释一下最终的回显字符串以及它的含义吗?提前致谢
    • 主要是根据主机名的哈希值设置RGB值。考虑到我们有 3*2^256 种颜色,并且哈希值具有随机分布,您将获得每个主机名的不同颜色,或者至少大多数主机名。
    【解决方案2】:

    在不带参数的情况下使用color时自动支持随机颜色

    将以下行添加到~/.profile~/.zshrc

    PRELINE="\r\033[A"
    
    function random {
        echo -e "\033]6;1;bg;red;brightness;$((1 + $RANDOM % 255))\a"$PRELINE
        echo -e "\033]6;1;bg;green;brightness;$((1 + $RANDOM % 255))\a"$PRELINE
        echo -e "\033]6;1;bg;blue;brightness;$((1 + $RANDOM % 255))\a"$PRELINE
    }
    
    function color {
        case $1 in
        green)
        echo -e "\033]6;1;bg;red;brightness;57\a"$PRELINE
        echo -e "\033]6;1;bg;green;brightness;197\a"$PRELINE
        echo -e "\033]6;1;bg;blue;brightness;77\a"$PRELINE
        ;;
        red)
        echo -e "\033]6;1;bg;red;brightness;270\a"$PRELINE
        echo -e "\033]6;1;bg;green;brightness;60\a"$PRELINE
        echo -e "\033]6;1;bg;blue;brightness;83\a"$PRELINE
        ;;
        orange)
        echo -e "\033]6;1;bg;red;brightness;227\a"$PRELINE
        echo -e "\033]6;1;bg;green;brightness;143\a"$PRELINE
        echo -e "\033]6;1;bg;blue;brightness;10\a"$PRELINE
        ;;
        *)
        random
        esac
    }
    
    #color    #uncomment to enable automatically set random color when tab created
    

    每次创建新的 iterm2 选项卡后,使用命令 color 自动为其赋予新的/随机颜色。

    如果您希望在创建时自动设置 iterm2-tab 颜色,则只需将 color 添加到 .zshrc / .profile 的末尾或在 function color 之后即可

    开启Host 1color 行更改为 color red; 在host 2。将color 行更改为color blue; 等等 如果更多主机,只需添加更多颜色设置,如示例中所示。

    然后,每次打开对应的主机 ssh 终端,选项卡颜色就会随心所欲地变化。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-04
      • 1970-01-01
      • 1970-01-01
      • 2016-03-15
      • 1970-01-01
      • 2023-03-07
      相关资源
      最近更新 更多