Warna Terminal OS X [ditutup]

492

Saya baru mengenal OS X, baru saja mendapatkan Mac setelah bekerja dengan Ubuntu Linux selama beberapa waktu. Di antara banyak hal yang saya coba cari tahu adalah tidak adanya warna di jendela terminal saya - seperti yang ditampilkan (di Linux) saat menjalankan ls -laatau git status...

Saya tidak tahu bagaimana cara mengaktifkan warna di shell saya.

Sa125
sumber
32
Ditutup sebagai "di luar topik" tetapi lihat tag: osx, shell, terminal, warna ... menurut saya itu benar-benar sesuai topik. Meliputi OSX, ini tentang shell, menggunakan terminal dan ingin menambahkan warna. Harus mengedit profil bash, jadi ya, saya akan mengatakan itu sesuai topik.
Danijel-James W
12
Jelas tentang topik, ini tentang skrip bash.
superluminary
5
Ditutup, Anda pasti bercanda! Jelas ini memiliki utilitas dan nilai bagi banyak coders Mac (kebanyakan baru). Jika mereka yang menutup serius tentang itu di luar topik, maka mengapa tidak bermigrasi untuk mengatakan SE Think Different. Saya bawa SO mendukung fungsi yang digunakan dalam grup SE lainnya.
Cam_Aust
lihat jawaban ini: stackoverflow.com/a/48216286/3782119
Shayan Amani

Jawaban:

745

Ini adalah solusi yang saya temukan untuk mengaktifkan warna terminal global .

Edit Anda .bash_profile(sejak OS X 10.8) - atau (untuk 10.7 dan sebelumnya): .profileatau .bashrcatau /etc/profile(tergantung ketersediaan) - di direktori home Anda dan tambahkan kode berikut:

export CLICOLOR=1
export LSCOLORS=GxFxCxDxBxegedabagaced

CLICOLOR=1 cukup memungkinkan pewarnaan terminal Anda.

LSCOLORS=... menentukan cara mewarnai item tertentu.

Setelah mengedit .bash_profile, mulai Terminal dan paksakan perubahan untuk dilakukan dengan mengeksekusi:

source ~/.bash_profile

Lalu pergi ke Terminal > Preferences, klik pada Profilestab dan kemudian Textsubtab dan centang Display ANSI Colors.

Diverifikasi pada Sierra (Mei 2017).

LuckyMalaka
sumber
21
hanya melakukan ini dengan menambahkannya ke .bash_profile dan berfungsi. tidak berfungsi ketika saya menambahkannya ke .profile. Terima kasih!
Morten
10
Saya baru saja mengedit /etc/profiledan berfungsi seperti pesona.
Cyclonecode
2
Untuk @Morten dan orang lain yang berjuang dengan profil bash mereka, lihat jawaban ini untuk penjelasan dan solusi: stackoverflow.com/a/7780055/665488 , superuser.com/a/244990 .
Cam Jackson
4
dotfiles / .aliases memiliki export LS_COLORSpernyataan hebat
bobobobo
16
Jika Anda menginginkan warna yang sama dengan yang digunakan Linux (setidaknya Debian dan Ubuntu), gunakanLSCOLORS=ExGxFxdxCxDxDxxbaDecac
remram
125

Anda dapat menggunakan sintaksis berbasis Linux di salah satu skrip startup Anda. Baru saja menguji ini pada kotak OS X Mountain Lion.

misalnya. di Anda~/.bash_profile

export TERM="xterm-color" 
export PS1='\[\e[0;33m\]\u\[\e[0m\]@\[\e[0;32m\]\h\[\e[0m\]:\[\e[0;34m\]\w\[\e[0m\]\$ '

Ini memberi Anda prompt berwarna yang bagus. Untuk menambahkan lsoutput berwarna , Anda dapat menambahkan alias ls="ls -G".

Untuk menguji, jalankan a source ~/.bash_profileuntuk memperbarui terminal Anda saat ini.

Catatan sisi tentang warna: Warna didahului oleh urutan pelarian \edan ditentukan oleh nilai warna, terdiri dari [style;color+m]dan dibungkus dengan []urutan yang diloloskan . misalnya.

  • merah = \[\e[0;31m\]
  • tebal merah (gaya 1) = \[\e[1;31m\]
  • pewarnaan yang jelas = \[\e[0m\]

Saya selalu menambahkan skema warna yang sedikit dimodifikasi di root .bash_profile untuk membuat nama pengguna merah, jadi saya selalu melihat dengan jelas jika saya masuk sebagai root (berguna untuk menghindari kesalahan jika saya memiliki banyak jendela terminal terbuka).

Dalam /root/.bash_profile:

PS1='\[\e[0;31m\]\u\[\e[0m\]@\[\e[0;32m\]\h\[\e[0m\]:\[\e[0;34m\]\w\[\e[0m\]\$ '

Untuk semua akun SSH saya online, saya pastikan untuk memasukkan nama host merah, untuk membedakan apakah saya di terminal lokal atau jauh. Cukup edit .bash_profilefile dalam direktori home Anda di server .. Jika tidak ada .bash_profilefile di server, Anda dapat membuatnya dan harus bersumber saat login.

Jika ini tidak berfungsi seperti yang diharapkan untuk Anda, harap baca beberapa komentar di bawah karena saya tidak terlalu sering menggunakan MacOS ..

Jika Anda ingin melakukan ini di server jauh, periksa apakah ~/.bash_profilefile ada. Jika tidak, cukup buat dan itu akan secara otomatis bersumber pada login Anda berikutnya.

4 tingkat
sumber
2
bagaimana Anda mengedit bash_profile untuk akun ssh online?
Andy
1
Saya suka PS1lebih baik dengan, $PWDbukannya \useperti:PS1=\[\e[0;31m\]$PWD\[\e[0m\]@\[\e[0;32m\]\h\[\e[0m\]:\[\e[0;34m\]\w\[\e[0m\]\$
cregox
1
Berikut ini beberapa penjelasan lebih lanjut dari kode untuk prompt: wiki.archlinux.org/index.php/Color_Bash_Prompt#Step_by_step .
JohnK
1
Tautan ini mungkin juga membantu: urutan kode warna ANSI lolos . Lebih lanjut tentang kode PS1 .
JohnK
1
Saya mengalami masalah dalam mendapatkan warna PROMPT_COMMAND untuk ditampilkan dengan benar di El Capitan (OS X 10.11) menggunakan kode warna ini. Ternyata saat digunakan PROMPT_COMMAND, Anda harus menggunakan \033sintaks alih-alih \e. Contoh untuk menambahkan stempel waktu berwarna sebelum ~/.bashrc~/.bash_profilePROMPT_COMMAND="${PROMPT_COMMAND}; echo; echo -e '\033[0;35m'\[\$(date +%F\ %T)\]'\033[m'"
permintaan
42

Metode MartinVonMartinsgrün dan 4Levels dikonfirmasikan bekerja dengan baik pada Mac OS X Mountain Lion.

File yang saya perlu perbarui adalah ~ / .profile.

Namun, saya tidak dapat meninggalkan pertanyaan ini tanpa merekomendasikan aplikasi favorit saya, iTerm 2 .

iTerm 2 memungkinkan Anda memuat skema warna global dari suatu file. Sangat mudah untuk bereksperimen dan mencoba banyak skema warna.

Berikut screenshot dari jendela iTerm 2 dan preferensi warna. Screenshot Preferensi Warna iTerm2 Mac

Setelah saya menambahkan yang berikut ini ke file ~ / .profile saya iTerm 2 dapat mengganti warna.

export CLICOLOR=1
export LSCOLORS=GxFxCxDxBxegedabagaced
export PS1='\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '

Ini adalah repositori yang bagus dengan beberapa pengaturan awal yang bagus:

Skema Warna iTerm2 di Github oleh mbadolato

Bonus: Pilih "Tampilkan / sembunyikan iTerm2 dengan hotkey seluruh sistem" dan ikat kunci dengan BetterTouchTool untuk persembunyian instan / tampilkan terminal dengan gerakan mouse.

Nick Woodham
sumber
1
iTerm2 sering crash pada sistem saya, jadi saya beralih ke oh-my-zsh github.com/robbyrussell/oh-my-zsh . Ada juga tema yang tersedia
LuckyMalaka
Hei! Harap ubah baskervilletautan ke tautan yang benar. Tampaknya salah salin-tempel.
Jevgeni Smirnov
@NickWoodhams, apa tema warna yang Anda gunakan di tangkapan layar?
Indradhanush Gupta
1
@IndradhanushGupta Tidak yakin skema warna apa itu, beberapa saat yang lalu. Tapi sekarang saya menggunakan tema Pure ZSH dan menyukainya. github.com/sindresorhus/pure
Nick Woodhams
1
ini adalah skema warna yang bagus dan apa yang saya butuhkan untuk memeriksa jenis barang // dirs dan lain
rio
17

Jika Anda ingin ls Anda diwarnai, Anda harus mengedit file ~ / .bash_profile Anda dan tambahkan baris berikut (jika belum ditulis):

source .bashrc

Kemudian Anda mengedit atau membuat file ~ / .bashrc dan menulis alias ke perintah ls:

alias ls="ls -G"

Sekarang Anda harus mengetikkan source .bashrcterminal jika sudah diluncurkan, atau cukup buka terminal baru.

Jika Anda ingin lebih banyak opsi di lsjuste Anda baca manual ( man ls). Opsi tidak persis sama dengan di sistem GNU / Linux.

Marcio
sumber
6
Pilihan yang agak lebih baik adalah mengganti definisi 'alias' dengan 'export CLICOLOR = ""'. Ini memiliki keuntungan dari biasanya terus bekerja bahkan jika Anda mengganti shell selama sesi terminal (selama variabel lingkungan diwarisi - alias tidak).
Ned Deily
5

Jika Anda menggunakan tcsh, edit ~/.cshrcfile Anda untuk memasukkan baris:

setenv CLICOLOR 1
setenv LSCOLORS dxfxcxdxbxegedabagacad

Di mana, seperti kata Martin, LSCOLORS menentukan skema warna yang ingin Anda gunakan.

Untuk menghasilkan LSCOLORS yang ingin Anda gunakan, checkout situs ini

smaccoun
sumber
4
bashtelah menjadi default di OS X sejak Oktober 2003.
nelsonjchen
1
Saya pikir kamu benar. Saya baru saja mendapatkan mac baru dan memiliki bash sebagai default. Saya kira IT terus mengatur mac saya di tempat kerja untuk memiliki tcsh secara default.
smaccoun
1
Tautannya luar biasa!
Sankalp
4

Periksa apa yang $ TERM berikan: milik saya adalah xterm-color dan ls -alG kemudian hasilnya berwarna.

William Rose
sumber
baik, pada capitan dengan xterm-256color, saya tidak mendapatkan warna. CLICOLORdan LSCOLORSjangan ubah itu):
drevicko
2

Ketika saya bekerja pada Mac OS X di lab saya bisa mendapatkan warna terminal dari menggunakan Terminal (daripada X11) dan kemudian mengedit profil (dari bilah menu Mac). Antarmuka agak aneh pada warna, tetapi Anda harus mengatur tema yang dimodifikasi sebagai default.

Pengaturan lebih lanjut bekerja dengan mengedit .bashrc.

ccook
sumber