GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana Cara Memeriksa Apakah Bash Dapat Mencetak Warna?

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 .


Linux
  1. Bagaimana cara memeriksa apakah Bash memiliki Kerentanan Shellshock?

  2. Bagaimana Cara Memeriksa Substring Di Shell Script Bash?

  3. Bagaimana saya bisa memeriksa apakah ada direktori?

  1. Bagaimana saya bisa menguji skrip Bash saya pada versi Bash yang lebih lama?

  2. Bagaimana cara memeriksa apakah ssh-agent sudah berjalan di bash?

  3. Bagaimana saya bisa memeriksa karakter kata demi kata dari string perintah bash?

  1. Cara Memeriksa apakah String Berisi Substring di Bash

  2. Bagaimana cara memeriksa syslog di Bash di Linux?

  3. Bagaimana saya bisa memeriksa konfigurasi preemption kernel saya?