Скрипт для отображения всех цветов терминала


74

В интернете я видел много людей со сценариями, которые распечатывали кучу вещей во всех цветах, определенных в ~/.Xdefaults. Однако, когда я пытаюсь использовать это, я всегда получаю error: Bad Substitution. У кого-нибудь есть рабочий скрипт, который делает то же самое?

Это должно выглядеть примерно так: введите описание изображения здесь


1
Возможно, будет проще, если вы разместите скрипт, который вы используете, и как и откуда вы его вызываете.
— Луи

1
Вы можете найти коллекцию сценариев для этого в ArchWiki .
— Aloisdg говорит восстановить Monica

1
Я упаковал несколько сценариев цветной печати и разместил их здесь , вместе с примерами, спасибо и установкой brew.
— Пвинис

1
@pvinis спасибо! Я потратил слишком много времени, пытаясь найти точный, показанный на экране ОП.
— verboze

1
Похоже, именно отсюда и возникло изображение: 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
К вашему сведению, {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 работал.
— сорин

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")

Это печатает все . Если вы хотите красивую таблицу (которая показывает только style (0) и (1), normal и bold), вы можете использовать аргумент -tor --terse:

Стиль 'blink' (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

Кто-нибудь еще находит этот пурпурный особенно уродливым? Это похоже на грязь.
— Ether

Ты бог среди людей. Лучшее кроссплатформенное решение. Спасибо
— Андре Терра

25

Простой однострочник, который должен работать для большинства людей.

msgcat --color=test

Deadsimple. Можно ли получить только цвет фона по умолчанию?
— vrcmr

msgcat --help не объясняет, что вы сделали ... Это пасхальное яйцо?
— vrcmr

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

Для всех, кто интересуется, --color=testупоминается в разделе 9.11.2 Переменная окружения 'TERM' вinfo msgcat
— Gerrit0

7

я сделал небольшой сценарий для этого :)

Вы передаете ему число, nи оно выплевывает nцветные линии вместе с индексом ANSI каждого цвета (вы можете использовать его в $(tput setaf <ansi-index>)).

Вот скриншот (частичного) вывода:

ANSI-цвета

я также получил этот , который я раздвоил (и немного изменил) из двенадцатого :

#!/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, которая является чертой. Я должен был изменить это на bash.
— Teresa e Junior

5

Недавно хотел найти тот сценарий, который многие люди ссылаются на себя. Это из руководства по Bash Prompt tldp.org - 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

Пример вывода:

скриншот терминала гнома


0

Этот вопрос на самом деле лучший результат, когда я ищу, как отображать цветовые коды в терминале. Поэтому я хотел отдать должное и дать то, что именно искал ОП. Я помню скриншот несколько знакомый. Сначала я думал, что это от Гога, но это немного по-другому. Затем я понял, что это тот же самый скрипт, который используется в цветах 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.