Сценарій для відображення всіх кольорів терміналу


74

По всьому Інтернету я бачив багато людей зі сценаріями, які друкують купу матеріалів у всіх кольорах, визначених у ~/.Xdefaults. Однак коли я намагаюся їх використовувати, я завжди отримую error: Bad Substitution. Хтось має робочий сценарій, який робить те саме?

Це має виглядати приблизно так: введіть тут опис зображення


1
Можливо, це простіше, якщо ви публікуєте використовуваний сценарій, а також як і звідки ви його викликаєте.
Лурі

1
Ви можете знайти колекцію сценарію для цього в ArchWiki .
aloisdg

1
Я упакував кілька сценаріїв кольорового друку і розмістив їх тут , доповнивши прикладами, подяками та установкою пивоваріння.
pvinis

1
@pvinis дякую! Я витратив занадто багато часу, намагаючись знайти точний, показаний на екрані ОП.
вербозе

1
FWIW, здається, звідси з’явилося зображення: web.archive.org/web/20110809032233/https://bbs.archlinux.org/… . Допис включає кольорову схему, яка використовується, а вступний потік у потоці цитує вихідний код, який використовується для створення зображення.
mwfearnley

Відповіді:


74

Ось моє рішення лише з Bash:

for x in {0..8}; do 
    for i in {30..37}; do 
        for a in {40..47}; do 
            echo -ne "\e[$x;$i;$a""m\\\e[$x;$i;$a""m\e[0;37;40m "
        done
        echo
    done
done
echo ""

Одноколісний:

for x in {0..8}; do for i in {30..37}; do for a in {40..47}; do echo -ne "\e[$x;$i;$a""m\\\e[$x;$i;$a""m\e[0;37;40m "; done; echo; done; done; echo ""

Ось малюнок у Cygwin:

Скріншот Cygwin


1
FYI, {30..37}еквівалентний `seq 30 37`bash і швидший.
Баррі Келлі

1
@BarryKelly: хороша порада, дякую. просто перевірений і, як ви зазначили: це дійсно набагато швидше !!! :-) так ось новий:for x in 0 1 4 5 7 8; do for i in {30..37}; do for a in {40..47}; do echo -ne "\e[$x;$i;$a""m\\\e[$x;$i;$a""m\e[0;37;40m "; done; echo; done; done; echo "";
октай

Чи буде це працювати на Mac?
кіо

@ihue Дивіться , якщо це відповідає на ваше запитання: Прості хитрощі , щоб поліпшити зовнішній вигляд терміналу в Mac OS X . Для отримання детальної інформації перегляньте AskDifferent.com
wjandrea

Зразок коду не працював на MacOS, але відповідь python працювала.
sorin

40

Ви також можете використовувати colortest Встановіть кольоровий тестпакет.

  1. Встановіть його за допомогою цієї команди:

    sudo apt-get install colortest
  2. Він пропонує кілька команд, які ви можете використовувати, залежно від того, скільки кольорів ви хочете:

    colortest-16   colortest-16b  colortest-256  colortest-8

Приклад виведення з colortest-16b:

введіть тут опис зображення


33

Ось моя версія:

#!/usr/bin/env python
import sys
terse = "-t" in sys.argv[1:] or "--terse" in sys.argv[1:]
write = sys.stdout.write
for i in range(2 if terse else 10):
    for j in range(30, 38):
        for k in range(40, 48):
            if terse:
                write("\33[%d;%d;%dm%d;%d;%d\33[m " % (i, j, k, i, j, k))
            else:
                write("%d;%d;%d: \33[%d;%d;%dm Hello, World! \33[m \n" %
                      (i, j, k, i, j, k,))
        write("\n")

Це друкує все . Якщо ви хочете приємну таблицю (що показує лише стиль (0) і (1), звичайний і жирний), ви можете використовувати аргумент -tабо --terse:

Стиль 'блимання' (5) не працює з gnome-терміналом. ;-)


Якщо це не працює для вас, щось інше не так. Будь ласка, повідомте нас, коли ви протестували його.


Мій підказковий колір визначається так: DULL=0 BRIGHT=1 FG_WHITE=37 WHITE="\[$ESC[${DULL};${FG_WHITE}m\]"Чому так, що тьмяно-білий ( 0;37;40) більше сірий, ніж білий, а яскраво-білий ( 1;37;40) - жирний? Я хотів би встановити шрифт термінала яскраво-білим-чорним, а не напівжирним. Коли я запускаю ваш сценарій, 1;37;40виглядає абсолютно гаразд після першого рядка : 5img.com/img13/740/24screenshot.png Отже, мій рядок PS1 знаходиться в кольорі тексту 0;30;40; Мені подобається це в кольорі 0;30;41.
appas

Хтось інший вважає цю пурпурову особливо некрасивою? Це схоже на грязь.
Ефір

Ти бог серед людей. Найкраще кросплатформене рішення. Спасибі
Andre Terra

24

Простий однолінійний лайнер, який повинен працювати для більшості людей.

msgcat --color=test

Десятьпростий. Чи можна отримати лише колір тла за замовчуванням?
vrcmr

msgcat --help не пояснює, що ви зробили ... Це пасхальне яйце?
vrcmr

@vrcmr Я натрапив десь на цей однокласичний щоденник у своєму блозі, десь тому, і, на жаль, не зміг знайти жодної згадки про --color=testсторінку msgcat man. Я вважаю це неконфігуруваним пасхальним яйцем.
JacK TrocinskI

Для всіх, хто цікавиться, --color=testзгадується у розділі 9.11.2 Змінна середовища 'TERM' підinfo msgcat
Gerrit0

7

я зробив для цього невеликий сценарій :)

Ви передаєте йому номер, nі він випилює nкольорові лінії разом з індексом ансі кожного кольору (ви можете використовувати його в $(tput setaf <ansi-index>)).

ось скріншот (часткового) виводу:

ансі-кольори

Я також отримав цей , який я розщепив (і трохи змінив) від twerth :

#!/usr/bin/env bash

echo -e "\033[0mNC (No color)"
echo -e "\033[1;37mWHITE\t\033[0;30mBLACK"
echo -e "\033[0;34mBLUE\t\033[1;34mLIGHT_BLUE"
echo -e "\033[0;32mGREEN\t\033[1;32mLIGHT_GREEN"
echo -e "\033[0;36mCYAN\t\033[1;36mLIGHT_CYAN"
echo -e "\033[0;31mRED\t\033[1;31mLIGHT_RED"
echo -e "\033[0;35mPURPLE\t\033[1;35mLIGHT_PURPLE"
echo -e "\033[0;33mYELLOW\t\033[1;33mLIGHT_YELLOW"
echo -e "\033[1;30mGRAY\t\033[0;37mLIGHT_GRAY"

… Що, в моїй темі, показує:

термінал гасить (це кольори)!


Чи буде це працювати на Mac?
кіо

Це єдині 7 кольорів, які ми можемо мати ???
кіо

@ihue - звичайно ні, я зробив сценарій для цього .. перевірити . Ви можете передати його номер n(наприклад 256), і він буде виплювати nкольори, які підтримує ваш термінал.
Еліран Малька

Ваш сценарій класний, але #!/usr/bin/env shце не дуже гарна ідея. Вона не працює з оболонкою Ubuntu за замовчуванням, яка є тире. Мені довелося змінити це на баш.
Teresa e Junior

5

Нещодавно хотів знайти той сценарій, який багато людей переробляє сам. Це з tldp.org Bash Prompt HOWTO - http://tldp.org/HOWTO/Bash-Prompt-HOWTO/x329.html . Автор сценарію - Даніель Крісман.

Виводиться точно так само, як на малюнку з питання. Сам сценарій:

#!/bin/bash
#
#   This file echoes a bunch of color codes to the 
#   terminal to demonstrate what's available.  Each 
#   line is the color code of one forground color,
#   out of 17 (default + 16 escapes), followed by a 
#   test use of that color on all nine background 
#   colors (default + 8 escapes).
#

T='gYw'   # The test text

echo -e "\n                 40m     41m     42m     43m\
     44m     45m     46m     47m";

for FGs in '    m' '   1m' '  30m' '1;30m' '  31m' '1;31m' '  32m' \
           '1;32m' '  33m' '1;33m' '  34m' '1;34m' '  35m' '1;35m' \
           '  36m' '1;36m' '  37m' '1;37m';
  do FG=${FGs// /}
  echo -en " $FGs \033[$FG  $T  "
  for BG in 40m 41m 42m 43m 44m 45m 46m 47m;
    do echo -en "$EINS \033[$FG\033[$BG  $T  \033[0m";
  done
  echo;
done
echo


1

Це модифікована версія сценарію TLDP тут . Він показує стандартні кольори та яскраві кольори (коди 90-97 та 100-107).

#!/bin/bash
# Show available terminal colours.
# Heavily modified version of the TLDP script here:
# http://tldp.org/HOWTO/Bash-Prompt-HOWTO/x329.html

print_colors(){
  # Print column headers.
  printf "%-4s  " '' ${bgs[@]}
  echo
  # Print rows.
  for bold in ${bolds[@]}; do
    for fg in ${fgs[@]}; do
      # Print row header
      printf "%s;%s  " $bold $fg
      # Print cells.
      for bg in ${bgs[@]}; do
        # Print cell.
        printf "\e[%s;%s;%sm%s\e[0m  " $bold $fg $bg "text"
      done
      echo
    done
  done
}

# Print standard colors.
bolds=( 0 1 )
fgs=( 3{0..7} )
bgs=( 4{0..8} )
print_colors

# Print vivid colors.
bolds=( 0 ) # Bold vivid is the same as bold normal.
fgs=( 9{0..7} )
bgs=( 10{0..8} )
print_colors

Приклад виводу:

скріншот gnome-терміналу


0

Це питання насправді найкращий результат, коли я шукаю, як відобразити кольорові коди в терміналі. Тому я хотів справедливості і дати те, що саме шукала ОП. Я пам'ятаю, скріншот дещо знайомий. Спочатку я подумав, що це від Gogh, але це трохи інакше. Потім я зрозумів, що саме такий же сценарій використовується в кольорах iTerm2 .

Досить пощастило, вони додали коментар про те, де він спочатку прийшов з

Я розміщую сценарій для довідки, взятий з iTerm2 з оригінальними кредитами:

#!/bin/bash
#
#   This file echoes a bunch of color codes to the
#   terminal to demonstrate what's available.  Each
#   line is the color code of one forground color,
#   out of 17 (default + 16 escapes), followed by a
#   test use of that color on all nine background
#   colors (default + 8 escapes).
#
#   Copied from http://tldp.org/HOWTO/Bash-Prompt-HOWTO/x329.html

T='gYw'   # The test text

echo -e "\n                 40m     41m     42m     43m\
     44m     45m     46m     47m";

for FGs in '    m' '   1m' '  30m' '1;30m' '  31m' '1;31m' '  32m' \
           '1;32m' '  33m' '1;33m' '  34m' '1;34m' '  35m' '1;35m' \
           '  36m' '1;36m' '  37m' '1;37m';
  do FG=${FGs// /}
  echo -en " $FGs \033[$FG  $T  "
  for BG in 40m 41m 42m 43m 44m 45m 46m 47m;
    do echo -en "$EINS \033[$FG\033[$BG  $T  \033[0m";
  done
  echo;
done
echo

Ось сценарій в дії:

введіть тут опис зображення

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.