Ubuntuのls
コマンドのさまざまな色は何を意味しますか?たとえば、フォルダの1つにls
コマンドを入力すると、ファイルの1つが薄緑色になり、他のファイル(フォルダ)が緑色にハイライトされて青色になります。
これらの色の意味は何ですか?また、すべての色に関するマニュアルはありますか?
ご参考までに:
色をオフにするには、.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
と入力してください。$LS_COLORS
変数を調べることで、ls
が使用する色を見つけることができます。
さらに、ファイルは属性によって色分けされます。
aac、au、flac、mid、midi、mka、mp3、mpc、ogg、ra、wav、axa、oga、spx、xspf。
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。
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つの部分で構成されています。
セミコロンの前の最初の部分はテキストスタイルを表します。
2番目と3番目の部分は色と背景色です。
左から始まると仮定すると、各部分は省略できます。つまり、「01」は太字を意味し、「01; 31」は太字と赤を意味します。そして、命令を\33[
でエスケープし、m
で終了することにより、ターミナルをカラーで印刷します。 33、または16進数の1Bは、ASCII記号「ESCAPE」(ASCII文字セットの特殊文字)です。例:
"\33[1;31mHello World\33[m"
「Hello World」を明るい赤で印刷します。
引数--color=auto
(Ubuntuではls
はls --color=auto
のエイリアスです)を指定したコマンドls
は、すべてのファイル名を調べ、最初にExecutableなどの異なるタイプを一致させようとします、パイプなど。次に、*。wavのような正規表現との一致を試み、結果のファイル名を、bashのこれらの色を変更する指示で囲んで出力します。
コマンドラインから dircolors
(echo $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
および.mp3
がbold Magenta
に設定されます。 .bashrc
ファイルに保存すると、永続的になります。
これは Karthick87の答え に展開されます。
ls -l
の出力の許可)#!/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
デフォルト設定での出力:
私のセットアップでの出力(カスタムdircolorsとカスタムSolarized端末テーマ):
dircolors -p
とman dir_colors
から説明を得て、自分の研究でギャップを埋めました。
色と説明は14.04〜17.10で同じです。
ここでの回答には、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のものは必要ありません。数字を文字列に投げて、シンプルさを楽しんでください。