Màu thiết bị đầu cuối OS X [đã đóng]


492

Tôi mới dùng OS X, vừa mới nhận được máy Mac sau khi làm việc với Ubuntu Linux một thời gian. Trong số nhiều thứ tôi đang cố gắng tìm ra là sự vắng mặt của các màu trong cửa sổ đầu cuối của tôi - giống như các màu được hiển thị (trên Linux) khi chạy ls -lahoặc git status...

Tôi chỉ không thể tìm ra cách kích hoạt màu sắc trong vỏ của tôi.



32
Đóng là "lạc đề" nhưng nhìn vào các thẻ: osx, shell, terminal, màu sắc ... có vẻ như đối với tôi nó hoàn toàn thuộc chủ đề. Bao gồm OSX, đó là về trình bao, sử dụng thiết bị đầu cuối và muốn thêm màu sắc. Phải chỉnh sửa hồ sơ bash, vì vậy, tôi muốn nói đó là chủ đề.
Danijel-James W

12
Rõ ràng về chủ đề, đó là về kịch bản bash.
siêu sáng

5
Đóng cửa, bạn phải đùa! Rõ ràng điều này có tiện ích và giá trị cho nhiều lập trình viên Mac (chủ yếu là mới). Nếu những người đóng cửa nghiêm túc về việc nó lạc đề, vậy thì tại sao không di chuyển nó để nói SE Think Another. Tôi cho rằng SO hỗ trợ chức năng đó được sử dụng trong các nhóm SE khác.
Cam_Aust

hãy xem câu trả lời này: stackoverflow.com/a/48216286/3782119
Shayan Amani

Câu trả lời:


745

Đây là một giải pháp tôi đã tìm thấy để kích hoạt màu thiết bị đầu cuối toàn cầu .

Chỉnh sửa .bash_profile(kể từ OS X 10.8) - hoặc (cho 10.7 trở về trước): .profilehoặc .bashrchoặc /etc/profile(tùy thuộc vào tính khả dụng) - trong thư mục chính của bạn và thêm mã sau:

export CLICOLOR=1
export LSCOLORS=GxFxCxDxBxegedabagaced

CLICOLOR=1 chỉ cần cho phép tô màu của thiết bị đầu cuối của bạn.

LSCOLORS=... chỉ định làm thế nào để tô màu các mặt hàng cụ thể.

Sau khi chỉnh sửa .bash_profile, hãy khởi động Terminal và buộc các thay đổi diễn ra bằng cách thực hiện:

source ~/.bash_profile

Sau đó đi đến Terminal > Preferences, nhấp vào Profilestab và sau đó bảng Textphụ và kiểm tra Display ANSI Colors.

Đã xác minh trên Sierra (tháng 5 năm 2017).


21
chỉ cần làm điều này bằng cách thêm nó vào .bash_profile và nó hoạt động. không hoạt động khi tôi thêm nó vào .profile. Cảm ơn!
Morten

10
Tôi chỉ chỉnh sửa của tôi /etc/profilevà nó hoạt động như một nét duyên dáng.
Cyclonecode

2
Để @Morten và bất kỳ ai khác đang vật lộn với hồ sơ bash của họ, hãy xem những câu trả lời này để biết giải thích và giải pháp: stackoverflow.com/a/7780055/665488 , superuser.com/a/244990 .
Cam Jackson

4
dotfiles / .aliases có một export LS_COLORStuyên bố tuyệt vời
bobobobo

16
Nếu bạn muốn các màu giống như Linux sử dụng (ít nhất là Debian và Ubuntu), hãy sử dụngLSCOLORS=ExGxFxdxCxDxDxxbaDecac
làm lại từ

125

Bạn có thể sử dụng cú pháp dựa trên Linux trong một trong các tập lệnh khởi động của bạn. Chỉ cần thử nghiệm điều này trên hộp OS X Mountain Lion.

ví dụ. trong bạn~/.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\]\$ '

Điều này cung cấp cho bạn một dấu nhắc màu đẹp. Để thêm lsđầu ra màu , bạn có thể thêm alias ls="ls -G".

Để kiểm tra, chỉ cần chạy một source ~/.bash_profileđể cập nhật thiết bị đầu cuối hiện tại của bạn.

Lưu ý bên lề về màu sắc: Các màu được đi trước bởi một chuỗi thoát \evà được xác định bởi một giá trị màu, bao gồm [style;color+m]và được bao bọc trong một []chuỗi thoát . ví dụ.

  • đỏ = \[\e[0;31m\]
  • đậm màu đỏ (kiểu 1) = \[\e[1;31m\]
  • xóa màu = \[\e[0m\]

Tôi luôn thêm một lược đồ màu được sửa đổi một chút trong .bash_profile của root để làm cho tên người dùng thành màu đỏ, vì vậy tôi luôn thấy rõ nếu tôi đăng nhập bằng root (tiện dụng để tránh nhầm lẫn nếu tôi mở nhiều cửa sổ đầu cuối).

Trong /root/.bash_profile:

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

Đối với tất cả các tài khoản SSH trực tuyến của tôi, tôi đảm bảo đặt tên máy chủ màu đỏ, để phân biệt nếu tôi đang ở trong một thiết bị đầu cuối cục bộ hoặc từ xa. Chỉ cần chỉnh sửa .bash_profiletệp trong thư mục nhà của bạn trên máy chủ .. Nếu không có .bash_profiletệp nào trên máy chủ, bạn có thể tạo tệp đó và nó sẽ có nguồn gốc khi đăng nhập.

Nếu điều này không hoạt động như mong đợi đối với bạn, vui lòng đọc một số ý kiến ​​dưới đây vì tôi không sử dụng MacOS thường xuyên ..

Nếu bạn muốn làm điều này trên một máy chủ từ xa, hãy kiểm tra xem ~/.bash_profiletập tin có tồn tại không. Nếu không, chỉ cần tạo nó và nó sẽ tự động có nguồn gốc khi đăng nhập tiếp theo của bạn.


2
Làm thế nào để bạn chỉnh sửa bash_profile cho tài khoản ssh trực tuyến?
Andy

1
Tôi thích PS1tốt hơn $PWDthay vì \u, như vậy:PS1=\[\e[0;31m\]$PWD\[\e[0m\]@\[\e[0;32m\]\h\[\e[0m\]:\[\e[0;34m\]\w\[\e[0m\]\$
cregox

1
Dưới đây là một số giải thích thêm về mã cho lời nhắc: wiki.archlinux.org/index.php/Color_Bash_Prompt#Step_by_step .
JohnK

1
Các liên kết này cũng có thể hữu ích: Trình tự thoát mã màu ANSI . Thêm về mã PS1 .
JohnK

1
Tôi đã gặp sự cố khi nhận các màu PROMPT_COMMAND để hiển thị chính xác trong El Capitan (OS X 10.11) bằng các mã màu này. Hóa ra khi sử dụng PROMPT_COMMAND, bạn cần sử dụng \033cú pháp thay vì \e. Ví dụ để thêm dấu thời gian được tô màu trước lời nhắc của bạn (bao gồm dấu thời gian này trong ~/.bashrchoặc ~/.bash_profile):PROMPT_COMMAND="${PROMPT_COMMAND}; echo; echo -e '\033[0;35m'\[\$(date +%F\ %T)\]'\033[m'"
user5359531

42

Các phương pháp MartinVonMartinsgrün và 4Levels đã xác nhận công việc tuyệt vời trên Mac OS X Mountain Lion.

Tệp tôi cần cập nhật là ~ / .profile.

Tuy nhiên, tôi không thể bỏ câu hỏi này mà không giới thiệu ứng dụng yêu thích của mình, iTerm 2 .

iTerm 2 cho phép bạn tải các bảng màu toàn cầu từ một tệp. Thực sự dễ dàng để thử nghiệm và thử một loạt các phối màu.

Đây là một ảnh chụp màn hình của cửa sổ iTerm 2 và các tùy chọn màu sắc. Tùy chọn màu iTerm2 Ảnh chụp màn hình Mac

Khi tôi đã thêm phần sau vào tệp ~ / .profile của mình, iTerm 2 có thể ghi đè màu.

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

Đây là một kho lưu trữ tuyệt vời với một số cài đặt trước tốt đẹp:

Bảng màu iTerm2 trên Github của mbadolato

Phần thưởng: Chọn "Hiển thị / ẩn iTerm2 bằng phím nóng trên toàn hệ thống" và liên kết khóa với BetterTouchTool để ẩn / hiển thị thiết bị đầu cuối ngay lập tức bằng cử chỉ chuột.


1
iTerm2 bị lỗi thường xuyên trên hệ thống của tôi, vì vậy tôi đã chuyển sang oh-my-zsh github.com/robbyrussell/oh-my-zsh . Ngoài ra còn có các chủ đề có sẵn
LuckyMalaka

Chào! Vui lòng thay đổi baskervilleliên kết để thích hợp. Có vẻ sao chép-dán sai.
Jevgeni Smirnov

@NickWoodhams, chủ đề màu sắc bạn đang sử dụng trong ảnh chụp màn hình là gì?
Indradhanush Gupta

1
@IndradhanushGupta Không chắc đó là màu gì, cách đây đã lâu. Nhưng bây giờ tôi đang sử dụng chủ đề Pure ZSH và yêu thích nó. github.com/sindresorhus/pure
Nick Woodhams

1
Đây là một bảng màu đẹp và những gì tôi cần để kiểm tra các loại vật phẩm // dirs và vv
rio

17

Nếu bạn muốn tô màu ls của mình, bạn phải chỉnh sửa tệp ~ / .bash_profile của bạn và thêm dòng sau (nếu chưa được viết):

source .bashrc

Sau đó, bạn chỉnh sửa hoặc tạo tệp ~ / .bashrc và viết bí danh cho lệnh ls:

alias ls="ls -G"

Bây giờ bạn phải gõ source .bashrcvào một thiết bị đầu cuối nếu đã được khởi chạy, hoặc chỉ cần mở một thiết bị đầu cuối mới.

Nếu bạn muốn có nhiều tùy chọn hơn trong lsjuste của mình, hãy đọc hướng dẫn ( man ls). Các tùy chọn không hoàn toàn giống như trong hệ thống GNU / Linux.


6
Tùy chọn tốt hơn một chút là thay thế định nghĩa 'bí danh' bằng 'export CLICOLOR = ""'. Điều này có lợi thế là thường tiếp tục hoạt động ngay cả khi bạn chuyển đổi shell trong phiên cuối (miễn là các biến môi trường được kế thừa - bí danh không).
Ned Deily

5

Nếu bạn đang sử dụng tcsh, sau đó chỉnh sửa ~/.cshrctệp của bạn để bao gồm các dòng:

setenv CLICOLOR 1
setenv LSCOLORS dxfxcxdxbxegedabagacad

Ở đâu, như Martin nói, LSCOLORS chỉ định bảng màu bạn muốn sử dụng.

Để tạo LSCOLORS bạn muốn sử dụng, hãy kiểm tra trang web này


4
bashđã được mặc định trong OS X kể từ tháng 10 năm 2003.
nelsonjchen

1
Tôi nghĩ bạn đúng. Tôi vừa có một mac mới và nó có bash như mặc định. Tôi đoán CNTT đã tiếp tục thiết lập máy Mac của tôi tại nơi làm việc để có tcsh theo mặc định.
smaccoun

1
Các liên kết chỉ là tuyệt vời!
Sankalp

4

Kiểm tra những gì $ TERM cung cấp: của tôi là xterm-color và ls -alG sau đó không xuất màu.


tốt, trên capitan với xterm-256color, tôi không có màu sắc. CLICOLORLSCOLORSđừng thay đổi điều đó):
drevicko 18/07/2016

2

Khi tôi làm việc trên Mac OS X trong phòng thí nghiệm, tôi có thể lấy màu của thiết bị đầu cuối bằng cách sử dụng Terminal (chứ không phải X11) và sau đó chỉnh sửa cấu hình (từ thanh menu Mac). Giao diện hơi kỳ lạ về màu sắc, nhưng bạn phải đặt chủ đề sửa đổi làm mặc định.

Cài đặt thêm làm việc bằng cách chỉnh sửa .bashrc.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.