Tập lệnh hiển thị tất cả các màu của thiết bị đầu cuối


74

Qua internet tôi đã thấy nhiều người có kịch bản in ra một loạt các thứ với tất cả các màu được định nghĩa trong đó ~/.Xdefaults. Tuy nhiên khi tôi cố gắng sử dụng những thứ này, tôi luôn nhận được error: Bad Substitution. Có ai có một kịch bản làm việc mà làm điều tương tự?

Nó sẽ kết thúc giống như thế này: nhập mô tả hình ảnh ở đây


1
Có lẽ sẽ dễ dàng hơn nếu bạn đăng tập lệnh mà bạn đang sử dụng, và cách thức và nơi bạn đang đưa ra tập lệnh.
luri

1
Bạn có thể tìm thấy một tập hợp các tập lệnh cho điều này trong ArchWiki .
aloisdg

1
Tôi đã đóng gói một vài tập lệnh in màu, và đặt chúng ở đây , hoàn thành với các ví dụ, cảm ơn và cài đặt bia.
pvinis

1
@pvinis cảm ơn! Tôi đã dành quá nhiều thời gian để cố gắng tìm ra chính xác được hiển thị trong màn hình của OP.
verboze

1
FWIW, đây dường như là nơi hình ảnh đến từ: web.archive.org/web/20110809032233/https://bbs.archlinux.org/ Lỗi . Bài đăng bao gồm bảng màu được sử dụng và bài mở đầu trong luồng trích dẫn mã nguồn được sử dụng để tạo ảnh.
mwfearnley

Câu trả lời:


74

Đây chỉ là giải pháp của tôi với 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 ""

Lót:

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

Đây là một hình ảnh trong Cygwin:

Ảnh chụp màn hình Cygwin


1
FYI, {30..37}tương đương với `seq 30 37`bash và nhanh hơn.
Barry Kelly

1
@BarryKelly: mẹo tốt, cảm ơn. chỉ cần thử nghiệm và như bạn đã lưu ý: nó thực sự nhanh hơn nhiều !!! :-) vì vậy đây là mới: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

Điều này sẽ làm việc trên máy Mac?
kyo

@ihue Xem nếu điều này trả lời câu hỏi của bạn: thủ thuật đơn giản để cải thiện diện mạo ga trong Mac OS X . Để biết thêm chi tiết, hãy kiểm tra AskDifferent.com
wjandrea

Mã mẫu không hoạt động trên MacOS nhưng câu trả lời python đã hoạt động.
sorin

40

Bạn cũng có thể sử dụng colortest Cài đặt colortestgói.

  1. Cài đặt nó bằng lệnh này:

    sudo apt-get install colortest
  2. Nó cung cấp một số lệnh mà bạn có thể sử dụng, tùy thuộc vào số lượng màu bạn muốn:

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

Ví dụ đầu ra từ colortest-16b:

nhập mô tả hình ảnh ở đây


33

Đây là phiên bản của tôi:

#!/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")

Điều này in tất cả mọi thứ . Nếu bạn muốn có một bảng đẹp (chỉ hiển thị kiểu (0) và (1), bình thường và đậm), bạn có thể sử dụng -thoặc --terseđối số:

Kiểu 'nháy' (5) không hoạt động với thiết bị đầu cuối gnome. ;-)


Nếu điều này không làm việc cho bạn, có một cái gì đó sai. Vui lòng cho chúng tôi biết khi bạn đã thử nghiệm nó.


Màu nhắc của tôi được định nghĩa như thế này: DULL=0 BRIGHT=1 FG_WHITE=37 WHITE="\[$ESC[${DULL};${FG_WHITE}m\]"Tại sao lại như vậy, rằng màu trắng xỉn ( 0;37;40) có màu xám hơn màu trắng và màu trắng sáng ( 1;37;40) được in đậm? Tôi muốn đặt phông chữ đầu cuối thành màu trắng sáng trên nền đen, không được in đậm. Khi tôi chạy tập lệnh của bạn, 1;37;40trông hoàn toàn ổn sau dòng đầu tiên : 5img.com/img13/740/24sc Muff.png Vì vậy, dòng PS1 của tôi có màu của văn bản 0;30;40; Tôi thích nó trong màu sắc của 0;30;41.
appas

Có ai khác thấy magenta này đặc biệt xấu xí? Nó trông giống như bùn.
Ether

Bạn là một vị thần giữa những người đàn ông. Giải pháp đa nền tảng tốt nhất. Cảm ơn
Andre Terra

25

Một lót đơn giản nên làm việc cho hầu hết mọi người.

msgcat --color=test

Chết một cách đơn giản. Có thể chỉ nhận được màu nền mặc định?
vrcmr

Trình thông báo - trợ giúp không giải thích bạn đã làm gì ... Đó có phải là một quả trứng Phục sinh không?
vrcmr

@vrcmr Tôi tình cờ thấy một trang này trong một blog ở đâu đó, cách đây không may và không thể tìm thấy bất kỳ đề cập nào --color=testtrong trang người đàn ông trình bày. Tôi coi nó là một quả trứng Phục sinh không thể cấu hình.
JacK TrocinskI

Đối với bất kỳ ai khác quan tâm, --color=testđược đề cập trong phần 9.11.2 Biến môi trường 'HẠN' dướiinfo msgcat
Gerrit0

7

tôi đã tạo ra một kịch bản nhỏ cho điều đó :)

bạn truyền cho nó một số nvà nó tạo ra các vạch nmàu cùng với chỉ số ansi của mỗi màu (bạn có thể sử dụng nó trong $(tput setaf <ansi-index>)).

đây là một ảnh chụp màn hình của đầu ra (một phần):

màu sắc

tôi cũng có cái này , cái mà tôi đã rẽ nhánh (và sửa đổi một chút) từ thứ hai :

#!/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"

Đó là, trong chủ đề hiện tại của tôi, cho thấy:

thiết bị đầu cuối đưa ra (đó là màu sắc)!


Điều này sẽ làm việc trên Mac?
kyo

Đây có phải là 7 màu duy nhất chúng ta có thể có ???
kyo

@ihue - tất nhiên là không rồi, tôi đã tạo một kịch bản cho điều đó .. hãy xem thử . bạn có thể truyền cho nó một số n(ví dụ 256) và nó sẽ nhổ ra các nmàu mà thiết bị đầu cuối của bạn hỗ trợ.
Eliran Malka

Kịch bản của bạn rất tuyệt, nhưng #!/usr/bin/env shkhông phải là một ý kiến ​​hay. Nó không hoạt động với shell mặc định của Ubuntu, đó là dấu gạch ngang. Tôi đã phải thay đổi nó để bash.
Teresa e Junior

5

Gần đây muốn tìm kịch bản mà nhiều người đang giới thiệu bản thân mình. Đó là từ tldp.org Bash Prompt HOWTO - http://tldp.org/HOWTO/Bash-Prompt-HOWTO/x329.html . Kịch bản được tác giả bởi Daniel Crisman.

Nó xuất ra chính xác giống như trên pic từ câu hỏi. Bản thân kịch bản:

#!/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

Đây là phiên bản sửa đổi của tập lệnh TLDP ở đây . Nó hiển thị màu tiêu chuẩn màu sắc sống động (mã 90-97 và 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

Ví dụ đầu ra:

ảnh chụp màn hình gnome-terminal


0

Câu hỏi này thực sự là một kết quả hàng đầu khi tôi tìm kiếm cách hiển thị mã màu trong một thiết bị đầu cuối. Vì vậy, tôi muốn đưa ra công lý và đưa ra chính xác những gì OP đang tìm kiếm. Tôi nhớ rằng ảnh chụp màn hình có phần quen thuộc. Lúc đầu, tôi nghĩ nó đến từ Gogh tuy nhiên nó hơi khác một chút. Sau đó tôi nhận ra chính xác kịch bản tương tự đang được sử dụng trong các màu iTerm2 .

Đủ may mắn, họ thêm một nhận xét về địa điểm ban đầu đến từ

Tôi đang đăng kịch bản để tham khảo, được lấy từ iTerm2 với các khoản tín dụng gốc:

#!/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

Đây là kịch bản hoạt động:

nhập mô tả hình ảnh ở đây

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.