カラー出力を表示する方法をls
理解してください。ファイル拡張子に関連付けられているデフォルトのカラーデータベースがあり、次のコマンドを使用して印刷できます。dircolors
dircolors
dircolors --print-database
私が理解したところによると、man dir_colors
システム全体のデータベースはにあるはずです/etc/DIR_COLORS
。しかし、このファイルは私のシステム(Debian)には存在しません。システム全体の色設定を変更するにはdircolors
?ファイルが存在しない場合、dircolors --print-database
このコマンドはどこから設定を取得しますか?
私はユーザーが~/.dircolors
自分の設定を使用してユーザー固有のファイルを持つことができることを知っていますが、誰もが設定を変更する必要があるため、私には適していません。
2番目の質問は、8ビットカラーをdircolorとして使用できるかどうかです。私の端末はですxterm-256color
。
答え1
ls
環境変数から色設定を取得しますLS_COLORS
。dircolors
これは環境変数を生成する便利な方法です。この環境変数をシステム全体に適用するには、それをシェルの起動ファイルに保存します。
の場合は、bash
次の場所に配置できます/etc/profile
。
# `dircolors` prints out `LS_COLORS='...'; export LS_COLORS`, so eval'ing
# $(dircolors) effectively sets the LS_COLORS environment variable.
eval "$(dircolors /etc/DIR_COLORS)"
の場合、起動時に読み取るようにzsh
設定またはスケジュールできます。あなたのディストリビューションですでにこれを行っている可能性があります。私はすべての人の設定が使用するシェルによって異なることを指摘したかったです。/etc/zshrc
zsh
/etc/profile
zsh
dircolors
設定をどこから取得するかについては、ファイルを指定しない限り、組み込みのデフォルト値のdircolors
一部のみを使用します。
dircolorsファイルでは256色のエスケープコードを使用できますが、互換性のある端末xterm
でのみ機能することに注意してください。xterm
たとえば、Linuxテキストコンソールでは実行できません。
256色エスケープコード形式は、前38;5;colorN
景色と48;5;colorN
背景色の両方に適用されます。たとえば、
.mp3 38;5;160 # Set fg color to color 160
.flac 48;5;240 # Set bg color to color 240
.ogg 38;5;160;48;5;240 # Set fg color 160 *and* bg color 240.
.wav 01;04;05;38;5;160;48;5;240 # Pure madness: make bold (01), underlined (04), blink (05), fg color 160, and bg color 240!
答え2
短い答え
dircolors
(カタログカラーの略語)は、カラーをグローバルに変更するためには使用できません。 これを行うには、ターミナルエミュレータでカラーパレットを調整する必要があります。
たとえば、、または要求された色をdircolors
調整する目的ではありません。grep
vi
tmux
man
dircolors
コマンドを調整するために使用される色ls
とtree
必要表示予定ファイル名を表示するとき。
私は強調する表示要求これは、コマンドによって要求された色が端末エミュレータに送信された色であるためです。これにより、端末エミュレータが要求した色とは異なる色を表示するように選択できます。要求されたものと最終的に端末画面に出力されるのは、2つの異なる色のセットです。
カラー処理の概要
1) テキストベースのプログラムまたは組み込みシェル、設計によりANSI(American National Standards Institute)出力可能色の要件脱出コード。ここでは、これは端末に対する要求であり、それをどのように表示するかについての最終決定権があることを強調します。 ANSIカラーコーディングシステムは、もともとスタンドアロンハードウェア端末で始まった非常に古いシステムです。
カラーテキスト要求は次のとおりです。
<requested-color><text-to-be-displayed-in-that-color><next-requested-color><next-text...
「必須色」セクションは表示されません。代わりに、端末エミュレータは、「対応する色で表示するテキスト」を要求された色で表示するように画面に指示するために使用されます。
[ncurses][1]
ANSIコードをターミナルエミュレータに出力するためにプログラムを呼び出すことができます。デフォルトでは、8つの標準色とより太く/明るい8つの色を要求できます。 (ncursesはNew Cursesの略です。ここで、「curses」はカーソルの最適化のための愚かな、または端末画面への効率的なテキストベースの出力のためのソフトウェアライブラリです。)
ANSIカラーコードを出力するように、多くの一般的なテキストベースのコマンドを設定できます。必要出力は端末によって色分けされます。例:ls
、、、、および。tree
vim
grep
tmux
man
これらの出力カラーコード(エスケーププレフィックス制御コード)は、次のテキストが出力される前にディスプレイが指定された色の組み合わせ(前景、背景、およびプロパティ)に変更されるように要求します。繰り返しますが、これらのエスケープコードは実際に表示される色を決定しません。代わりに、特定のカラーパレットの選択を指定します。
標準カラーパレットがありました。緑を要求すると緑が表示されます。
ただし、端末エミュレータ(たとえばGNOME Terminal
)はこの動作を変更できます。たとえば、プログラムが要求する場合グリーン、ANSIグリーンエスケープコードを使用して表示することを決定できます。チェリーレッドあなたの画面に。 これが意味するのは、次のようなことを覚えておくことが重要です。みんな要求された緑は各端末プログラムで赤に変換されます。 つまり、grep
このような特定のプログラムの出力色だけを調整することはできません。
ls
2A)およびその他のディレクトリコマンドはtree
やや特別です。これは、仕様に応じて、ファイル名の種類別にファイル名をカラー化するようにユーザーが構成できるためです。man
たとえば、これはモノクロ以外に固定された代替カラーセットを使用するのとは異なります。
たとえば、フォルダは藍色で表示され、リンクは薄い青色で表示されます。
指定された端末形式(たとえば、ansiまたはputty)、ファイルのデフォルトタイプ(フォルダ、ブロック、固定など)、および/または一致するファイル拡張子(*.shまたは*.pngなど)の色を要求できます。これは、環境変数 LS_COLORS で指定された設定を使用して、ファイル名タイプ別に ANSI 出力カラーコードを変更することによって行われます。方法については、下記をご覧ください。
2B)特別なカラースキームもありますvim
例えば:colorscheme default
。
三)あなたの端末(私の場合、GNOME端末) 次に、ANSIコードを解釈して、ユーザーが見る実際の表示色を生成します。
端末エミュレータで全体的に色を調整する
カラー設定GNOME Terminal
(またはこの機能をサポートする端末エミュレータ)を調整すると、ANSIカラーコードを出力するすべてのテキストプログラムの観察可能な色に影響します。これらの色の変更は、開いているすべての端末ウィンドウで同時に調整されます(すべてのウィンドウに同じ端末エミュレータを使用していると仮定)。
GNOME Terminal
2つの異なるターミナルエミュレータ(たとえば、および)を使用している場合、XTerm
各エミュレータは最終出力色を異なるように調整できます。
GNOME端末設定を使用すると、システム全体の「カラーパレット」(つまり、テキストベースのアプリケーションで使用できる16種類のカラーセット)をカスタムカラーセットに微調整できます。
GNOME Terminal
ヘルプは次のように言います。
通常、ターミナルエミュレータはここで変更できる16のカラーパレットを提供します。端末は拡張256色をサポートしていますが、追加の240色はここでは編集できません。端末は、「トゥルーカラー」モードと呼ばれる1,600万を超える色に直接アクセスできます。
パレットへの変更がうまくいかないと思われる場合は、表示される内容が16の基本色ではなく、これらの拡張パレット色または実際の色で構成されることがあります。
2色を使用してください
仕組みは次のとおりです。
a) Run $ dircolors -p >/etc/DIR_COLORS # to produce DIR_COLORS template file
b) Hand edit /etc/DIR_COLORS to adjust ANSI color codes that will be output
for various things to display. For example, any filenames like *.png can
request a particular ANSI color combination. (ANSI color codes are escape
prefixes.)
c) Run dircolors again, this time in both
/etc/profile (for logins) and
/etc/bash.bashrc (for terminal windows)
to read DIR_COLORS and create and export the LS_COLORS
environment variable, like this:
$ eval "$(dircolors -b /etc/DIR_COLORS)"
dircolors
早く電話して設定と書き出し/etc/profile
に使用していますLC_COLORS
。
# === Create DEFAULT LS_COLORS ENVIRONMENT VARIABLE ===========================
# /etc/DIR_COLORS is a data file from: $ dircolors -p > /etc/DIR_COLORS
eval "$(dircolors -b /etc/DIR_COLORS)" # This reads /etc/DIR_COLORS
# and then runs these two commands:
#
# $ LS_COLORS=... # <-- where this value is created from /etc/DIR_COLORS
# $ export LS_COLORS
参考までに、/ etc / profile(ログインが完了するたびに読み取られる(含む$ bash --login
))のさまざまなコマンドで色を有効にする方法は、この回答の下部にあります。
ls
面白いと思われるリバースビデオフォルダとファイル(DOSバックアップファイルなど)があることに注意してください。 GNOME端子(下)の複雑な部分は、これらの色に影響を与えないようです。ただし、dircolors
LS_COLORSの内容を調整するには(上記参照)を使用してDIR_COLORSを編集できます。
独自のシステムカラーを調整する方法のヒント
GNOME端末メニューからEdit
|を選択しますPreferences
。左ペインで調整したいプロファイルを選択し、右ペインでタブを選択しますColors
。
!!進む前に、既存のデフォルト設定をバックアップすることをお勧めします。 スクリーンショットがあればよさそうです。以下のスクリーンショットをご覧ください。
bash
最も基本的なデフォルト設定を使用しますが、黒の作業背景と色付きの、、、、、vim
...grep
アプリケーションを希望するls
場合は、次のように色を設定してみてください。
このカラーダイアログは最初は少し混乱していましたが、一度理解したら非常に論理的です。最大の問題は、私のすべてのテキストアプリが同じカラーパレットを共有していますが、別の方法で使用していることですls
。
私が使用した正確な色は次のとおりです。
black aqua green orange light yellow purple blue, primary gray (X) <-- X=Don't care
#000000 #01B9E0 #389400 #FF8A00 #F4FF92 #C401C4 #005EEA #AAAAAA
0 1 2 3 4 5 6 7
------------ ------------ ------------ ------------ ------------ ------------ ------------ ------------ <-- 1st set are "normal colors"
------------ ------------ ------------ ------------ ------------ ------------ ------------ ------------ <-- 2nd set are the "brighter colors" (for check box below)
8 9 10 11 12 13 14 15
#555555 #FF5555 #55FF55 #FFFF55 #5397FE #FF55FF #55FFFF #D6D6D6
dark gray (X) red/orange lime yellow (X) blue, medium pink aqua, bright light gray (X) <-- X=Don't care
GNOME端末設定 - プロファイルダイアログを理解する
上部と下部のセクション(Text and Background Color
および)は、選択が上部設定の上のレイヤー(つまり追加で変更されている)であることを除いて、Palette
ほぼ完全に独立して機能するように見えます。 (またチェックしても、少なくとも下は依然として重要です。)Palette
Text and Background Color
Use colors from system theme
Show bold text in bright colors
ls
Text and Background Color
まず、設定をめちゃくちゃにしましょう。
これは、基本色、非特殊色、およびText
色Background
の基本色を決定します。必要に応じて、テキストと固定カーソルの色(たとえば、一部の人々を喜ばせる明るいオレンジ色)のオプションの修飾子を選択することもできBold
ますHighlight
。
このUse colors from system theme
チェックボックスは、色設定を継承するか直接定義するかを決定するようです。選択を解除すると、ドロップダウンリストから組み込みまたはカスタムスキームを選択できます。
選択項目は、を除いて下とText
サンプルに記入されます。Background
Custom
ここで選択した内容は、その下にある他の3つのチェックボックスには影響しません。
また、最初にクリックするかText
スウォッチをクリックするとBackground
カラーセレクタが表示され、選択するとドロップダウンが「カスタマイズ」に設定されSelect
ます。Built-in schemes
色を確認しBold color
て設定すると、プログラムで太字のテキストがこの色よりも優先されます。
を選択すると、カーソルのCursor color
固定色を選択できます。 (テキストの変更を確認するには、カーソルをテキストの上に移動する必要があります。)このオプションを選択しないと、テキストの色が変わるにつれてカーソルも変更されるように見えます。
たとえば、vimからいくつかのテキストをコピーするためにマウスをドラッグすると、Highlight color
これら2つのサンプルの効果が表示されます。
Palette
これで設定が台無しになります。
上記と同様に、ドロップダウンメニューは下の見本に色セットを追加します。それぞれ8つずつ2つの行があることがわかります。これらのカラーパレットには、terminfoによって設定された8つのANSI前景色と8つの背景色が含まれています。
微妙な色の変更のためにこれらのサンプルを設定できることを確認することが重要です。
ここで行った変更は、すべてまたはほとんどのカラーサポートテキストベースのプログラムにも影響します。 だからここに注意してください。 (まだわからないので、バックアップする方法を当初申し上げることはできません。少なくともスクリーンショットは撮っておいてください。)
これらすべてのサンプルの目的が何であるかはわかりませんが、いくつかの実験を通して以下の結論を得ました。
テストを開始する前に、ホームディレクトリのコード編集セッション、ホームディレクトリの他のコード編集セッション、実行、およびセッションで何かを開きますGNOME Terminal
。以下の内容を変更すると、何が変更されたかをよりよく確認することができます。vim
bash
c
ls
tree
tmux
まず、いくつかの小さな変更を試してみてください。下部のチェックボックスをクリックしてクリックをキャンセルします(詳細については以下の説明を参照)。
警告する:私が提案したように16の色見本を設定してから手動で設定する場合はPalette
注意Custom
してください。他の項目を再選択すると、以前の設定がBuilt-in schemes:
消去され、必要に応じてこの設定で再起動する必要があるためです。 。 (スクリーンショットを撮ったり、1つずつ書き込むことなく、カスタムカラー設定を保存する方法はないようです)。Palette
Custom
Built-in schemes:
Custom
-Color palette:
設定
tmux status text status-backgr
tmux vi literals flow (orange) comments&fcns $names var names ?
vi C - literals types flow (brown) comments&fcns macros - ?
vi Bash - literals - flow (brown) comments&fcns Environ var names ? flow: brown (can't change with gnome)
Bash - user@dir $
Bash ls - Reverse-backg Reverse-foregr
gcc
black aqua green orange dark yellow purple blue, primary gray (X) <-- X=Don't care
#000000 #01B9E0 #389400 #FF8A00 #C6CF76 #C401C4 #005EEA #AAAAAA
0 1 2 3 4 5 6 7
------------ ------------ ------------ ------------ ------------ ------------ ------------ ------------ <-- 1st set are "normal colors"
------------ ------------ ------------ ------------ ------------ ------------ ------------ ------------ <-- 2nd set are the "brighter colors" (for check box below)
8 9 10 11 12 13 14 15
#555555 #FF5555 #55FF55 #FFFF55 #5397FE #FF55FF #55FFFF #D6D6D6
dark gray (X) red/orange lime yellow (X) blue, medium pink aqua, bright light gray (X) <-- X=Don't care
tmux ? ? ?
tmux vi ? ? ?
vi C ? ? ?
vi Bash ? ? ?
Bash ? root@dir # ? ?
Bash ls ? x.sh ? directories media files links ?
gcc ? errors ? ?
最後に、下部にShow bold text in bright colors
チェックボックスがあります。 GNOMEヘルプでは、次のように言います。
太字のテキストには明るい色が使用されます。
伝統的に、端末では、太いフォントの厚さと太い色を明確に区別しておらず、通常、両方が一緒にアクティブになっています。 True Colorのサポートや特定のカラースキーム(Solarizedなど)の導入など、最近の改善により、2つの概念が分離され、明るさがフォントの厚さとは無関係になりました。
...
Disable Show bold text in bright colors for the new default behavior, the complete separation of color intensity and font weight;
または、このオプションを有効にすると、以前のバージョンとの互換性が向上します。
選択すると、上の行に表示されている色が使用され、下の行に色が表示されます。これを確認すると、ls
一部の名前の色が若干変わることがわかります。私はこれがISO 6429カラーシーケンス#1に関連していると思います。つまり、これが$ man dir_colors
主な色の順序に影響を与えるようです。ls
vim
組み込みスキームの色は何ですか?
built-in schemes
テストしたとき ここに記載されているカラーテストユーティリティを使用してください。次の結果が表示されます(この項目をコンパイルしてリンクするように求められます$ gcc -Wall -lcurses color-demo.C
)。
気づくShow bold text in bright colors
チェックボックスが選択されています。確認しないと、高強度と低強度の色は同じです。
Linux console
(オリジナルCGIカラーセットとして表示されます):
xterm
:
rxvt
(上記の内容に近いため順番が不規則です。)
Tango
(下のSolarizedに近いので、順序が間違っています):
Solarized
:
コマンドが色で表示されるように設定するにはどうすればよいですか?
あなたの/etc/.bashrc.shared
(~/.bashrc
andによって呼び出される)にいるか、あなたのandにいない場合/root/.bashrc
:~/.bashrc
/root/.bashrc
# === ADD COLOR UNLESS DUMB TERMINAL ========================================
if [ "$TERM" != "dumb" ]; then
# ENVIRONMENT:
# You can turn off these colorizing aliases in the interactive environment by invoking
# shell with TERM="dumb bash".
# Assume LS_COLORS is already set by dircolors in /etc/profile. It can be adjusted later.
# Using color to distinguish file types is disabled both by default and with --color=never.
# With --color=auto, ls emits color codes only when standard output is connected to a terminal.
export COLOR_MODE='--color=auto'
# The use of alias limits color effects to the interactive command usage.
# It has advantage over exporting environment variable "export COLOR_MODE='--color=auto'"
# since color can be seen under pager programs such as less(1). If you wish to suppress
# color when piping to other programs, use "--color=auto" instead in the above example
# for "~/.bashrc".
# !! NOTE - alias is very picky about extra spaces around = sign
# --- grep
# Surround the matched (non-empty) strings, matching lines, context lines, file names,
# line numbers, byte offsets, and separators (for fields and groups of context lines)
# with escape sequences to display them in color on the terminal.
# The colors are defined by the environment variable GREP_COLORS, (plural).
# See grep man page for GREP_COLORS instructions.
alias grep=' grep ${COLOR_MODE}'
alias egrep='egrep ${COLOR_MODE}'
alias fgrep='fgrep ${COLOR_MODE}'
alias zgrep='zgrep ${COLOR_MODE}'
# --- ls ------------------------
alias ls='ls ${COLOR_MODE}'
# These next two use the ls alias above, i.e. the first one below is really 'ls ${LS_OPTS} -l'
alias ll='ls -l' # -l = long
alias l='ls -lA' # -A = amost all (.*, but not . nor ..)
# --- tree ----------------------
alias tree='tree -C' # -C adds color to tree
# --- less ----------------------
alias less='less -R' # Output raw control chars for ANSI colors
# --- man -----------------------
# ref: http://www.tuxarena.com/2012/04/tutorial-colored-man-pages-how-it-works/
# NOTE these seem to use TERMCAP which is obsolite.
# ANSI "color" escape sequences are sequences of the form: ESC [ ... m
export LESS_TERMCAP_mb=$(printf '\e[01;31m') # enter blinking mode
export LESS_TERMCAP_md=$(printf '\e[01;38;5;75m') # enter double-bright mode
export LESS_TERMCAP_me=$(printf '\e[0m') # turn off all appearance modes (mb, md, so, us)
export LESS_TERMCAP_so=$(printf '\e[01;33m') # enter standout mode
export LESS_TERMCAP_se=$(printf '\e[0m') # leave standout mode
export LESS_TERMCAP_us=$(printf '\e[04;38;5;200m') # enter underline mode
export LESS_TERMCAP_ue=$(printf '\e[0m') # leave underline mode
fi
答え3
ファイルが存在しない場合、
dircolors --print-database
このコマンドはどこから設定を取得しますか?
~によると手動、ファイルなしでプリコンパイルされたデータベースを使用します。
fileが指定されている場合、dircolorsはそれを読み取り、どのファイル形式と拡張子に使用する色を決定します。それ以外の場合は、事前にコンパイルされたデータベースが使用されます。これらのファイル形式の詳細については、 "
dircolors --print-database
"を実行してください。
全員の設定を変更するには、ファイルを作成して/etc/dircolors
次の内容を追加します/etc/bashrc
。
d=/etc/dircolors
test -r $d && eval "$(dircolors $d)"
答え4
Linux では dircolors を使用してコンソールの背景色を設定します。
dircolors ファイルは、ls を介してコンソールに表示される単語の色を制御します。.dircolors
配布用にこのファイルを見つけます。ヘルプリンク:
http://www.linuxfromscratch.org/blfs/view/svn/postlfs/profile.html
Fedora 17では、私のdircolorsファイルは次のようになります。/etc/DIR_COLORS
/etc/DIR_COLORS
ディレクトリにコピーします/home/el/.dircolors
。存在しない場合は作成してください。
/home/el/.dircolorsを編集し、"dir"テキストを見つけます。
これを変更してください:
DIR 01;34 # directory
これに関して:
DIR 01;36 # directory
シェルを保存して閉じてから再起動します。目次の範囲は、黒地の濃い青(読めない)から黒地の明るいターコイズ(読める)までです。