Обновлять:

Обновлять:

Я только что перешел на 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? Как мне его установить?

Обновлять:

Если я запускаю dircolors непосредственно в оболочке, то получаю:

bash: dircolors; command not found

решение1

Команда 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.

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

решение2

Поскольку FreeBSD не имеет команд dircolor, а OS X имеет базу FreeBSD, вы не можете ее использовать.

Самое простое — использовать

export CLICOLOR=YES

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

export LSCOLORS="Gxfxcxdxbxegedabagacad"

Более подробную информацию об этом можно найти на странице руководства

man ls

Альтернативой export CLICOLOR=YESявляется использование псевдонима дляls

alias ls=ls -G

Некоторые предлагали установить GNU-Coreutils из Mac Ports, но по-моему это перебор. Вы можете найти портздесь

решение3

Я больше не занимаюсь всем этим для Mac, поэтому мне не на чем тестировать, но в поисках того, как заставить это работать на FreeBSD, мне удалось выяснить, как заставить это работать из портов. Я помню, что в OSX есть такие вещи, как brewи macports- Попробуйте установить GNU coreutils отсюда, если вы действительно хотите dircolorsработать. Мне также пришлось задать псевдоним для dircolorsto, gdircolorsтак как это команда, под которой порты FreeBSD устанавливают веселье. Удачи всем, кто в конечном итоге попробует это!

Вот ссылка на то, как кто-то запускает coreutils с помощью brew:

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

решение4

Вы можете установить dircolorsиз пакета Homebrew coreutils:

 brew install coreutils

Однако GNU coreutils не включены в PATHпо умолчанию. Отредактируйте свой ~/.zshrc, ~/.bashrcи добавьте:

  export PATH="/opt/homebrew/opt/coreutils/libexec/gnubin:$PATH"

Теперь после запуска нового сеанса оболочки dircolorsвсе должно работать.

Связанный контент