ฉันจะพิมพ์รูปแบบการทดสอบ 256 สีในเครื่องของฉันได้อย่างไร
ฉันต้องการตรวจสอบว่าเทอร์มินัลของฉันรองรับ 256 สีอย่างถูกต้อง
ฉันจะพิมพ์รูปแบบการทดสอบ 256 สีในเครื่องของฉันได้อย่างไร
ฉันต้องการตรวจสอบว่าเทอร์มินัลของฉันรองรับ 256 สีอย่างถูกต้อง
คำตอบ:
รับภาพด้านล่างใช้:
curl -s https://gist.githubusercontent.com/HaleTom/89ffe32783f89f403bba96bd7bcd1263/raw/ | bash
สรุปสาระสำคัญbash
/ zsh
รหัสเป็นshellcheck
ที่สะอาดและยังสนับสนุน "ดูแม่กระบวนการย่อยไม่!"
อีกทางเลือกหนึ่งสำหรับbash
quicky:
for i in {0..255} ; do
printf "\x1b[48;5;%sm%3d\e[0m " "$i" "$i"
if (( i == 15 )) || (( i > 15 )) && (( (i-15) % 6 == 0 )); then
printf "\n";
fi
done
สำหรับ overkill รวมปู่ของจำนวนมากคือterminal-colors
เป็นสคริปต์ 572 เส้นที่มีหลายรูปแบบเอาท์พุท
นอกจากนี้คุณยังสามารถพิมพ์สีที่แท้จริง (24 บิต) รูปแบบการทดสอบ
terminal-colors
ให้ทำcurl -s https://raw.githubusercontent.com/eikenb/terminal-colors/master/terminal-colors | python
terminal-colors
และเปรียบเทียบกับตัวเลือกที่ฉันแนะนำอย่างไร?
ฉันพบสคริปต์ Python ที่ดีสำหรับสิ่งนั้นบน GitHub ที่เขียนโดย Justin Abrahms ซึ่งพิมพ์รหัสฐานสิบหกของสี
ดาวน์โหลดสคริปต์ไปยังไดเรกทอรีการทำงานปัจจุบัน
wget https://gist.githubusercontent.com/justinabrahms/1047767/raw/a79218b6ca8c1c04856968d2d202510a4f7ec215/colortest.py
ให้มันดำเนินการอนุญาต
chmod +x colortest.py
เรียกใช้:
./colortest.py
นี่เป็นสคริปต์แบบเต็มในกรณี link-rot:
#!/usr/bin/env python
# Ported to Python from http://www.vim.org/scripts/script.php?script_id=1349
print "Color indexes should be drawn in bold text of the same color."
print
colored = [0] + [0x5f + 40 * n for n in range(0, 5)]
colored_palette = [
"%02x/%02x/%02x" % (r, g, b)
for r in colored
for g in colored
for b in colored
]
grayscale = [0x08 + 10 * n for n in range(0, 24)]
grayscale_palette = [
"%02x/%02x/%02x" % (a, a, a)
for a in grayscale
]
normal = "\033[38;5;%sm"
bold = "\033[1;38;5;%sm"
reset = "\033[0m"
for (i, color) in enumerate(colored_palette + grayscale_palette, 16):
index = (bold + "%4s" + reset) % (i, str(i) + ':')
hex = (normal + "%s" + reset) % (i, color)
newline = '\n' if i % 6 == 3 else ''
print index, hex, newline,
ในขณะที่ไม่ค่อนข้างเป็น "แบบทดสอบ" ผมมีxterm-สีเลือก :
curl -s https://raw.githubusercontent.com/grawity/code/master/term/xterm-color-chooser | python3
แต่สคริปต์อื่นที่เขียนโดยผมตั้งอยู่ในพื้นที่เก็บข้อมูล VTE นี้: https://git.gnome.org/browse/vte/plain/perf/256test.sh?h=vte-0-38
มันต้องการหน้าต่างที่มี 120 คอลัมน์หรือมากกว่านั้น แต่จัดเรียงสีของลูกบาศก์ 6x6x6 อย่างสวยงามและกะทัดรัด ตัวเลขแรกของดัชนีถูกถอดออกเพื่อความกะทัดรัดคุณสามารถคำนวณได้อย่างง่ายดาย แถบแนวตั้งช่วยให้คุณสามารถตรวจสอบ RGB ที่แน่นอนของสีพื้นหน้าได้โดยไม่ลดรอยหยักที่เตะเข้า (ตามที่เป็นตัวเลข)
ด้านบนของเอาท์พุต (ไม่แสดงในภาพด้านล่าง) แสดงความบ้าคลั่งที่ไปรอบ ๆ ด้วยตัวหนาเทียบกับความกำกวมที่ชัดเจนนั่นคือลำดับการหลบหนีความกล้าหาญรวมกับหนึ่งในลำดับการหลบหนี 8 สีของมรดกสำหรับพื้นหน้ายังสลับไป สีคู่ที่สว่างไสวในขณะที่ลำดับการหลบหนีสไตล์ใหม่ (ความสามารถในการ 256 สี) นี่ไม่ใช่กรณีอีกต่อไปแม้แต่ใน 8 สีแรก อย่างน้อยนั่นเป็นวิธีที่ xterm และ VTE (เทอร์มินัล GNOME ฯลฯ ) ทำงาน
ภาพหน้าจอนี้แสดงประมาณครึ่งหนึ่งของผลลัพธ์:
curl -s -L https://git.gnome.org/browse/vte/plain/perf/256test.sh?h=vte-0-38 | bash
อาจจะฟุ่มเฟือย แต่ฉันได้เขียนเวอร์ชันที่พิมพ์ 256 สีโดยใช้พื้นหลังพร้อมการตรวจจับความกว้างเชลล์อัตโนมัติเพื่อให้มองเห็นสีได้ง่ายขึ้น
https://gist.github.com/WoLpH/8b6f697ecc06318004728b8c0127d9b3
#!/usr/bin/env python
from __future__ import print_function
import os
import shutil
import subprocess
def get_width(default=80):
'''Attempt to detect console width and default to 80'''
try:
columns, rows = shutil.get_terminal_size()
except AttributeError:
try:
_, columns = subprocess.check_output(['stty', 'size']).split()
except OSError:
columns = os.environ.get('COLUMNS', default)
columns = int(columns) - 77
# Since we have 6 columns with 1 space on each side, we can increment the
# size for every 12 extra columns
return max(0, columns / 12)
# Loosely based on https://gist.github.com/justinabrahms/1047767
colored = [0] + list(range(95, 256, 40))
colored_palette = [
(r, g, b)
for r in colored
for g in colored
for b in colored
]
grayscale_palette = [(g, g, g) for g in range(8, 240, 10)]
esc = '\033['
# Reset all colors sequence
reset = esc + '0m'
# Regular color
normal = esc + '38;5;{i}m'
# Bold color
bold = esc + '1;' + normal
# Background color
background = esc + '48;5;{i}m'
pattern = (
'{normal}{background}{padding:^{width}}{i:^3d} ' # pad the background
'{r:02X}/{g:02X}/{b:02X}' # show the hex rgb code
'{padding:^{width}}' # pad the background on the other side
'{reset}' # reset again
)
base_context = dict(reset=reset, padding='', width=get_width())
for i, (r, g, b) in enumerate(colored_palette + grayscale_palette, 16):
context = dict(i=i, r=r, g=g, b=b, color=r + g + b, **base_context)
context.update(bold=bold.format(**context))
context.update(background=background.format(**context))
# Change text color from black to white when it might become unreadable
if max(r, g, b) > 0xCC:
context.update(normal=normal.format(i=0))
else:
context.update(normal=normal.format(i=255))
print(pattern.format(**context), end='')
# Print newlines when needed
if i % 6 == 3:
print()
else:
print(' ', end='')
curl https://gist.githubusercontent.com/WoLpH/8b6f697ecc06318004728b8c0127d9b3/raw/250eb2e3f2acca1c51aa52adf611ec0380291e8a/colortest.py | python3
curl -s https://gist.githubusercontent.com/WoLpH/8b6f697ecc06318004728b8c0127d9b3/raw/colortest.py | python3
หนึ่งซับ
สีพื้นหลัง
for i in {0..255}; do printf '\e[48;5;%dm%3d ' $i $i; (((i+3) % 18)) || printf '\e[0m\n'; done
สีพื้นหน้า
for i in {0..255}; do printf '\e[38;5;%dm%3d ' $i $i; (((i+3) % 18)) || printf '\e[0m\n'; done
/cubes
ใน irssi ( แหล่งที่มา )