Terminalde 256 renkli test deseni yazdırın


63

Terminalimde 256 renkli bir test desenini nasıl yazdırırım?

Terminalimin 256 rengi doğru bir şekilde desteklediğini kontrol etmek istiyorum.


tip /cubesirssi içinde ( kaynak )
mirabilos

Yanıtlar:


95

256 renkli test deseni

Aşağıdaki görüntüyü elde etmek için şunu kullanın:

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

256 renkli test deseni

Özü bash/ zshkod olan shellchecktemiz, aynı zamanda destekler "Bak Ma, hiçbir subprocesses!".


Alternatif olarak, bir bashquicky için:

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

Toplam overkill için çok büyük babasıdır terminal-colors, bir 572 satırı komut birden ile çıkış biçimleri .

Gerçek renk (24 bit) sınama deseni de yazdırabilirsiniz .


7
GitHub sayfasındaki gri tonlamalı yorumunuzu beğendim - "# 50 değil ama 24 Gri Tonu"
MadisonCooper


Koşmak için terminal-colors,curl -s https://raw.githubusercontent.com/eikenb/terminal-colors/master/terminal-colors | python
masterxilo

@masterxilo nedir terminal-colorsve önerdiğim seçeneklerle nasıl karşılaştırılır?
Tom Hale

printf deseni, metni arka plan yerine renklendirmek için nasıl görünür?
ianstarz

35

Bunun için, GitHub'da Justin Abrahms tarafından yazılan ve renklerin onaltılık kodlarını da basan güzel bir Python betiği buldum .

Komut dosyasını mevcut çalışma dizinine indirin

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

yürütmesine izin vermek

chmod +x colortest.py

Çalıştır:

./colortest.py

İşte link-rot durumunda tam olarak script:

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


7

Benim tarafımdan yazılmış bir başka senaryo da VTE deposunda bulunuyor: https://git.gnome.org/browse/vte/plain/perf/256test.sh?h=vte-0-38 .

120-ish veya daha fazla sütun içeren bir pencere gerektirir, ancak 6x6x6 küpünün renklerini hoş ve kompakt olarak düzenler. Endekslerin ilk rakamları kompaktlık için elimden edilmiştir, bunları kolayca çözebilirsiniz. Dikey çubuklar ön plan renginin tam RGB'sini antialiasing tekme atmadan (basamaklarda olduğu gibi) inceleme imkanı sunar.

Çıktının tepesi (aşağıdaki ekran görüntüsünde gösterilmemiştir), kalın ile parlak belirsizlikle ilgili çılgınlığı, yani eski 8 rengin biri için ön plan için kaçış dizisine geçişi gösterdiğini gösterir. Parlak karşıt renk, yeni stilde (256 renkli) kaçış dizileriyle, ilk 8 renk için bile geçerli değil. En azından xterm ve VTE (GNOME Terminali vs.) böyle davranıyor.

Bu ekran görüntüsü çıktının yaklaşık yarısını gösterir:

GNOME Terminalinde 256test.sh çıktısı


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

6

Belki gereksizdir ama otomatik kabuk genişlik algılamalı arka planı kullanarak 256 rengi basan bir sürüm yazdım, böylece renkler daha kolay görülebilir.

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

256 renk testi demosu

#!/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='')

2
Herhangi biri bu betiği tek bir linerde çalıştırmak isterse, çalıştırıncurl https://gist.githubusercontent.com/WoLpH/8b6f697ecc06318004728b8c0127d9b3/raw/250eb2e3f2acca1c51aa52adf611ec0380291e8a/colortest.py | python3
Tommaso Thea Cioni

Ben öneririmcurl -s https://gist.githubusercontent.com/WoLpH/8b6f697ecc06318004728b8c0127d9b3/raw/colortest.py | python3
masterxilo

3

Bir astar

arka plan rengi

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

ön plan rengi

for i in {0..255}; do printf '\e[38;5;%dm%3d ' $i $i; (((i+3) % 18)) || printf '\e[0m\n'; done
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.