GNU/Linux >> Linux の 問題 >  >> Linux

Bashが色を印刷できるかどうかを確認する方法は?

プログラムが色を使用して端末出力を出力できるかどうかを確認する方法があるかどうかを知りたいです。

lessなどのコマンドを実行する 色を使用して出力するプログラムからの出力を見ると、出力は次のように間違って表示されます

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

ありがとう

承認された回答:

プログラムが印刷できない場合、たとえばcronジョブを介して出力をファイルに記録できない場合、アプリケーションは出力に色を付けないことを知っているという考えです。色付きの出力を記録する必要はありませんが、手動で実行する場合は、表示するのが好きです。色付きの出力

アプリケーションをどの言語で書いていますか?

通常のアプローチは、出力デバイスがttyであるかどうかを確認し、そうである場合は、そのタイプの端末が色をサポートしているかどうかを確認することです。

bashで 、それは次のようになります

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

Cでは、さらに多くの入力を行う必要がありますが、isattyとman 3 terminfoにリストされている関数を使用して同じ結果を得ることができます。 。


Linux
  1. ディレクトリが存在するかどうかを確認するにはどうすればよいですか?

  2. 古いバージョンの Bash で Bash スクリプトをテストするにはどうすればよいですか?

  3. ssh-agent が既に bash で実行されているかどうかを確認するには?

  1. bashコマンド文字列の逐語的な文字を確認するにはどうすればよいですか?

  2. コンソールの色を印刷する

  3. sudo を使用してファイルが存在するかどうかを確認するにはどうすればよいですか?

  1. Bashにシェルショックの脆弱性があるかどうかを確認する方法は?

  2. シェルスクリプトBashでサブストリングをチェックする方法は?

  3. 文字列にBashの部分文字列が含まれているかどうかを確認する方法