Kolory terminali OS X [zamknięte]

492

Jestem nowy w OS X, właśnie dostałem komputer Mac po pracy z Ubuntu Linux na jakiś czas. Wśród wielu rzeczy, które próbuję rozgryźć, jest brak kolorów w oknie terminala - takich jak te, które są wyświetlane (w systemie Linux) podczas działania ls -lalub git status...

Po prostu nie mogę wymyślić, jak aktywować kolory w mojej skorupie.

sa125
źródło
32
Zamknięte jako „nie na temat”, ale spójrz na tagi: osx, shell, terminal, kolory ... wydaje mi się, że to całkowicie temat. Obejmuje OSX, chodzi o powłokę, korzystanie z terminala i chce dodawać kolory. Muszę edytować profil bash, więc tak, powiedziałbym, że jest na temat.
Danijel-James W
12
Najwyraźniej na temat, chodzi o skrypty bash.
superluminarny
5
Zamknięte, musisz żartować! Oczywiście ma to zastosowanie i ma wartość dla wielu (głównie nowych) koderów Mac. Jeśli ci, którzy się zamykają, poważnie podchodzą do tematu, to dlaczego nie przenieść go, by powiedzieć SE Think Different. Rozumiem, że SO obsługuje tę funkcję używaną w innych grupach SE.
Cam_Aust
spójrz na tę odpowiedź: stackoverflow.com/a/48216286/3782119
Shayan Amani

Odpowiedzi:

745

Oto rozwiązanie, które znalazłem, aby umożliwić globalne kolory terminali .

Edytuj swój .bash_profile(od OS X 10.8) - lub (dla 10.7 i wcześniejszych): .profilelub .bashrclub /etc/profile(w zależności od dostępności) - w katalogu domowym i dodaj następujący kod:

export CLICOLOR=1
export LSCOLORS=GxFxCxDxBxegedabagaced

CLICOLOR=1 po prostu umożliwia kolorowanie terminala.

LSCOLORS=... określa sposób pokolorowania określonych elementów.

Po edycji .bash_profileuruchom terminal i wymuś wprowadzenie zmian, wykonując:

source ~/.bash_profile

Następnie przejdź do Terminal > Preferences, kliknij Profileskartę, a następnie kartę Textpodrzędną i sprawdź Display ANSI Colors.

Zweryfikowano w Sierra (maj 2017 r.).

LuckyMalaka
źródło
21
właśnie to zrobiłem, dodając go do .bash_profile i działa. nie działało, gdy dodałem go do .profile. Dzięki!
Morten
10
Właśnie edytowałem moje /etc/profilei działa jak urok.
Kod cyklonowy
2
Aby @Morten i inni borykali się z profilami bash, zapoznaj się z tymi odpowiedziami, aby uzyskać wyjaśnienie i rozwiązanie: stackoverflow.com/a/7780055/665488 , superuser.com/a/244990 .
Cam Jackson
4
dotfiles / .aliases ma świetne export LS_COLORSzdanie
bobobobo
16
Jeśli chcesz mieć te same kolory, których używa Linux (przynajmniej Debian i Ubuntu), użyjLSCOLORS=ExGxFxdxCxDxDxxbaDecac
remram
125

Możesz użyć składni opartej na systemie Linux w jednym ze swoich skryptów startowych. Właśnie przetestowałem to na pudełku OS X Mountain Lion.

na przykład. w Twoim~/.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\]\$ '

To daje ładną kolorową podpowiedź. Aby dodać kolorowy lswydruk, możesz dodać alias ls="ls -G".

Aby przetestować, wystarczy uruchomić a, source ~/.bash_profileaby zaktualizować bieżący terminal.

Uwaga dodatkowa na temat kolorów: Kolory są poprzedzone sekwencją zmiany znaczenia \ei zdefiniowane przez wartość koloru, złożoną [style;color+m]i zawiniętą w []sekwencji zmiany znaczenia. na przykład.

  • czerwony = \[\e[0;31m\]
  • pogrubiony czerwony (styl 1) = \[\e[1;31m\]
  • jasne zabarwienie = \[\e[0m\]

Zawsze dodam nieco zmodyfikowany schemat kolorów do .bash_profile roota, aby nazwa użytkownika była czerwona, więc zawsze widzę wyraźnie, czy jestem zalogowany jako root (przydatne, aby uniknąć błędów, jeśli mam wiele okien terminala).

W /root/.bash_profile:

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

W przypadku wszystkich moich kont SSH online upewniam się, że nazwa hosta jest zaznaczona na czerwono, aby odróżnić, czy jestem w lokalnym, czy zdalnym terminalu. Po prostu edytuj .bash_profileplik w swoim katalogu domowym na serwerze. Jeśli nie ma .bash_profilepliku na serwerze, możesz go utworzyć i powinien on zostać pobrany po zalogowaniu.

Jeśli to nie działa zgodnie z oczekiwaniami, przeczytaj poniższe komentarze, ponieważ nie używam MacOS bardzo często.

Jeśli chcesz to zrobić na serwerze zdalnym, sprawdź, czy ~/.bash_profileplik istnieje. Jeśli nie, po prostu utwórz go, a będzie on automatycznie pozyskiwany przy następnym logowaniu.

4 poziomy
źródło
2
jak edytujesz profil bash dla kont ssh online?
Andy,
1
PS1$PWD\uPS1=\[\e[0;31m\]$PWD\[\e[0m\]@\[\e[0;32m\]\h\[\e[0m\]:\[\e[0;34m\]\w\[\e[0m\]\$
Bardziej
1
Oto kilka wyjaśnień kodów pytania: wiki.archlinux.org/index.php/Color_Bash_Prompt#Step_by_step .
JohnK,
1
Te linki mogą być również pomocne: Sekwencje specjalne kodów kolorów ANSI . Więcej na temat kodów PS1 .
JohnK,
1
Miałem problemy z prawidłowym wyświetlaniem kolorów PROMPT_COMMAND w El Capitan (OS X 10.11) przy użyciu tych kodów kolorów. Okazuje się, że kiedy jest używany PROMPT_COMMAND, musisz użyć \033składni zamiast \e. Przykład dodania kolorowego znacznika czasu przed wyświetlonym ~/.bashrc~/.bash_profilePROMPT_COMMAND="${PROMPT_COMMAND}; echo; echo -e '\033[0;35m'\[\$(date +%F\ %T)\]'\033[m'"
monitem
42

Potwierdzono, że metody MartinVonMartinsgrün i 4Levels działają świetnie na Mac OS X Mountain Lion.

Plik, który potrzebowałem zaktualizować, to ~ / .profile.

Nie mogłem jednak pozostawić tego pytania, nie polecając mojej ulubionej aplikacji, iTerm 2 .

iTerm 2 umożliwia ładowanie globalnych schematów kolorów z pliku. Naprawdę łatwo eksperymentować i wypróbować kilka schematów kolorów.

Oto zrzut ekranu okna iTerm 2 i preferencji kolorów. iTerm2 Preferencje kolorów Screenshot Mac

Gdy dodałem następujące elementy do mojego pliku ~ / .profile, iTerm 2 mógł zastąpić kolory.

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

Oto świetne repozytorium z kilkoma ładnymi ustawieniami wstępnymi:

Schematy kolorów iTerm2 na Github autorstwa mbadolato

Premia: Wybierz „Pokaż / ukryj iTerm2 za pomocą ogólnosystemowego skrótu” i powiąż klawisz BetterTouchTool, aby natychmiast ukryć / pokazać terminal gestem myszy.

Nick Woodhams
źródło
1
iTerm2 często się zawieszał w moim systemie, więc przełączyłem się na oh-my-zsh github.com/robbyrussell/oh-my-zsh . Dostępne są również motywy
LuckyMalaka,
Hej! Zmień baskervillelink na właściwy. Wydaje się niewłaściwe kopiuj-wklej.
Jevgeni Smirnov
@NickWoodhams, jakiego motywu kolorystycznego używasz na zrzucie ekranu?
Indradhanush Gupta
1
@IndradhanushGupta Nie jestem pewien, jaki to był schemat kolorów, to było dawno temu. Ale teraz używam motywu Pure ZSH i uwielbiam go. github.com/sindresorhus/pure
Nick Woodhams
1
to jest ładna kolorystyka i to, czego potrzebowałem, aby sprawdzić typy przedmiotów // katalogi itp.
rio
17

Jeśli chcesz pokolorować swój ls, musisz edytować plik ~ / .bash_profile i dodać następujący wiersz (jeśli jeszcze nie został napisany):

source .bashrc

Następnie edytuj lub utwórz plik ~ / .bashrc i napisz alias do polecenia ls:

alias ls="ls -G"

Teraz musisz wpisać source .bashrcterminal, jeśli jest już uruchomiony, lub po prostu otworzyć nowy terminal.

Jeśli chcesz więcej opcji w swoim lsjuste, przeczytaj instrukcję ( man ls). Opcje nie są dokładnie takie same jak w systemie GNU / Linux.

Marcio
źródło
6
Nieco lepszą opcją jest zastąpienie definicji „aliasu” wyrażeniem „export CLICOLOR =” ”. Ma to tę zaletę, że zwykle kontynuuje pracę, nawet jeśli przełączasz powłoki podczas sesji terminalowej (o ile zmienne środowiskowe są dziedziczone - aliasy nie są).
Ned Deily,
5

Jeśli używasz tcsh, edytuj ~/.cshrcplik, aby uwzględnić linie:

setenv CLICOLOR 1
setenv LSCOLORS dxfxcxdxbxegedabagacad

Gdzie, jak mówi Martin, LSCOLORS określa schemat kolorów, którego chcesz użyć.

Aby wygenerować LSCOLORS, którego chcesz użyć, sprawdź tę stronę

smaccoun
źródło
4
bashjest domyślny w OS X od października 2003 r.
nelsonjchen
1
Myślę, że masz rację. Właśnie dostałem nowego Maca i domyślnie miał bash. Wydaje mi się, że IT ciągle konfigurowało moje komputery Mac w pracy, aby domyślnie mieć tcsh.
smaccoun
1
Link jest po prostu niesamowity!
Sankalp,
4

Sprawdź, co daje $ TERM: moje jest xterm-color, a ls -alG następnie wyświetla kolorowe wydruki.

William Rose
źródło
Cóż, na Capitanie z xterm-256colornie mam kolorów. CLICOLORi LSCOLORSnie zmieniaj tego):
drevicko
2

Kiedy pracowałem w systemie Mac OS X w laboratorium, byłem w stanie uzyskać kolory terminala, używając Terminalu (a nie X11), a następnie edytując profil (z paska menu Mac). Interfejs jest nieco dziwny w kolorach, ale musisz ustawić zmodyfikowany motyw jako domyślny.

Dalsze ustawienia działały poprzez edycję .bashrc.

gotować
źródło