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

71

Я пытаюсь перенести мою конфигурацию bash с Ubuntu на Mac OS X, и похоже, что ls немного отличается. Например, он не примет --colorопцию.

Как мне заставить это работать?

cfischer
источник

Ответы:

79

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

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

DoeNietZoMoeilijk
источник
5
То же самое. Я alias ls='ls -G'установил в своем .bashrc на Snow Leopard.
2010 года
Почему-то CLICOLOR=Yперестал работать на моем Mac. alias ls='ls -G'заставил lsбы раскрасить. Я определяю это только для интерактивных терминалов.
DKroot
31

Откройте окно терминала и введите:

alias ls='ls -G'

Тогда ударил Enterи сделал!

Сафран Али
источник
10

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

brew install coreutils

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

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

ifightcrime
источник
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
1

Я использую этот Perl-скрипт, который я написал в AIX . Это полезно, если вы работаете в системе, которая не поддерживает --color, а также там, где у вас нет sudo для установки пакетов.

Должен работать на Macintosh тоже.

Эрик Аронесты
источник