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"
(空の行を追加したいのでなければ、echoを使うときは"\n"
を追加しないでください)
あなたはすごい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 mode
tput 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 terminal
tput 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 lines
tput sgr0 # Reset text format to the terminal's default
tput bel # Play a bell
compiz wobbly windows を指定すると、bel
コマンドを実行すると端末が一瞬揺れてユーザーの注意を引くことができます。
tput
は、1行に1つのコマンドを含むスクリプトを受け付けます。これらのスクリプトは、tput
が終了する前に順番に実行されます。
複数行の文字列をエコーしてパイプ処理することで一時ファイルを避けます。
echo -e "setf 7\nsetb 1" | tput -S # set fg white and bg red
man 1 tput
を参照してください。man 5 terminfo
を参照してください。 (対応するtput
コマンドは、81行目から始まる巨大テーブルのCap-name
列にリストされています。)# 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変数でこれらのコードを使うつもりならば
bash がそれらを正しく解釈できるように、余分なエスケープ文字を追加する必要があります。これで余分なエスケープ文字を追加しなくても機能しますが、履歴の検索にCtrl + r
を使用すると問題が発生します。
最初のANSIコードの前に\[
を追加し、最後の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
reset1;
は通常より軽い2;
が通常より暗いこのモードは広くはサポートされていません。 Gnome-Terminalで完全にサポートされています。
このモードは色ではなくテキストのスタイルを変更するためのものです。
3;
イタリック4;
下線5;
の点滅(遅い)6;
の点滅(速い)7;
reverse8;
hide9;
クロスアウトそしてほぼサポートされています。
例えば、KDE-Konsoleは5;
をサポートしますがGnome-Terminalはサポートしません、そしてGnomeは8;
をサポートしますがKDEはサポートしません。
このモードは前景を色付けするためのものです。
このモードは背景を色付けするためのものです。
以下の表は3/4 bitANSIカラーのバージョン)の概要を示しています
|------------+----------+---------+-------+------------------+------------------------------+--------------------------------------|
| 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[32m | | | yellow | echo -e "\033[33m####\033[m" | |
| 34 | \033[32m | | | blue | echo -e "\033[34m####\033[m" | |
| 35 | \033[32m | | | purple | echo -e "\033[35m####\033[m" | real name: Magenta = reddish-purple |
| 36 | \033[32m | | | cyan | echo -e "\033[36m####\033[m" | |
| 37 | \033[32m | | | 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 | |
|------------+----------+---------+-------+------------------+------------------------------+--------------------------------------|
以下の表は8ビットANSIカラーのバージョン)の概要を示しています
|------------+-----------+-----------+---------+------------------+------------------------------------+-------------------------|
| 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 |
|------------+-----------+-----------+---------+-------------+------------------------------------------+-----------------|
.gif
内の前景の8ビット要約
.gif
内のバックグラウンド8ビット要約
blinking
はい、できます。 bash 、 c 、 c ++ 、 dPerl 、 python の経験がある
違うと思う。
3/4ビットはい、gcc
を使用してコードをコンパイルした場合
Win-7のスクリーンショット
\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ビットは特定の色用です。24..17
はのためです と16..9
は と8..1
は
だから html#FF0000
という意味 そしてここにそれがあります:255;0;0
html#00FF00
のは、 これはここです:0;255;0
それは理にかなっていますか?どのような色を使いたいのか、これら3つの8ビット値と組み合わせてください。
参照:
ウィキペディア
ANSIエスケープシーケンス
tldp.org
tldp.org
misc.flogisoft.com
私が覚えていないいくつかのブログ/ Webページ
tput
機能と1
のパラメータでsetaf
を使用します。
echo "$(tput setaf 1)Hello, world$(tput sgr0)"
echo -e "\033[31m Hello World"
[31m
はテキストの色を制御します。
30
-37
set foreground color40
-47
sets background colorカラーコードのより完全なリストは ここで見つけることができます 。
文字列の末尾でテキストの色を\033[0m
に戻すことをお勧めします。
これは カラースイッチ \033[
です。 history を参照してください。
色 コード は1;32
(ライトグリーン)、0;34
(ブルー)、1;34
(ライトブルー)のようなものです。
カラーシーケンスを色スイッチ\033[
と0m
、no-カラーコードで終了させます。マークアップ言語でタブを開閉するのと同じです。
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!"
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
カラーコードを計算するにはtput
を使います。 ANSIエスケープコード(赤の場合は\E[31;1m
)は、移植性が低いため使用しないでください。例えば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
の使用は、echo -E
を介してASCIIコードを手動で挿入するよりも、現代の環境で移植性があります。
これが簡単な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]]
取得するため:
tput
の移植性に関する注意1986年9月に初めてtput(1)
ソースコードがアップロードされました
tput(1)
は1990年代にX/Open cursesのセマンティクスで利用可能になりました(1997年の標準は以下に述べるセマンティクスを持ちます)。
だから、それはいたるところにある( かなり )。
私はすべての解決策の中で良い漁獲量を統合したところで終わりました:
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"
この回答に @ 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
これを願っています image あなたのバッシュのためにあなたの色を選ぶのを手伝ってください:D
これらのコードは私の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"
これは、文字a b c dをすべて異なる色で印刷します。
echo -e "\x1B[0;93m a \x1B[0m b \x1B[0;92m c \x1B[0;93m d \x1B[0;94m"
ループの場合:
for (( i = 0; i < 17; i++ ));
do echo "$(tput setaf $i)This is ($i) $(tput sgr0)";
done
コードの 読みやすさ を改善したい場合は、最初に文字列をecho
にし、次にsed
を使用して後で色を追加することができます。
echo 'Hello World!' | sed $'s/World/\e[1m&\e[0m/'
私のお気に入りの答えはこれまでのところcolorEchoです。
別のオプションを投稿するためだけに、この小さなツール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_WAIT
Sedが受け付けるどんな正規表現も受け入れます。
このツールは以下の定義を使用します
#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"
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!";done
https://en.wikipedia.org/wiki/ANSI_escape_code#SGR_(Select_Graphic_Rendition)_parameters を参照してください。
あなたは間違いなく生のANSI制御シーケンスの上にtputを使うべきです。
さまざまな端末制御言語が多数あるため、通常、システムには中間通信層があります。実際のコードは、現在検出されている端末タイプについてデータベースで検索され、標準化された要求をAPIまたは(シェルから)コマンドに渡します。
これらのコマンドの1つが
tput
です。tput
は、ケーパビリティ名と呼ばれる頭字語と適切なパラメータを受け入れ、terminfoデータベースで検出された端末の正しいエスケープシーケンスを調べ、正しいコードを出力します(端末は理解できる)。
http://wiki.bash-hackers.org/scripting/terminalcodes から
そうは言っても、私は bash-tint と呼ばれる小さなヘルパーライブラリを書きました。
例:tint "white(Cyan(T)Magenta(I)Yellow(N)Black(T)) is bold(really) easy to use."
私は Swag と書いています。
あなたはただできる
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 でチェックしてください。
そしてこれが私がすべての組み合わせを見て、どれがクールであるかを決定するために使用していたものです:
for (( i = 0; i < 8; i++ )); do
for (( j = 0; j < 8; j++ )); do
printf "$(tput setab $i)$(tput setaf $j)(b=$i, f=$j)$(tput sgr0)\n"
done
done
あなたが作ることができる異なる色でメッセージ出力を表示するには:
echo -e "\033[31;1mYour Message\033[0m"
-ブラック0; 30ダークグレー1; 30
-赤0; 31薄赤1; 31
-緑0; 32薄緑1; 32
-ブラウン/オレンジ0; 33イエロー1; 33
-ブルー0; 34ライトブルー1; 34
-パープル0; 35ライトパープル1; 35
-シアン0; 36ライトシアン1; 36
-ライトグレー0; 37ホワイト1; 37
これは、MacOSターミナルでPS1にカラーリングを設定するために機能する実装とそうでない実装です。
2つの実装があります。1つはエコーに依存し、もう1つは地獄が崩れることなく動的にメソッドを呼び出すためにprintfに依存しています。
これは単なるスタートにすぎませんが、堅牢で、端末がちらつくことはありません。現在gitブランチをサポートしていますが、最終的に多くのことを行うために拡張できます。
ここにあります:
https://github.com/momomo/opensource/blob/master/momomo.com.Shell.style.sh
コピーして貼り付けるだけで機能するはずです。依存関係はありません。
これは、私が最近まとめた簡単な小さなスクリプトです。これは、「トイレ」を使用する代わりに、パイプ入力を色付けします。
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
参照する:
echo_red(){
echo -e "\e[1;31m$1\e[0m"
}
echo_green(){
echo -e "\e[1;32m$1\e[0m"
}
echo_yellow(){
echo -e "\e[1;33m$1\e[0m"
}
echo_blue(){
echo -e "\e[1;34m$1\e[0m"
}