Ubuntuのls
コマンドの色の違いは何を意味しているのでしょうか?例えば、自分のフォルダの一つでls
コマンドを入力すると、片方のファイルは薄緑色で、もう片方(フォルダ)は青色で、緑色のハイライトで表示されます。
これらの色は何を意味しているのでしょうか?また、すべての色に関するマニュアルはありますか?
参考までに
色をオフにするには、.bashrc
の以下の行をコメントアウトする必要があります。
# ls のカラーサポートを有効にし、便利なエイリアスを追加する。
#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の色の意味を確認したい場合は、以下のコードをターミナルにコピー・ペーストしてください。
<!-- language: 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:su:set uid;sg:set gid;tw:sticky other writable;ow:other writable;st:sticky;ex:executable;"|sed -e 's/:/="/g; s/quot;/" \n/g')
{
IFS=:
for i in $LS_COLORS
する
echo -e "◆e[${i#*=}m$( x=${i%=*}; [ "${!x}" ] && echo "${!x}" || echo "$x" )◆e[m";
完了
}
出力: altテキスト]1
**altテキスト]1を出力する。
man dir_colors
と入力してください。 LS_COLORS変数を見れば、
LS` がどのような色を使っているかを知ることができる:
さらに、ファイルは属性によって色分けされます:
altテキスト]1。
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.
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つの部分からなる:
セミコ ロ ンの前の最初の部分はテ キ ス ト ス タ イ ルを表 し ます。
2番目と3番目は色と背景色です:
例えば、"01"は太字、"01;31"は太字と赤を意味する。そして、命令を33[
]でエスケープし、m
で終わらせることで、ターミナルにカラーで印刷させることができる。33、つまり16進数で1BはASCII記号 "ESCAPE"(ASCII文字セットの特殊文字)です。例
"\33[1;31mHello World\33[m"
Hello World"を明るい赤で表示します。
引数 --color=auto
を指定したコマンド ls
(Ubuntuでは、ls
は ls --color=auto
のエイリアスです)は、すべてのファイル名を調べ、まず Executable や Pipe などの異なるタイプとのマッチングを試みます。次に、*.wavのような正規表現とのマッチを試み、その結果のファイル名をbash用の色変更命令で囲んで表示する。
コマンドラインから dircolors
(echo $LS_COLORS
も使えます) と入力すると、たくさんのファイルタイプのコードと色のリストが1行で表示されます。dircolors --print-database` は1行ずつ表示します。ここに簡単なリストがある(重要なものだけ抜粋した)。一番下に、各行の末尾にある異なるコードが何を表しているかについての説明があります:
<pre>; 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)でスティッキーでないdir 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 </pre>;
00=なし 01=太字 04=アンダースコア 05=点滅 07=反転 08=隠蔽
。30=黒 31=赤 32=緑 33=黄 34=青 35=マゼンタ 36=シアン 37=白
。40=黒 41=赤 42=緑 43=黄 44=青 45=マゼンタ 46=シアン 47=白
。ファイルの色を設定する方法の例です:
export LS_COLORS=$LS_COLORS:"*.ogg=01;35":"*.mp3=01;35"
これは *.ogg
と .mp3
を bold magenta
に設定します。これを.bashrc
ファイルに記述すれば、永続的な設定になる。
これはKarthick87の回答を拡張します。
---。
- Uncolored(white):ファイルまたは非ファイル名テキスト(例:. ls -l
の出力での権限)。
-太字:ディレクトリ。
-大胆なシアン:シンボリックリンク。
-太字緑:実行可能ファイル。
-太字:アーカイブファイル。
-大胆なマゼンタ:画像ファイル、ビデオ、グラフィックなど. またはドアまたはソケット。
- Cyan :オーディオファイル。
-背景が黒い黄色:パイプ(別名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
デフォルトの設定で出力:
。。
セットアップによる出力(カスタムダーカラーとカスタムソーラー化ターミナルテーマ):
。。
「dircolors -p」と「man dir_colors」から説明を得て、自分の研究でギャップを埋めました。
色と説明は14.04から17.10まで同じです。
ここでの回答には、Ubuntuの最新バージョンの256色オプションが含まれていません。 私は色が不足しています(一部の色は互いに近くに問題を引き起こします)ので、黒のデフォルトの青いディレクトリは、私が読むのが本当に難しいです。 以下は、それを変えるための私の研究です。
「dircolors -p | less」と入力して、現在のカラーコードを確認します。
デフォルトの.bashrcは、システムのカラーコードだけでなく〜/ .dircolorsの1つでも使用できるようにすでに構成されているため、このコマンドを使用してdircolors出力を.dircolorにダンプできます。
dircolors -p> 〜/ .dircolors
。
代替案: seebi's solarizedプロジェクトから非常によく似た256色のダーカラーを拾います。
この[colortest script][2]をつかみ、コマンド colortest -w
で実行して、すべての色を一度に表示できるようにします。 色を選択します。 オレンジ#208が好きです。 テキストの色にしたいので、拡張カラーコードでこの情報を使用して、それを適用できます。
だからあなたは色を持っています、今何。 まず、文字列を作成する必要があります。
最初の番号は属性コード、おそらく00ですが、点滅させる場合は05:を使用します。
属性コードを選択します:00 =なし01 =太字04 =アンダースコア05 =点滅07 =逆08 =隠 ⁇ 。
次に、その属性コードに「; 38; 5;」を追加して、テキストの色を示し、00; 38; 5を取得します。次に、色を追加します。 208を選んだので、「00; 38; 5; 208」になります。
背景も配置する場合は、最も粗いスクリプトで別の色(56としましょう)を選択し、背景には ; 48; 5;
を追加し、色には56を選択して 00; 38; 5; 208; 48; 5; 56
。
だから今あなたはそれを持っています、あなたはそれをどうしますか?
vim〜/ .dircolors
と、変更したいセクション(私にとってはDIR)を "00; 38; 5; 208"の上で決定した文字列を見つけます。
これはすぐには適用されず、構成をロードする必要があります。 getコードに「dircolors〜/ .dircolors」を使用して、LS_COLORS変数を設定します。 ターミナルセッションに貼り付けるか、ターミナルを閉じて再度開くことができます。 これをファイルにパイプして、シェルスクリプトとして実行することもできます。
これと同じ手順を16色で実行できます。 特別な; 38; 5または; 48; 5のものは必要ありません。 数字を文字列にトスして、シンプルさを楽しんでください。
これに関するメモとコードをくれたDanとseebiに感謝します。
[2]:http://www.vim.org/scripts/script.php?script_id = 1349。