Jak skonfigurować terminal Mac, aby wyświetlał kolor w ls?

336

Jak skonfigurować terminal Mac, aby wyświetlał kolor w ls? Używam MacOS 10.5

bmike
źródło
5
To świetne pytanie ... Zawsze spodziewałem się, że ls --color (a la gnu ls) po prostu będzie działać wszędzie. MacOS nie akceptuje --color, więc założyłem, że nie ma żadnej opcji kolorowego wydruku.
Armentage

Odpowiedzi:

370

Edytować:

~/.bash_profile

lub

~/.profile

i dodaj następujący wiersz, aby po prostu włączyć drukowanie w kolorze za pomocą ls:

export CLICOLOR=1

Aby dostosować kolorystykę przedstawioną przez lswas może ewentualnie dodać tej zmiennej LSCOLORS.

Przykłady

  • Domyślna

    export LSCOLORS=ExFxCxDxBxegedabagacad
  • Możesz użyć tego, jeśli używasz czarnego tła

    export LSCOLORS=gxBxhxDxfxhxhxhxhxcxcx
  • Jeśli chcesz naśladować kolory typowego terminalu Linux:

    export LSCOLORS=ExGxBxDxCxEgEdxbxgxcxd

Po dodać powyższe albo ~/.bash_profileczy ~/.profilemożna albo logout / login lub źródło plik w swojej skorupie, na np:

$ . ~/.bash_profile

UWAGA: Jeśli potrzebujesz pomocy w wyborze kolorów, możesz użyć tego narzędzia online o nazwie LSCOLORS Generator .

slm
źródło
Czy istnieje sposób, aby kolorowy tekst nie był pogrubiony?
MemphiZ
1
@JamieCook Uważam, że kolory Mikulasa są bardziej spójne z linuksem. W szczególności przerwane dowiązanie symboliczne powinno być ciemnoczerwone. Z twoimi lscolors jest niebieski ... to nie jest mały problem.
Ray Foss,
1
Nie działa na mac sierra i później
Stevie G.
1
@RayFoss rzeczywiście nie jest to mały problem, ale OS X nie może domyślnie odróżniać prawidłowych i uszkodzonych dowiązań symbolicznych. Jedyną realną alternatywą jest użycie gnu ls
Ciprian Tomoiagă
2
@StevieG Działa dla mnie w High Sierra. Upewnij się, że dobrze to ustawiłeś: echo $CLICOLORpowinien dać 1?
Franklin Yu,
192

Możesz dodać

alias ls='ls -G'

aby ~/.bash_profileuzyskać kolorowe lswydruki.

Barry Wark
źródło
41
Mój to alias ls = "ls -Gp" - -p dodaje ukośnik po każdym katalogu. Dla mnie zapewnia to znacznie większe zróżnicowanie wizualne, co jest pomocne.
Quinn Taylor
39
Widzę twoją -pi wychowuję cię, -Fktóra dodatkowo dodaje *pliki wykonywalne |po, @po potokach, po dowiązaniach symbolicznych i tak dalej.
25
Dla zabawy wrzuć -h, która sformatuje rozmiary w jednostkach „czytelnych dla człowieka”, tj. 100b 10k, 23m, 4,2g
Armentage
3
Jeśli nie masz pliku .bash_profile w ~ / .bash_profile, pamiętaj o jego źródle, aby działał. Zrób to za pomocą „source ~ / .bash_profile”
y3sh
2
Nie wiem, czy zmieniło się to od 2011 roku, ale możesz zamienić alias na, export CLICOLOR=1aby osiągnąć to samo.
David Lord
25

Uważam, że wszystko, czego naprawdę potrzebuję, to dodanie tego do mojego ~/.bash_profile

export CLICOLOR=1
Rodzaj pliku
źródło
Lub ~/.bashrc.
Chris Page
nie wydaje się działać na
Capitan
1
Pracował dla mnie jak szef w El Captian, dzięki za opublikowanie @Filype
fusion27
Musisz: 1. zamknąć terminal i otworzyć go ponownie, 2. zasób pliku konfiguracyjnego: . ~/.bash_profilelub 3. wylogować się / zalogować
slm
13

Jeśli potrzebujesz czytelnego schematu kolorów terminala Mac OS X, możesz przyjrzeć się temu:

Używam tego od ponad roku i może nie być w stanie funkcjonować bez niego!

Oto zaktualizowany link:

Jeff
źródło
6
Począwszy od systemu Mac OS X Lion 10.7, Terminal pozwala na dostosowanie kolorów ANSI, więc używanie SIMBL lub innych rozszerzeń nie jest już konieczne. Obsługuje również 256 kolorów.
Chris Page
12

Możesz także dostosować kolor zachęty (i jego format), dodając:

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

do ~/.bash_profilelub ~/.profileplik. Gdzie 0;33jest zwykły żółty, który ładnie wygląda w moim czarnym / półprzezroczystym oknie terminala.

Oto pełna lista kolorów i ich wyjaśnienia: https://wiki.archlinux.org/index.php/Color_Bash_Prompt

Moje niesamowite okno terminala

nacho4d
źródło
8

Inną opcją jest użycie GNU, lsktóry jest częścią programu „coreutils”.

Możesz go uzyskać za pośrednictwem Rudix lub Homebrew ( brew info coreutils) lub Macports lub Fink. Może to być lepsze niż użycie rozwiązania „tylko Mac OS X”, jeśli używasz tych samych plików konfiguracyjnych powłoki w różnych systemach lub znasz już GNU ls.

TJ Luoma
źródło
7

Osobiście używam Oh My Zsh do dodawania kolorów i innych sztuczek do mojego terminalu. Myślę, że to najłatwiejszy sposób.

oh-my-zsh to środowisko open source, oparte na społeczności, do zarządzania konfiguracją Zsh.

Zawiera mnóstwo pomocnych funkcji, pomocników, wtyczek, motywów i kilka rzeczy, które powodują, że krzyczysz…

wprowadź opis zdjęcia tutaj

StrawHara
źródło
4

Wystarczy dodać następujący wiersz do ~/.bash_profilepliku:

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

Zapowiedź: wprowadź opis zdjęcia tutaj

To są moje ulubione kolory. Możesz dostosować każdą część koloru zachęty, zmieniając mkody (np. 34m), Które są kodami kolorów ANSI.

Lista kodów kolorów ANSI:

  • Czarny: 30m
  • Czerwona: 31 m
  • Zielony: 32m
  • Żółty: 33 m
  • Niebieski: 34m
  • Fioletowy: 35m
  • Cyjan: 36m
  • Biała: 37 m
Shayan Amani
źródło
4

Łączę tutaj wszystkie odpowiedzi, których używam:

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"

wprowadź opis zdjęcia tutaj

Piasek1512
źródło
3

Zapomnij o wszystkich tych kilkudziesięcioletnich tajemniczych kodach na miłość boską, użyj wbudowanego panelu Terminal -> Preferencje ... Ustawienia, aby ustawić domyślną skórkę i edytuj kolory ANSI według własnych upodobań. Możesz także ustawić czcionkę. Wolę Menlo 12pt. W ten sposób każdy zwykły Joe może to zrobić i unikać szalonego wiersza poleceń, unikatowego sposobu robienia rzeczy, jak sugerują inni plakaty.

Geoff Hoffman
źródło
12
Myślę, że każdy, kto ma wystarczające doświadczenie, by wiedzieć, że lsmoże mieć kolorowe wydruki, jest także w stanie uruchomić kilka poleceń Uniksa, aby poprawnie go skonfigurować.
nohillside
7
Ale to tylko powoduje, że ls pokazuje się w jednym kolorze, nie powoduje to, że linki, katalogi, pliki są wyświetlane w różnych kolorach, jak ls może
Mark