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 .