lsの色の違いは何を意味しますか?


364

Ubuntuのlsコマンドの異なる色は何を意味しますか?たとえばls、フォルダの1つにコマンドを入力すると、ファイルの1つが薄緑色で表示され、他のファイル(フォルダ)が緑色で強調表示された青色で表示されます。

これらの色の意味は何ですか?また、すべての色に関するマニュアルはありますか?

回答:


391
  • :ディレクトリ
  • :実行可能または認識されたデータファイル
  • スカイブルー:シンボリックリンクファイル
  • 背景が黄色の黄色:デバイス
  • ピンク:グラフィックイメージファイル
  • :アーカイブファイル
  • 背景が赤の赤:リンク切れ

ご参考までに:

  • 色をオフにするには、次の行をコメントアウトする必要があります.bashrc

    # enable color support of ls and also add handy aliases
    #if [ -x /usr/bin/dircolors ]; then
    #    test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
    #    alias ls='ls --color=auto'
    #    #alias dir='dir --color=auto'
    #    #alias vdir='vdir --color=auto'
    #
    #    alias grep='grep --color=auto'
    #    alias fgrep='fgrep --color=auto'
    #    alias egrep='egrep --color=auto'
    #fi
    
  • また、独自のbash色の意味を確認したい場合は、端末に次のコードをコピーして貼り付けてください。

    eval $(echo "no:global default;fi:normal file;di:directory;ln:symbolic link;pi:named pipe;so:socket;do:door;bd:block device;cd:character device;or:orphan symlink;mi:missing file;su:set uid;sg:set gid;tw:sticky other writable;ow:other writable;st:sticky;ex:executable;"|sed -e 's/:/="/g; s/\;/"\n/g')           
    {      
      IFS=:     
      for i in $LS_COLORS     
      do        
        echo -e "\e[${i#*=}m$( x=${i%=*}; [ "${!x}" ] && echo "${!x}" || echo "$x" )\e[m" 
      done       
    } 

    出力:
    代替テキスト

注意:

  • 詳細についてman dir_colorsは、ターミナルに入力してください。

28
そのeval種類ごとに出力色表現を示すスクリプトは素晴らしいです...ありがとう!
ラス

2
純粋な
ソース

5
それのより読みやすいバージョンevalのスクリプトはここにある:github.com/gkotian/gautam_linux/blob/master/scripts/colours.sh
ゴータム

3
赤も死んだシンボリックリンクです。
トーマス・ウォード

1
通常の白いテキストのファイルはどうですか?
S ..

98

変数をls見ると、どの色が使用されているかがわかり$LS_COLORSます。

  • ターコイズ:オーディオファイル1
  • ブライトレッド:アーカイブと圧縮ファイル2
  • 紫:画像と動画3

さらに、ファイルは属性によって色分けされます。

代替テキスト


  1. aac、au、flac、mid、midi、mka、mp3、mpc、ogg、ra、wav、axa、oga、spx、xspf。

  2. tar、tgz、arj、taz、lzh、lzma、tlz、txz、zip、z、Z、dz、gz、lz、xz、bz2、bz、tbz、tbz2、tz、deb、rpm、jar、rar、ace、動物園、cpio、7z、rz。

  3. jpg、jpeg、gif、bmp、pbm、pgm、ppm、tga、xbm、xpm、tif、tiff、png、svg、svgz、mng、pcx、mov、mpg、mpeg、m2v、mkv、ogm、mp4、m4v、 mp4v、vob、qt、nuv、wmv、asf、rm、rmvb、flc、avi、fli、flv、gl、dl、xcf、xwd、yuv、cgm、emf、axv、anx、ogv、ogx。


この情報はすべての出力に含まれていますがdircolors --print-database、そのフォーマットはかなり判読できません。

何が起こっているのかを技術的に説明します。

例:

CHR 40;33;01

カラーコードは3つの部分で構成されています。

  • セミコロンの前の最初の部分はテキストスタイルを表します。

    • 00 =なし、01 =太字、04 =アンダースコア、05 =点滅、07 =反転、08 =非表示。
  • 2番目と3番目の部分は色と背景色です。

    • 30 =黒、31 =赤、32 =緑、33 =黄色、34 =青、35 =マゼンタ、36 =シアン、37 =白。

左から始まると仮定すると、各部分は省略できます。つまり、「01」は太字を意味し、「01; 31」は太字と赤を意味します。そして、命令をでエスケープし\33[、で終了することにより、ターミナルをカラーで印刷しますm。33、または16進数の1Bは、ASCII記号「ESCAPE」(ASCII文字セットの特殊文字)です。例:

"\33[1;31mHello World\33[m"

「Hello World」を明るい赤で印刷します。

ls引数を指定したコマンド--color=auto(Ubuntuではlsのエイリアスls --color=auto)は、すべてのファイル名を調べ、最初に実行可能ファイル、パイプなどのさまざまなタイプを一致させようとします。次に、*。wavなどの正規表現との照合を試み、結果のファイル名を、bashのこれらの色を変更する指示で囲んで出力します。


ありがとう!私はGitトポロジーの視覚化の 質問を見ていて、なぜ文字の一部が印刷されているのか疑問に思いました。
pdp

27

あなたが入力した場合dircolorsecho $LS_COLORSコマンドラインからも動作します)あなたは1行でファイルタイプの多くのためのコードと色のリストを取得します。dircolors --print-database一度に1行ずつ表示します。ここに短いリストがあります(最も重要なものを入れようとしました)。下部には、各行の最後にあるさまざまなコードが何を表すかについての説明があります。

NORMAL 00#グローバルデフォルト、ただしすべてが何かであるべきです。
FILE 00#通常のファイル
DIR 01; 34#ディレクトリ
LINK 01; 36#シンボリックリンク。(これを「ターゲット」に設定した場合、
 #数値、色は指定されたファイルと同じです。
FIFO 40; 33#パイプ
SOCK 01; 35#ソケット
DOOR 01; 35#ドア
BLK 40; 33; 01#ブロックデバイスドライバー
CHR 40; 33; 01#キャラクターデバイスドライバー
ORPHAN 40; 31; 01#存在しないファイル、または統計できないファイルへのシンボリックリンク
SETUID 37; 41#setuidであるファイル(u + s)
SETGID 30; 43#setgid(g + s)であるファイル
STICKY_OTHER_WRITABLE 30; 42#スティッキーで他の書き込み可能なディレクトリ(+ t、o + w)
OTHER_WRITABLE 34; 42#書き込み不可(o + w)でスティッキーではないディレクトリ
STICKY 37; 44#スティッキービットが設定されたディレクトリ(+ t)で、他の書き込み不可
#アーカイブまたは圧縮(明るい赤)
.tar 01; 31
.tgz 01; 31
#画像形式
.jpg 01; 35
.jpeg 01; 35
.gif 01; 35
.bmp 01; 35
#オーディオ形式
.aac 00; 36
.flac 00; 36
.ogg 00; 36
  • 属性コード: 00=none 01=bold 04=underscore 05=blink 07=reverse 08=concealed
  • テキストの色コード: 30=black 31=red 32=green 33=yellow 34=blue 35=magenta 36=cyan 37=white
  • 背景色コード: 40=black 41=red 42=green 43=yellow 44=blue 45=magenta 46=cyan 47=white

これを試してみたい場合は、ファイルの色を設定する方法の例を次に示します。

export LS_COLORS=$LS_COLORS:"*.ogg=01;35":"*.mp3=01;35"  

これが設定されます*.ogg.mp3しますbold magenta。そして、あなたがそれをあなたの.bashrcファイルに入れるならば、それは永久になります。


2
たぶん他の誰かがより良い答えを持ってくるでしょう。ところで、この
アップ投票で15,000を

ロックオン!あなたはそこに自分自身を...再度ありがとう、しかし、私は
自信

日付について疑問がある場合に備えて、この(優れた)回答がマージされました。:-)
ステファノパラッツォ

@Rinzwind、したがってpdfファイルの色を設定するには、プロセスはexport?デフォルトLS_COLORS 変数に1つの拡張子を追加するだけで可能ですか?
シグル

23

これはKarthick87の答えを拡張しています


デフォルト設定で

  • 色なし(白):ファイルまたはファイル名以外のテキスト(例:の出力のアクセス許可ls -l
  • 太字の青:ディレクトリ
  • 太字のシアン:シンボリックリンク
  • 太字の緑:実行可能ファイル
  • 太字の赤:アーカイブファイル
  • 太字のマゼンタ:画像ファイル、ビデオ、グラフィックなど、またはドアソケット
  • シアン:オーディオファイル
  • 背景が黒の黄色:パイプ(別名FIFO)
  • 背景が黒の太字の黄色:ブロックデバイスまたはキャラクターデバイス
  • 背景が黒の太字の赤:孤立したシンボリックリンクまたはファイルがありません
  • 背景が赤で色付けされていない:set-user-IDファイル
  • 背景が黄色の黒:set-group-IDファイル
  • 背景が赤の黒:機能付きファイル
  • 白地に青の背景:スティッキディレクトリ
  • 背景が緑の青:他の書き込み可能なディレクトリ
  • 背景が緑の黒:スティッキーおよび他の書き込み可能なディレクトリ

色を表示するスクリプト

#!/bin/bash
# For LS_COLORS, print type and description in the relevant color.

IFS=:
for ls_color in $LS_COLORS; do
    color="${ls_color#*=}"
    type="${ls_color%=*}"

    # Add descriptions for named types.
    case "$type" in
    bd) type+=" (block device)" ;;
    ca) type+=" (file with capability)" ;;
    cd) type+=" (character device)" ;;
    di) type+=" (directory)" ;;
    do) type+=" (door)" ;;
    ex) type+=" (executable file)" ;;
    fi) type+=" (regular file)" ;;
    ln) type+=" (symbolic link)" ;;
    mh) type+=" (multi-hardlink)" ;;
    mi) type+=" (missing file)" ;;
    no) type+=" (normal non-filename text)" ;;
    or) type+=" (orphan symlink)" ;;
    ow) type+=" (other-writable directory)" ;;
    pi) type+=" (named pipe, AKA FIFO)" ;;
    rs) type+=" (reset to no color)" ;;
    sg) type+=" (set-group-ID)" ;;
    so) type+=" (socket)" ;;
    st) type+=" (sticky directory)" ;;
    su) type+=" (set-user-ID)" ;;
    tw) type+=" (sticky and other-writable directory)" ;;
    esac

    # Separate each color with a newline.
    if [[ $color_prev ]] && [[ $color != $color_prev ]]; then
        echo
    fi

    printf "\e[%sm%s\e[m " "$color" "$type"

    # For next loop
    color_prev="$color"
done
echo

デフォルト設定での出力:

gnome-terminalのスクリーンショット

私のセットアップでの出力(カスタムdircolorsとカスタムSolarized端末テーマ):

gnome-terminalのスクリーンショット

私から説明を得たdircolors -pman dir_colors、そして私自身の研究とのギャップを埋め。

色と説明は14.04〜17.10で同じです。


rs手段RESETmh手段MULTIHARDLINKca手段CAPABILITYなどをどのように知りましたか?
フレドリックガウス

@FredrickGauss答えで書いたように、私はrunningから説明を得ましたdircolors -p
-wjandrea

dircolors -prsRESET 0#「通常の」色にリセットされるとは言いません。
フレドリックガウス

@FredrickGauss明示的にではありませんが、「RESET」は「rs」と省略できる唯一のものであり、色(0)が一致します。
-wjandrea

18

ここでの回答には、Ubuntuの最新バージョンの256色オプションは含まれていません。私は色が足りないので(いくつかの色はお互いの近くで問題を起こします)、黒のデフォルトの青いディレクトリは読みにくいです。以下は、それを変えるための私の研究です。

入力dircolors -p |lessして、現在のカラーコードを表示します。

デフォルトの.bashrcは、システムカラーコードを利用するだけでなく、〜/ .dircolorsの1つも利用するように既に構成されているので、dircolorsの出力を.dircolorにダンプします。 dircolors -p > ~/.dircolors

代替案:seebiのソーラープロジェクトから、非常によく似た256色のdircolorsを選択します。

このカラーテストスクリプト取得し、コマンドで実行して、colortest -wすべての色を一度に表示できるようにします。色を選択してください。オレンジ#208が好きです。それをテキストの色にしたいので、拡張カラーコードに関するこの情報を使用して、それを適用できます。

だから、あなたは色を持っている、今は何。まず、文字列を作成する必要があります。

最初の番号は属性コードで、ほとんどの場合00ですが、点滅させたい場合は05に移動します。

属性コードを選択してください:00 =なし01 =太字04 =アンダースコア05 =点滅07 =反転08 =非表示

次に;38;5;、属性コードに追加を選択して、00; 38; 5;を取得するテキストの色を示します。その後、色を追加します。私は208を選んだので、私は得る00;38;5;208

背景も配置したい場合は、colortestスクリプトで別の色(56としましょう)を選択;48;5;し、背景に追加し、色に56を追加して、合計文字列を取得します00;38;5;208;48;5;56

それで、あなたはそれを手に入れました、あなたはそれで何をしますか?

vim ~/.dircolors そして、「00; 38; 5; 208」の上で決定した文字列に変更したいセクション(私にとってはDIR)を見つけます。

これはすぐには適用されません。設定を読み込む必要があります。使用dircolors ~/.dircolorsあなたのLS_COLORS変数を設定するには、getコードに。ターミナルセッションに貼り付けるか、ターミナルを閉じて再度開くことができます。それをファイルにパイプして、シェルスクリプトとして実行することもできます。

この同じ手順を16色で実行できます。特別な; 38; 5や; 48; 5のものは必要ありません。数字を文字列に投げて、シンプルさを楽しんでください。

これに関するメモとコードを提供してくれたDanseebiに感謝します。


256色がxterm互換端末でのみ機能するかどうかを確認してください。したがって、256色はKonsoleでは機能しませんが、xtermおよびrxvt-unicodeでは機能します。
DKボーズ

1
Konsoleは独自の処理を行います。素敵な配色については、draculatheme.com / konsoleまたはtechoverflow.net/2013/11/08/installing-konsole-solarized-themeご覧ください。
フリッカーフライ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.