Linuxでコマンドの出力の色を、入力したコマンドラインの色とは異なる色に変更できるかどうか疑問に思いました。単調で、出力の開始場所を見つけるのは困難です。お気に入り、
@USER/Destop$ ----> blue
/*
--------------
output file in white
-----------
*/
ありがとう
あんまり;特定のプログラムの出力の色は、端末ではなくコマンドによって制御されます。
とは言っても、端末がカラーの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でエスケープコードを使用して独自の色を設定するコマンドは、ユーザーの作業を完全に無視します。
着色を行うプログラムに出力を渡すことができます。たとえば、pycolor
のようなプログラムがあります。
pycolor module.py
独自に構築するには:
red="$(tput setaf 1)"
reset="$(tput sgr0)"
echo $'foo\nbar' | sed -e "s/\(bar\)/$red\1$reset/"
はい、少なくともLinuxとMac OSでは、これはbashで動作しています。
まず、いくつかの属性変数を設定し、PS1プロンプトを使用して、端末に目的のコマンドライン属性を設定したままにします。例:
bold="\[$(tput bold)\]"
none="$(tput sgr0)"
export PS1="\$ $bold"
次に、すべてのコマンドの直前に実行されるbash DEBUGトラップを使用して、コマンド出力のテキスト属性を変更します。
trap 'echo -ne "${none}"' DEBUG
別の代替手段(コマンドごと)は、grc(汎用カラーライザー)です。物事を色付けするために使用する正規表現を設定するには、少し手間がかかります。私はそれについてここで見つけました:
そしてここ:
https://unix.stackexchange.com/questions/26313/colored-find-output
私は正規表現のフラッシュではないので、これらのコマンドをあまり使用していません。
これらを.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}
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色を同時に使用でき、構成ファイルを使用してコマンドラインを簡略化できます。別のコマンドにパイプできるすべてのコマンドの出力に色を付けることができます。また、正規表現が何であるかを知っていれば、非常に使いやすいでしょう。マニュアルページを使用して、その使用方法を理解できます。