Bash shell warna pada Mac?

8

Bagaimana Anda bisa membuat bash shell daftar file yang dapat dieksekusi dalam warna yang berbeda dari file yang tidak dapat dieksekusi?

Saya sudah mencoba mengedit ~/.bashrcmengandung baris berikut (jika tidak, kosong):

 LS_OPTIONS='--color=auto'

Tapi itu tidak berhasil. Apa yang saya lakukan salah? Saya sedang mengerjakan Mac OS X.

AP257
sumber

Jawaban:

7

Untuk mengaktifkan keluaran warna dari lsperintah tanpa harus membuat alias lsatau mengunduh perangkat lunak tambahan, tambahkan yang berikut ke Anda ~/.bash_profile:

# Terminal colours
export CLICOLOR=1
export LSCOLORS=ExFxCxDxBxegedabagacad

Jika Anda tidak menyukai warna-warna itu, Anda dapat menggunakan penghasil warna ls ini untuk menyesuaikan daftar warna yang Anda sukai.

Anda harus melakukan:

source ~/.bash_profile

Setelah melakukan perubahan apa pun agar diterapkan di shell Anda yang ada.

Ian C.
sumber
tidak, sama sekali tidak membantu
holms
6

Masalahnya adalah bahwa OS X tidak memiliki GNU ls; sementara itu lstidak mendukung pewarnaan nama file, itu hanya dapat melakukannya dengan jenis file (file, direktori, symlink, file perangkat khusus, fifo, socket ...). Instal coreutilsdari Fink / MacPorts / HomeBrew, lalu gunakan alias ls='gls --color=auto'.

geekosaurus
sumber
Terima kasih. Saya telah menginstal coreutilsdari MacPorts. Haruskah aliassalurannya masuk ~/.bashrc? Di situlah saya meletakkannya, tetapi saya tidak melihat perbedaan.
AP257
~/.bash_aliasesmungkin bekerja lebih baik. Saya juga menemukan bahwa saya perlu berlari eval $(gdircolors -s)untuk mengaturnya.
geekosaur
@ AP257: Di Mac saya, saya memasukkan alias ke .bash_profile
Hai Vu
@ Hai Vu: Itu hanya berfungsi jika Anda tidak pernah menggunakan subshell.
geekosaur
@geekosaur gdircolors: invalid option -- 's'maksudmu --sh?
Anentropic
6

BSD bekerja sedikit berbeda

alias ls='ls -G'

harus bekerja.

Dan ini bukan pewarnaan bash, ini adalah lspewarnaan. Ketika bash membuat daftar file (coba echo *di direktori) tidak ada cara untuk mewarnai. Mengetik ls -Gakan bekerja di shell apa pun, meskipun shell (seperti bash) yang memiliki alias membuatnya lebih mudah.

Homolka yang kaya
sumber
6

Di Mac, Anda perlu menggunakan

export CLICOLOR=1

Saya meletakkannya di .bash_profile. Namun, saya lebih suka solusi Rich Homolka daripada alias ls dengan -G flag. Jika Anda ingin menyesuaikan warna:

man ls

dan cari LSCOLORS

Hai Vu
sumber
1

Pertimbangkan untuk menginstal brewdan menggunakan versi ls GNU dan alat lainnya.

Instal XCode dari AppStore.

Instal Homebrew ...

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Instal coreutils ...

brew install coreutils

Tambahkan ke bagian bawah .profile...

export PATH="/usr/local/opt/coreutils/libexec/gnubin:$PATH"
export MANPATH="/usr/local/opt/coreutils/libexec/gnuman:$MANPATH"

Saya alias lsdi saya .profileuntuk melakukan warna untuk semuanya dan jalan pintas untuk daftar lengkap.

alias ls='ls --color'
alias l='ls -lah'
# -l     use a long listing format
# -a     do not ignore entries starting with .
# -h     with -l and/or -s, print human readable sizes (e.g., 1K 234M 2G)

Ada banyak LS_COLORSopsi di github .

Paul J
sumber
-1

bashhanya sebuah shell, tidak mencantumkan file. Ini menjalankan perintah, seperti ls.

The --colorpilihan (dan pilihan panjang pada umumnya) adalah khusus untuk versi lsdari GNU coreutils , yang datang dengan sebagian besar distribusi Linux. Di sisi lain, Mac OS X memiliki akar BSD dan menggunakan versi BSD lsyang tidak mendukung pewarnaan.

pengguna1686
sumber
1
-1: Ini tidak mendukung pewarnaan, hanya dengan bendera baris perintah yang berbeda: -G.
Wuffers