2009-02-28 81 views
35

當您在bash shell中執行ls時,有時候會有顏色指示不同的資源類型,您可以使用--color參數啓用/控制此選項。你如何確定bash的顏色是什麼意思?

但是,無論是幫助頁,也不是谷歌提供了一個問題的答案:

什麼這些顏色默認顯示,以及如何顯示當前有哪些系統使用?


UPDATE:

感謝大家的答案至今,但更容易挑選贏家,任何人都可以走了一步,並在輸出描述的方法他們適用的顏色。

嗯...我的例子不貼的時候(預覽僅當)的工作,因此,如果您預覽此代碼,它會顯示我的意思......

<ul style="list-style:none; background:black; margin:0;padding:0.5em; width:10em"> 
    <li style="color:blue">directory</li> 
    <li style="color:aqua">symbolic link</li> 
    <li style="color:#A00000;">*.tar files</li> 
    <li style="color:white">...</li> 
</ul> 

感謝。

回答

43

顏色由$LS_COLORS環境變量定義。根據您的發行版,它會在shell啓動時自動生成,使用~/.dircolors/etc/DIR_COLORS

編輯:

要列出顏色的含義,使用這個腳本:

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 
} 
+0

我相信它使用兩者 - 默認設置在DIR_COLORS中,並且〜/ .dir_colors中的任何內容都優先。 – chris 2009-02-28 18:44:38

+1

也許......我不知道Fedora中的其他發行版是在/etc/profile.d/colorls.sh中設置的,它只讀取其中的一個。 – Juliano 2009-02-28 19:00:59

+0

這是一個很好的腳本,但我也希望能夠看到你沒有列出的擴展的顏色。 – 2009-02-28 19:27:33

3

您應該能夠看到/ etc/DIR_COLORS中的映射列表。您可以通過在主目錄中創建.dir_colors來覆蓋它。

3

嘗試 「人5個DIR_COLORS」,看看它是如何設置您的系統上。 Mine沒有/ etc/DIR_COLORS,所以它必須設置在別的地方。

2

谷歌對於LS_COLORS一些有用的鏈接。

編輯:要列出的顏色,這個簡單的bash腳本可以給一個想法:

IFS=: 
set $LS_COLORS 
for C in $* 
do 
    IFS='=' 
    set $C 
    echo -e "\033[$2m$1\033[00m" 
done