GNU/Linux >> Znalost Linux >  >> Linux

Hash název hostitele do barvy

toto nemusí získat "pěknou" barvu na základě pozadí, ale mělo by to fungovat, za předpokladu, že výchozí barva pozadí je vždy barva 0 :

tput setaf $(hostname | sum | awk -v ncolors=$(infocmp -1 | expand | sed -n -e "s/^ *colors#\([0-9][0-9]*\),.*/\1/p") 'ncolors>1 {print 1 + ($1 % (ncolors - 1))}')

Jak to rozebrat:

  • tput - výstup řídicího řetězce terminálu
  • setaf - řídicí řetězec terminálu; v tomto případě set ANSI foreground
  • $(...) - Náhrada vnořitelného příkazu BASH pro parametr color
    • hostname - získat název hostitele
    • sum - vypočítat jednoduchý kontrolní součet pro název hostitele
    • awk ...
    • -v ncolors=$(...) - nastavte proměnnou AWK ncolors na hodnotu substituce příkazu v rámci $(...)
      • infocmp -1 - zobrazit informace o terminálu o aktuálním typu terminálu s 1 parametrem na řádek
      • expand - rozbalte tabulátory na mezery a vytvořte sed skript o něco jednodušší
      • sed -n -e "s/^ *colors#\([0-9][0-9]*\),.*/\1/p" - extrahujte hodnotu celého čísla colors schopnost terminálu
    • 'ncolors>1 {...}' - skript awk, který spouští {...} kód pouze pokud ncolors je větší než 1
      • print 1 + ($1 % (ncolors - 1)) - vezměte absolutní$1 (pole 1 vstupu, který pochází z sum , což znamená $1 je hodnota kontrolního součtu), najděte jeho zbytek po vydělení (ncolors - 1) (což má za následek omezení na rozsah 0(ncolors - 2) ), pak přidejte 1 a vytisknout jej.

Mohlo by vás zajímat context-color , který jsem sestavil na základě odpovědi J Earls:https://github.com/ramnes/context-color

Je to jednoduchý skript, který po spuštění vypíše barvu na základě hash výstupu příkazu. S tím, že je nainstalován někde ve vašem $PATH , můžete něco takového udělat ve svém .bashrc :

export PS1="$(context-color -p)$PS1\[\e[0m\]"

(kde --prompt/-p je přepínač, aby byla barva u výzev uvozena, a \[\e[0m\] sekvence escape pro resetování barvy)

Ve výchozím nastavení je příkaz použitý ke generování hashe whoami; hostname . Pokud chcete, aby se barva měnila podle názvu hostitele, můžete změnit $CONTEXT proměnné prostředí (export CONTEXT="hostname" ) nebo jednoduše použijte --context/-c možnost (context-color -c "hostname" ).

Příklad viz níže:


Linux
  1. Jak změnit název hostitele v systému Linux

  2. Odstraňování problémů:Nelze vyřešit název hostitele

  3. Jak změnit název hostitele v Debianu

  1. Nastavení názvu hostitele v Docker Compose

  2. Změňte název hostitele serveru Linux

  3. Převeďte výstup ls na csv

  1. Jak změnit název hostitele v Linuxu

  2. Ssh – Nastavit barvy terminálu místního počítače tak, aby byly použity barvy stroje, do kterého Ssh používám?

  3. firefox:barva vstupního pole