টিপুটতে উপলভ্য রঙগুলির গণনা দ্বারা প্রদত্ত tput colors
।
বেসিক 8 টি রঙ দেখতে (যেমন setf
urxvt টার্মিনাল এবং এক্সটার্ম টার্মিনালে ব্যবহৃত setaf
):
$ printf '\e[%sm▒' {30..37} 0; echo ### foreground
$ printf '\e[%sm ' {40..47} 0; echo ### background
এবং সাধারণত এটি হিসাবে নামকরণ করা হয়:
Color #define Value RGB
black COLOR_BLACK 0 0, 0, 0
red COLOR_RED 1 max,0,0
green COLOR_GREEN 2 0,max,0
yellow COLOR_YELLOW 3 max,max,0
blue COLOR_BLUE 4 0,0,max
magenta COLOR_MAGENTA 5 max,0,max
cyan COLOR_CYAN 6 0,max,max
white COLOR_WHITE 7 max,max,max
বর্ধিত 256 টি রং দেখতে ( setaf
urxvt তে ব্যবহৃত হিসাবে )
$ printf '\e[48;5;%dm ' {0..255}; printf '\e[0m \n'
আপনি যদি নম্বর এবং একটি অর্ডার আউটপুট চান:
#!/bin/bash
color(){
for c; do
printf '\e[48;5;%dm%03d' $c $c
done
printf '\e[0m \n'
}
IFS=$' \t\n'
color {0..15}
for ((i=0;i<6;i++)); do
color $(seq $((i*36+16)) $((i*36+51)))
done
color {232..255}
১ million মিলিয়ন রঙের বেশ কয়েকটি কোড দরকার (কিছু কনসোল এটি প্রদর্শন করতে পারে না)।
বেসিকগুলি হ'ল:
fb=3;r=255;g=1;b=1;printf '\e[0;%s8;2;%s;%s;%sm▒▒▒ ' "$fb" "$r" "$g" "$b"
fb
হয় front/back
বা 3/4
।
এতগুলি রঙ উপস্থাপন করার জন্য আপনার কনসোল ক্ষমতার একটি সহজ পরীক্ষাটি হ'ল:
for r in {200..255..5}; do fb=4;g=1;b=1;printf '\e[0;%s8;2;%s;%s;%sm ' "$fb" "$r" "$g" "$b"; done; echo
বাম থেকে ডানে স্বরটিতে খুব ছোট পরিবর্তন সহ এটি একটি লাল রেখা উপস্থাপন করবে। যদি সেই ছোট পরিবর্তন দৃশ্যমান হয় তবে আপনার কনসোলটি 16 মিলিয়ন রঙের জন্য সক্ষম।
প্রতিটি r
, g
এবং b
আরজিবি (লাল, সবুজ, নীল) এর 0 থেকে 255 এর মান।
যদি আপনার কনসোল প্রকারটি সমর্থন করে তবে এই কোডটি একটি রঙিন টেবিল তৈরি করবে:
mode2header(){
#### For 16 Million colors use \e[0;38;2;R;G;Bm each RGB is {0..255}
printf '\e[mR\n' # reset the colors.
printf '\n\e[m%59s\n' "Some samples of colors for r;g;b. Each one may be 000..255"
printf '\e[m%59s\n' "for the ansi option: \e[0;38;2;r;g;bm or \e[0;48;2;r;g;bm :"
}
mode2colors(){
# foreground or background (only 3 or 4 are accepted)
local fb="$1"
[[ $fb != 3 ]] && fb=4
local samples=(0 63 127 191 255)
for r in "${samples[@]}"; do
for g in "${samples[@]}"; do
for b in "${samples[@]}"; do
printf '\e[0;%s8;2;%s;%s;%sm%03d;%03d;%03d ' "$fb" "$r" "$g" "$b" "$r" "$g" "$b"
done; printf '\e[m\n'
done; printf '\e[m'
done; printf '\e[mReset\n'
}
mode2header
mode2colors 3
mode2colors 4
একটি হেক্স রঙের মানকে (নিকটতম) 0-255 রঙ সূচকে রূপান্তর করতে:
fromhex(){
hex=${1#"#"}
r=$(printf '0x%0.2s' "$hex")
g=$(printf '0x%0.2s' ${hex#??})
b=$(printf '0x%0.2s' ${hex#????})
printf '%03d' "$(( (r<75?0:(r-35)/40)*6*6 +
(g<75?0:(g-35)/40)*6 +
(b<75?0:(b-35)/40) + 16 ))"
}
এটি হিসাবে ব্যবহার করুন:
$ fromhex 00fc7b
048
$ fromhex #00fc7b
048
এইচটিএমএল রঙের ফর্ম্যাটে ব্যবহৃত রঙের সন্ধান করতে :
#!/bin/dash
tohex(){
dec=$(($1%256)) ### input must be a number in range 0-255.
if [ "$dec" -lt "16" ]; then
bas=$(( dec%16 ))
mul=128
[ "$bas" -eq "7" ] && mul=192
[ "$bas" -eq "8" ] && bas=7
[ "$bas" -gt "8" ] && mul=255
a="$(( (bas&1) *mul ))"
b="$(( ((bas&2)>>1)*mul ))"
c="$(( ((bas&4)>>2)*mul ))"
printf 'dec= %3s basic= #%02x%02x%02x\n' "$dec" "$a" "$b" "$c"
elif [ "$dec" -gt 15 ] && [ "$dec" -lt 232 ]; then
b=$(( (dec-16)%6 )); b=$(( b==0?0: b*40 + 55 ))
g=$(( (dec-16)/6%6)); g=$(( g==0?0: g*40 + 55 ))
r=$(( (dec-16)/36 )); r=$(( r==0?0: r*40 + 55 ))
printf 'dec= %3s color= #%02x%02x%02x\n' "$dec" "$r" "$g" "$b"
else
gray=$(( (dec-232)*10+8 ))
printf 'dec= %3s gray= #%02x%02x%02x\n' "$dec" "$gray" "$gray" "$gray"
fi
}
for i in $(seq 0 255); do
tohex ${i}
done
এটি হিসাবে ব্যবহার করুন ("প্রাথমিক" প্রথম 16 টি রঙ, "রঙ" প্রধান গ্রুপ, "ধূসর" শেষ ধূসর রঙ):
$ tohex 125 ### A number in range 0-255
dec= 125 color= #af005f
$ tohex 6
dec= 6 basic= #008080
$ tohex 235
dec= 235 gray= #262626