GNU/Linux >> Tutoriels Linux >  >> Linux

Hacher le nom d'hôte dans une couleur

cela pourrait ne pas obtenir une "belle" couleur basée sur l'arrière-plan, mais cela devrait fonctionner, en supposant que la couleur d'arrière-plan par défaut est toujours la couleur 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))}')

Pour décomposer cela :

  • tput - afficher une chaîne de contrôle de terminal
  • setaf - la chaîne de contrôle du terminal ; dans ce cas, set ANSI foreground
  • $(...) - Substitution de commande imbriquée BASH pour le paramètre de couleur
    • hostname - obtenir le nom d'hôte
    • sum - calculer une somme de contrôle simple sur le nom d'hôte
    • awk ...
    • -v ncolors=$(...) - définir la variable AWK ncolors à la valeur de la substitution de commande dans $(...)
      • infocmp -1 - afficher les informations du terminal sur le type de terminal actuel avec 1 paramètre par ligne
      • expand - développer les tabulations en espaces pour faire le sed script un peu plus facile
      • sed -n -e "s/^ *colors#\([0-9][0-9]*\),.*/\1/p" - extraire la valeur de l'entier colors capacité du terminal
    • 'ncolors>1 {...}' - le script awk, qui exécute le {...} code uniquement si ncolors est supérieur à 1
      • print 1 + ($1 % (ncolors - 1)) - prendre le $1 absolu (champ 1 de l'entrée, qui provient de sum , ce qui signifie $1 est la valeur de la somme de contrôle), trouvez son reste après avoir été divisé par (ncolors - 1) (ce qui a pour effet de le limiter à la plage 0 à (ncolors - 2) ), puis ajoutez 1 et imprimez-le.

Vous pourriez être intéressé par context-color , que j'ai rassemblé sur la base de la réponse de J Earls :https://github.com/ramnes/context-color

C'est un script simple qui, lorsqu'il est exécuté, produit une couleur basée sur le hachage de la sortie d'une commande. Avec celui-ci installé quelque part dans votre $PATH , vous pourriez faire quelque chose comme ça dans votre .bashrc :

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

(où --prompt/-p est le commutateur pour que la couleur soit échappée pour les invites, et \[\e[0m\] la séquence d'échappement pour réinitialiser la couleur)

Par défaut, la commande utilisée pour générer le hash est whoami; hostname . Si vous voulez juste que la couleur change en fonction du nom d'hôte, vous pouvez changer le $CONTEXT environnement variable (export CONTEXT="hostname" ) ou utilisez simplement le --context/-c choix (context-color -c "hostname" ).

Voir ci-dessous pour un exemple :


Linux
  1. Dépannage :Impossible de résoudre le nom d'hôte

  2. Ssh - Définir les couleurs du terminal de la machine locale pour utiliser celles de la machine dans laquelle je me connecte avec Ssh ?

  3. Linux - Quel est le fichier par défaut pour `hostname` ?

  4. Convertir la sortie ls en csv

  5. Linux :transformer en service

Changer le nom d'hôte sur AlmaLinux

Ubuntu 22.04 change le nom d'hôte

Comment définir ou modifier le nom d'hôte sous Linux

Comment trouver le nom d'hôte sous Linux

Passer à virt-manager

Comment faire écho dans le fichier