Saya ingin tahu apakah ada cara untuk memeriksa apakah program saya dapat menampilkan keluaran terminal menggunakan warna atau tidak.
Menjalankan perintah seperti less
dan melihat output dari program yang outputnya menggunakan warna, output yang ditampilkan salah, seperti
[ESC[0;32m0.052ESC[0m ESC[1;32m2,816.00 kbESC[0m]
Terima kasih
Jawaban yang Diterima:
Idenya adalah agar aplikasi saya tahu untuk tidak mewarnai output jika program tidak dapat mencetak, katakanlah, mencatat output dari melalui pekerjaan cron ke file, tidak perlu mencatat output berwarna, tetapi ketika dijalankan secara manual, saya suka melihat keluaran berwarna
Dalam bahasa apa Anda menulis lamaran?
Pendekatan normal adalah memeriksa apakah perangkat keluaran adalah tty, dan jika ya, periksa apakah jenis terminal tersebut mendukung warna.
Di bash
, itu akan terlihat seperti
# 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.
Di C, Anda harus melakukan lebih banyak pengetikan, tetapi dapat mencapai hasil yang sama menggunakan isatty dan fungsi yang tercantum dalam man 3 terminfo
.