කොන්සෝලය තුළ ls සහිත නාමාවලි සඳහා වර්ණය වෙනස් කරන්නේ කෙසේද?


198

මගේ කොන්සෝලය මත ඩිරෙක්ටරි සඳහා වර්ණය එතරම් නිල් පාට බැවින් අඳුරු පසුබිමක කියවීම අපහසුය.

වර්ණ අර්ථ දැක්වීම් වෙනස් කරන්නේ කෙසේද ls?

Answers:


281

ඔබගේ නාමාවලි වර්ණ වෙනස් කිරීමට, ඔබේ ~/.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

හැකි සියලුම වර්ණ:

30  = black
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

වඩාත් සම්පූර්ණ ලැයිස්තුවක් බිග්සොෆ්ට් වෙතින් ලබා ගත හැකිය - LS_COLORS වින්‍යාස කිරීම .

සමහර බෙදාහැරීම් වලදී, ow"( OTHER_WRITABLE) පෙරනිමිය කියවිය නොහැකි" පසුබිම් වර්ණය වෙනස් කිරීමට ඔබට අවශ්‍ය විය හැකිය, උදාහරණයක් ලෙස හරිත පසුබිමෙහි තද නොවන නිල් පා text ය.

කළු පසුබිම මත කියවිය හැකි තද පැහැති තැඹිලි පා text යක් ලබා ගැනීම සඳහා 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- සමහර වර්ණ ක්‍රියා කරයි, අනෙක් ඒවා වෙනස් ලෙස පෙනේ. ෆෝල්ඩර නිල් වෙනුවට කොළ පාටයි, නමුත් ගොනු නිවැරදිව පෙනේ. එය කුමක් විය හැකිද?
නීරූ

1
ඔබ bash හෝ sh භාවිතා කරන්නේ දැයි පරීක්ෂා කරන්න, ඔබේ නිවසේ නාමාවලියෙහි ඇති .profile ගොනුවද පරීක්ෂා කරන්න. සහ ගෝලීය/etc/bash.bashrc
rubo77

5
ඔබට ලිවිය හැකි හා ඇලෙන සුළු වෙනත් ලිවිය හැකි ඩිර්ස් වෙනස් කිරීමට ඔබට අවශ්‍ය විය හැකිය. තවත් දෙයක් උත්සාහ කරන්නLS_COLORS=$LS_COLORS:'tw=01;35:ow=01;35:' ; export LS_COLORS
චාල්ස් එල්.

2
එය ls සඳහා වැඩ කළ නමුත් cmd විමසුමේ # ට පෙර මා සිටින dir වල වර්ණය වෙනස් කරන්නේ කෙසේද?
ගයියා

34

හරිම සරලයි. මෙම පේළි තුන ~ / .bashrc වෙත එක් කරන්න

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

ධාවනය වන බාෂ් සැසියක වෙනස්කම් යෙදීමට ඔබට අවශ්‍ය නම්, ධාවනය කරන්න:

source ~/.bashrc

4
මට වැඩ කළ එකම දෙය මෙයයි.
solalito

එය මට වැඩ කළ නමුත් මම source ~/.bashrcලොග් වූ සෑම අවස්ථාවකම ධාවනය කළ යුතුය . මෙය නිවැරදි කිරීමට ක්‍රමයක් තිබේද?
මිගෙල්

1
Ig මිගෙල්: ඔබ cmd විමසුමෙන් ටයිප් කළ විට ඔබට echo $SHELLලැබෙන්නේ කුමක්ද? මම හිතන්නේ එය එසේ නොවේ /bin/bash. ඔබ ඔබේ සක්රීය සොයා ගත හැකි .profileහෝ .loginහා එකතු source $HOME/.bashrcඅවසානයේ. වාසනාව.
ෂෙල්ටර්

5

LS_COLORS

මෙය දිගුවේ එකතුවකි: වර්ණ සිතියම්, ඔබේ LS COLORS පරිසර විචල්‍යය ලෙස භාවිතා කිරීමට සුදුසුය.


1
සිත්ගන්නාසුළු නමුත් මට මෙම කාර්යය ksh වලින් කළ නොහැක.
හර්මන් ටූට්‍රොට්

4

හෙගාසිගේ පිළිතුරට අමතරව, ඔබට ඇත්ත වශයෙන්ම ඩිරෙක්ටරි වර්ණය පාලනය කළ හැකිය, සහ වෙනත් වර්ණ රාශියක් dircolors විධානය භාවිතා කරයි. හොඳින් ලේඛනගත කර ඇති වින්‍යාස ගොනුවක් ඔබට නිර්මාණය කළ හැකිය.

පහත දැක්වෙන පරිදි ඔබේ නිවාස නාමාවලියෙහි .dircolor ගොනුවක් සෑදිය හැකිය:

dircolors -p > ~/.dircolors

ඔබේ ~ / .bashrc ගොනුවේ පේළි එක් කරන්න

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

මෙය bash සඳහා $ LS_COLORS විචල්‍යයක් නිර්මාණය කරයි. Csh සඳහා නම් -c ධජය සකසනු ඇත. එය වර්ණයෙන් පෙන්වීමට ls විධානය සලකුණු කරයි.

නාමාවලියෙහි වර්ණය වෙනස් කිරීම සඳහා (/ වෙනත් වර්ණ සඳහා ඇතුළත් කර ඇති ගොනු වර්ග වලින් එකක්) ඉහත පරිදි D / .dircolor ගොනු වර්ණයෙන් DIR ගුණාංගයේ අගය සංස්කරණය කරන්න. ඔබට විශේෂිත ලිපිගොනු වල වර්ණ වෙනස් කළ හැකිය, නැතහොත් ඔබේම දෑ නිර්වචනය කරන්න.


2

මෙම --color=autoවිකල්පය මගේ මැක් මත iTerm2 භාවිතා මට වැඩ කරන්නේ නැහැ. මෙම -Gවිකල්පය නමුත් ක්රියා කරයි. මම පහත දැක්වෙන අන්වර්ථය මගේ ~/.profileසහ දැන් නාමාවලි වල වර්ණ ගැන්වූ අතර පසුපසින් එකතු කර ඇත /:

alias ls='ls -F -G'

එය නිසා එය විසින් BSD utils නොව coreutils :) තියෙන්නේ
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

6
ඔබ පමණක් එකතු කිරීමට අවශ්ය --color=autoවෙත lsඋරුම සමග අනෙක් යොමුවීම් සිටුවම - හෙවත්
ස්ටුවර්ට් Cardall

0

ක්ෂණික විසඳුම සඳහා, --color=autoකිසිදු වෙනසක් සිදු නොවනු ඇත. ඔබට අවශ්‍ය විකල්පයයි --color=never. cat(හෝ more) හරහා ප්‍රතිදානය නල මාර්ගයෙන් වර්ණ ගැන්වීම ඉවත් කළ හැකි අතර ටයිප් කිරීමට ඉක්මන් වේ:

ls -al | cat

(විහිළුවක අදහස කවුදැයි මම නොදනිමි, ලා කොළ පැහැයට එරෙහිව ලා නිල් පැහැය පෙරනිමියෙන් ලබා දීමයි.)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.