Mac OS X: ไม่พบ dircolors?


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? ฉันจะติดตั้งมันได้อย่างไร

ปรับปรุง:

ถ้าฉันใช้ dircolors โดยตรงบนเปลือกฉันได้รับ:

bash: dircolors; command not found


คุณแน่ใจหรือว่าเป็นรหัสนี้จริงที่ทำให้เกิดข้อผิดพลาด เพียง แต่dircolors -bน่าสงสัย แต่ในคอมพิวเตอร์ของฉันมันทำงานได้โดยไม่ต้องมี~/.dircolorsไฟล์เพียงแค่ปรับ
Martin von Wittich

พยายามที่จะเรียกตนเองในเปลือกเพื่อดูว่าไบนารีที่มีอยู่และตั้งอยู่ในdircolors $PATH
Martin von Wittich

ข้อผิดพลาดจริงๆ.dircolors was not foundและไม่ได้เกี่ยวกับdircolors? ไม่มีdircolorsคำสั่งบน OSX เว้นแต่คุณจะติดตั้งด้วยตัวเองโดยเฉพาะกับ Linux (หรือมากกว่านั้นอย่างแม่นยำกับ GNU coreutils)
Gilles 'หยุดชั่วร้าย'

ขอบคุณ @Gilles เมื่อฉันพิมพ์เชลล์dircolorsฉันจะได้รับ: bash: dircolors: command not found. รหัสที่ฉันโพสต์ใน OP นั้นสร้างขึ้นโดย Zsh บนเครื่อง Linux ฉันคิดว่าฉันสามารถโคลน.zshrcMac OS X ของฉันได้โดยตรง คุณรู้หรือไม่ว่าโค้ดใน OP ของฉันทำอะไรหรือมีคำแนะนำใด ๆ เกี่ยวกับวิธีการแก้ไขเพื่อนำไปใช้กับ Mac OS X
Amelio Vazquez-Reina

คำตอบ:


15

คำสั่งdircolorsเฉพาะเจาะจงกับ GNU coreutils ดังนั้นคุณจะพบคำสั่งนั้นบน Linux ที่ไม่ได้ฝังตัวและบน Cygwin แต่ไม่พบในระบบยูนิกซ์อื่น ๆ เช่น OSX การตั้งค่าที่สร้างใน.zshrcOSX ของคุณไม่สามารถพกพาได้

เนื่องจากคุณใช้สีเริ่มต้นคุณสามารถส่งสตริงว่างไปที่ 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 แต่ในความเห็นของฉันนี่เป็น overkill คุณสามารถหาพอร์ตได้ที่นี่


7

ฉันไม่ได้ทำสิ่งทั้งหมดของ mac อีกต่อไปดังนั้นฉันไม่มีอะไรที่จะทดสอบด้วย แต่ในการแสวงหาเพื่อให้การทำงานกับ FreeBSD นี้ฉันพยายามหาวิธีการทำงานจากพอร์ตนี้ ฉันจำได้ว่า OSX มีคุณสมบัติเช่นนี้brewและmacports- ลองติดตั้ง coreutils ของ GNU จากสิ่งนี้หากคุณต้องการdircolorsทำงานจริงๆ ฉันยังมีการตั้งนามแฝงสำหรับdircolorsการgdircolorsเช่นนี้เป็นคำสั่งที่มีการติดตั้ง FreeBSD พอร์ตสนุกเป็น ขอให้โชคดีกับทุกคนที่ลองทำสิ่งนี้!

นี่คือลิงค์สำหรับบางคนที่ทำให้คอร์ติลส์จมลงผ่าน Brew

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

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.