GNU/Linux >> Tutoriales Linux >  >> Linux

Hash nombre de host en un color

Es posible que esto no obtenga un color "agradable" según el fondo, pero debería funcionar, suponiendo que el color de fondo predeterminado siempre sea el color 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))}')

Para desglosar esto:

  • tput - generar una cadena de control de terminal
  • setaf - la cadena de control del terminal; en este caso, set ANSI foreground
  • $(...) - Sustitución del comando anidado BASH para el parámetro de color
    • hostname - obtener el nombre de host
    • sum - calcular una suma de comprobación simple en el nombre de host
    • awk ...
    • -v ncolors=$(...) - establecer la variable AWK ncolors al valor de la sustitución del comando dentro de $(...)
      • infocmp -1 - mostrar la información del terminal sobre el tipo de terminal actual con 1 parámetro por línea
      • expand - expandir pestañas a espacios para hacer el sed guión un poco más fácil
      • sed -n -e "s/^ *colors#\([0-9][0-9]*\),.*/\1/p" - extrae el valor del entero colors capacidad de terminal
    • 'ncolors>1 {...}' - el script awk, que ejecuta el {...} código solo si ncolors es mayor que 1
      • print 1 + ($1 % (ncolors - 1)) - tomar el absoluto$1 (campo 1 de la entrada, que proviene de sum , que significa $1 es el valor de la suma de comprobación), encuentre su resto después de dividirlo por (ncolors - 1) (que tiene el efecto de limitarlo al rango 0 a través de (ncolors - 2) ), luego agrega 1 e imprimirlo.

Puede que te interese context-color , que he reunido en base a la respuesta de J Earls:https://github.com/ramnes/context-color

Es un script simple que, cuando se ejecuta, genera un color basado en el hash de salida de un comando. Con él instalado en algún lugar de tu $PATH , podrías hacer algo como esto en tu .bashrc :

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

(donde --prompt/-p es el interruptor para que el color se escape para las indicaciones, y \[\e[0m\] la secuencia de escape para restablecer el color)

De forma predeterminada, el comando utilizado para generar el hash es whoami; hostname . Si solo desea que el color cambie de acuerdo con el nombre de host, puede cambiar el $CONTEXT entorno variable (export CONTEXT="hostname" ) o simplemente use el --context/-c opción (context-color -c "hostname" ).

Vea a continuación un ejemplo:


Linux
  1. Solución de problemas:no se puede resolver el nombre de host

  2. Ssh:¿configurar los colores de la terminal de la máquina local para usar los de la máquina en la que entro Ssh?

  3. Cómo cambiar el nombre de host en Debian

  4. Cambiar el nombre de host de un servidor Linux

  5. Convierta la salida ls en csv

Cambiar nombre de host en AlmaLinux

Ubuntu 22.04 cambiar nombre de host

Cómo configurar o cambiar el nombre de host en Linux

Cómo encontrar el nombre de host en Linux

Cambiando a virt-manager

Cómo hacer eco en un archivo