Mac OS X: không tìm thấy dircolors?


19

Tôi mới chuyển sang Macbook Air. Tôi đã cài đặt zsh bằng homebrew, nhưng khi tôi sử dụng một số mã mà tôi (ban đầu có) trong tôi .zshrc, tôi gặp lỗi khi nói điều đó .dircolors was not found.

Dưới đây là mã trong câu hỏi:

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'

Không dircolorsđược vận chuyển với Mac OS X? Tôi nên cài đặt nó như thế nào?

Cập nhật:

Nếu tôi chạy dircolors trực tiếp trên shell, tôi nhận được:

bash: dircolors; command not found


Bạn có chắc chắn rằng đó thực sự là mã này gây ra lỗi? Chỉ có dircolors -bvẻ đáng ngờ, nhưng trên máy tính của tôi, nó hoạt động mà không có ~/.dircolorstệp nào tốt cả.
Martin von Wittich

Hãy thử chạy dircolorsthủ công trong trình bao để xem nhị phân có tồn tại và được đặt trong $PATH.
Martin von Wittich

Là lỗi thực sự .dircolors was not foundvà không về dircolors? Không có dircolorslệnh nào trên OSX trừ khi bạn tự cài đặt nó, nó dành riêng cho Linux (hay chính xác hơn là GNU coreutils).
Gilles 'SO- ngừng trở nên xấu xa'

Cảm ơn @Gilles. Khi tôi gõ vào vỏ, dircolorstôi nhận được : bash: dircolors: command not found. Mã tôi đã đăng trong OP được Zsh tự động tạo trên máy Linux. Tôi nghĩ rằng tôi có thể sao chép .zshrctrực tiếp máy Mac OS X của mình. Bạn có biết mã trong OP của tôi làm gì hoặc có bất kỳ đề xuất nào về cách sửa đổi nó để mang lại chức năng tương đương cho Mac OS X không?
Amelio Vazquez-Reina

Câu trả lời:


15

Lệnh dircolorsnày dành riêng cho GNU coreutils, vì vậy bạn sẽ tìm thấy nó trên Linux không nhúng và trên Cygwin nhưng không phải trên các hệ thống unix khác như OSX. Các cài đặt được tạo trong .zshrckhông di động tới OSX.

Vì bạn đang sử dụng các màu mặc định, bạn có thể chuyển một chuỗi trống sang list-colorsđể lấy màu trong quá trình hoàn tất tệp.

Đối với màu sắc bằng lệnh thực tếls , hãy đặt CLICOLORbiến môi trường trên OSX và cũng đặt LSCOLORS(xem hướng dẫn sử dụng cho định dạng) nếu bạn muốn thay đổi màu.

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

Nếu bạn muốn đặt các màu không mặc định ( dircolorsvới đối số tệp), khuyến nghị của tôi sẽ là mã cứng đầu ra của dircolors -b ~/.dircolorsbạn .zshrcvà sử dụng các cài đặt này cho cả zsh và 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

3
GNU dircolorsđược cung cấp như gdircolorsbằng brewcủa coreutilsgói.
m8mble

13

Vì FreeBSD không có lệnh dircolorvà OS X có cơ sở FreeBSD, bạn không thể sử dụng nó.

Điều đơn giản nhất là sử dụng

export CLICOLOR=YES

trong của bạn .zshrc.bashrcvà loại bỏ eval "$(dircolors -b)". Để thay đổi màu sắc, bạn có thể sử dụng biến môi trường LSCOLORS. Ví dụ:

export LSCOLORS="Gxfxcxdxbxegedabagacad"

Bạn có thể tìm hiểu thêm về nó trong trang người đàn ông với

man ls

Một cách khác export CLICOLOR=YESlà sử dụng bí danh chols

alias ls=ls -G

Một số đề xuất cài đặt GNU-Coreutils từ Cổng Mac, nhưng theo tôi đây là một việc quá mức cần thiết. Bạn có thể tìm thấy cổng ở đây


7

Tôi không làm toàn bộ mac nữa, vì vậy tôi không có gì để thử nghiệm, nhưng trong nhiệm vụ để làm việc này trên FreeBSD, tôi đã tìm ra cách để nó hoạt động từ các cổng. Tôi nhớ OSX có những thứ như brewmacports- Hãy thử cài đặt lõi GNU từ cái này nếu bạn thực sự muốn dircolorslàm việc. Tôi cũng đã phải thiết lập một bí danh cho dircolorsđến gdircolorsvì đây là lệnh đó cổng FreeBSD cài đặt những niềm vui như. Chúc may mắn cho bất cứ ai cuối cùng thử điều này!

Đây là một liên kết đến một người nào đó nhận được coreutils thông qua brew:

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

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.