echoコマンドを使用して端末でテキストを印刷しようとしています。
テキストを赤色で印刷したい。どうやってやるの?
echoコマンドを使用して端末でテキストを印刷しようとしています。
テキストを赤色で印刷したい。どうやってやるの?
回答:
次のANSIエスケープコードを使用できます。
Black        0;30     Dark Gray     1;30
Red          0;31     Light Red     1;31
Green        0;32     Light Green   1;32
Brown/Orange 0;33     Yellow        1;33
Blue         0;34     Light Blue    1;34
Purple       0;35     Light Purple  1;35
Cyan         0;36     Light Cyan    1;36
Light Gray   0;37     White         1;37
そして、スクリプトで次のように使用します。
#    .---------- constant part!
#    vvvv vvvv-- the code from above
RED='\033[0;31m'
NC='\033[0m' # No Color
printf "I ${RED}love${NC} Stack Overflow\n"
love赤で印刷されます。
@ james-limのコメントから、echoコマンドを使用している場合は、必ず-eフラグを使用してバックスラッシュエスケープを許可してください。
# Continued from above example
echo -e "I ${RED}love${NC} Stack Overflow"
("\n"空行を追加したくない場合を除いて、エコーを使用する場合は追加しないでください)
\e[0;31mHello Stackoverflow\e[0m
                    echoバックスラッシュエスケープを有効にするよう指示します。
                    \x1B代わりにを使用します\e。\033すべてのプラットフォームで問題ありません。
                    for (( i = 30; i < 38; i++ )); do echo -e "\033[0;"$i"m Normal: (0;$i); \033[1;"$i"m Light: (1;$i)"; done
                    素晴らしいtputコマンド(Ignacioの回答で推奨)を使用して、あらゆる種類の端末制御コードを生成できます。
特定のtputサブコマンドについては、後で説明します。
tput一連のコマンドの一部として呼び出す:
tput setaf 1; echo "this is red text"エラーが引き続き表示される場合;は&&、代わりに使用してくださいtput。
別のオプションは、シェル変数を使用することです:
red=`tput setaf 1`
green=`tput setaf 2`
reset=`tput sgr0`
echo "${red}red text ${green}green text${reset}"
tput端末によって特別な意味を持つものとして解釈される文字シーケンスを生成します。それらは表示されません。ただし、ファイルに保存したり、端末以外のプログラムで入力として処理したりできます。
コマンド置換を使用tputしての出力をecho文字列に直接挿入する方が便利な場合があります。
echo "$(tput setaf 1)Red text $(tput setab 7)and white background$(tput sgr 0)"上記のコマンドは、Ubuntuでこれを生成します。

tput setab [1-7] # Set the background colour using ANSI escape
tput setaf [1-7] # Set the foreground colour using ANSI escape色は次のとおりです。
Num  Colour    #define         R G B
0    black     COLOR_BLACK     0,0,0
1    red       COLOR_RED       1,0,0
2    green     COLOR_GREEN     0,1,0
3    yellow    COLOR_YELLOW    1,1,0
4    blue      COLOR_BLUE      0,0,1
5    magenta   COLOR_MAGENTA   1,0,1
6    cyan      COLOR_CYAN      0,1,1
7    white     COLOR_WHITE     1,1,1また、ANSI以外のバージョンのカラー設定関数(のsetb代わりにsetab、のsetf代わりにsetaf)があり、ここには記載されていない異なる数値を使用します。
tput bold    # Select bold mode
tput dim     # Select dim (half-bright) mode
tput smul    # Enable underline mode
tput rmul    # Disable underline mode
tput rev     # Turn on reverse video mode
tput smso    # Enter standout (bold) mode
tput rmso    # Exit standout modetput cup Y X # Move cursor to screen postion X,Y (top left is 0,0)
tput cuf N   # Move N characters forward (right)
tput cub N   # Move N characters back (left)
tput cuu N   # Move N lines up
tput ll      # Move to last line, first column (if no cup)
tput sc      # Save the cursor position
tput rc      # Restore the cursor position
tput lines   # Output the number of lines of the terminal
tput cols    # Output the number of columns of the terminaltput ech N   # Erase N characters
tput clear   # Clear screen and move the cursor to 0,0
tput el 1    # Clear to beginning of line
tput el      # Clear to end of line
tput ed      # Clear to end of screen
tput ich N   # Insert N characters (moves rest of line forward!)
tput il N    # Insert N linestput sgr0    # Reset text format to the terminal's default
tput bel     # Play a bellでcompizをグラグラ窓、belコマンドは、ユーザの注意を引くために第2のターミナルウォブルになります。
tputtput終了する前に順番に実行される、1行に1つのコマンドを含むスクリプトを受け入れます。
複数行の文字列をエコーしてパイプすることで、一時ファイルを回避します。
echo -e "setf 7\nsetb 1" | tput -S  # set fg white and bg redman 1 tputman 5 terminfoコマンドとこれらのオプションの詳細の完全なリストについて。(対応するtputコマンドは、Cap-name81行目から始まる巨大なテーブルの列にリストされています。)$()はコマンド置換です。すべてはtput af 1ありませんカラーコード列を生成しますが、コードが印字可能な文字ではありませんので、タイピングtput af 1だけでは、出力の空白行を生成します。
                    ncurses
                    tput色の完全なリストについては、Unix StackExchangeのこの回答をチェックしてください
                    reset=`tput sgr0`べきだと思いますreset=`tput sgr 0`。
                    # Reset
Color_Off='\033[0m'       # Text Reset
# Regular Colors
Black='\033[0;30m'        # Black
Red='\033[0;31m'          # Red
Green='\033[0;32m'        # Green
Yellow='\033[0;33m'       # Yellow
Blue='\033[0;34m'         # Blue
Purple='\033[0;35m'       # Purple
Cyan='\033[0;36m'         # Cyan
White='\033[0;37m'        # White
# Bold
BBlack='\033[1;30m'       # Black
BRed='\033[1;31m'         # Red
BGreen='\033[1;32m'       # Green
BYellow='\033[1;33m'      # Yellow
BBlue='\033[1;34m'        # Blue
BPurple='\033[1;35m'      # Purple
BCyan='\033[1;36m'        # Cyan
BWhite='\033[1;37m'       # White
# Underline
UBlack='\033[4;30m'       # Black
URed='\033[4;31m'         # Red
UGreen='\033[4;32m'       # Green
UYellow='\033[4;33m'      # Yellow
UBlue='\033[4;34m'        # Blue
UPurple='\033[4;35m'      # Purple
UCyan='\033[4;36m'        # Cyan
UWhite='\033[4;37m'       # White
# Background
On_Black='\033[40m'       # Black
On_Red='\033[41m'         # Red
On_Green='\033[42m'       # Green
On_Yellow='\033[43m'      # Yellow
On_Blue='\033[44m'        # Blue
On_Purple='\033[45m'      # Purple
On_Cyan='\033[46m'        # Cyan
On_White='\033[47m'       # White
# High Intensity
IBlack='\033[0;90m'       # Black
IRed='\033[0;91m'         # Red
IGreen='\033[0;92m'       # Green
IYellow='\033[0;93m'      # Yellow
IBlue='\033[0;94m'        # Blue
IPurple='\033[0;95m'      # Purple
ICyan='\033[0;96m'        # Cyan
IWhite='\033[0;97m'       # White
# Bold High Intensity
BIBlack='\033[1;90m'      # Black
BIRed='\033[1;91m'        # Red
BIGreen='\033[1;92m'      # Green
BIYellow='\033[1;93m'     # Yellow
BIBlue='\033[1;94m'       # Blue
BIPurple='\033[1;95m'     # Purple
BICyan='\033[1;96m'       # Cyan
BIWhite='\033[1;97m'      # White
# High Intensity backgrounds
On_IBlack='\033[0;100m'   # Black
On_IRed='\033[0;101m'     # Red
On_IGreen='\033[0;102m'   # Green
On_IYellow='\033[0;103m'  # Yellow
On_IBlue='\033[0;104m'    # Blue
On_IPurple='\033[0;105m'  # Purple
On_ICyan='\033[0;106m'    # Cyan
On_IWhite='\033[0;107m'   # White 
|       | bash  | hex    | octal   | NOTE                         |
|-------+-------+--------+---------+------------------------------|
| start | \e    | \x1b   | \033    |                              |
| start | \E    | \x1B   | -       | x cannot be capital          |
| end   | \e[0m | \x1m0m | \033[0m |                              |
| end   | \e[m  | \x1b[m | \033[m  | 0 is appended if you omit it |
|       |       |        |         |                              || color       | bash         | hex            | octal          | NOTE                                  |
|-------------+--------------+----------------+----------------+---------------------------------------|
| start green | \e[32m<text> | \x1b[32m<text> | \033[32m<text> | m is NOT optional                     |
| reset       | <text>\e[0m  | <text>\1xb[0m  | <text>\033[om  | o is optional (do it as best practice |
|             |              |                |                |                                       |特別なbash変数でこれらのコードを使用する場合
エスケープ文字を追加して、 バッシュそれらを正しく解釈できます。これによりエスケープ文字が追加されなくても機能Ctrl + rしますが、履歴の検索に使用すると問題が発生します。
\[開始ANSIコードの前に追加\]し、終了コードの後に追加する必要があります。
例:
通常の使用:   \033[32mThis is in green\033[0m
PS0 / 1/2/4の場合:     \[\033[32m\]This is in green\[\033[m\]  
\[シーケンスの開始のためにされた非印字可能な文字
\]列の終わりのためである非印字可能な文字  
ヒント:暗記のために、それはあなたが最初に追加することができ\[\]、その後、あなたのANSIコードは、それらの間に置きます:
  - \[start-ANSI-code\]
  -\[end-ANSI-code\]  
これらの色に飛び込む前に、これらのコードで4つのモードについて知っておく必要があります。
テキストではなく色のスタイルを変更します。たとえば、色を明るくまたは暗くします。
0  リセット   1;  通常よりも軽い    2; 通常より暗い    このモードは広くサポートされていません。Gnome-Terminalを完全にサポートしています。
このモードは、色ではなくテキストのスタイルを変更するためのものです。
3; イタリック  4; 下線  5; 点滅(遅い)6; 点滅(速い)7; 逆行する  8; 隠す  9; クロスアウト  ほぼサポートされています。
たとえば、KDE-Konsoleはサポートします5;が、Gnome-Terminalはサポートしません。Gnomeはサポートします8;が、KDEはサポートしません。  
このモードは、前景に色を付けるためのものです。
このモードは、背景に色を付けるためのものです。
 
次の表は、ANSIカラーの3/4ビットバージョンの 概要を示しています。
|------------+----------+---------+-------+------------------+------------------------------+--------------------------------------|
| color-mode | octal    | hex     | bash  | description      | example (= in octal)         | NOTE                                 |
|------------+----------+---------+-------+------------------+------------------------------+--------------------------------------|
|          0 | \033[0m  | \x1b[0m | \e[0m | reset any affect | echo -e "\033[0m"            | 0m equals to m                       |
|          1 | \033[1m  |         |       | light (= bright) | echo -e "\033[1m####\033[m"  | -                                    |
|          2 | \033[2m  |         |       | dark (= fade)    | echo -e "\033[2m####\033[m"  | -                                    |
|------------+----------+---------+-------+------------------+------------------------------+--------------------------------------|
|  text-mode | ~        |         |       | ~                | ~                            | ~                                    |
|------------+----------+---------+-------+------------------+------------------------------+--------------------------------------|
|          3 | \033[3m  |         |       | italic           | echo -e "\033[3m####\033[m"  |                                      |
|          4 | \033[4m  |         |       | underline        | echo -e "\033[4m####\033[m"  |                                      |
|          5 | \033[5m  |         |       | blink (slow)     | echo -e "\033[3m####\033[m"  |                                      |
|          6 | \033[6m  |         |       | blink (fast)     | ?                            | not wildly support                   |
|          7 | \003[7m  |         |       | reverse          | echo -e "\033[7m####\033[m"  | it affects the background/foreground |
|          8 | \033[8m  |         |       | hide             | echo -e "\033[8m####\033[m"  | it affects the background/foreground |
|          9 | \033[9m  |         |       | cross            | echo -e "\033[9m####\033[m"  |                                      |
|------------+----------+---------+-------+------------------+------------------------------+--------------------------------------|
| foreground | ~        |         |       | ~                | ~                            | ~                                    |
|------------+----------+---------+-------+------------------+------------------------------+--------------------------------------|
|         30 | \033[30m |         |       | black            | echo -e "\033[30m####\033[m" |                                      |
|         31 | \033[31m |         |       | red              | echo -e "\033[31m####\033[m" |                                      |
|         32 | \033[32m |         |       | green            | echo -e "\033[32m####\033[m" |                                      |
|         33 | \033[33m |         |       | yellow           | echo -e "\033[33m####\033[m" |                                      |
|         34 | \033[34m |         |       | blue             | echo -e "\033[34m####\033[m" |                                      |
|         35 | \033[35m |         |       | purple           | echo -e "\033[35m####\033[m" | real name: magenta = reddish-purple  |
|         36 | \033[36m |         |       | cyan             | echo -e "\033[36m####\033[m" |                                      |
|         37 | \033[37m |         |       | white            | echo -e "\033[37m####\033[m" |                                      |
|------------+----------+---------+-------+------------------+------------------------------+--------------------------------------|
|         38 | 8/24     |                    This is for special use of 8-bit or 24-bit                                            |
|------------+----------+---------+-------+------------------+------------------------------+--------------------------------------|
| background | ~        |         |       | ~                | ~                            | ~                                    |
|------------+----------+---------+-------+------------------+------------------------------+--------------------------------------|
|         40 | \033[40m |         |       | black            | echo -e "\033[40m####\033[m" |                                      |
|         41 | \033[41m |         |       | red              | echo -e "\033[41m####\033[m" |                                      |
|         42 | \033[42m |         |       | green            | echo -e "\033[42m####\033[m" |                                      |
|         43 | \033[43m |         |       | yellow           | echo -e "\033[43m####\033[m" |                                      |
|         44 | \033[44m |         |       | blue             | echo -e "\033[44m####\033[m" |                                      |
|         45 | \033[45m |         |       | purple           | echo -e "\033[45m####\033[m" | real name: magenta = reddish-purple  |
|         46 | \033[46m |         |       | cyan             | echo -e "\033[46m####\033[m" |                                      |
|         47 | \033[47m |         |       | white            | echo -e "\033[47m####\033[m" |                                      |
|------------+----------+---------+-------+------------------+------------------------------+--------------------------------------|
|         48 | 8/24     |                    This is for special use of 8-bit or 24-bit                                            |                                                                                       |
|------------+----------+---------+-------+------------------+------------------------------+--------------------------------------|  
次の表は、ANSIカラーの8ビットバージョンの 概要を示しています。
|------------+-----------+-----------+---------+------------------+------------------------------------+-------------------------|
| foreground | octal     | hex       | bash    | description      | example                            | NOTE                    |
|------------+-----------+-----------+---------+------------------+------------------------------------+-------------------------|
|        0-7 | \033[38;5 | \x1b[38;5 | \e[38;5 | standard. normal | echo -e '\033[38;5;1m####\033[m'   |                         |
|       8-15 |           |           |         | standard. light  | echo -e '\033[38;5;9m####\033[m'   |                         |
|     16-231 |           |           |         | more resolution  | echo -e '\033[38;5;45m####\033[m'  | has no specific pattern |
|    232-255 |           |           |         |                  | echo -e '\033[38;5;242m####\033[m' | from black to white     |
|------------+-----------+-----------+---------+------------------+------------------------------------+-------------------------|
| foreground | octal     | hex       | bash    | description      | example                            | NOTE                    |
|------------+-----------+-----------+---------+------------------+------------------------------------+-------------------------|
|        0-7 |           |           |         | standard. normal | echo -e '\033[48;5;1m####\033[m'   |                         |
|       8-15 |           |           |         | standard. light  | echo -e '\033[48;5;9m####\033[m'   |                         |
|     16-231 |           |           |         | more resolution  | echo -e '\033[48;5;45m####\033[m'  |                         |
|    232-255 |           |           |         |                  | echo -e '\033[48;5;242m####\033[m' | from black to white     |
|------------+-----------+-----------+---------+------------------+------------------------------------+-------------------------|8ビット高速テスト:
for code in {0..255}; do echo -e "\e[38;05;${code}m $code: Test"; done  
 
次の表は、24ビットバージョンのANSIカラーの 概要を示しています。
|------------+-----------+-----------+---------+-------------+------------------------------------------+-----------------|
| foreground | octal     | hex       | bash    | description | example                                  | NOTE            |
|------------+-----------+-----------+---------+-------------+------------------------------------------+-----------------|
|      0-255 | \033[38;2 | \x1b[38;2 | \e[38;2 | R = red     | echo -e '\033[38;2;255;0;02m####\033[m'  | R=255, G=0, B=0 |
|      0-255 | \033[38;2 | \x1b[38;2 | \e[38;2 | G = green   | echo -e '\033[38;2;;0;255;02m####\033[m' | R=0, G=255, B=0 |
|      0-255 | \033[38;2 | \x1b[38;2 | \e[38;2 | B = blue    | echo -e '\033[38;2;0;0;2552m####\033[m'  | R=0, G=0, B=255 |
|------------+-----------+-----------+---------+-------------+------------------------------------------+-----------------|
| background | octal     | hex       | bash    | description | example                                  | NOTE            |
|------------+-----------+-----------+---------+-------------+------------------------------------------+-----------------|
|      0-255 | \033[48;2 | \x1b[48;2 | \e[48;2 | R = red     | echo -e '\033[48;2;255;0;02m####\033[m'  | R=255, G=0, B=0 |
|      0-255 | \033[48;2 | \x1b[48;2 | \e[48;2 | G = green   | echo -e '\033[48;2;;0;255;02m####\033[m' | R=0, G=255, B=0 |
|      0-255 | \033[48;2 | \x1b[48;2 | \e[48;2 | B = blue    | echo -e '\033[48;2;0;0;2552m####\033[m'  | R=0, G=0, B=255 |
|------------+-----------+-----------+---------+-------------+------------------------------------------+-----------------| 
フォアグラウンド8ビットの要約 .gif  
バックグラウンドでの8ビットの要約 .gif  
blinking KDEターミナルはい、できます。私は経験したバッシュ、 c、 C ++、 d perl、 python
私は違うと思います。
3/4ビットはい、Win-7でいくつかのスクリーンショットを使用してコードをコンパイルする場合gcc
  
\033[ = 2、その他のパーツ1  
持ってどこでもtty通訳を
xterm、gnome-terminal、kde-terminal、mysql-client-CLIようにと。
たとえば、mysqlで出力を色分けしたい場合は、Perl  
#!/usr/bin/perl -n
print "\033[1m\033[31m$1\033[36m$2\033[32m$3\033[33m$4\033[m" while /([|+-]+)|([0-9]+)|([a-zA-Z_]+)|([^\w])/g;このコードをファイル名pcc(= Perl Colorize Character)に保存してから、ファイルaを有効にしてPATH、好きな場所で使用してください。  
ls | pcc
df | pcc  
内部でmysql最初にそれを登録しpager、次に試してください:
[user2:db2] pager pcc
PAGER set to 'pcc'
[user2:db2] select * from table-name;Unicode は扱いません。
いいえ、彼らは多くの興味深いことをすることができます。試してください:
echo -e '\033[2K'  # clear the screen and do not move the positionまたは:
echo -e '\033[2J\033[u' # clear the screen and reset the position画面をクリアしたい初心者がたくさんいるsystem( "clear" )ので、system(3)電話の   代わりにこれを使用できます
はい。 \u001b  
使い方は簡単3/4-bitですが、非常に正確で美しい24-bitです。
経験がない場合htmlだからここに簡単なチュートリアルがあります:
24ビットは:00000000と00000000を意味   し00000000ます。各8ビットは特定の色用です。
1..8のためにそしての
9..16ためにそしての
17..24ため
にhtml #FF0000手段とここにある:
255;0;0
中html #00FF00手段:ここにある
0;255;0
んのでメイク感覚?どの色をこれらの3つの8ビット値と組み合わせるか。                                                                                                                    
参照:
Wikipedia 
ANSIエスケープシーケンス
tldp.org 
tldp.org 
misc.flogisoft.com
 
覚えていないブログ/ウェブページ  
x1B[それを排除するために使用することができます。
                    機能とパラメータtputとともに使用しsetafます1。
echo "$(tput setaf 1)Hello, world$(tput sgr0)"\033[31mは、一部の端末でreadlineライブラリを壊します。
                    iより多くの色合いのためにの上限を増やします):for (( i = 0; i < 17; i++ )); do echo "$(tput setaf $i)This is ($i) $(tput sgr0)"; done
                    tput: command not found(高山)
                    私はすべてのソリューションで良いキャッチを統合し、次のようになりました:
cecho(){
    RED="\033[0;31m"
    GREEN="\033[0;32m"
    YELLOW="\033[1;33m"
    # ... ADD MORE COLORS
    NC="\033[0m" # No Color
    printf "${!1}${2} ${NC}\n"
}そして、あなたはそれを次のように呼び出すことができます:
cecho "RED" "Helloworld"こちらがカラースイッチ \033[です。歴史を見る。
カラーコードは1;32(ライトグリーン)、0;34(ブルー)、1;34(ライトブルー)などです。
私たちは、色のスイッチでカラーシーケンスを終了\033[して0m、なし -カラーコード。マークアップ言語でタブを開いたり閉じたりするのと同じです。
  SWITCH="\033["
  NORMAL="${SWITCH}0m"
  YELLOW="${SWITCH}1;33m"
  echo "${YELLOW}hello, yellow${NORMAL}"シンプルなカラーecho関数ソリューション:
cecho() {
  local code="\033["
  case "$1" in
    black  | bk) color="${code}0;30m";;
    red    |  r) color="${code}1;31m";;
    green  |  g) color="${code}1;32m";;
    yellow |  y) color="${code}1;33m";;
    blue   |  b) color="${code}1;34m";;
    purple |  p) color="${code}1;35m";;
    cyan   |  c) color="${code}1;36m";;
    gray   | gr) color="${code}0;37m";;
    *) local text="$1"
  esac
  [ -z "$text" ] && local text="$color$2${code}0m"
  echo "$text"
}
cecho "Normal"
cecho y "Yellow!"text変数を変更するとtext="$color${@: 2}${code}0m"、カラーパラメータを除く行全体が色付きになります。
                    1つだけの色を変更するための適切な方法echoは、そのような関数を定義することです。
function coloredEcho(){
    local exp=$1;
    local color=$2;
    if ! [[ $color =~ '^[0-9]$' ]] ; then
       case $(echo $color | tr '[:upper:]' '[:lower:]') in
        black) color=0 ;;
        red) color=1 ;;
        green) color=2 ;;
        yellow) color=3 ;;
        blue) color=4 ;;
        magenta) color=5 ;;
        cyan) color=6 ;;
        white|*) color=7 ;; # white or invalid color
       esac
    fi
    tput setaf $color;
    echo $exp;
    tput sgr0;
}使用法:
coloredEcho "This text is green" greenまたは、Drewの回答に記載されているカラーコードを直接使用することもできます。
coloredEcho "This text is green" 2-nエコーに追加する場合は、インラインカラーとして使用できますecho "Red `coloredEcho "fox" red` jumps over the lazy dog"
                    tputカラーコードの計算に使用します。\E[31;1m移植性が低いため、ANSIエスケープコード(赤など)の使用は避けてください。たとえば、OS XのBashはサポートしていません。
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`
BOLD=`tput bold`
RESET=`tput sgr0`
echo -e "hello ${RED}some red text${RESET} world"この質問は何度も何度も回答されています:-)しかし、なぜそうではありませんか。
最初の使用tputは、ASCIIコードを手動で挿入するよりも現代の環境でよりポータブルです。echo -E 
簡単なbash関数は次のとおりです。
 say() {
     echo "$@" | sed \
             -e "s/\(\(@\(red\|green\|yellow\|blue\|magenta\|cyan\|white\|reset\|b\|u\)\)\+\)[[]\{2\}\(.*\)[]]\{2\}/\1\4@reset/g" \
             -e "s/@red/$(tput setaf 1)/g" \
             -e "s/@green/$(tput setaf 2)/g" \
             -e "s/@yellow/$(tput setaf 3)/g" \
             -e "s/@blue/$(tput setaf 4)/g" \
             -e "s/@magenta/$(tput setaf 5)/g" \
             -e "s/@cyan/$(tput setaf 6)/g" \
             -e "s/@white/$(tput setaf 7)/g" \
             -e "s/@reset/$(tput sgr0)/g" \
             -e "s/@b/$(tput bold)/g" \
             -e "s/@u/$(tput sgr 0 1)/g"
  }今あなたは使うことができます:
 say @b@green[[Success]] 取得するため:
tputtput(1)1986年9月に初めてソースコードがアップロードされました
tput(1) 1990年代にX / Open cursesセマンティクスで利用可能になりました(1997年の標準には、以下に述べるセマンティクスがあります)。
だから、それは(かなり)ユビキタスです。
tputか?インストールする管理者権限がないほとんどのサーバーで利用できますか?この手法が最初に「発明」された場所へのリンクはありますか?
                    $PS1なしに\[...\]非間隔部分の周り?tput文字列で引き続きBash PS1マーカーを使用します。
                    この回答をありがとう@ k-five
declare -A colors
#curl www.bunlongheng.com/code/colors.png
# Reset
colors[Color_Off]='\033[0m'       # Text Reset
# Regular Colors
colors[Black]='\033[0;30m'        # Black
colors[Red]='\033[0;31m'          # Red
colors[Green]='\033[0;32m'        # Green
colors[Yellow]='\033[0;33m'       # Yellow
colors[Blue]='\033[0;34m'         # Blue
colors[Purple]='\033[0;35m'       # Purple
colors[Cyan]='\033[0;36m'         # Cyan
colors[White]='\033[0;37m'        # White
# Bold
colors[BBlack]='\033[1;30m'       # Black
colors[BRed]='\033[1;31m'         # Red
colors[BGreen]='\033[1;32m'       # Green
colors[BYellow]='\033[1;33m'      # Yellow
colors[BBlue]='\033[1;34m'        # Blue
colors[BPurple]='\033[1;35m'      # Purple
colors[BCyan]='\033[1;36m'        # Cyan
colors[BWhite]='\033[1;37m'       # White
# Underline
colors[UBlack]='\033[4;30m'       # Black
colors[URed]='\033[4;31m'         # Red
colors[UGreen]='\033[4;32m'       # Green
colors[UYellow]='\033[4;33m'      # Yellow
colors[UBlue]='\033[4;34m'        # Blue
colors[UPurple]='\033[4;35m'      # Purple
colors[UCyan]='\033[4;36m'        # Cyan
colors[UWhite]='\033[4;37m'       # White
# Background
colors[On_Black]='\033[40m'       # Black
colors[On_Red]='\033[41m'         # Red
colors[On_Green]='\033[42m'       # Green
colors[On_Yellow]='\033[43m'      # Yellow
colors[On_Blue]='\033[44m'        # Blue
colors[On_Purple]='\033[45m'      # Purple
colors[On_Cyan]='\033[46m'        # Cyan
colors[On_White]='\033[47m'       # White
# High Intensity
colors[IBlack]='\033[0;90m'       # Black
colors[IRed]='\033[0;91m'         # Red
colors[IGreen]='\033[0;92m'       # Green
colors[IYellow]='\033[0;93m'      # Yellow
colors[IBlue]='\033[0;94m'        # Blue
colors[IPurple]='\033[0;95m'      # Purple
colors[ICyan]='\033[0;96m'        # Cyan
colors[IWhite]='\033[0;97m'       # White
# Bold High Intensity
colors[BIBlack]='\033[1;90m'      # Black
colors[BIRed]='\033[1;91m'        # Red
colors[BIGreen]='\033[1;92m'      # Green
colors[BIYellow]='\033[1;93m'     # Yellow
colors[BIBlue]='\033[1;94m'       # Blue
colors[BIPurple]='\033[1;95m'     # Purple
colors[BICyan]='\033[1;96m'       # Cyan
colors[BIWhite]='\033[1;97m'      # White
# High Intensity backgrounds
colors[On_IBlack]='\033[0;100m'   # Black
colors[On_IRed]='\033[0;101m'     # Red
colors[On_IGreen]='\033[0;102m'   # Green
colors[On_IYellow]='\033[0;103m'  # Yellow
colors[On_IBlue]='\033[0;104m'    # Blue
colors[On_IPurple]='\033[0;105m'  # Purple
colors[On_ICyan]='\033[0;106m'    # Cyan
colors[On_IWhite]='\033[0;107m'   # White
color=${colors[$input_color]}
white=${colors[White]}
# echo $white
for i in "${!colors[@]}"
do
  echo -e "$i = ${colors[$i]}I love you$white"
doneこの画像があなたのバッシュの色を選ぶのに役立つことを願っています:D
zshまたはを使用している場合bash
black() {
    echo -e "\e[30m${1}\e[0m"
}
red() {
    echo -e "\e[31m${1}\e[0m"
}
green() {
    echo -e "\e[32m${1}\e[0m"
}
yellow() {
    echo -e "\e[33m${1}\e[0m"
}
blue() {
    echo -e "\e[34m${1}\e[0m"
}
magenta() {
    echo -e "\e[35m${1}\e[0m"
}
cyan() {
    echo -e "\e[36m${1}\e[0m"
}
gray() {
    echo -e "\e[90m${1}\e[0m"
}
black 'BLACK'
red 'RED'
green 'GREEN'
yellow 'YELLOW'
blue 'BLUE'
magenta 'MAGENTA'
cyan 'CYAN'
gray 'GRAY'テキストと背景の両方に24ビットRGBトゥルーカラーを使用できます。
 ESC[38;2;⟨r⟩;⟨g⟩;⟨b⟩m  /*Foreground color*/
 ESC[48;2;⟨r⟩;⟨g⟩;⟨b⟩m  /*Background color*/赤いテキストと終了タグの例:
 echo -e "\e[38;2;255;0;0mHello world\e[0m"発生器:
24ビット: 16ビットから24ビットの「トゥルーカラー」グラフィックカードが一般的になるにつれて、Xterm、KDEのKonsole、およびすべてのlibvteベースの端末(GNOME端末を含む)は、24ビットの前景色と背景色の設定をサポートし ますhttps:/ /en.wikipedia.org/wiki/ANSI_escape_code#24-bit
スクリプトで使用しても安全ですか?
はい!8ビットと16ビットのターミナルは、利用可能なパレットの範囲で色をフォールバックとして表示するだけで、最高のコントラストを維持します。
また、ANSIコード7 反転ビデオの有用性に誰も気づきませんでした。
これは、前景色と背景色を入れ替えることにより、端末スキームの色、黒または白の背景、またはその他の空想パレットで読み取り可能な状態を保ちます。
例、どこでも機能する赤い背景の場合:
echo -e "\033[31;7mHello world\e[0m";これは、端末の組み込みスキームを変更するときの外観です。
これは、gifに使用されるループスクリプトです。
for i in {30..49};do echo -e "\033[$i;7mReversed color code $i\e[0m Hello world!";donehttps://en.wikipedia.org/wiki/ANSI_escape_code#SGR_(Select_Graphic_Rendition)_parametersを参照してください
これらのコードは私のUbuntuボックスで動作します:

echo -e "\x1B[31m foobar \x1B[0m"
echo -e "\x1B[32m foobar \x1B[0m"
echo -e "\x1B[96m foobar \x1B[0m"
echo -e "\x1B[01;96m foobar \x1B[0m"
echo -e "\x1B[01;95m foobar \x1B[0m"
echo -e "\x1B[01;94m foobar \x1B[0m"
echo -e "\x1B[01;93m foobar \x1B[0m"
echo -e "\x1B[01;91m foobar \x1B[0m"
echo -e "\x1B[01;90m foobar \x1B[0m"
echo -e "\x1B[01;89m foobar \x1B[0m"
echo -e "\x1B[01;36m foobar \x1B[0m"これにより、abcdという文字がすべて異なる色で印刷されます。
echo -e "\x1B[0;93m a \x1B[0m b \x1B[0;92m c \x1B[0;93m d \x1B[0;94m"forループ:
for (( i = 0; i < 17; i++ )); 
do echo "$(tput setaf $i)This is ($i) $(tput sgr0)"; 
done
Shakiba Moshiriの素晴らしい答えを見つけたのは、そのトピックに関する情報を探していたときでした…アイデアが浮かびました…結局、とても使いやすい非常に使いやすい機能になりました😁 
だから、共有しますve
https://github.com/ppo/bash-colors
使用法: $(c <flags>)内部AN echo -eまたはprintf
 ┌───────┬─────────────────┬──────────┐   ┌───────┬─────────────────┬──────────┐
 │ Code  │ Style           │ Octal    │   │ Code  │ Style           │ Octal    │
 ├───────┼─────────────────┼──────────┤   ├───────┼─────────────────┼──────────┤
 │   -   │ Foreground      │ \033[3.. │   │   B   │ Bold            │ \033[1m  │
 │   _   │ Background      │ \033[4.. │   │   U   │ Underline       │ \033[4m  │
 ├───────┼─────────────────┼──────────┤   │   F   │ Flash/blink     │ \033[5m  │
 │   k   │ Black           │ ......0m │   │   N   │ Negative        │ \033[7m  │
 │   r   │ Red             │ ......1m │   ├───────┼─────────────────┼──────────┤
 │   g   │ Green           │ ......2m │   │   L   │ Normal (unbold) │ \033[22m │
 │   y   │ Yellow          │ ......3m │   │   0   │ Reset           │ \033[0m  │
 │   b   │ Blue            │ ......4m │   └───────┴─────────────────┴──────────┘
 │   m   │ Magenta         │ ......5m │
 │   c   │ Cyan            │ ......6m │
 │   w   │ White           │ ......7m │
 └───────┴─────────────────┴──────────┘例:
echo -e "$(c 0wB)Bold white$(c) and normal"
echo -e "Normal text… $(c r_yB)BOLD red text on yellow background… $(c _w)now on
  white background… $(c 0U) reset and underline… $(c) and back to normal."これまでの私のお気に入りの答えは、coloredEchoです。
別のオプションを投稿するには、この小さなツールxcolをチェックしてください
https://ownyourbits.com/2017/01/23/colorize-your-stdout-with-xcol/
あなたはちょうどgrepのようにそれを使用し、それは例えば各引数に対して異なる色で標準入力を色付けします、例えば
sudo netstat -putan | xcol httpd sshd dnsmasq pulseaudio conky tor Telegram firefox "[[:digit:]]+\.[[:digit:]]+\.[[:digit:]]+\.[[:digit:]]+" ":[[:digit:]]+" "tcp." "udp." LISTEN ESTABLISHED TIME_WAITsedが受け入れるすべての正規表現を受け入れることに注意してください。
このツールは次の定義を使用します
#normal=$(tput sgr0)                      # normal text
normal=$'\e[0m'                           # (works better sometimes)
bold=$(tput bold)                         # make colors bold/bright
red="$bold$(tput setaf 1)"                # bright red text
green=$(tput setaf 2)                     # dim green text
fawn=$(tput setaf 3); beige="$fawn"       # dark yellow text
yellow="$bold$fawn"                       # bright yellow text
darkblue=$(tput setaf 4)                  # dim blue text
blue="$bold$darkblue"                     # bright blue text
purple=$(tput setaf 5); magenta="$purple" # magenta text
pink="$bold$purple"                       # bright magenta text
darkcyan=$(tput setaf 6)                  # dim cyan text
cyan="$bold$darkcyan"                     # bright cyan text
gray=$(tput setaf 7)                      # dim white text
darkgray="$bold"$(tput setaf 0)           # bold black = dark gray text
white="$bold$gray"                        # bright white textこれらの変数をスクリプトで次のように使用します
echo "${red}hello ${yellow}this is ${green}coloured${normal}"私たちの怠惰な人のために、この答えを拡張するには:
function echocolor() { # $1 = string
    COLOR='\033[1;33m'
    NC='\033[0m'
    printf "${COLOR}$1${NC}\n"
}
echo "This won't be colored"
echocolor "This will be colorful"tputます。それが目的です!
                    tputfor scとfor も使用しrcます(カーソルの保存、カーソルの復元)。この回答では「怠惰」と呼んでいますが、「実用的」または「要点」と言い換えることもできます。
                    生のANSI制御シーケンスに対しては必ずtputを使用する必要があります。
端末制御言語は多数あるため、通常、システムには中間通信層があります。実際に検出された端末タイプの実際のコードはデータベースで検索され、標準化されたリクエストをAPIまたは(シェルから)コマンドに与えます。
これらのコマンドの1つは
tputです。tput機能名と呼ばれる頭字語のセットと、必要に応じてパラメーターを受け入れ、次に、terminfoデータベースで検出された端末の正しいエスケープシーケンスを検索し、正しいコードを出力します(端末はうまく理解します)。
http://wiki.bash-hackers.org/scripting/terminalcodesから
とはいえ、bash-tintと呼ばれる小さなヘルパーライブラリを作成しました。これにより、tputの上に別のレイヤーが追加され、使用がさらに簡単になります(imho)。
例:
tint "white(Cyan(T)Magenta(I)Yellow(N)Black(T)) is bold(really) easy to use."
現在の端末に固有のエスケープコードをハードコーディングする代わりに、を使用する必要がありますtput。
これは私のお気に入りのデモスクリプトです。
#!/bin/bash
tput init
end=$(( $(tput colors)-1 ))
w=8
for c in $(seq 0 $end); do
    eval "$(printf "tput setaf %3s   " "$c")"; echo -n "$_"
    [[ $c -ge $(( w*2 )) ]] && offset=2 || offset=0
    [[ $(((c+offset) % (w-offset))) -eq $(((w-offset)-1)) ]] && echo
done
tput init#!/bin/bash
#--------------------------------------------------------------------+
#Color picker, usage: printf $BLD$CUR$RED$BBLU'Hello World!'$DEF     |
#-------------------------+--------------------------------+---------+
#       Text color        |       Background color         |         |
#-----------+-------------+--------------+-----------------+         |
# Base color|Lighter shade| Base color   | Lighter shade   |         |
#-----------+-------------+--------------+-----------------+         |
BLK='\e[30m'; blk='\e[90m'; BBLK='\e[40m'; bblk='\e[100m' #| Black   |
RED='\e[31m'; red='\e[91m'; BRED='\e[41m'; bred='\e[101m' #| Red     |
GRN='\e[32m'; grn='\e[92m'; BGRN='\e[42m'; bgrn='\e[102m' #| Green   |
YLW='\e[33m'; ylw='\e[93m'; BYLW='\e[43m'; bylw='\e[103m' #| Yellow  |
BLU='\e[34m'; blu='\e[94m'; BBLU='\e[44m'; bblu='\e[104m' #| Blue    |
MGN='\e[35m'; mgn='\e[95m'; BMGN='\e[45m'; bmgn='\e[105m' #| Magenta |
CYN='\e[36m'; cyn='\e[96m'; BCYN='\e[46m'; bcyn='\e[106m' #| Cyan    |
WHT='\e[37m'; wht='\e[97m'; BWHT='\e[47m'; bwht='\e[107m' #| White   |
#-------------------------{ Effects }----------------------+---------+
DEF='\e[0m'   #Default color and effects                             |
BLD='\e[1m'   #Bold\brighter                                         |
DIM='\e[2m'   #Dim\darker                                            |
CUR='\e[3m'   #Italic font                                           |
UND='\e[4m'   #Underline                                             |
INV='\e[7m'   #Inverted                                              |
COF='\e[?25l' #Cursor Off                                            |
CON='\e[?25h' #Cursor On                                             |
#------------------------{ Functions }-------------------------------+
# Text positioning, usage: XY 10 10 'Hello World!'                   |
XY () { printf "\e[$2;${1}H$3"; }                                   #|
# Print line, usage: line - 10 | line -= 20 | line 'Hello World!' 20 |
line () { printf -v _L %$2s; printf -- "${_L// /$1}"; }             #|
# Create sequence like {0..(X-1)}                                    |
que () { printf -v _N %$1s; _N=(${_N// / 1}); printf "${!_N[*]}"; } #|
#--------------------------------------------------------------------+すべての基本色はvarとして設定され、いくつかの便利な関数があります:XY、線、およびque。このスクリプトをいずれかで入手し、すべてのカラー変数と関数を使用します。
私はそれを達成するために盗品を書きました。
あなたはただすることができます
pip install swagこれで、すべてのエスケープコマンドをtxtファイルとして指定した宛先に次のようにインストールできます。
swag install -d <colorsdir>または、さらに簡単に:
swag installに色をインストールします~/.colors。
次のように使用します。
echo $(cat ~/.colors/blue.txt) This will be blueまたはこのように、私は実際にもっと面白いと思います:
swag print -c red -t underline "I will turn red and be underlined"asciinemaで確認してください。
ここに私が最近まとめた単純な小さなスクリプトがあります。これは、「トイレ」を使用する代わりに、パイプ入力を色付けします。
File: color.bsh 
#!/usr/bin/env bash 
## A.M.Danischewski 2015+(c) Free - for (all (uses and 
## modifications)) - except you must keep this notice intact. 
declare INPUT_TXT=""
declare    ADD_LF="\n" 
declare -i DONE=0
declare -r COLOR_NUMBER="${1:-247}"
declare -r ASCII_FG="\\033[38;05;"
declare -r COLOR_OUT="${ASCII_FG}${COLOR_NUMBER}m"
function show_colors() { 
   ## perhaps will add bg 48 to first loop eventually 
 for fgbg in 38; do for color in {0..256} ; do 
 echo -en "\\033[${fgbg};5;${color}m ${color}\t\\033[0m"; 
 (($((${color}+1))%10==0)) && echo; done; echo; done
} 
if [[ ! $# -eq 1 || ${1} =~ ^-. ]]; then 
  show_colors 
  echo " Usage: ${0##*/} <color fg>" 
  echo "  E.g. echo \"Hello world!\" | figlet | ${0##*/} 54" 
else  
 while IFS= read -r PIPED_INPUT || { DONE=1; ADD_LF=""; }; do 
  PIPED_INPUT=$(sed 's#\\#\\\\#g' <<< "${PIPED_INPUT}")
  INPUT_TXT="${INPUT_TXT}${PIPED_INPUT}${ADD_LF}"
  ((${DONE})) && break; 
 done
 echo -en "${COLOR_OUT}${INPUT_TXT}\\033[00m"
fi 次に、赤(196)で呼び出します。
 
$> echo "text you want colored red" | color.bsh 196
これが最も簡単で読みやすい解決策です。bashj(https://sourceforge.net/projects/bashj/)では、次の行の1つを選択するだけです。
#!/usr/bin/bash
W="Hello world!"
echo $W
R=130
G=60
B=190
echo u.colored($R,$G,$B,$W)
echo u.colored(255,127,0,$W)
echo u.red($W)
echo u.bold($W)
echo u.italic($W)
Y=u.yellow($W)
echo $Y
echo u.bold($Y)256x256x256 端末アプリケーションで色をサポートしている場合は、色を使用できます。
スレッドから他のソリューションを混合した後、npm scripts出力で色を取得する方法を以下に示します(gitbash CLI)。
{
    "deploy": "echo \u001b[1;32m && ng build && echo \u001b[1;0mdeploy {\u001b[1;33mcopy\u001b[1;0m: \u001b[1;32m0% && cp -r -f dist/packaged/* \\\\SERVER-01\\dist\\ && echo \u001b[1;0mdeploy {\u001b[1;33mcopy\u001b[1;0m} \u001b[1;34m\u001b[1;1m100% DEPLOYED"
}少し何かがあるように、それをgrepに渡すと、赤(ただし赤のみ)として強調表示されます。名前付きパイプを使用して、文字列が行の終わりに近づくようにすることもできます。
 grep '.*' --color=always <(echo "foobar")red='\e[0;31m'
NC='\e[0m' # No Color
echo -e "${red}Hello Stackoverflow${NC}"これは正解です。ただし、色の呼び出しを引用符の中に含めないでください。
echo -e ${red}"Hello Stackoverflow"${NC}トリックを行う必要があります。
echo -e '\e[0;31mHello Stackoverflow\e[0m'ます。したがって、bashでも同じです。