Jak uzyskać ls --color = auto do pracy w systemie Mac OS X?

Odpowiedzi:

78

lsjest właściwie oddzielny od Basha. Mac OS X ma wersję BSD ls, która wymaga -Gw wierszu poleceń lub CLICOLOR(i być może LSCOLORS) w środowisku.

Zobacz man lswięcej informacji.

DoeNietZoMoeilijk
źródło
5
Tak samo. Mam alias ls='ls -G'ustawione w moim .bashrc na Snow Leopard.
ajaz
Z jakiegoś powodu CLICOLOR=Yprzestałem działać na moim komputerze Mac. alias ls='ls -G'zmusiłby lsdo kolorowania. Określam to tylko dla terminali interaktywnych.
DKroot,
31

Otwórz okno terminala i wpisz:

alias ls='ls -G'

Więc uderz Enteri gotowe!

Safran Ali
źródło
10

Użyj Homebrew .

brew install coreutils

Zauważ, że spowoduje to wyświetlenie przedrostka gprzed wszystkimi poleceniami (np. glsDla ls). Daje to opcję źródła pliku, który automatycznie aliasuje je dla ciebie.

Nie byłem pewien, czy istnieje opcja ich bezpośredniego zainstalowania bez konieczności wykonywania całego aliasu, więc zamiast tego w zainstalowanych MacPortach i tak zrobiłem .

ifightcrime
źródło
1
Wynik mówi: Jeśli naprawdę potrzebujesz używać tych poleceń z ich normalnymi nazwami, możesz ... Dlaczego tak naprawdę to podkreśla ? Jakie są wady?
z0r
I nigdy nie zarchiwizowałeś swojej strony na archive.org, a teraz twój link w ostatnim akapicie zniknął
barlop
5

kompatybilność z GNU i * BSD / darwin ls

~ / .profile

#for *BSD/darwin
export CLICOLOR=1

ls --color=auto &> /dev/null && alias ls='ls --color=auto' ||

~ / .bashrc (nie pamiętam, czy bash w systemie Linux zawsze czyta ~ / .profile, ale nie mój zsh w ARCH)

[[ -f $HOME/.profile ]] && source $HOME/.profile
Victor Gavro
źródło
6
Czy możesz wyjaśnić ten kod?
bwDraco
1
ustawienie zmiennej środowiskowej CLICOLOR dla systemów * BSD i Darwin - jeśli jest ustawiona ls i ewentualnie inne narzędzia działałyby w kolorze, ale GNU ls (dla Linuksa) ignoruje to. Jeśli „ls --color = auto” nie zawiedzie (status wyjścia = 0) - mamy wersję GNU ls i tworzenie aliasu do rysowania kodów kolorów w trybie interaktywnym, jeśli to się nie powiedzie, to nie potrzebujemy aliasu z powodu CLICOLOR zmienna. „&> / dev / null” po prostu nie pokazuj stderr i stdout, jeśli coś się nie powiedzie lub jeśli wszystko jest w porządku. Działa na moim systemie Linux i OSX. (ps bash na osx i freebsd nie czyta .bashrc, więc wstaw go do pliku .profile. już go naprawiłem).
Victor Gavro
2

Musisz zainstalować alternatywną wersję ls. Ten zwykle używany w Linuksie pochodzi z projektu GNU coreutils .

Możesz budować i instalować lub instalować z Macports , Fink lub Homebrew .

Doug Harris
źródło
4
To moim zdaniem przesada. Nie trzeba instalować osobnej wersji, lsgdy ta sama funkcja jest obsługiwana nieco inaczej w istniejącej wersji ls.
ayaz
Słuszna uwaga. Z drugiej strony, kolorowy ls nigdy nie był moim gustem. alias ls='ls -F'
Doug Harris
alias ls='ls -FG'- to najlepsze z obu światów!
mipadi
1
Robię to za pomocą homebrew. Nie jest to przesada, jeśli używasz zarówno komputerów Mac, jak i * nix i chcesz, aby Twoje terminale wyglądały tak samo - pozwala to na używanie tych samych plików konfiguracyjnych na wszystkich komputerach. Jest zainstalowany jako glsi nie zastępuje oryginału, więc naprawdę nie ma wad.
senderle
1

Używam tego skryptu Perla, który napisałem w systemie AIX . Jest to przydatne, jeśli korzystasz z systemu, który nie obsługuje --color, a także tam, gdzie nie masz sudo do instalowania pakietów.

Powinien również działać na komputerach Macintosh.

Erik Aronesty
źródło