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


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.