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

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

В конечном итоге это должно выглядеть примерно так:enter image description here

Вот мое решение только с помощью 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    donedoneecho ""

Однострочный:

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 screenshot

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

msgcat --color=test

Вы также можете использовать colortest Install colortest пакет.

  1. Установите его с помощью этой команды:

    sudo apt-get install colortest
  2. Он предоставляет несколько команд, которые вы можете использовать, в зависимости от того, сколько цветов вы хотите:

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

Пример вывода из colortest-16b:

enter image description here

Вот моя версия:

#!/usr/bin/env pythonimport systerse = "-t" in sys.argv[1:] or "--terse" in sys.argv[1:]write = sys.stdout.writefor 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-terminal. ;-)


Если это не работает для вас, значит, что-то еще не так. Пожалуйста, дайте нам знать, как только вы его протестируете.

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

вот важная часть:

colors=$@for (( n=0; n < $colors; n++ )) do    printf " [%d] $(tput setaf $n)%s$(tput sgr0)" $n "wMwMwMwMwMwMw"done

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

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

ansi-colors

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

#!/usr/bin/env bashecho -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"

... который, в моей текущей теме, показывает:

terminal puts out (it's colors)!

Недавно хотел найти тот сценарий, на который многие люди ссылаются сам. Это из tldp.org Bash Подскажет, КАК ЭТО сделать - 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 textecho -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;doneecho

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

Вот сценарий в действии:

enter image description here

Это мое решение. Он печатает все 225 цветов в bash:

for colour in {1..225}    do echo -en "\033[38;5;${colour}m38;5;${colour} \n"done | column -x

Ссылаться https://askubuntu.com/a/396555/41013Это приведет к печати следующих выходных данных в таких форматах, как ЖИРНЫЙ ШРИФТ, ПОДЧЕРКИВАНИЕ, выделение и цвета.

Small script to display possible terminal colors

Это модифицированная версия скрипта 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.htmlprint_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-terminal screenshot

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

Вы можете найти набор скриптов для этого в [ArchWiki](https://wiki .archlinux.org/index.php/x_resources#Color_scheme_scripts ).

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

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

FWIW, похоже, именно отсюда взялось изображение: Terminal Colour Scheme Screenshots (Page 2) / Artwork and Screenshots / Arch Linux Forums.
Сообщение включает в себя использованную цветовую схему, а в открывающем сообщении в теме приводится исходный код, используемый для создания изображения.

С одним из сценариев, которые не работают, попробуйте изменить первую строку на #! /bin /sh (если это еще не так) и посмотрите, имеет ли это значение (это должно быть что-то похожее)

Полезная функция в этом роде для пользователей emacs: M-x list-colors-display.