色付きの出力を生成するシェルスクリプトを構築する決定的な方法を探しています。
残念ながら、これを行うための適切なライブラリまたは良いテクニックを見つけるのに苦労しています。 this のような、便利だが簡単な例がたくさん見つかりました。また、私が今まで見つけた最も包括的なガイドは this one です。
自分のライブラリを書き始める前に、誰かがすでに書いているかどうかを確認したい
解決策が以下の観察結果に合わない場合、それは問題ではありません。私自身の解決策を書くことにした場合に役立つように、私もそれを読みたいです
私の主な懸念/観察:
echo -e '\033[32mthis is ugly and \033[1;32mvery green\033[0m'
端末制御と出力フォーマットに関するいくつかの調査の後、これを達成しようとする this Gist を書いています。これまでのところ、それは非常にうまくいっています
これは、私の dotfiles から修正したスニペットです。
RCol='\e[0m' # Text Reset
# Regular Bold Underline High Intensity BoldHigh Intens Background High Intensity Backgrounds
Bla='\e[0;30m'; BBla='\e[1;30m'; UBla='\e[4;30m'; IBla='\e[0;90m'; BIBla='\e[1;90m'; On_Bla='\e[40m'; On_IBla='\e[0;100m';
Red='\e[0;31m'; BRed='\e[1;31m'; URed='\e[4;31m'; IRed='\e[0;91m'; BIRed='\e[1;91m'; On_Red='\e[41m'; On_IRed='\e[0;101m';
Gre='\e[0;32m'; BGre='\e[1;32m'; UGre='\e[4;32m'; IGre='\e[0;92m'; BIGre='\e[1;92m'; On_Gre='\e[42m'; On_IGre='\e[0;102m';
Yel='\e[0;33m'; BYel='\e[1;33m'; UYel='\e[4;33m'; IYel='\e[0;93m'; BIYel='\e[1;93m'; On_Yel='\e[43m'; On_IYel='\e[0;103m';
Blu='\e[0;34m'; BBlu='\e[1;34m'; UBlu='\e[4;34m'; IBlu='\e[0;94m'; BIBlu='\e[1;94m'; On_Blu='\e[44m'; On_IBlu='\e[0;104m';
Pur='\e[0;35m'; BPur='\e[1;35m'; UPur='\e[4;35m'; IPur='\e[0;95m'; BIPur='\e[1;95m'; On_Pur='\e[45m'; On_IPur='\e[0;105m';
Cya='\e[0;36m'; BCya='\e[1;36m'; UCya='\e[4;36m'; ICya='\e[0;96m'; BICya='\e[1;96m'; On_Cya='\e[46m'; On_ICya='\e[0;106m';
Whi='\e[0;37m'; BWhi='\e[1;37m'; UWhi='\e[4;37m'; IWhi='\e[0;97m'; BIWhi='\e[1;97m'; On_Whi='\e[47m'; On_IWhi='\e[0;107m';
次に、echo -e "${Blu}blue ${Red}red ${RCol}etc...."
echo -e "\ 033 [33; 31mカラーテキスト"-赤
echo -e "\ 033 [33; 32mカラーテキスト"-緑
echo -e "\ 033 [33; 33mカラーテキスト"-黄色
echo -e "\ 033 [33; 34mカラーテキスト"-青
echo -e "\ 033 [33; 35mカラーテキスト"-マゼンタ
echo -e "\ 033 [33; 30mカラーテキスト"-グレー
echo -e "\ 033 [33; 36mカラーテキスト"-シアン
http://techietent.blogspot.in/2013/03/how-to-echo-colored-text-in-linux-Shell.html
私はおとなしそうのリストをインスピレーションとして取り入れ、それから少し乾かしました。 (そして変更された\e
を16進数\x1B
、前者はSnow Leopard以降OS XのTerminal.appでサポートされていないため。)私が思いついたのは次のとおりです。
## Colours and font styles
## Syntax: echo -e "${FOREGROUND_COLOUR}${BACKGROUND_COLOUR}${STYLE}Hello world!${RESET_ALL}"
# Escape sequence and resets
ESC_SEQ="\x1b["
RESET_ALL="${ESC_SEQ}0m"
RESET_BOLD="${ESC_SEQ}21m"
RESET_UL="${ESC_SEQ}24m"
# Foreground colours
FG_BLACK="${ESC_SEQ}30;"
FG_RED="${ESC_SEQ}31;"
FG_GREEN="${ESC_SEQ}32;"
FG_YELLOW="${ESC_SEQ}33;"
FG_BLUE="${ESC_SEQ}34;"
FG_Magenta="${ESC_SEQ}35;"
FG_CYAN="${ESC_SEQ}36;"
FG_WHITE="${ESC_SEQ}37;"
FG_BR_BLACK="${ESC_SEQ}90;"
FG_BR_RED="${ESC_SEQ}91;"
FG_BR_GREEN="${ESC_SEQ}92;"
FG_BR_YELLOW="${ESC_SEQ}93;"
FG_BR_BLUE="${ESC_SEQ}94;"
FG_BR_Magenta="${ESC_SEQ}95;"
FG_BR_CYAN="${ESC_SEQ}96;"
FG_BR_WHITE="${ESC_SEQ}97;"
# Background colours (optional)
BG_BLACK="40;"
BG_RED="41;"
BG_GREEN="42;"
BG_YELLOW="43;"
BG_BLUE="44;"
BG_Magenta="45;"
BG_CYAN="46;"
BG_WHITE="47;"
# Font styles
FS_REG="0m"
FS_BOLD="1m"
FS_UL="4m"
BR_
色は「明るい」または「高輝度」の色です。このようにして、他のフォントスタイルと組み合わせることもできます。 (例:明るい白の下線付き)
これをブックマークしたい場合は、Gistを作成しました: https://Gist.github.com/ian128K/39a490e5aa8d3bb77a8b
tput
は、リンク先のページに示されている以上のことを処理できます。 tput
は、現在の端末のtermcap/terminfoデータベースに表示される内容に基づいて、echo
ステートメントに含める文字を出力します。いくつかの例:
$ tput setaf 5 | hexdump -C
00000000 1b 5b 33 35 6d |.[35m|
$ tput setaf 17 | hexdump -C
00000000 1b 5b 33 38 3b 35 3b 31 37 6d |.[38;5;17m|
$ tput reset | hexdump -C
00000000 1b 63 1b 5b 3f 31 30 30 30 6c 1b 5b 3f 32 35 68 |.c.[?1000l.[?25h|
Gistで定義された変数を使用するのと同じ方法で使用します。実際には、移植可能な方法でcreate your Gistに使用できます。
black=$(tput setaf 0)
恥知らずなプラグ...チェック Rainbow.sh
使用法
Rainbow.shをインポートして、スクリプトで使用可能な関数の使用を開始してください。
source Rainbow.sh
vargreen=$(echogreen "Grass is green")
varred=$(echored "Roses are red")
echo "$vargreen ..Crickets are noisy.. $varred"
私は、Andreas Schamanekコードを参照として使用して開発したxcolツールでこれらを個人的に使用します。
#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}"
アイデアと例については、xcolツールをチェックしてください
https://ownyourbits.com/2017/01/23/colorize-your-stdout-with-xcol/