GNU/Linux >> Linux Esercitazione >  >> Linux

Hash hostname in un colore

questo potrebbe non ottenere un colore "bello" basato sullo sfondo, ma dovrebbe funzionare, supponendo che il colore di sfondo predefinito sia sempre il colore 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))}')

Per scomporre questo:

  • tput - restituisce una stringa di controllo del terminale
  • setaf - la stringa di controllo del terminale; in questo caso, set ANSI foreground
  • $(...) - Sostituzione del comando annidabile BASH per il parametro colore
    • hostname - ottieni il nome host
    • sum - calcola un semplice checksum sul nome host
    • awk ...
    • -v ncolors=$(...) - impostare la variabile AWK ncolors al valore della sostituzione del comando all'interno di $(...)
      • infocmp -1 - visualizzare le informazioni del terminale sul tipo di terminale corrente con 1 parametro per riga
      • expand - espandi le tabulazioni in spazi per creare il sed script un po' più semplice
      • sed -n -e "s/^ *colors#\([0-9][0-9]*\),.*/\1/p" - estrarre il valore dell'intero colors capacità del terminale
    • 'ncolors>1 {...}' - lo script awk, che esegue il {...} codice solo se ncolors è maggiore di 1
      • print 1 + ($1 % (ncolors - 1)) - prendi l'assoluto$1 (campo 1 dell'input, che proviene da sum , che significa $1 è il valore del checksum), trova il suo resto dopo essere stato diviso per (ncolors - 1) (che ha l'effetto di limitarlo all'intervallo 0 attraverso (ncolors - 2) ), quindi aggiungi 1 e stampalo.

Potresti essere interessato a context-color , che ho messo insieme sulla base della risposta di J Earls:https://github.com/ramnes/context-color

È un semplice script che, quando eseguito, emette un colore basato sull'hash dell'output di un comando. Con esso installato da qualche parte nel tuo $PATH , potresti fare qualcosa di simile nel tuo .bashrc :

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

(dove --prompt/-p è l'opzione in modo che il colore sia sfuggito per i prompt e \[\e[0m\] la sequenza di escape per reimpostare il colore)

Per impostazione predefinita, il comando utilizzato per generare l'hash è whoami; hostname . Se vuoi solo che il colore cambi in base al nome host, puoi cambiare $CONTEXT ambiente variabile (export CONTEXT="hostname" ) o semplicemente usa il --context/-c opzione (context-color -c "hostname" ).

Vedi sotto per un esempio:


Linux
  1. Come modificare il nome host in Linux

  2. Ssh:imposta i colori del terminale della macchina locale per utilizzare quelli della macchina in cui Ssh?

  3. Linux:qual è il file predefinito per `hostname`?

  4. Modifica il nome host di un server Linux

  5. Linux:processo in un servizio

Cambia nome host su AlmaLinux

Ubuntu 22.04 cambia nome host

Come impostare o modificare il nome host su Linux

Come trovare il nome host in Linux

Passaggio a virt-manager

Come fare eco in un file