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

Wie überprüfe ich, ob Bash Farben drucken kann?

Ich möchte wissen, ob es eine Möglichkeit gibt, zu überprüfen, ob mein Programm Terminalausgaben mit Farben ausgeben kann oder nicht.

Ausführen von Befehlen wie less und wenn man sich die Ausgabe eines Programms ansieht, das Farben verwendet, wird die Ausgabe falsch angezeigt, wie

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

Danke

Akzeptierte Antwort:

Die Idee ist, dass meine Anwendung weiß, dass die Ausgabe nicht gefärbt werden soll, wenn das Programm nicht drucken kann, z. B. die Ausgabe über einen Cron-Job in eine Datei protokollieren kann, keine farbige Ausgabe protokolliert werden muss, aber wenn ich sie manuell ausführe, möchte ich sie anzeigen die Ausgabe eingefärbt

In welcher Sprache schreiben Sie Ihre Bewerbung?

Der normale Ansatz besteht darin, zu prüfen, ob das Ausgabegerät ein tty ist, und wenn ja, zu prüfen, ob dieser Terminaltyp Farben unterstützt.

In bash , das würde so aussehen

# 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.

In C müssen Sie viel mehr tippen, können aber dasselbe Ergebnis mit isatty und den in man 3 terminfo aufgeführten Funktionen erzielen .


Linux
  1. So prüfen Sie, ob String in Bash einen Teilstring enthält

  2. Wie überprüfe ich Syslog in Bash unter Linux?

  3. Wie kann ich mein Bash-Skript auf älteren Bash-Versionen testen?

  4. Wie überprüfe ich, ob ssh-agent bereits in bash läuft?

  5. Konsolenfarben drucken

So überprüfen Sie, ob eine Datei oder ein Verzeichnis in Bash vorhanden ist

Bash printf - So drucken Sie eine Variable in Bash

So überprüfen Sie, ob eine Datei oder ein Verzeichnis in Bash vorhanden ist

So prüfen Sie, ob eine Zeichenfolge in Bash eine Teilzeichenfolge enthält

So überprüfen Sie, ob eine Datei oder ein Verzeichnis in der Bash-Shell vorhanden ist

Wie überprüfe ich die Syntax eines Bash-Skripts, ohne es auszuführen?