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


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.