誰かがbashシェルで出力を作成してカラフルに表示できるのを見ました。エラーや警告を強調表示するだけでなく、「ls」を実行したときにディレクトリも強調表示します。
作り方教えてくれる人いませんか?どうもありがとう。
誰かがbashシェルで出力を作成してカラフルに表示できるのを見ました。エラーや警告を強調表示するだけでなく、「ls」を実行したときにディレクトリも強調表示します。
作り方教えてくれる人いませんか?どうもありがとう。
ANSI エスケープ シーケンスを使用して、前景色や背景色などのテキスト プロパティを設定します。
例:-
echo -e "\e[1;34mThis is a blue text.\e[0m"
と
#!/bin/bash
# tputcolors
echo
echo -e "$(tput bold) reg bld und tput-command-colors$(tput sgr0)"
for i in $(seq 1 7); do
echo " $(tput setaf $i)Text$(tput sgr0) $(tput bold)$(tput setaf $i)Text$(tput sgr0) $(tput sgr 0 1)$(tput setaf $i)Text$(tput sgr0) \$(tput setaf $i)"
done
echo ' Bold $(tput bold)'
echo ' Underline $(tput sgr 0 1)'
echo ' Reset $(tput sgr0)'
echo
特定の場合ls
:
ほとんどすべてに gnu が付属している Linux ディストリビューションを使用している場合、ls
おそらく既に色付きの出力が用意されています。そうでない場合は、ls -C
またはを試してくださいls --color=auto
。設定する必要がある場合があり$LS_COLORS
ます。man dircolors
簡単に行う方法を参照してください。
しかし、おそらくあなたは Mac OS X を使用しており、異なるバージョンのls
. 端末が色を出力する場合は、おそらく で色付きのls
出力を取得できますls -G
が、再度設定する必要がある場合があります$LSCOLORS
。export CLICOLOR=1
また、端末に色を表示させるために必要になる場合があります。詳細については、関連サイトでこの回答を参照してください。
興味があれば、ここに少し背景があります。
他の人が指摘したように、端末はいわゆるエスケープ シーケンスに応答します。これらは、端末に送信 (書き込み、表示) できる一連の文字であり、これらの文字を表示する代わりに、端末ハードウェアはそれらをさまざまなことを行うコマンドとして解釈します。これらのことは、カーソルの移動から、点滅、前景色と背景色の変更まで、何でもかまいません。これは、特定の端末機能を呼び出す必要があるときに、すべての端末プログラム (vi、emacs、ls、bash など) が行うことです。
問題は、さまざまな機能を持ち、さまざまなエスケープ シーケンスに応答するさまざまな種類の端末があることです。早い段階で、人々はこれに対処するメカニズムを考え出しました。彼らは termcap を思いつき、次に端末の機能を抽象化する方法である terminfo を考え出しました。したがって、「カーソルの移動」や「前景色の設定」などを行うと、基礎となるライブラリが、さまざまな端末用に維持されている DB から正しいエスケープ シーケンスを取得します (TERM 環境変数の値などに基づいて)。
したがって、有名なcursesライブラリがあります。これをすべて行うことができます。bash などでは、tput と呼ばれる呼び出し可能なコマンドにこの機能がカプセル化されています。man ページには、それを呼び出す方法の詳細が記載されています。したがって、エスケープ シーケンスを直接使用しない方が望ましいでしょう。ただし、たまたま使用している端末から独立したままになるように、tput を使用する必要があります。
これらは DOS の時代から存在していました。ANSI エスケープ シーケンスまたはコードを使用します。
http://wiki.bash-hackers.org/scripting/terminalcodes
使用例:
これにより、ABC が緑色のテキストで出力されます。
ESCAPE=$'\e'
echo "${ESCAPE}[0;32mABC${ESCAPE}[0m"
-e オプションを使用することもできます。
echo -e "\e[0;32mABC\e[0m"
またはprintf:
printf "\e[0;32mABC\e[0m\n"
私が主にスクリプトで使用するコードのいくつかをここで確認してください。