Bagaimana saya membuat ls --color = otomatis berfungsi di Mac OS X?

71

Saya mencoba untuk memindahkan konfigurasi bash saya dari Ubuntu ke Mac OS X dan sepertinya ls sedikit berbeda. Misalnya, itu tidak akan menerima --coloropsi.

Bagaimana saya membuatnya bekerja?

cfischer
sumber

Jawaban:

79

lssebenarnya terpisah dari Bash. Mac OS X memiliki versi BSD ls, yang mengharuskan -Gpada baris perintah, atau CLICOLOR(dan mungkin LSCOLORS) di lingkungan.

Lihat man lsuntuk info lebih lanjut.

DoeNietZoMoeilijk
sumber
5
Dito. Saya telah alias ls='ls -G'mengatur .bashrc saya di Snow Leopard.
ayaz
Untuk beberapa alasan, CLICOLOR=Yberhenti bekerja di Mac saya. alias ls='ls -G'akan memaksa lsuntuk mewarnai. Saya mendefinisikan ini hanya untuk terminal interaktif.
DKroot
31

Buka jendela terminal dan ketik:

alias ls='ls -G'

Kemudian tekan Enterdan lakukan!

Safran Ali
sumber
10

Gunakan Homebrew .

brew install coreutils

Perhatikan bahwa ini akan membuang awalan gdi depan semua perintah (misalnya, glsuntuk ls). Ini memberikan opsi untuk sumber file yang akan alias ini untuk Anda secara otomatis.

Saya tidak yakin apakah ada opsi untuk menginstalnya secara langsung tanpa harus melakukan semuanya alias, jadi sebagai gantinya di MacPorts diinstal dan lakukan ini .

ifightcrime
sumber
1
Output mengatakan: Jika Anda benar-benar perlu menggunakan perintah ini dengan nama normal mereka, Anda dapat ... Mengapa menekankan benar-benar ? Apa kerugiannya?
z0r
Dan Anda tidak pernah mengarsipkan halaman Anda di archive.org dan sekarang tautan Anda dalam paragraf terakhir hilang
barlop
5

kompatibilitas untuk GNU dan * BSD / darwin ls

~ /. profil

#for *BSD/darwin
export CLICOLOR=1

ls --color=auto &> /dev/null && alias ls='ls --color=auto' ||

~ / .bashrc (Saya tidak ingat apakah bash di Linux selalu membaca ~ / .profile, tetapi bukan zsh saya di ARCH)

[[ -f $HOME/.profile ]] && source $HOME/.profile
Victor Gavro
sumber
6
Bisakah Anda menjelaskan kode ini?
bwDraco
1
mengatur variabel lingkungan CLICOLOR untuk * BSD dan sistem Darwin - jika disetel ls dan mungkin utilitas lain akan berfungsi berwarna, tetapi GNU ls (untuk Linux) mengabaikannya. Jika "ls --color = auto" tidak akan gagal (status keluar = 0) - kami memiliki versi GNU ls dan membuat alias untuk menggambar kode warna dalam mode interaktif, jika gagal - maka kami tidak perlu alias karena CLICOLOR variabel. "&> / dev / null" tapi jangan tampilkan stderr dan stdout jika ada yang gagal atau ok. Bekerja untuk linux dan osx saya. (ps bash di osx dan freebsd tidak membaca .bashrc, jadi letakkan di .profile. sudah perbaiki).
Victor Gavro
2

Anda harus memasang versi alternatif ls. Yang biasanya digunakan di linux adalah dari proyek GNU coreutils .

Anda dapat membangun dan menginstal atau menginstal dari macports , fink atau homebrew .

Doug Harris
sumber
4
Itu berlebihan, menurut saya. Anda tidak perlu menginstal versi terpisah lsketika fitur yang sama didukung sedikit berbeda pada versi yang ada ls.
ayaz
Poin bagus. Kemudian lagi, warnanya belum pernah seleraku. alias ls='ls -F'
Doug Harris
alias ls='ls -FG'- ini yang terbaik dari kedua dunia!
mipadi
1
Saya melakukan ini menggunakan homebrew. Ini tidak berlebihan jika Anda menggunakan komputer Mac dan * nix dan ingin terminal Anda terlihat sama - ini memungkinkan Anda untuk menggunakan file konfigurasi yang sama di semua komputer. Ini diinstal sebagai glsdan tidak menggantikan yang asli sehingga benar-benar tidak ada downside.
pengirim
1

Saya menggunakan skrip Perl yang saya tulis di AIX . Ini berguna jika Anda berada di sistem yang tidak mendukung --color, dan juga di mana Anda tidak memiliki sudo untuk menginstal paket.

Harus bekerja pada Macintosh juga.

Erik Aronesty
sumber