インターネット全体で、私は多くの人々がで定義されたすべての色でたくさんのものを印刷するスクリプトを見ました~/.Xdefaults
。ただし、これらを使用しようとすると、常にが取得され error: Bad Substitution
ます。誰も同じことをする作業スクリプトを持っていますか?
最終的には次のようになります。
インターネット全体で、私は多くの人々がで定義されたすべての色でたくさんのものを印刷するスクリプトを見ました~/.Xdefaults
。ただし、これらを使用しようとすると、常にが取得され error: Bad Substitution
ます。誰も同じことをする作業スクリプトを持っていますか?
最終的には次のようになります。
回答:
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の写真を次に示します。
{30..37}
までに`seq 30 37`
、bashと同等で、高速です。
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 "";
これが私のバージョンです。
#!/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)、標準と太字のみを表示)が必要な場合は、-t
or --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;40
。の色でお願いし0;30;41
ます。
ほとんどの人に役立つはずのシンプルなワンライナー。
msgcat --color=test
--color=test
msgcatのマニュアルページにも言及が見つかりませんでした。構成不可能なイースターエッグだと思います。
--color=test
は、セクション9.11.2で言及されていますinfo msgcat
私が作っ小さなスクリプトをそのために:)
あなたはそれ数渡し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"
…私の現在のテーマでは、次のことを示しています。
#!/usr/bin/env sh
、良いアイデアではありません。Ubuntuのデフォルトのシェル(ダッシュ)では機能しません。bashに変更する必要がありました。
最近、多くの人が自分を参照しているスクリプトを見つけたかった。これは、tldp.org Bash Prompt HOWTO- 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
https://askubuntu.com/a/396555/41013を参照してください。 これにより、太字、アンダーライン、強調表示、色などの形式で次の出力が印刷されます。
これは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
出力例:
この質問は、実際に端末でカラーコードを表示する方法を検索したときの上位結果です。だから私は正義を与え、OPがまさに探していたものを与えたかった。私はスクリーンショットがいくぶん馴染みがあることを覚えています。最初はゴッホのものだと思っていましたが、少し違います。その後、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
動作中のスクリプトは次のとおりです。