ฉันจะกำหนดค่า Mac Terminal ให้แสดงผลสีได้อย่างไร


336

ฉันจะกำหนดค่า Mac Terminal ให้แสดงผลสีได้อย่างไร ฉันใช้ MacOS 10.5


5
นี่เป็นคำถามที่ยอดเยี่ยม ... ฉันคาดหวังเสมอ ls --color (a la gnu ls) ที่จะทำงานได้ทุกที่ MacOS ไม่ยอมรับ --color ดังนั้นฉันคิดว่ามันไม่มีเอาต์พุตสีเป็นตัวเลือกเลย
Armentage

คำตอบ:


370

แก้ไข:

~/.bash_profile

หรือ

~/.profile

และเพิ่มบรรทัดต่อไปนี้เพื่อเปิดใช้งานเอาต์พุตสีผ่านls:

export CLICOLOR=1

หากต้องการปรับแต่งสีที่แสดงโดยlsคุณสามารถเลือกเพิ่มตัวแปรนี้LSCOLORSได้

ตัวอย่าง

  • ค่าเริ่มต้น

    export LSCOLORS=ExFxCxDxBxegedabagacad
  • คุณสามารถใช้สิ่งนี้หากคุณใช้พื้นหลังสีดำ

    export LSCOLORS=gxBxhxDxfxhxhxhxhxcxcx
  • หากคุณต้องการเลียนแบบสีของเทอร์มินัล Linux ทั่วไป:

    export LSCOLORS=ExGxBxDxCxEgEdxbxgxcxd

เมื่อคุณเพิ่มข้างต้นลงในอย่างใดอย่างหนึ่ง~/.bash_profileหรือ~/.profileคุณสามารถออกจากระบบ / เข้าสู่ระบบหรือแหล่งที่มาของไฟล์ในเปลือกของคุณเช่น:

$ . ~/.bash_profile

หมายเหตุ:หากคุณต้องการความช่วยเหลือในการเลือกสีที่จะใช้คุณสามารถใช้เครื่องมือออนไลน์ที่เรียกว่าLSCOLORS ปั่นไฟ


มีวิธีที่จะทำให้ข้อความสีดูไม่เป็นตัวหนาหรือไม่?
MemphiZ

1
@JamieCook ฉันพบว่าสีของ Mikulas สอดคล้องกันมากขึ้น โดยเฉพาะ symlink ที่เสียหายควรเป็นสีแดงเข้ม เมื่อ lscolors ของคุณเป็นสีน้ำเงิน ... นี่ไม่ใช่ปัญหาเล็กน้อย
เรย์ Foss

1
ไม่ทำงานกับ mac sierra และใหม่กว่า
Stevie G

1
@ RayFoss แน่นอนว่าไม่ใช่ปัญหาเล็ก ๆ แต่ OS X ไม่สามารถสร้างความแตกต่างระหว่าง symlink ที่ถูกต้องและใช้งานไม่ได้ตามค่าเริ่มต้น ทางเลือกเดียวที่ทำงานได้คือการใช้ gnu ls
Ciprian Tomoiagă

2
@ StevieG ทำงานให้ฉันกับ High Sierra ตรวจสอบให้แน่ใจว่าคุณตั้งค่าถูกต้อง: echo $CLICOLORควรให้ 1 หรือไม่
Franklin Yu

192

คุณสามารถเพิ่ม

alias ls='ls -G'

เพื่อของคุณที่~/.bash_profileจะได้รับlsผลสี


41
Mine is alias ls = "ls -Gp" - the -p เพิ่มเครื่องหมายสแลชหลังจากแต่ละไดเร็กทอรี สำหรับฉันมันให้ความแตกต่างของภาพมากขึ้นซึ่งเป็นประโยชน์
Quinn Taylor

39
ฉันเห็นของคุณ-pและทำให้คุณเพิ่ม-Fซึ่งนอกเหนือจากการ*ปฏิบัติการ|หลังจากท่อ@หลังจาก symlinks และอื่น ๆ

25
เพียงเพื่อความสนุกโยนใน -h ซึ่งจะจัดรูปแบบขนาดในหน่วย "มนุษย์อ่านได้" เช่น 100b 10k, 23m, 4.2g
Armentage

3
หากคุณไม่มี. bash_profile อยู่แล้วที่ ~ / .bash_profile โปรดตรวจสอบให้แน่ใจว่าได้แหล่งที่มาเพื่อให้ทำงานได้ ทำสิ่งนี้กับ "source ~ / .bash_profile"
y3sh

2
Dunno ถ้าสิ่งนี้เปลี่ยนไปตั้งแต่ 2554 แต่คุณสามารถแทนที่นามแฝงด้วยexport CLICOLOR=1เพื่อทำสิ่งเดียวกันให้สำเร็จ
เดวิดลอร์ด

25

ฉันพบว่าสิ่งที่ฉันต้องการจริงๆคือการเพิ่มลงในของฉัน ~/.bash_profile

export CLICOLOR=1

~/.bashrcหรือ
คริสหน้า

ดูเหมือนจะไม่ทำงานในเมืองหลวง):
drevicko

1
ทำงานเหมือนเจ้านายใน El Captian สำหรับฉันขอบคุณสำหรับการโพสต์ @Filype
fusion27

คุณต้อง: 1. ปิดเทอร์มินัลแล้วเปิดใหม่อีกครั้ง 2. เปิดไฟล์ config: . ~/.bash_profileหรือ 3. ออกจากระบบ / เข้าสู่ระบบ
slm

13

หากคุณต้องการโครงร่างสีของเทอร์มินัล Mac OS X ที่อ่านได้คุณอาจต้องการตรวจสอบสิ่งนี้:

ฉันใช้สิ่งนี้มานานกว่าหนึ่งปีแล้วและฉันอาจไม่สามารถใช้งานได้หากไม่มี!

นี่คือลิงค์อัพเดท:


6
ตั้งแต่ Mac OS X Lion 10.7 เทอร์มินัลอนุญาตให้ปรับแต่งสี ANSI ดังนั้นการใช้ SIMBL หรือส่วนขยายอื่น ๆ ก็ไม่จำเป็นอีกต่อไป นอกจากนี้ยังรองรับ 256 สี
Chris หน้า

12

นอกจากนี้คุณสามารถปรับแต่งสีพรอมต์ (และรูปแบบ) โดยเพิ่ม:

PS1='\[\e[0;33m\]\h:\W \u\$\[\e[m\] '

ไปยัง~/.bash_profileหรือ~/.profileไฟล์ 0;33สีเหลืองปกติอยู่ที่ไหนซึ่งดูดีในหน้าต่างเทอร์มินัลสีดำ / กึ่งโปร่งใสของฉัน

นี่คือรายการสีและคำอธิบายทั้งหมด: https://wiki.archlinux.org/index.php/Color_Bash_Prompt

หน้าต่างเทอร์มินัลที่ยอดเยี่ยมของฉัน


8

อีกทางเลือกหนึ่งคือใช้ GNU lsซึ่งเป็นส่วนหนึ่งของโปรแกรม 'coreutils'

คุณสามารถรับมันผ่านRudixหรือ Homebrew ( brew info coreutils) หรือ Macports หรือ Fink อาจเป็นวิธีที่ดีกว่าหากใช้โซลูชัน "Mac OS X เท่านั้น" หากคุณใช้ไฟล์ shell shell เดียวกันในระบบที่แตกต่างกันหรือคุ้นเคยกับ GNU ls อยู่แล้ว



7

โดยส่วนตัวฉันใช้Oh My Zshเพื่อเพิ่มสีและลูกเล่นอื่น ๆ ให้กับ Terminal ของฉัน ฉันคิดว่านั่นเป็นวิธีที่ง่ายที่สุด

oh-my-zsh เป็นโอเพ่นซอร์สเฟรมเวิร์กที่ขับเคลื่อนด้วยชุมชนสำหรับการจัดการการกำหนดค่า Zsh ของคุณ

มันมาพร้อมกับฟังก์ชั่นที่เป็นประโยชน์มากมายผู้ช่วยปลั๊กอินธีมและบางสิ่งที่ทำให้คุณตะโกน ...

ป้อนคำอธิบายรูปภาพที่นี่


4

เพียงเพิ่มบรรทัดต่อไปนี้ลงใน~/.bash_profileไฟล์:

export PS1=" \[\033[34m\]\u@\h \[\033[33m\]\w\[\033[31m\]\[\033[00m\] $ "

ตัวอย่าง: ป้อนคำอธิบายรูปภาพที่นี่

นี่คือสีที่ฉันต้องการ คุณสามารถปรับแต่งสีส่วนหนึ่งของพรอมต์แต่ละคนโดยการเปลี่ยนmรหัส (เช่น34m) ซึ่งเป็นรหัสสี ANSI

รายการรหัสสี ANSI:

  • ดำ: 30 ม
  • แดง: 31m
  • เขียว: 32m
  • สีเหลือง: 33m
  • น้ำเงิน: 34m
  • ม่วง: 35m
  • สีฟ้า: 36m
  • ขาว: 37m

4

การรวมคำตอบทั้งหมดที่นี่คือสิ่งที่ฉันใช้:

COLOR_RED="\033[0;31m"
COLOR_YELLOW="\033[0;33m"
COLOR_GREEN="\033[0;32m"
COLOR_OCHRE="\033[38;5;95m"
COLOR_BLUE="\033[0;34m"
COLOR_WHITE="\033[0;37m"
COLOR_RESET="\033[0m"

#git_color
function git_color {
  local git_status="$(git status 2> /dev/null)"

  if [[ ! $git_status =~ "working directory clean" ]]; then
    echo -e $COLOR_RED
  elif [[ $git_status =~ "Your branch is ahead of" ]]; then
    echo -e $COLOR_YELLOW
  elif [[ $git_status =~ "nothing to commit" ]]; then
    echo -e $COLOR_GREEN
  else
    echo -e $COLOR_OCHRE
  fi
}

#git_branch
function git_branch {
  local git_status="$(git status 2> /dev/null)"
  local on_branch="On branch ([^${IFS}]*)"
  local on_commit="HEAD detached at ([^${IFS}]*)"

  if [[ $git_status =~ $on_branch ]]; then
    local branch=${BASH_REMATCH[1]}
    echo "($branch)"
  elif [[ $git_status =~ $on_commit ]]; then
    local commit=${BASH_REMATCH[1]}
    echo "($commit)"
  fi
}

PS1='\[\033[01;32m\]\u\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]'
PS1+="\[\$(git_color)\]"        # colors git status
PS1+="\$(git_branch)"           # prints current branch
PS1+="\[$COLOR_BLUE\]\[$COLOR_RESET\]\$ "
export PS1

export LC_ALL=en_US.UTF-8
export CLICOLOR=1
export LSCOLORS=gxBxhxDxfxhxhxhxhxcxcx
alias ls="ls -Gp"

ป้อนคำอธิบายรูปภาพที่นี่


3

ลืมรหัสลับที่มีอายุหลายสิบปีเพื่อใช้สาเก gosh ใช้เทอร์มินัล -> การกำหนดค่าตามความชอบ ... บานหน้าต่างการตั้งค่าเพื่อตั้งค่าสกินเริ่มต้นและแก้ไขสี ANSI ตามที่คุณต้องการ คุณสามารถกำหนดแบบอักษรได้เช่นกัน ฉันชอบ Menlo 12pt นี่คือสิ่งที่ Joe ทั่วไปสามารถทำได้และหลีกเลี่ยงบรรทัดคำสั่งที่บ้าคลั่งวิธี Unix-esque ในการทำสิ่งต่าง ๆ ตามที่ผู้โพสต์คนอื่น ๆ แนะนำไว้


12
ฉันคิดว่าทุกคนมีประสบการณ์เพียงพอที่จะรู้ว่าlsสามารถมีเอาต์พุตสียังสามารถรันคำสั่ง Unix สองสามคำเพื่อกำหนดค่าอย่างถูกต้อง
nohillside

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