Как заставить ls --color = auto работать на Mac OS X?


Ответы:


79

lsна самом деле отдельно от Bash. Mac OS X имеет версию BSD ls, которая требуется -Gв командной строке или CLICOLOR(и, возможно, LSCOLORS) в среде.

Смотрите man lsдля получения дополнительной информации.


5
То же самое. Я alias ls='ls -G'установил в своем .bashrc на Snow Leopard.
2010 года

Почему-то CLICOLOR=Yперестал работать на моем Mac. alias ls='ls -G'заставил lsбы раскрасить. Я определяю это только для интерактивных терминалов.
DKroot


10

Используйте Homebrew .

brew install coreutils

Обратите внимание, что это бросит префикс gперед всеми командами (например, glsдля ls). Это дает возможность получить файл, который будет называть их автоматически.

Я не был уверен, есть ли возможность установить их напрямую, без необходимости делать весь псевдоним, поэтому вместо этого в установленных MacPorts и сделал это .


1
Вывод гласит: Если вам действительно нужно использовать эти команды с их обычными именами, вы можете ... Почему это действительно подчеркивает ? Каковы недостатки?
z0r

И вы никогда не архивировали свою страницу на archive.org, и теперь ваша ссылка в вашем последнем абзаце пропала
barlop

5

совместимость для GNU и * BSD / darwin ls

~ / .Profile

#for *BSD/darwin
export CLICOLOR=1

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

~ / .bashrc (я не помню, всегда ли bash в Linux читает ~ / .profile, но не мой zsh в ARCH)

[[ -f $HOME/.profile ]] && source $HOME/.profile

6
Можете ли вы объяснить этот код?
bwDraco

1
установка переменной среды CLICOLOR для систем * BSD и Darwin - если она установлена ​​ls и, возможно, другие утилиты будут работать в цвете, но GNU ls (для Linux) ее игнорирует. Если «ls --color = auto» не потерпит неудачу (выход из состояния = 0) - у нас есть версия ls для GNU и создание псевдонима для рисования цветовых кодов в интерактивном режиме, если это не удается - тогда нам не нужен псевдоним из-за CLICOLOR переменная. «&> / dev / null» просто не показывать stderr и stdout, если что-то не работает или все в порядке. Работает для моего Linux и OSX. (ps bash на osx и freebsd не читает .bashrc, поэтому поместите его в .profile. он уже исправлен).
Виктор Гавро

2

Вам нужно будет установить альтернативную версию ls. Тот, который обычно используется в Linux, взят из проекта GNU coreutils .

Можно построить и установить или установить из MacPorts , Fink или самогон .


4
Это излишне, на мой взгляд. Вам не нужно устанавливать отдельную версию, lsкогда одна и та же функция поддерживается немного по-другому в существующей версии ls.
2010 года

Хорошая точка зрения. Опять же, цветной ls никогда не был моим вкусом. alias ls='ls -F'
Даг Харрис

alias ls='ls -FG'- это лучшее из обоих миров!
Мипади

1
Я делаю это с помощью доморощенного. Это не излишне, если вы используете компьютеры Mac и * nix и хотите, чтобы ваши терминалы выглядели одинаково - это позволяет вам использовать одинаковые файлы конфигурации на всех компьютерах. Он установлен как glsи не заменяет оригинал, поэтому нет никаких недостатков.
senderle

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.