Bagaimana cara mengubah warna untuk direktori dengan ls di konsol?


166

Di konsol saya, warna untuk direktori sangat biru, sehingga sulit dibaca di latar belakang yang gelap.

Bagaimana cara mengubah definisi warna ls?

Jawaban:


250

Untuk mengubah warna direktori Anda, buka ~/.bashrcfile Anda dengan editor Anda

nano ~/.bashrc

dan buat entri berikut di akhir file:

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

Beberapa pilihan warna yang bagus (dalam hal 0;35ini ungu) adalah:

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

Angka pertama adalah gaya (1 = tebal), diikuti dengan tanda titik koma, dan kemudian jumlah sebenarnya dari warna, gaya yang mungkin (efek) adalah:

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)

Latar belakang yang mungkin:

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

Semua warna yang mungkin:

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

Ini bahkan dapat digabungkan, sehingga parameter seperti:

di=1;4;31;42

dalam variabel LS_COLORS Anda akan membuat direktori muncul dalam huruf tebal yang digarisbawahi dengan latar belakang hijau!

Untuk menguji semua warna dan gaya ini di terminal Anda, Anda dapat menggunakan salah satu dari:

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

Anda juga dapat mengubah jenis file lainnya saat menggunakan perintah ls dengan mendefinisikan masing-masing jenis dengan:

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

Daftar yang lebih lengkap tersedia di Bigsoft - Mengkonfigurasi LS_COLORS .

Pada beberapa distribusi, Anda mungkin juga ingin mengubah warna latar belakang untuk ow"( OTHER_WRITABLE) yang standarnya tidak dapat dibaca" misalnya menjadi teks biru yang tidak tebal pada latar belakang hijau.

Anda dapat menggunakan misalnya LS_COLORS="$LS_COLORS:di=1;33"di akhir .bashrcfile Anda , untuk mendapatkan teks oranye tebal yang bagus dan dapat dibaca dengan latar belakang hitam.

Setelah Anda mengubah file .bashrc Anda, untuk menerapkan perubahan, Anda harus memulai ulang shell atau menjalankannya source ~/.bashrc.

Catatan: Anda dapat menggabungkan lebih banyak perintah dengan titik dua , misalnya

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

Sumber:


3
Ini bekerja dengan baik, terima kasih. Saya pribadi merasa lebih baik untuk mengatur LS_COLORS=$LS_COLORS:'di=1;44:' ; export LS_COLORSyang menampilkan direktori dalam huruf tebal putih di atas latar belakang biru.
isapir

2
Ini sepertinya tidak berhasil untuk saya. Sepertinya ada file konfigurasi lain di suatu tempat yang menimpa .bashrc- beberapa warna berfungsi, yang lain terlihat berbeda. Folder berwarna hijau misalnya, bukan biru, tetapi file terlihat dengan benar. Apa itu?
Nearoo

1
periksa apakah Anda menggunakan bash atau sh, dan juga periksa file .profile Anda di direktori home Anda. dan global/etc/bash.bashrc
rubo77

5
Anda mungkin ingin mengubah dir yang dapat ditulisi lainnya dan lengket dir yang dapat ditulis lainnya. Cobalah sesuatu yang lebih sepertiLS_COLORS=$LS_COLORS:'tw=01;35:ow=01;35:' ; export LS_COLORS
Charles L.

2
yang bekerja untuk ls, tetapi bagaimana cara mengubah warna dir aku di, sebelum # di cmd prompt?
Gaia

31

Sangat sederhana. Tambahkan tiga baris ini ke ~ / .bashrc

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

Jika Anda ingin menerapkan perubahan dalam sesi bash berjalan, jalankan:

source ~/.bashrc

4
Ini adalah satu-satunya hal yang berhasil untuk saya.
solalito

Ini bekerja untuk saya tetapi saya harus menjalankan source ~/.bashrcsetiap kali saya masuk. Apakah ada cara untuk memperbaikinya?
Miguel

@Miguel: apa yang Anda dapatkan saat mengetik echo $SHELLdari prompt cmd? Aku yakin itu BUKAN /bin/bash. Anda dapat menemukan Anda aktif .profileatau .loginmenambahkan source $HOME/.bashrcdi bagian akhir. Semoga berhasil.
shellter

4

LS_COLORS

Ini adalah kumpulan ekstensi: pemetaan warna, cocok untuk digunakan sebagai variabel lingkungan LS COLORS Anda.


1
menarik tetapi saya tidak bisa membuat ini bekerja di ksh.
Herman Toothrot

4

Lebih jauh ke jawaban Hegazi, Anda sebenarnya dapat mengontrol warna direktori, dan banyak warna lain menggunakan perintah dircolors. Anda dapat membuat file konfigurasi yang didokumentasikan dengan baik.

Anda dapat membuat file .dircolor di direktori home Anda sebagai berikut:

dircolors -p > ~/.dircolors

Kemudian di file ~ / .bashrc Anda tambahkan baris

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

Ini akan membuat variabel $ LS_COLORS untuk bash. Bendera -c akan ditetapkan jika untuk csh. Itu juga menandai perintah ls untuk ditampilkan dalam warna.

Edit nilai atribut DIR seperti di atas dalam warna file ~ / .dircolor untuk mengubah warna direktori (atau tipe file lain yang disertakan untuk warna lain). Anda juga dapat mengubah warna file tertentu, atau menentukan warna Anda sendiri.


2

The --color=autopilihan tidak bekerja untuk saya menggunakan iTerm2 pada Mac saya. The -Gpilihan bekerja sekalipun. Saya memasukkan alias berikut ini ke ~/.profiledirektori saya dan sekarang berwarna dan menambahkan trailing /:

alias ls='ls -F -G'

Itu karena utils BSD dan bukan coreutils :)
Meeh

0

Ini adalah pendekatan saya untuk perintah ls dengan opsi yang umum digunakan:

tambahkan baris berikut ke dalam file bernama ~ / .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"

tambahkan baris berikut ke ~ / .bashrc

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

4
Anda hanya perlu menambahkan --color=autoke lsalias - alias lain dengan mewarisi pengaturan
Stuart Cardall
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.