GNU/Linux >> Tutoriels Linux >  >> Linux

Comment vérifier si Bash peut imprimer des couleurs ?

Je veux savoir s'il existe un moyen de vérifier si mon programme peut produire une sortie de terminal en utilisant des couleurs ou non.

Exécuter des commandes comme less et en regardant la sortie d'un programme qui sort en utilisant des couleurs, la sortie est mal affichée, comme

[ESC[0;32m0.052ESC[0m ESC[1;32m2,816.00 kbESC[0m]

Merci

Réponse acceptée :

L'idée est que mon application sache ne pas colorer la sortie si le programme ne peut pas imprimer, par exemple, enregistrer la sortie via une tâche cron dans un fichier, pas besoin d'enregistrer la sortie colorée, mais lors de l'exécution manuelle, j'aime voir la sortie colorée

Dans quelle langue rédigez-vous votre candidature ?

L'approche normale consiste à vérifier si le périphérique de sortie est un tty et, si c'est le cas, à vérifier si ce type de terminal prend en charge les couleurs.

Dans bash , cela ressemblerait à

# check if stdout is a terminal...
if test -t 1; then

    # see if it supports colors...
    ncolors=$(tput colors)

    if test -n "$ncolors" && test $ncolors -ge 8; then
        bold="$(tput bold)"
        underline="$(tput smul)"
        standout="$(tput smso)"
        normal="$(tput sgr0)"
        black="$(tput setaf 0)"
        red="$(tput setaf 1)"
        green="$(tput setaf 2)"
        yellow="$(tput setaf 3)"
        blue="$(tput setaf 4)"
        magenta="$(tput setaf 5)"
        cyan="$(tput setaf 6)"
        white="$(tput setaf 7)"
    fi
fi

echo "${red}error${normal}"
echo "${green}success${normal}"

echo "${green}0.052${normal} ${bold}${green}2,816.00 kb${normal}"
# etc.

En C, vous devez taper beaucoup plus, mais vous pouvez obtenir le même résultat en utilisant isatty et les fonctions répertoriées dans man 3 terminfo .


Linux
  1. Comment vérifier si Bash a la vulnérabilité Shellshock ?

  2. Comment puis-je vérifier si un répertoire existe ?

  3. Comment puis-je tester mon script Bash sur des versions plus anciennes de Bash ?

  4. Comment vérifier si ssh-agent est déjà en cours d'exécution dans bash ?

  5. Comment puis-je vérifier les caractères textuels d'une chaîne de commande bash ?

Comment vérifier si un fichier ou un répertoire existe dans Bash

Bash printf - Comment imprimer une variable dans Bash

Comment vérifier si un fichier ou un répertoire existe dans Bash

Comment vérifier si une chaîne contient une sous-chaîne dans Bash

Comment vérifier si un fichier ou un répertoire existe dans Bash Shell

Comment vérifier la syntaxe d'un script Bash sans l'exécuter ?