Mac OS X: кольори не знайдено?


19

Я щойно перейшов на Macbook Air. Я встановив zsh за допомогою homebrew, але коли я використовую частину коду, який я (спочатку мав) у своєму .zshrc, я отримую помилку про це .dircolors was not found.

Нижче наведено код, про який йдеться:

zstyle ':completion:*' auto-description 'specify: %d'
zstyle ':completion:*' completer _expand _complete _correct _approximate
zstyle ':completion:*' format 'Completing %d'
zstyle ':completion:*' group-name ''
zstyle ':completion:*' menu select=2
eval "$(dircolors -b)"
zstyle ':completion:*:default' list-colors ${(s.:.)LS_COLORS}
zstyle ':completion:*' list-colors ''
zstyle ':completion:*' list-prompt %SAt %p: Hit TAB for more, or the character to insert%s
zstyle ':completion:*' matcher-list '' 'm:{a-z}={A-Z}' 'm:{a-zA-Z}={A-Za-z}' 'r:|[._-]=* r:|=* l:|=*'
zstyle ':completion:*' menu select=long
zstyle ':completion:*' select-prompt %SScrolling active: current selection at %p%s
zstyle ':completion:*' use-compctl false
zstyle ':completion:*' verbose true

zstyle ':completion:*:*:kill:*:processes' list-colors '=(#b) #([0-9]#)*=0=01;31'
zstyle ':completion:*:kill:*' command 'ps -u $USER -o pid,%cpu,tty,cputime,cmd'

Є dircolorsне поставляється з Mac OS X? Як я можу його встановити?

Оновлення:

Якщо я запускаю кольори прямо на оболонці, я отримую:

bash: dircolors; command not found


Ви впевнені, що саме цей код викликає помилку? Тільки dircolors -bздається підозрілим, але на моєму комп’ютері це працює без ~/.dircolorsфайлу просто чудово.
Мартін фон Віттіч

Спробуйте запустити dircolorsвручну в оболонці, щоб побачити, чи існує бінарний файл і чи знаходиться він $PATH.
Мартін фон Віттіч

Це помилка насправді, .dircolors was not foundа не про це dircolors? На dircolorsOSX немає команди, якщо ви її не встановили самостійно, вона специфічна для Linux (або точніше для ядер GNU).
Жил "ТАК - перестань бути злим"

Дякую @Gilles Коли я набираю в оболонці dircolorsя отримую: bash: dircolors: command not found. Код, який я розмістив в ОП, автоматично створювався Zsh на машині Linux. Я подумав, що можу безпосередньо клонувати .zshrcсвій Mac OS X. Чи знаєте ви, що робить код у моїй операційній програмі, чи є якісь пропозиції щодо його зміни, щоб надати еквівалентну функціональність Mac OS X?
Амеліо Васкес-Рейна

Відповіді:


15

Команда dircolorsхарактерна для GNU coreutils, тому ви знайдете її на невбудованому Linux та Cygwin, але не на інших системах unix, таких як OSX. Згенеровані налаштування у вашому .zshrcПК не переносяться на OSX.

Оскільки ви використовуєте кольори за замовчуванням, ви можете передавати порожній рядок до, list-colorsщоб отримати кольори у файлі.

Для кольорів з фактичною lsкомандою встановіть CLICOLORзмінну середовища на OSX, а також встановіть LSCOLORS(див. Посібник щодо формату), якщо ви хочете змінити кольори.

if whence dircolors >/dev/null; then
  eval "$(dircolors -b)"
  zstyle ':completion:*:default' list-colors ${(s.:.)LS_COLORS}
  alias ls='ls --color'
else
  export CLICOLOR=1
  zstyle ':completion:*:default' list-colors ''
fi

Якщо ви хочете встановити кольори, що не використовуються за замовчуванням ( dircolorsз аргументом файлу), моя рекомендація полягає в тому, щоб жорстко кодувати висновок dircolors -b ~/.dircolorsу вашому .zshrcі використовувати ці налаштування як для zsh, так і для GNU.

LS_COLORS=…
zstyle ':completion:*:default' list-colors ${(s.:.)LS_COLORS}
if whence dircolors >/dev/null; then
  export LS_COLORS
  alias ls='ls --color'
else
  export CLICOLOR=1
  LSCOLORS=…
fi

3
GNU dircolorsнадається як gdircolorsна brew«S coreutilsпакета.
m8mble

13

Оскільки FreeBSD не має команди, dircolorа OS X має базу FreeBSD, ви не можете її використовувати.

Найпростіша річ у використанні

export CLICOLOR=YES

у вашому .zshrcі .bashrcі видаліть eval "$(dircolors -b)". Для зміни кольорів можна використовувати змінну середовища LSCOLORS. Наприклад:

export LSCOLORS="Gxfxcxdxbxegedabagacad"

Ви можете дізнатися більше про це на сторінці man

man ls

Альтернативою export CLICOLOR=YESє використання псевдоніма дляls

alias ls=ls -G

Деякі пропонували встановити GNU-Coreutils з Mac Ports, але, на мою думку, це надмір. Ви можете знайти порт тут


7

Я більше не займаюся цілою дією Mac, тому мені не потрібно нічого тестувати, але в прагненні домогтися роботи над FreeBSD мені вдалося розібратися, як це зробити з портів. Я пам'ятаю OSX має такі речі , як brewі macports- Спробуйте встановити Coreutils GNU з цього , якщо ви дійсно хочете dircolorsпрацювати. Я також мав встановити псевдонім для , dircolorsщоб , gdircolorsяк це команда , яка порти FreeBSD встановлена забава , як. Удачі всім, хто закінчує спробувати це!

Ось посилання на те, що хтось отримує основні програми через заварку:

http://www.topbug.net/blog/2013/04/14/install-and-use-gnu-command-line-tools-in-mac-os-x/

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.