GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Hash-Hostname in eine Farbe

Dies ergibt möglicherweise keine "schöne" Farbe basierend auf dem Hintergrund, aber es sollte funktionieren, vorausgesetzt, die Standardhintergrundfarbe ist immer Farbe 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))}')

Um das aufzuschlüsseln:

  • tput - einen Terminal-Steuerstring ausgeben
  • setaf - die Terminal-Steuerzeichenfolge; in diesem Fall set ANSI foreground
  • $(...) - Ersetzung des verschachtelbaren BASH-Befehls für den Farbparameter
    • hostname - Holen Sie sich den Hostnamen
    • sum - Berechnung einer einfachen Prüfsumme für den Hostnamen
    • awk ...
    • -v ncolors=$(...) - Setzen Sie die AWK-Variable ncolors auf den Wert der Befehlssubstitution innerhalb von $(...)
      • infocmp -1 - Anzeige der Terminalinformationen über den aktuellen Terminaltyp mit 1 Parameter pro Zeile
      • expand - Erweitern Sie Tabulatoren zu Leerzeichen, um sed zu erstellen Skript etwas einfacher
      • sed -n -e "s/^ *colors#\([0-9][0-9]*\),.*/\1/p" - extrahieren Sie den Wert der Ganzzahl colors Terminalfähigkeit
    • 'ncolors>1 {...}' - das awk-Skript, das {...} ausführt Code nur wenn ncolors größer als 1
        ist
      • print 1 + ($1 % (ncolors - 1)) - nimm das absolute $1 (Feld 1 der Eingabe, die von sum kommt , was $1 bedeutet der Prüfsummenwert ist), finde seinen Rest nach Division durch (ncolors - 1) (was zur Folge hat, dass es auf den Bereich 0 begrenzt wird bis (ncolors - 2) ), fügen Sie dann 1 hinzu und drucken Sie es aus.

Vielleicht interessiert Sie context-color , die ich basierend auf der Antwort von J Earl zusammengestellt habe:https://github.com/ramnes/context-color

Es ist ein einfaches Skript, das bei seiner Ausführung eine Farbe basierend auf dem Hash einer Befehlsausgabe ausgibt. Wenn es irgendwo in Ihrem $PATH installiert ist , könnten Sie so etwas in Ihrem .bashrc tun :

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

(wobei --prompt/-p ist der Schalter, damit die Farbe für Eingabeaufforderungen maskiert wird, und \[\e[0m\] die Escape-Sequenz zum Zurücksetzen der Farbe)

Standardmäßig ist der zum Generieren des Hashs verwendete Befehl whoami; hostname . Wenn Sie nur möchten, dass sich die Farbe entsprechend dem Hostnamen ändert, können Sie den $CONTEXT ändern Variablenumgebung (export CONTEXT="hostname" ) oder verwenden Sie einfach den --context/-c Option (context-color -c "hostname" ).

Siehe unten für ein Beispiel:


Linux
  1. So ändern Sie den Hostnamen unter Linux

  2. Ssh – Stellen Sie die Terminalfarben des lokalen Computers so ein, dass sie die Farben des Computers verwenden, auf den ich ssh?

  3. So ändern Sie den Hostnamen in Debian

  4. Ändern Sie den Hostnamen eines Linux-Servers

  5. hostname-Befehlsbeispiele in Linux

Ändern Sie den Hostnamen auf AlmaLinux

Ubuntu 22.04 Hostnamen ändern

So legen Sie den Hostnamen unter Linux fest oder ändern ihn

So finden Sie den Hostnamen unter Linux

Umstellung auf virt-manager

Wie Echo in Datei