dircolors:カラー設定を完全に変更します。

dircolors:カラー設定を完全に変更します。

カラー出力を表示する方法をls理解してください。ファイル拡張子に関連付けられているデフォルトのカラーデータベースがあり、次のコマンドを使用して印刷できます。dircolorsdircolors

dircolors --print-database

私が理解したところによると、man dir_colorsシステム全体のデータベースはにあるはずです/etc/DIR_COLORS。しかし、このファイルは私のシステム(Debian)には存在しません。システム全体の色設定を変更するにはdircolors?ファイルが存在しない場合、dircolors --print-databaseこのコマンドはどこから設定を取得しますか?

私はユーザーが~/.dircolors自分の設定を使用してユーザー固有のファイルを持つことができることを知っていますが、誰もが設定を変更する必要があるため、私には適していません。

2番目の質問は、8ビットカラーをdircolorとして使用できるかどうかです。私の端末はですxterm-256color

答え1

ls環境変数から色設定を取得しますLS_COLORSdircolorsこれは環境変数を生成する便利な方法です。この環境変数をシステム全体に適用するには、それをシェルの起動ファイルに保存します。

の場合は、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/zshrczsh/etc/profilezshdircolors

設定をどこから取得するかについては、ファイルを指定しない限り、組み込みのデフォルト値の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調整する目的ではありません。grepvitmuxman

dircolorsコマンドを調整するために使用される色lstree 必要表示予定ファイル名を表示するとき。

私は強調する表示要求これは、コマンドによって要求された色が端末エミュレータに送信された色であるためです。これにより、端末エミュレータが要求した色とは異なる色を表示するように選択できます。要求されたものと最終的に端末画面に出力されるのは、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、、、、および。treevimgreptmuxman

これらの出力カラーコード(エスケーププレフィックス制御コード)は、次のテキストが出力される前にディスプレイが指定された色の組み合わせ(前景、背景、およびプロパティ)に変更されるように要求します。繰り返しますが、これらのエスケープコードは実際に表示される色を決定しません。代わりに、特定のカラーパレットの選択を指定します。

標準カラーパレットがありました。緑を要求すると緑が表示されます。

ただし、端末エミュレータ(たとえばGNOME Terminal)はこの動作を変更できます。たとえば、プログラムが要求する場合グリーン、ANSIグリーンエスケープコードを使用して表示することを決定できます。チェリーレッドあなたの画面に。 これが意味するのは、次のようなことを覚えておくことが重要です。みんな要求された緑は各端末プログラムで赤に変換されます。 つまり、grepこのような特定のプログラムの出力色だけを調整することはできません。

ls2A)およびその他のディレクトリコマンドはtreeやや特別です。これは、仕様に応じて、ファイル名の種類別にファイル名をカラー化するようにユーザーが構成できるためです。manたとえば、これはモノクロ以外に固定された代替カラーセットを使用するのとは異なります。

たとえば、フォルダは藍色で表示され、リンクは薄い青色で表示されます。

指定された端末形式(たとえば、ansiまたはputty)、ファイルのデフォルトタイプ(フォルダ、ブロック、固定など)、および/または一致するファイル拡張子(*.shまたは*.pngなど)の色を要求できます。これは、環境変数 LS_COLORS で指定された設定を使用して、ファイル名タイプ別に ANSI 出力カラーコードを変更することによって行われます。方法については、下記をご覧ください。

2B)特別なカラースキームもありますvim例えば:colorscheme default

三)あなたの端末(私の場合、GNOME端末) 次に、ANSIコードを解釈して、ユーザーが見る実際の表示色を生成します。


端末エミュレータで全体的に色を調整する

カラー設定GNOME Terminal(またはこの機能をサポートする端末エミュレータ)を調整すると、ANSIカラーコードを出力するすべてのテキストプログラムの観察可能な色に影響します。これらの色の変更は、開いているすべての端末ウィンドウで同時に調整されます(すべてのウィンドウに同じ端末エミュレータを使用していると仮定)。

GNOME Terminal2つの異なるターミナルエミュレータ(たとえば、および)を使用している場合、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端子(下)の複雑な部分は、これらの色に影響を与えないようです。ただし、dircolorsLS_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ほぼ完全に独立して機能するように見えます。 (またチェックしても、少なくとも下は依然として重要です。)PaletteText and Background ColorUse colors from system themeShow bold text in bright colorsls


Text and Background Colorまず、設定をめちゃくちゃにしましょう。

これは、基本色、非特殊色、およびTextBackgroundの基本色を決定します。必要に応じて、テキストと固定カーソルの色(たとえば、一部の人々を喜ばせる明るいオレンジ色)のオプションの修飾子を選択することもできBoldますHighlight

このUse colors from system themeチェックボックスは、色設定を継承するか直接定義するかを決定するようです。選択を解除すると、ドロップダウンリストから組み込みまたはカスタムスキームを選択できます。

選択項目は、を除いて下とTextサンプルに記入されます。BackgroundCustom

ここで選択した内容は、その下にある他の3つのチェックボックスには影響しません。

また、最初にクリックするかTextスウォッチをクリックするとBackgroundカラーセレクタが表示され、選択するとドロップダウンが「カスタマイズ」に設定されSelectます。Built-in schemes

色を確認しBold colorて設定すると、プログラムで太字のテキストがこの色よりも優先されます。

を選択すると、カーソルのCursor color固定色を選択できます。 (テキストの変更を確認するには、カーソルをテキストの上に移動する必要があります。)このオプションを選択しないと、テキストの色が変わるにつれてカーソルも変更されるように見えます。

たとえば、vimからいくつかのテキストをコピーするためにマウスをドラッグすると、Highlight colorこれら2つのサンプルの効果が表示されます。


Paletteこれで設定が台無しになります。

上記と同様に、ドロップダウンメニューは下の見本に色セットを追加します。それぞれ8つずつ2つの行があることがわかります。これらのカラーパレットには、terminfoによって設定された8つのANSI前景色と8つの背景色が含まれています。

微妙な色の変更のためにこれらのサンプルを設定できることを確認することが重要です。

ここで行った変更は、すべてまたはほとんどのカラーサポートテキストベースのプログラムにも影響します。 だからここに注意してください。 (まだわからないので、バックアップする方法を当初申し上げることはできません。少なくともスクリーンショットは撮っておいてください。)

これらすべてのサンプルの目的が何であるかはわかりませんが、いくつかの実験を通して以下の結論を得ました。

テストを開始する前に、ホームディレクトリのコード編集セッション、ホームディレクトリの他のコード編集セッション、実行、およびセッションで何かを開きますGNOME Terminal。以下の内容を変更すると、何が変更されたかをよりよく確認することができます。vimbashclstreetmux

まず、いくつかの小さな変更を試してみてください。下部のチェックボックスをクリックしてクリックをキャンセルします(詳細については以下の説明を参照)。

警告する:私が提案したように16の色見本を設定してから手動で設定する場合はPalette注意Customしてください。他の項目を再選択すると、以前の設定がBuilt-in schemes:消去され、必要に応じてこの設定で再起動する必要があるためです。 。 (スクリーンショットを撮ったり、1つずつ書き込むことなく、カスタムカラー設定を保存する方法はないようです)。PaletteCustom

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主な色の順序に影響を与えるようです。lsvim


組み込みスキームの色は何ですか?

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~/.bashrcandによって呼び出される)にいるか、あなたの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

シェルを保存して閉じてから再起動します。目次の範囲は、黒地の濃い青(読めない)から黒地の明るいターコイズ(読める)までです。

関連情報