web-dev-qa-db-ja.com

コマンドと出力の異なる色

Linuxでコマンドの出力の色を、入力したコマンドラインの色とは異なる色に変更できるかどうか疑問に思いました。単調で、出力の開始場所を見つけるのは困難です。お気に入り、

@USER/Destop$ ----> blue
/*
--------------
output file in white
-----------
*/

ありがとう

13
raj

あんまり;特定のプログラムの出力の色は、端末ではなくコマンドによって制御されます。

とは言っても、端末がカラーのANSIエスケープコードを理解している場合(ほとんどの場合)、エスケープコードを使用して、プロンプトの先頭に希望のプロンプトカラーを設定し、最後に希望の出力カラーを設定できます。これにより、コマンドラインも出力用に設定した色になりますが、それはおそらく、探しているものに到達するのとほぼ同じです。たとえば、次のとおりです。

$ export PS1='\[\033[00;35m\]\u\[\033[00m\]@\[\033[00;35m\]\H\[\033[00m\]:\[\033[00;33m\]\W\[\033[00m\] \$\[\033[00;34m '

次のようなプロンプトが表示されます。

user@Host:wd $ _

'user'と 'Host'は紫色、 'wd'(cwd)は茶色(濃い黄色)、そして '$'の後のすべては端末が水色に使用するものです。 (デフォルトのxtermはこれをシアンでレンダリングします。gnome-terminalはデフォルトでコーンフラワーブルーのかなり素敵な色合いになっているようです。)

Bashに必要な形式で指定されている実際のカラーコードは、たとえば\[\033[00;35m\]、 どこ 00;35は実際の色指定です。主要な00変更されることはめったにありませんが、IIRCの太字(01)、下線(??)、および反転ビデオ(??)効果を生成できますが、末尾の「35」は実際の色であり、この場合は紫です。

ANSIカラーコードの適切なリストを見つけるのは驚くほど難しいですが、次のように、前景色は30から37まで、背景色は40から47までです。

color        fg  bg
black        30  40
red          31  41
green        32  42
yellow       33  43
blue         34  44
purple       35  45
cyan         36  46
gray/white   37  47

プロンプトに続くすべてにデフォルトの色を設定しているため、エスケープコードを介して独自の色を設定しない実行するプログラムは、その色を使用することに注意してください。たとえば、ページャーの場合、他のコマンドに設定したのと同じ色で出力が表示される可能性があります。一方、doでエスケープコードを使用して独自の色を設定するコマンドは、ユーザーの作業を完全に無視します。

5
Aaron Miller

着色を行うプログラムに出力を渡すことができます。たとえば、pycolorのようなプログラムがあります。

pycolor module.py

独自に構築するには:

red="$(tput setaf 1)"
reset="$(tput sgr0)"
echo $'foo\nbar' | sed -e "s/\(bar\)/$red\1$reset/"

カラー出力の詳細

7
l0b0

はい、少なくともLinuxとMac OSでは、これはbashで動作しています。

まず、いくつかの属性変数を設定し、PS1プロンプトを使用して、端末に目的のコマンドライン属性を設定したままにします。例:

bold="\[$(tput bold)\]"
none="$(tput sgr0)"
export PS1="\$ $bold"

次に、すべてのコマンドの直前に実行されるbash DEBUGトラップを使用して、コマンド出力のテキスト属性を変更します。

trap 'echo -ne "${none}"' DEBUG
3
jackpipe

別の代替手段(コマンドごと)は、grc(汎用カラーライザー)です。物事を色付けするために使用する正規表現を設定するには、少し手間がかかります。私はそれについてここで見つけました:

https://unix.stackexchange.com/questions/8414/how-to-have-tail-f-show-colored-output?newsletter=1&nlcode=17737|321c

そしてここ:

https://unix.stackexchange.com/questions/26313/colored-find-output

私は正規表現のフラッシュではないので、これらのコマンドをあまり使用していません。

1
Joe

これらを.bashrcファイルにスローし、保存後にファイルをソースします。

blk=$'\x1b[90m' # Sets text to black
red=$'\x1b[31m' # Sets text to red
grn=$'\x1b[92m' # Sets text to green
ylw=$'\x1b[93m' # Sets text to yellow
blu=$'\x1b[94m' # Sets text to blue
pur=$'\x1b[95m' # Sets text to purple
cyn=$'\x1b[96m' # Sets text to cyan
wht=$'\x1b[97m' # Sets text to white
rst=$'\x1b[0m'  # resets to default terminal color

これが完了すると、端末でこれらのいずれかを永続的に、または変数をコメント化するか、完全に削除するまで使用できます。マシン上のスクリプトで、またはコマンド置換などで使用できます。これは私がそれらを個人的に使用する方法の次の例です:

echo -e "${red}This text is red.${rst}"
printf "${grn}This text is green.\n${rst"

私は通常、これらを個別のechoおよび/またはprintfコマンドで使用しますが、pingコマンドなどの他のコマンドの色付けにも使用できます。以下を.bashrcに追加して、効果を取得します。次に、.bashrcファイルを入手し、cpingコマンドを実行して、紫色のテキストでpingを使用します。各コマンド機能は、端末がサポートする任意の色を使用するように設定できます。

# Add this to your .bashrc file
colored_ping() {

    echo -e "${pur}$(ping $1)${rst}"
}

alias cping='colored_ping'

次に試してください:

user@linux:~# cping superuser.com

cpingの出力は紫色になります。同じ出力で複数の色を使用したい場合は、独自の方法で追加できます。それをどのように行うかは完全にあなた次第です。例えば:

echo -e "${red}This is red and ${blu}this is blue and ${grn}this is green.${rst}
1
Yokai

Git hubで利用可能なhlコマンドを確認する必要があります。
github:git clone http://github.com/mbornet-hl/hl
以降:
http://www.flashnux.com/notes/page_000022_US.html
hlは、Cで記述されたLinuxコマンドであり、特にテキストファイルまたはコマンドの出力に色を付けるように設計されています。最大42色を同時に使用でき、構成ファイルを使用してコマンドラインを簡略化できます。別のコマンドにパイプできるすべてのコマンドの出力に色を付けることができます。また、正規表現が何であるかを知っていれば、非常に使いやすいでしょう。マニュアルページを使用して、その使用方法を理解できます。

0
Bush