web-dev-qa-db-ja.com

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

Ubuntuのlsコマンドのさまざまな色は何を意味しますか?たとえば、フォルダの1つにlsコマンドを入力すると、ファイルの1つが薄緑色になり、他のファイル(フォルダ)が緑色にハイライトされて青色になります。

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

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

ご参考までに:

  • 色をオフにするには、.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       
    } 
    

    出力:
    alt text

注:

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

$LS_COLORS変数を調べることで、lsが使用する色を見つけることができます。

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

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

alt text


  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、 Zoo、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」を明るい赤で印刷します。

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

97
Stefano Palazzo

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

 NORMAL 00#すべてが何かであるべきですが、グローバルなデフォルト。
 FILE 00#通常のファイル
 DIR 01; 34#ディレクトリ
 LINK 01; 36#シンボリックリンク。 (これをa 
#数値ではなく 'target'に設定した場合、色は指定されたファイルの色になります。)
 FIFO 40; 33#pipe 
 SOCK 01 ; 35#socket 
 DOOR 01; 35#door 
 BLK 40; 33; 01#ブロックデバイスドライバー
 CHR 40; 33; 01#キャラクターデバイスドライバー
 Orphan 40; 31; 01#存在しないファイル、または統計不可のファイルへのシンボリックリンク
 SETUID 37; 41#setuid(u + s)
 SETGID 30; 43#ファイルis g o + w)and not sticky 
 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および.mp3bold Magentaに設定されます。 .bashrcファイルに保存すると、永続的になります。

27
Rinzwind

これは Karthick87の答え に展開されます。


デフォルト設定で

  • 色なし(白):ファイルまたは非ファイル名テキスト(例:ls -lの出力の許可)
  • 太字の青:ディレクトリ
  • 太字シアン:シンボリックリンク
  • 太字の緑:実行可能ファイル
  • 太字の赤:アーカイブファイル
  • 太字マゼンタ:画像ファイル、ビデオ、グラフィックなど。ordoororsocket
  • シアン:オーディオファイル
  • 背景が黒の黄色:パイプ(別名FIFO)
  • 黒の背景を持つ太字の黄色:ブロックデバイスまたはキャラクターデバイス
  • 黒の背景を持つ太字の赤:孤立したシンボリックリンクまたは欠落ファイル
  • 背景が赤の色なし:ユーザー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 screenshot

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

gnome-terminal screenshot

dircolors -pman dir_colorsから説明を得て、自分の研究でギャップを埋めました。

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

22
wjandrea

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

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

デフォルトの.bashrcは、システムカラーコードだけでなく〜/ .dircolorsの利点を活用するように既に構成されている必要があるため、dircolors出力を.dircolorにダンプして、このコマンドを使用して開始できるようにします。 dircolors -p > ~/.dircolors

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

この colortest script をつかみ、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変数を設定します。ターミナルセッションに貼り付けるか、ターミナルを閉じて再度開くことができます。それをファイルにパイプして、シェルスクリプトとして実行することもできます。

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

Danseebi に感謝します。

18
flickerfly