Cetak pola uji 256 warna di terminal

63

Bagaimana cara mencetak pola uji 256 warna di terminal saya?

Saya ingin memeriksa apakah terminal saya mendukung 256 warna dengan benar.

Tom Hale
sumber
ketik /cubesirssi ( sumber )
mirabilos

Jawaban:

95

Pola uji 256 warna

Untuk mendapatkan gambar di bawah ini, gunakan:

curl -s https://gist.githubusercontent.com/HaleTom/89ffe32783f89f403bba96bd7bcd1263/raw/ | bash

Pola uji 256 warna

The Inti bash/ zshkode adalah shellcheckbersih, dan juga mendukung "Lihat Ma, tidak ada subproses!".


Atau, untuk bashquicky:

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

Untuk total berlebihan, kakek dari lot adalah terminal-colors, skrip 572-line dengan berbagai format output .

Anda juga dapat mencetak pola pengujian true color (24-bit) .

Tom Hale
sumber
7
Saya suka komentar Anda tentang skala abu-abu di skrip halaman GitHub - "#Tidak 50, tapi 24 Shades of Grey"
MadisonCooper
1
Berikut ini adalah tes warna 24-bit lainnya: gist.github.com/lifepillar/09a44b8cf0f9397465614e622979107f
masterxilo
Untuk menjalankan terminal-colors, lakukancurl -s https://raw.githubusercontent.com/eikenb/terminal-colors/master/terminal-colors | python
masterxilo
@ masterxilo apa itu terminal-colorsdan bagaimana cara membandingkannya dengan opsi yang saya sarankan?
Tom Hale
seperti apa pola printf untuk mewarnai teks dan bukannya latar belakang?
ianstarz
35

Saya menemukan skrip Python yang bagus untuk itu di GitHub yang ditulis oleh Justin Abrahms yang juga mencetak kode hex warna.

Unduh skrip ke direktori kerja saat ini

wget https://gist.githubusercontent.com/justinabrahms/1047767/raw/a79218b6ca8c1c04856968d2d202510a4f7ec215/colortest.py

berikan izin eksekusi

chmod +x colortest.py

Menjalankannya:

./colortest.py

Berikut skrip secara lengkap jika tautan-membusuk:

#!/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, 
Zanna
sumber
11

Meskipun tidak cukup "pola pengujian", saya memiliki xterm-color-chooser :

tangkapan layar

grawity
sumber
curl -s https://raw.githubusercontent.com/grawity/code/master/term/xterm-color-chooser | python3
masterxilo
7

Namun skrip lain, yang ditulis oleh saya, terletak di repositori VTE: https://git.gnome.org/browse/vte/plain/perf/256test.sh?h=vte-0-38 .

Ini membutuhkan jendela 120-ish atau lebih kolom, tetapi mengatur warna kubus 6x6x6 dengan baik dan kompak. Digit pertama dari indeks dilucuti untuk kekompakan, Anda dapat dengan mudah menemukannya. Bilah vertikal memberi Anda kemampuan untuk memeriksa RGB yang tepat dari warna latar depan tanpa antialiasing menendang (seperti halnya pada digit).

Bagian atas output (tidak diperlihatkan dalam tangkapan layar di bawah) menunjukkan kegilaan yang terjadi dengan ambiguitas yang berani vs cerah, yaitu bahwa urutan pelarian yang berani dikombinasikan dengan salah satu dari urutan pelarian 8 warna sebelumnya untuk latar depan juga beralih ke warna padanan yang cerah, sedangkan dengan gaya baru (kemampuan 256-warna) lolos urutan ini tidak lagi terjadi, bahkan untuk 8 warna pertama. Setidaknya begitulah xterm dan VTE (Terminal GNOME dll.) Berperilaku.

Tangkapan layar ini menunjukkan sekitar setengah dari output:

Output dari 256test.sh di Terminal GNOME

egmont
sumber
2
curl -s -L https://git.gnome.org/browse/vte/plain/perf/256test.sh?h=vte-0-38 | bash
masterxilo
6

Mungkin berlebihan tetapi saya telah menulis versi yang mencetak 256 warna menggunakan latar belakang dengan deteksi lebar shell otomatis sehingga warna lebih mudah terlihat.

https://gist.github.com/WoLpH/8b6f697ecc06318004728b8c0127d9b3

Demo uji 256 warna

#!/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='')
Wolph
sumber
2
Jika ada yang ingin menjalankan skrip ini dalam satu liner, jalankancurl https://gist.githubusercontent.com/WoLpH/8b6f697ecc06318004728b8c0127d9b3/raw/250eb2e3f2acca1c51aa52adf611ec0380291e8a/colortest.py | python3
Tommaso Thea Cioni
Saya sarankancurl -s https://gist.githubusercontent.com/WoLpH/8b6f697ecc06318004728b8c0127d9b3/raw/colortest.py | python3
masterxilo
3

Satu garis

warna latar belakang

for i in {0..255}; do printf '\e[48;5;%dm%3d ' $i $i; (((i+3) % 18)) || printf '\e[0m\n'; done

warna foreground

for i in {0..255}; do printf '\e[38;5;%dm%3d ' $i $i; (((i+3) % 18)) || printf '\e[0m\n'; done
qeatzy
sumber