显示所有终端颜色的脚本


74

在整个互联网上,我看到许多人的脚本以~/.Xdefaults。定义的所有颜色打印出一堆东西。但是,当我尝试使用它们时,我总是会得到 error: Bad Substitution。有人有做同样事情的工作脚本吗?

它最终应该看起来像这样: 在此处输入图片说明


1
如果您发布正在使用的脚本以及如何调用脚本以及从何处调用脚本,则可能会更容易。
luri 2011年

1
您可以在ArchWiki中找到脚本的集合。
aloisdg '16

1
我打包了一些彩色打印脚本,并将其放在此处,并附带示例,感谢和brew安装。
pvinis '16

1
@pvinis谢谢!我花了太多时间试图找到OP屏幕上显示的确切位置。
动词

1
FWIW,这似乎是图像的来源:web.archive.org/web/20110809032233/https : //bbs.archlinux.org/…。该帖子包括使用的配色方案,线程中的开头帖子引用了用于生成图片的源代码。
mwfearnley

Answers:


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 "";
oktay 2015年

在Mac上可以使用吗?
京都

@ihue看看是否能回答您的问题:在Mac OS X中改善终端外观的简单技巧。有关更多详细信息,请查看AskDifferent.com
wjandrea

示例代码在MacOS上不起作用,但是python答案起作用。
索林

40

您也可以使用该colortest 安装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)(普通和粗体)),则可以使用-tor --terse参数:

'blink'样式(5)在gnome-terminal上不起作用。;-)


如果这对您不起作用,则有其他问题。经过测试后,请告知我们。


我的提示色是这样定义的: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;400;30;41
2011年

还有其他人觉得这种洋红色特别丑吗?看起来像泥
以太

你是男人中的神。最佳的跨平台解决方案。谢谢
Andre Terra

24

一个简单的单线应适用于大多数人。

msgcat --color=test

Deadsimple。是否可以仅获取默认背景色?
vrcmr

msgcat --help不能解释您做了什么...这是复活节彩蛋吗?
vrcmr

@vrcmr某个时候,我在某个地方的某个博客中偶然发现了这种单行代码,不幸的是--color=test,在msgcat手册页中也找不到任何提及。我认为这是一个不可配置的复活节彩蛋。
雅克·特罗钦斯克

对于其他感兴趣的人,请--color=test参见9.11.2节info msgcat
Gerrit0

7

我为此做了一个小脚本 :)

您将数字传递给它n,它会n随同每种颜色的ansi索引一起弹出彩色线条(您可以在中使用它$(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的默认shell,即破折号。我不得不将其更改为bash。
Teresa e Junior

5

最近想找到许多人都在引用我自己的脚本。它来自tldp.org Bash Prompt HOWTO- http: //tldp.org/HOWTO/Bash-Prompt-HOWTO/x329.html 。该脚本由丹尼尔·克里斯曼(Daniel Crisman)创作。

它的输出与问题图片上的输出完全相同。脚本本身:

#!/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-terminal屏幕截图


0

当我搜索如何在终端中显示颜色代码时,这个问题实际上是最高的结果。因此,我想伸张正义,并给出手术医生的确切要求。我确实记得屏幕截图有些熟悉。起初,我以为是Gogh的,但是有点不同。然后,我意识到这与iTerm2 colors中使用的脚本完全相同。

足够幸运,他们增加了在它最初来评论

我将发布脚本以供参考,该脚本取自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

这是运行中的脚本:

在此处输入图片说明

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.