Script untuk menampilkan semua warna terminal

74

Melalui internet saya telah melihat banyak orang dengan skrip yang mencetak banyak hal dalam semua warna yang ditentukan ~/.Xdefaults. Namun ketika saya mencoba menggunakan ini, saya selalu mengerti error: Bad Substitution. Adakah yang memiliki script yang berfungsi yang melakukan hal yang sama

Seharusnya terlihat seperti ini: masukkan deskripsi gambar di sini

Kironide
sumber
1
Mungkin lebih mudah jika Anda memposting skrip yang Anda gunakan, dan bagaimana dan dari mana Anda memintanya.
luri
1
Anda dapat menemukan kumpulan skrip untuk ini di ArchWiki .
aloisdg
1
Saya mengemas beberapa skrip pencetakan warna, dan meletakkannya di sini , lengkap dengan contoh, terima kasih, dan membuat instalasi.
pvinis
1
@ pvinis terima kasih! Saya menghabiskan terlalu banyak waktu untuk mencoba menemukan yang tepat ditampilkan di layar OP.
verboze
1
FWIW, ini tampaknya berasal dari mana gambar berasal: web.archive.org/web/20110809032233/https://bbs.archlinux.org/… . Posting mencakup skema warna yang digunakan, dan posting pembuka di utas mengutip kode sumber yang digunakan untuk menghasilkan gambar.
mwfearnley

Jawaban:

74

Ini solusi saya hanya dengan 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 ""

Satu-liner:

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

Ini gambar di Cygwin:

Tangkapan layar Cygwin

oktay
sumber
1
FYI, {30..37}setara dengan `seq 30 37`bash dan lebih cepat.
Barry Kelly
1
@BarryKelly: tip yang bagus, terima kasih. baru diuji dan seperti yang Anda catat: ini benar-benar jauh lebih cepat !!! :-) jadi ini yang baru: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
Apakah ini akan berfungsi pada Mac?
kyo
@ihue Lihat apakah ini menjawab pertanyaan Anda: Trik Sederhana untuk Meningkatkan Penampilan Terminal di Mac OS X . Untuk perincian lebih lanjut, lihat AskDifferent.com
wjandrea
Kode contoh tidak berfungsi pada MacOS tetapi jawaban python berhasil.
Sorin
40

Anda juga dapat menggunakan colortest Instal colortestpaket.

  1. Instal dengan perintah ini:

    sudo apt-get install colortest
  2. Ini menyediakan beberapa perintah yang dapat Anda gunakan, tergantung pada berapa banyak warna yang Anda inginkan:

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

Contoh output dari colortest-16b:

masukkan deskripsi gambar di sini

kiri
sumber
33

Ini versi saya:

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

Ini mencetak semuanya . Jika Anda menginginkan tabel yang bagus (yang hanya menampilkan gaya (0) dan (1), normal dan tebal), Anda bisa menggunakan argumen -tatau --terse:

Gaya 'blink' (5) tidak bekerja dengan gnome-terminal. ;-)


Jika ini tidak berhasil untuk Anda, ada sesuatu yang salah. Beri tahu kami setelah Anda mengujinya.

Stefano Palazzo
sumber
Warna prompt saya didefinisikan seperti ini: DULL=0 BRIGHT=1 FG_WHITE=37 WHITE="\[$ESC[${DULL};${FG_WHITE}m\]"Mengapa, putih kusam ( 0;37;40) lebih abu-abu dari putih, dan putih cerah ( 1;37;40) dicetak tebal? Saya ingin mengatur font terminal menjadi putih terang-hitam, bukan huruf tebal. Ketika saya menjalankan skrip Anda, 1;37;40terlihat sempurna setelah baris pertama : 5img.com/img13/740/24screenshot.png Jadi, baris PS1 saya berwarna teks 0;30;40; Saya suka warna 0;30;41.
appas
Apakah ada orang lain yang menganggap magenta ini jelek? Itu terlihat seperti lumpur.
Eter
Anda adalah dewa di antara manusia. Solusi lintas platform terbaik. Terima kasih
Andre Terra
25

Satu kalimat sederhana yang bisa digunakan untuk kebanyakan orang.

msgcat --color=test
JacK TrocinskI
sumber
Sederhana saja. Apakah mungkin hanya mendapatkan warna latar belakang default?
vrcmr
msgcat --help tidak menjelaskan apa yang Anda lakukan ... Apakah ini telur paskah?
vrcmr
@vrcmr Saya menemukan satu-liner ini di sebuah blog di suatu tempat, beberapa waktu yang lalu dan sayangnya tidak dapat menemukan penyebutan --color=testdi halaman manual msgcat juga. Saya menganggapnya sebagai telur paskah yang tidak dapat dikonfigurasi.
JacK TrocinskI
Untuk orang lain yang tertarik, --color=testdisebutkan di bagian 9.11.2 Variabel lingkungan 'TERM' di bawahinfo msgcat
Gerrit0
7

saya membuat skrip kecil untuk itu :)

Anda memberikan nomor ndan meludahkan ngaris berwarna bersama dengan indeks ansi masing-masing warna (Anda dapat menggunakannya dalam $(tput setaf <ansi-index>)).

inilah tangkapan layar dari keluaran (sebagian):

ansi-warna

saya juga mendapatkan yang ini , yang saya garpu (dan sedikit dimodifikasi) dari 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"

... yang, dalam tema saya saat ini, menunjukkan:

terminal menempatkan (warnanya)!

Eliran Malka
sumber
Apakah ini akan berfungsi pada Mac?
kyo
Apakah ini satu-satunya 7 warna yang bisa kita miliki ???
kyo
@ Ya - tentu saja tidak, saya membuat skrip untuk itu .. check it out . Anda dapat memberikan nomor n(mis. 256) dan itu akan memuntahkan nwarna yang didukung terminal Anda.
Eliran Malka
Skrip Anda keren, tetapi #!/usr/bin/env shbukan ide yang bagus. Itu tidak bekerja dengan shell default Ubuntu, yang dash. Saya harus mengubahnya menjadi bash.
Teresa e Junior
5

Baru-baru ini ingin menemukan skrip yang banyak orang referensikan sendiri. Ini dari tldp.org Bash Prompt HOWTO - http://tldp.org/HOWTO/Bash-Prompt-HOWTO/x329.html . Naskah ini ditulis oleh Daniel Crisman.

Outputnya persis sama seperti pada gambar dari pertanyaan. Script itu sendiri:

#!/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
Illia
sumber
1

Ini adalah versi modifikasi dari skrip TLDP di sini . Ini menunjukkan warna standar dan warna -warna cerah (kode 90-97 dan 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

Contoh output:

tangkapan layar gnome-terminal

wjandrea
sumber
0

Pertanyaan ini sebenarnya merupakan hasil teratas ketika saya mencari cara menampilkan kode warna di terminal. Jadi saya ingin memberikan keadilan dan memberikan apa yang sebenarnya dicari OP. Saya ingat tangkapan layarnya agak akrab. Pada awalnya, saya pikir itu dari Gogh namun agak berbeda. Saya kemudian menyadari bahwa skrip yang sama persis digunakan dalam warna iTerm2 .

Cukup beruntung, mereka menambahkan komentar pada mana awalnya berasal dari

Saya memposting skrip untuk referensi, diambil dari iTerm2 dengan kredit asli:

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

Inilah skrip yang sedang beraksi:

masukkan deskripsi gambar di sini

chriz
sumber