Bagaimana saya dapat mengkonfigurasi Terminal Mac untuk memiliki keluaran warna ls?

336

Bagaimana saya dapat mengkonfigurasi Terminal Mac untuk memiliki keluaran warna ls? Saya menggunakan MacOS 10.5

bmike
sumber
5
Ini adalah pertanyaan yang bagus ... Saya selalu berharap ls --color (a la gnu ls) hanya bekerja di mana saja. MacOS tidak menerima --color, jadi saya berasumsi bahwa itu tidak memiliki keluaran berwarna sebagai opsi sama sekali.
Armentage

Jawaban:

370

Sunting:

~/.bash_profile

atau

~/.profile

dan tambahkan baris berikut untuk mengaktifkan output warna melalui ls:

export CLICOLOR=1

Untuk menyesuaikan pewarnaan yang ditunjukkan oleh lsAnda dapat menambahkan variabel ini secara opsional LSCOLORS,.

Contohnya

  • Default

    export LSCOLORS=ExFxCxDxBxegedabagacad
  • Anda dapat menggunakan ini jika Anda menggunakan latar belakang hitam

    export LSCOLORS=gxBxhxDxfxhxhxhxhxcxcx
  • Jika Anda ingin meniru warna terminal Linux yang khas:

    export LSCOLORS=ExGxBxDxCxEgEdxbxgxcxd

Setelah Anda menambahkan di atas ke salah satu ~/.bash_profileatau ~/.profileAnda dapat keluar / masuk atau sumber file di shell Anda, untuk misalnya:

$ . ~/.bash_profile

CATATAN: Jika Anda memerlukan bantuan dalam memilih warna untuk digunakan, Anda dapat menggunakan alat online ini yang disebut LSCOLORS Generator .

slm
sumber
Apakah ada cara untuk membuat teks berwarna tidak terlihat tebal?
MemphiZ
1
@JamieCook Saya menemukan warna Mikulas lebih konsisten di linux. Secara khusus, symlink yang rusak harus berwarna merah tua. Dengan lscolors Anda yang biru ... ini bukan masalah kecil.
Ray Foss
1
Tidak berfungsi pada mac sierra dan yang lebih baru
Stevie G
1
@RayFoss memang, itu bukan masalah kecil, tetapi OS X tidak dapat membuat perbedaan antara symlink yang valid dan rusak secara default. Satu-satunya alternatif yang layak adalah menggunakan gnu ls
Ciprian Tomoiagă
2
@StevieG Bekerja untuk saya di High Sierra. Pastikan Anda mengaturnya dengan benar: echo $CLICOLORharus memberi 1?
Franklin Yu
192

Anda dapat menambahkan

alias ls='ls -G'

untuk Anda ~/.bash_profileuntuk mendapatkan lshasil berwarna .

Barry Wark
sumber
41
Milik saya alias ls = "ls -Gp" - the -p menambahkan garis miring setelah setiap direktori. Bagi saya, ini memberikan diferensiasi visual yang jauh lebih banyak, yang sangat membantu.
Quinn Taylor
39
Saya melihat Anda -pdan memberi Anda apa -Fyang selain menempatkan *executables, |setelah pipa, @setelah symlink, dan sebagainya.
25
Hanya untuk bersenang-senang, lemparkan a-h, yang akan memformat ukuran dalam satuan "yang dapat dibaca manusia", yaitu 100b 10k, 23m,
4.2g
3
Jika Anda belum memiliki .bash_profile di ~ / .bash_profile, pastikan untuk mengambilnya, sehingga itu akan berfungsi. Lakukan ini dengan "source ~ / .bash_profile"
y3sh
2
Tidak tahu apakah ini telah berubah sejak 2011, tetapi Anda dapat mengganti alias dengan export CLICOLOR=1untuk mencapai hal yang sama.
David Lord
25

Saya menemukan bahwa yang saya butuhkan adalah menambahkan ini ke blog saya ~/.bash_profile

export CLICOLOR=1
Filype
sumber
Atau ~/.bashrc.
Chris Page
tampaknya tidak berfungsi pada capitan):
drevicko
1
Bekerja seperti bos di El Captian untuk saya, terima kasih telah mengirim @Filype
fusion27
Anda harus: 1. menutup terminal Anda dan membuka kembali, 2. sumber file konfigurasi:, . ~/.bash_profileatau 3. logout / login
slm
13

Jika Anda ingin skema warna Terminal Mac OS X yang dapat dibaca, Anda mungkin ingin melihatnya:

Saya telah menggunakan ini selama lebih dari setahun sekarang, dan saya mungkin tidak dapat berfungsi tanpanya!

Berikut tautan yang diperbarui:

Jeff
sumber
6
Pada Mac OS X Lion 10.7, Terminal memungkinkan menyesuaikan warna ANSI, jadi menggunakan SIMBL atau ekstensi lainnya tidak lagi diperlukan. Ini juga mendukung 256 warna.
Chris Page
12

Anda juga dapat menyesuaikan warna prompt (dan formatnya) dengan menambahkan:

PS1='\[\e[0;33m\]\h:\W \u\$\[\e[m\] '

ke ~/.bash_profileatau ~/.profilefile. Di mana 0;33kuning biasa yang terlihat bagus di jendela terminal hitam / semi transparan saya.

Berikut adalah daftar lengkap warna dan penjelasannya: https://wiki.archlinux.org/index.php/Color_Bash_Prompt

Jendela terminal saya yang luar biasa

nacho4d
sumber
8

Pilihan lain adalah menggunakan GNU lsyang merupakan bagian dari program 'coreutils'.

Anda bisa mendapatkannya melalui Rudix atau Homebrew ( brew info coreutils) atau Macports atau Fink. Itu mungkin lebih baik daripada menggunakan solusi "Mac OS X-only" jika Anda menggunakan file konfigurasi shell yang sama pada sistem yang berbeda, atau sudah terbiasa dengan GNU ls.

TJ Luoma
sumber
7

Secara pribadi, saya menggunakan Oh My Zsh untuk menambahkan warna dan trik lainnya ke Terminal saya. Saya pikir itu cara termudah.

oh-my-zsh adalah open source, kerangka kerja berbasis komunitas untuk mengelola konfigurasi Zsh Anda.

Itu dibundel dengan satu ton fungsi bermanfaat, pembantu, plugin, tema, dan beberapa hal yang membuat Anda berteriak ...

masukkan deskripsi gambar di sini

StrawHara
sumber
4

Cukup tambahkan baris berikut ke ~/.bash_profilefile:

export PS1=" \[\033[34m\]\u@\h \[\033[33m\]\w\[\033[31m\]\[\033[00m\] $ "

Pratinjau: masukkan deskripsi gambar di sini

Ini warna pilihan saya. Anda dapat menyesuaikan setiap bagian dari warna prompt dengan mengubah mkode (misalnya 34m) yang merupakan kode warna ANSI.

Daftar kode warna ANSI:

  • Hitam: 30m
  • Merah: 31m
  • Hijau: 32m
  • Kuning: 33m
  • Biru: 34m
  • Ungu: 35m
  • Cyan: 36m
  • Putih: 37m
Shayan Amani
sumber
4

Menggabungkan semua jawaban di sini adalah apa yang saya gunakan:

COLOR_RED="\033[0;31m"
COLOR_YELLOW="\033[0;33m"
COLOR_GREEN="\033[0;32m"
COLOR_OCHRE="\033[38;5;95m"
COLOR_BLUE="\033[0;34m"
COLOR_WHITE="\033[0;37m"
COLOR_RESET="\033[0m"

#git_color
function git_color {
  local git_status="$(git status 2> /dev/null)"

  if [[ ! $git_status =~ "working directory clean" ]]; then
    echo -e $COLOR_RED
  elif [[ $git_status =~ "Your branch is ahead of" ]]; then
    echo -e $COLOR_YELLOW
  elif [[ $git_status =~ "nothing to commit" ]]; then
    echo -e $COLOR_GREEN
  else
    echo -e $COLOR_OCHRE
  fi
}

#git_branch
function git_branch {
  local git_status="$(git status 2> /dev/null)"
  local on_branch="On branch ([^${IFS}]*)"
  local on_commit="HEAD detached at ([^${IFS}]*)"

  if [[ $git_status =~ $on_branch ]]; then
    local branch=${BASH_REMATCH[1]}
    echo "($branch)"
  elif [[ $git_status =~ $on_commit ]]; then
    local commit=${BASH_REMATCH[1]}
    echo "($commit)"
  fi
}

PS1='\[\033[01;32m\]\u\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]'
PS1+="\[\$(git_color)\]"        # colors git status
PS1+="\$(git_branch)"           # prints current branch
PS1+="\[$COLOR_BLUE\]\[$COLOR_RESET\]\$ "
export PS1

export LC_ALL=en_US.UTF-8
export CLICOLOR=1
export LSCOLORS=gxBxhxDxfxhxhxhxhxcxcx
alias ls="ls -Gp"

masukkan deskripsi gambar di sini

Sand1512
sumber
3

Lupakan semua kode cryptic yang telah berumur puluhan tahun itu demi Tuhan, gunakan panel built-in Terminal -> Preferences ... untuk mengatur skin default, dan edit warna ANSI sesuai keinginan Anda. Anda dapat mengatur font juga. Saya lebih suka Menlo 12pt. Ini adalah cara Joe biasa bisa melakukannya, dan hindari semua perintah-gila, cara unix-esque melakukan sesuatu seperti yang disarankan poster lain.

Geoff Hoffman
sumber
12
Saya pikir siapa pun yang cukup berpengalaman bahkan tahu bahwa lsdapat memiliki keluaran berwarna juga dapat menjalankan beberapa perintah Unix untuk mengkonfigurasinya dengan benar.
nohillside
7
Tapi ini hanya membuat ls tampil dalam satu warna, itu tidak membuat tautan, direktori, file tampil dalam warna berbeda seperti yang bisa dilakukan ls
Mark