コンソールでlsを使用してディレクトリの色を変更するにはどうすればよいですか?


166

私のコンソールでは、ディレクトリの色が非常に青く、暗い背景では読みにくいです。

の色の定義を変更するにはどうすればよいlsですか?

回答:


250

ディレクトリの色を変更するに~/.bashrcは、エディターでファイルを開きます

nano ~/.bashrc

ファイルの最後に次のエントリを作成します。

LS_COLORS=$LS_COLORS:'di=0;35:' ; export LS_COLORS

いくつかの素敵な色の選択肢(この場合0;35は紫色です)は次のとおりです。

Blue = 34
Green = 32
Light Green = 1;32
Cyan = 36
Red = 31
Purple = 35
Brown = 33
Yellow = 1;33
Bold White = 1;37
Light Grey = 0;37
Black = 30
Dark Grey= 1;30

最初の数値はスタイル(1 =太字)で、その後にセミコロンが続き、次に実際の色の数、可能なスタイル(効果)は次のとおりです。

0   = default colour
1   = bold
4   = underlined
5   = flashing text (disabled on some terminals)
7   = reverse field (exchange foreground and background color)
8   = concealed (invisible)

可能な背景:

40  = black background
41  = red background
42  = green background
43  = orange background
44  = blue background
45  = purple background
46  = cyan background
47  = grey background
100 = dark grey background
101 = light red background
102 = light green background
103 = yellow background
104 = light blue background
105 = light purple background
106 = turquoise background
107 = white background

可能なすべての色:

31  = red
32  = green
33  = orange
34  = blue
35  = purple
36  = cyan
37  = grey
90  = dark grey
91  = light red
92  = light green
93  = yellow
94  = light blue
95  = light purple
96  = turquoise
97  = white

これらを組み合わせて、次のようなパラメーターを作成することもできます。

di=1;4;31;42

LS_COLORS変数を使用すると、ディレクトリが緑色の背景で太字の下線付きの赤いテキストで表示されます。

端末でこれらすべての色とスタイルをテストするには、次のいずれかを使用できます。

for i in 00{2..8} {0{3,4,9},10}{0..7}
do echo -e "$i \e[0;${i}mSubdermatoglyphic text\e[00m  \e[1;${i}mSubdermatoglyphic text\e[00m"
done

for i in 00{2..8} {0{3,4,9},10}{0..7}
do for j in 0 1
   do echo -e "$j;$i \e[$j;${i}mSubdermatoglyphic text\e[00m"
   done
done

lsコマンドを使用するときに、次のように各種類を定義することにより、他の種類のファイルを変更することもできます。

bd = (BLOCK, BLK)   Block device (buffered) special file
cd = (CHAR, CHR)    Character device (unbuffered) special file
di = (DIR)  Directory
do = (DOOR) [Door][1]
ex = (EXEC) Executable file (ie. has 'x' set in permissions)
fi = (FILE) Normal file
ln = (SYMLINK, LINK, LNK)   Symbolic link. If you set this to ‘target’ instead of a numerical value, the color is as for the file pointed to.
mi = (MISSING)  Non-existent file pointed to by a symbolic link (visible when you type ls -l)
no = (NORMAL, NORM) Normal (non-filename) text. Global default, although everything should be something
or = (ORPHAN)   Symbolic link pointing to an orphaned non-existent file
ow = (OTHER_WRITABLE)   Directory that is other-writable (o+w) and not sticky
pi = (FIFO, PIPE)   Named pipe (fifo file)
sg = (SETGID)   File that is setgid (g+s)
so = (SOCK) Socket file
st = (STICKY)   Directory with the sticky bit set (+t) and not other-writable
su = (SETUID)   File that is setuid (u+s)
tw = (STICKY_OTHER_WRITABLE)    Directory that is sticky and other-writable (+t,o+w)
*.extension =   Every file using this extension e.g. *.rpm = files with the ending .rpm

より完全なリストは、Bigsoft-Configuring LS_COLORSにあります。

一部のディストリビューションでは、ow「(OTHER_WRITABLE)デフォルトが読み取り不可」の背景色を、たとえば緑の背景に太字でない青のテキストに変更することもできます。

たとえばLS_COLORS="$LS_COLORS:di=1;33".bashrcファイルの最後に使用すると、黒の背景に読みやすい太字のオレンジ色のテキストを取得できます。

.bashrcファイルを変更した後、変更を有効にするには、シェルを再起動するか、を実行する必要がありますsource ~/.bashrc

注:より多くのコマンドをコロンで組み合わせることができます、例えば

LS_COLORS=$LS_COLORS:'di=1;33:ln=36' ; export LS_COLORS; ls

ソース:


3
これはうまくいきます、ありがとう。個人的にLS_COLORS=$LS_COLORS:'di=1;44:' ; export LS_COLORSは、ディレクトリを青い背景上に太字の白で表示するように設定する方が良いと思いました。
-isapir

2
これは私にはうまくいかないようです。上書きする別の設定ファイルがあるように見えます.bashrc-一部の色は機能し、他の色は異なって見えます。たとえば、フォルダは青ではなく緑ですが、ファイルは正しく見えます。どうなり得るか?
-Nearoo

1
bashまたはshを使用しているかどうかを確認し、ホームディレクトリの.profileファイルも確認します。およびグローバル/etc/bash.bashrc
-rubo77

5
おそらく、他の書き込み可能およびスティッキーな他の書き込み可能ディレクトリを変更する必要があります。もっと似たようなものを試してくださいLS_COLORS=$LS_COLORS:'tw=01;35:ow=01;35:' ; export LS_COLORS
チャールズL.

2
それはlsでうまくいきましたが、cmdプロンプトの#の前に、私がいるディレクトリの色をどのように変更しますか?
ガイア

31

とても簡単です。これらの3行を〜/ .bashrcに追加します

$ vi ~/.bashrc
export LS_OPTIONS='--color=auto'
eval "$(dircolors -b)"
alias ls='ls $LS_OPTIONS'

実行中のbashセッションで変更を適用する場合は、次を実行します。

source ~/.bashrc

4
これは私のために働いた唯一のものです。
ソラリト

私にとってはうまくいきましたが、source ~/.bashrcログインするたびに実行する必要があります。これを修正する方法はありますか?
ミゲル

@Miguel:echo $SHELLcmdプロンプトから入力すると何が得られますか?そうではないに違いない/bin/bash。あなたのアクティブを見つける.profileか、最後に.login追加することができますsource $HOME/.bashrc。幸運を。
シェルター

4

LS_COLORS

これはextension:colorマッピングのコレクションであり、LS COLORS環境変数として使用するのに適しています。


1
面白いですが、kshでこの作業を行うことはできません。
ハーマン歯磨き

4

Hegaziの答えに加えて、dircolorsコマンドを使用して、ディレクトリの色や他の多くの色を実際に制御できます。十分に文書化された構成ファイルを作成できます。

次のように、ホームディレクトリに.dircolorファイルを作成できます。

dircolors -p > ~/.dircolors

次に〜/ .bashrcファイルに次の行を追加します

eval "`dircolors -b ~/.dircolors`"
alias ls='ls --color=auto'

これにより、bash用の$ LS_COLORS変数が作成されます。cshの場合、-cフラグが設定されます。また、カラーで表示するようにlsコマンドにフラグを立てます。

〜/ .dircolorファイルの色で上記のようにDIR属性の値を編集して、ディレクトリの色(または他の色に含まれる他のファイルタイプ)を変更します。特定のファイルの色を変更したり、独自のファイルを定義することもできます。


2

--color=autoMacでiTerm2を使用している場合、このオプションは機能しません。-Gオプションはも動作します。次のエイリアスを自分の~/.profileディレクトリに配置し、ディレクトリを色分けして末尾に/追加しました:

alias ls='ls -F -G'

それは、coreutilsではなくBSD utilsだからです:)
Meeh

0

これは、よく使用されるオプションを使用したlsコマンドの私のアプローチです。

〜/ .aliasというファイルに次の行を追加します

alias ll='ls -lhF --color=auto'
alias llt='ls -lht --color=auto'
alias lla='ls -alF --color=auto'
alias la='ls -A --color=auto'
alias l='ls -CF --color=auto'
alias ls="ls --color=auto"

〜/ .bashrcに次の行を追加します

if [ -f ~/.alias ]; then
    . ~/.alias
fi

4
あなただけ--color=autolsエイリアスに追加する必要があります
スチュアートCardall
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.