터미널에서 256 색 테스트 패턴 인쇄


63

터미널에서 256 색 테스트 패턴을 어떻게 인쇄합니까?

터미널이 256 색을 올바르게 지원하는지 확인하고 싶습니다.


/cubesirssi 입력 ( 출처 )
mirabilos

답변:


95

256 색 테스트 패턴

아래 이미지를 얻으려면 다음을 사용하십시오.

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

256 색 테스트 패턴

요점 bash/ zsh코드 입니다 shellcheck깨끗하고도 지원 "봐 엄마, 아니 서브 프로세스를!".


또는 bash빨리 :

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

총 과잉의 경우, 많은 할아버지는 terminal-colors하는 572 줄 스크립트 다중와 출력 형식 .

트루 컬러 (24 비트) 테스트 패턴을 인쇄 할 수도 있습니다 .


7
스크립트 GitHub 페이지의 그레이 스케일에 대한 여러분의 의견이 마음에
듭니다

1
: 여기에 또 다른 24 비트 색상 테스트의 gist.github.com/lifepillar/09a44b8cf0f9397465614e622979107f
masterxilo

실행 terminal-colors않는다curl -s https://raw.githubusercontent.com/eikenb/terminal-colors/master/terminal-colors | python
masterxilo

@masterxilo 란 무엇이며 terminal-colors제안한 옵션과 어떻게 비교됩니까?
Tom Hale

printf 패턴은 배경 대신 텍스트를 채색 할 때 어떤 모양입니까?
ianstarz

35

Justin Abrahms가 작성한 GitHub 에서 멋진 16 진수 코드를 인쇄 하는 멋진 Python 스크립트를 찾았습니다 .

현재 작업 디렉토리로 스크립트 다운로드

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, 


7

: 아직 나에 의해 작성된 또 다른 스크립트,의 VTE 저장소에 있습니다 https://git.gnome.org/browse/vte/plain/perf/256test.sh?h=vte-0-38 .

120 개 이상의 열 창을 필요로하지만 6x6x6 큐브의 색상을 훌륭하고 간결하게 배열합니다. 인덱스의 첫 번째 숫자는 압축을 위해 제거되어 쉽게 알아낼 수 있습니다. 세로 막대를 사용하면 앤티 앨리어싱이 발생하지 않고 전경색의 정확한 RGB를 검사 할 수 있습니다 (자릿수와 동일).

출력의 맨 위 (아래 스크린 샷에 표시되지 않음)는 굵게 대 밝은 모호성과 함께 발생하는 대담함을 보여줍니다. 밝은 대응 색인 반면 새로운 스타일 (256 색 가능) 이스케이프 시퀀스에서는 더 이상 적용되지 않으며 처음 8 가지 색에도 적용되지 않습니다. 최소한 xterm과 VTE (GNOME 터미널 등)의 동작 방식입니다.

이 스크린 샷은 출력의 약 절반을 보여줍니다.

그놈 터미널에서 256test.sh의 출력


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

6

아마도 불필요하지만 자동 쉘 너비 감지 기능이있는 배경을 사용하여 256 색을 인쇄하는 버전을 작성하여 색상을보다 쉽게 ​​볼 수 있습니다.

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

256 색 테스트 데모

#!/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
누군가 하나의 라이너에서이 스크립트를 실행하려면 다음을 실행하십시오.curl https://gist.githubusercontent.com/WoLpH/8b6f697ecc06318004728b8c0127d9b3/raw/250eb2e3f2acca1c51aa52adf611ec0380291e8a/colortest.py | python3
Tommaso Thea Cioni

나는 제안한다curl -s https://gist.githubusercontent.com/WoLpH/8b6f697ecc06318004728b8c0127d9b3/raw/colortest.py | python3
masterxilo

3

원 라이너

배경색

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
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.