Drucken Sie im Terminal ein Testmuster mit 256 Farben


63

Wie drucke ich ein Testmuster mit 256 Farben in meinem Terminal?

Ich möchte überprüfen, ob mein Terminal 256 Farben korrekt unterstützt.


Typ /cubesin irssi ( Quelle )
mirabilos

Antworten:


95

Testmuster mit 256 Farben

Um das folgende Bild zu erhalten, verwenden Sie:

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

Testmuster mit 256 Farben

Der Inhalt bash/ zshCode ist shellchecksauber und unterstützt auch "Look Ma, keine Unterprozesse!".


Alternativ für einen bashschnellen:

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

Für den totalen Overkill ist der Urvater des Loses terminal-colorsein Skript mit 572 Zeilen und mehreren Ausgabeformaten .

Sie können auch ein Echtfarben-Testmuster (24-Bit) drucken .


7
Ich mag Ihren Kommentar zu den Graustufen auf der Skriptseite GitHub - "#Nicht 50, aber 24 Shades of Grey"
MadisonCooper


Um zu rennen terminal-colors, machecurl -s https://raw.githubusercontent.com/eikenb/terminal-colors/master/terminal-colors | python
masterxilo

@masterxilo was ist terminal-colorsund wie ist es im Vergleich zu den von mir vorgeschlagenen Optionen?
Tom Hale

Wie würde das Druckmuster aussehen, um den Text anstelle des Hintergrunds einzufärben?
Ianstarz

35

Ich habe auf GitHub ein schönes Python-Skript gefunden, das von Justin Abrahms geschrieben wurde und das auch die Hex-Codes der Farben ausgibt.

Laden Sie das Skript in das aktuelle Arbeitsverzeichnis herunter

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

gib ihm Ausführungserlaubnis

chmod +x colortest.py

Starte es:

./colortest.py

Hier ist das vollständige Skript für den Fall von 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

Ein weiteres von mir geschriebenes Skript befindet sich im VTE-Repository: https://git.gnome.org/browse/vte/plain/perf/256test.sh?h=vte-0-38 .

Es erfordert ein Fenster mit mindestens 120 Spalten, ordnet die Farben des 6x6x6-Würfels jedoch gut und kompakt an. Die ersten Ziffern der Indizes sind aus Gründen der Kompaktheit entfernt, Sie können sie leicht herausfinden. Mit den vertikalen Balken können Sie das exakte RGB der Vordergrundfarbe untersuchen, ohne dass ein Antialiasing (wie bei den Ziffern) auftritt.

Das obere Ende der Ausgabe (in der Abbildung unten nicht dargestellt) zeigt die Verrücktheit, die mit der kühnen vs. hellen Mehrdeutigkeit einhergeht, nämlich, dass die kühne Escape-Sequenz in Kombination mit einer der Escape-Sequenzen der Legacy-8-Farben für den Vordergrund ebenfalls auf umgeschaltet wird die helle Gegenfarbe, während dies bei den neuen Style-Escape-Sequenzen (256-Farben-fähig) nicht mehr der Fall ist, auch nicht bei den ersten 8 Farben. Zumindest verhalten sich xterm und VTE (GNOME Terminal etc.) so.

Dieser Screenshot zeigt ungefähr die Hälfte der Ausgabe:

Ausgabe von 256test.sh im GNOME-Terminal


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

6

Vielleicht überflüssig, aber ich habe eine Version geschrieben, die die 256 Farben unter Verwendung des Hintergrunds mit automatischer Schalenbreitenerkennung druckt, damit die Farben besser sichtbar sind.

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

256 Farbtest Demo

#!/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
Wenn jemand dieses Skript einzeilig ausführen möchte, führen Sie Folgendes aus:curl https://gist.githubusercontent.com/WoLpH/8b6f697ecc06318004728b8c0127d9b3/raw/250eb2e3f2acca1c51aa52adf611ec0380291e8a/colortest.py | python3
Tommaso Thea Cioni

Ich schlage vorcurl -s https://gist.githubusercontent.com/WoLpH/8b6f697ecc06318004728b8c0127d9b3/raw/colortest.py | python3
masterxilo

3

Ein Einzeiler

Hintergrundfarbe

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

Vordergrundfarbe

for i in {0..255}; do printf '\e[38;5;%dm%3d ' $i $i; (((i+3) % 18)) || printf '\e[0m\n'; done
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.