dircolors: แก้ไขการตั้งค่าสี globaly


40

ฉันเข้าใจการlsใช้dircolorsเพื่อแสดงผลสี dircolorsมีฐานข้อมูลเริ่มต้นของสีที่เชื่อมโยงกับนามสกุลไฟล์ซึ่งสามารถพิมพ์ด้วยคำสั่ง

dircolors --print-database

จากที่ผมอ่านฐานข้อมูลทั้งระบบควรจะอยู่ในman dir_colors /etc/DIR_COLORSแต่ไฟล์นี้ไม่มีอยู่ในระบบของฉัน (Debian) ฉันจะแก้ไขการตั้งค่าสีทั่วทั้งระบบได้dircolorsอย่างไร คำสั่งdircolors --print-databaseใช้การตั้งค่าจากที่ไหนเมื่อไม่มีไฟล์อยู่

ฉันทราบว่าผู้ใช้สามารถมีไฟล์เฉพาะผู้ใช้~/.dircolorsพร้อมการตั้งค่าของเขา แต่นี่ไม่เหมาะสำหรับฉันเนื่องจากฉันต้องเปลี่ยนการตั้งค่าสำหรับทุกคน

คำถามที่สองคือว่าเป็นไปได้หรือไม่ที่จะใช้สี 8 บิตสำหรับ dircolors xterm-256colorขั้วของฉันคือ

คำตอบ:


36

lsLS_COLORSใช้เวลาตั้งค่าสีที่ได้จากตัวแปรสภาพแวดล้อม dircolorsเป็นเพียงวิธีที่สะดวกในการสร้างตัวแปรสภาพแวดล้อมนี้ หากต้องการให้ตัวแปรสภาพแวดล้อมนี้มีผลทั่วทั้งระบบให้วางไว้ในไฟล์เริ่มต้นของเชลล์

สำหรับbashคุณจะใส่สิ่งนี้ใน/etc/profile:

# `dircolors` prints out `LS_COLORS='...'; export LS_COLORS`, so eval'ing
# $(dircolors) effectively sets the LS_COLORS environment variable.

eval "$(dircolors /etc/DIR_COLORS)"

สำหรับzshคุณจะใส่ไว้ใน/etc/zshrcหรือจัดการzshเพื่ออ่าน/etc/profileเมื่อเริ่มต้น การกระจายของคุณอาจzshทำเช่นนั้นแล้ว ฉันเพิ่งนำสิ่งนี้มาชี้ให้เห็นว่าการตั้งค่าdircolorsสำหรับทุกคนอย่างแท้จริงขึ้นอยู่กับเปลือกหอยที่พวกเขาใช้

สำหรับที่dircolorsได้รับการตั้งค่าจากเมื่อคุณไม่ได้ระบุไฟล์มันก็ใช้ค่าเริ่มต้นในตัวบางอย่าง

คุณสามารถใช้xtermรหัสยกเว้น 256 สีในไฟล์ dircolors ของคุณได้ แต่โปรดทราบว่ารหัสเหล่านี้จะใช้ได้xtermกับเทอร์มินัลที่ใช้งานร่วมกันได้เท่านั้น พวกเขาจะไม่ทำงานบนคอนโซลข้อความ Linux ตัวอย่างเช่น

รูปแบบของรหัสหลีกเลี่ยงสี 256 สีใช้38;5;colorNสำหรับสีพื้นหน้าและ48;5;colorNสีพื้นหลัง ตัวอย่างเช่น:

.mp3  38;5;160                   # Set fg color to color 160      
.flac 48;5;240                   # Set bg color to color 240
.ogg  38;5;160;48;5;240          # Set fg color 160 *and* bg color 240.
.wav  01;04;05;38;5;160;48;5;240 # Pure madness: make bold (01), underlined (04), blink (05), fg color 160, and bg color 240!

1
คุณช่วยอธิบายได้ไหมว่าฉันจะใช้รหัสหลีกเลี่ยง 256 สีได้อย่างไร สมมติว่าฉันต้องการเปลี่ยนสิ่งต่อไปนี้.mp3 00;36เพื่อใช้ color126 จากแผนภูมิสี xterm-256 upload.wikimedia.org/wikipedia/en/1/15/Xterm_256color_chart.svg
user1968963

1
แน่นอนดูการแก้ไขของฉัน
แมตต์

8

คำสั่งdircolors --print-databaseใช้การตั้งค่าจากที่ไหนเมื่อไม่มีไฟล์อยู่

ตามคู่มือจะใช้ฐานข้อมูลที่คอมไพล์แล้วในกรณีที่ไม่มีไฟล์

หากระบุไฟล์แล้ว dircolors จะอ่านเพื่อกำหนดสีที่จะใช้สำหรับประเภทไฟล์และนามสกุลไฟล์ มิฉะนั้นจะใช้ฐานข้อมูลที่คอมไพล์แล้ว สำหรับรายละเอียดเกี่ยวกับรูปแบบของไฟล์เหล่านี้ให้เรียกใช้ ' dircolors --print-database'

ในการเปลี่ยนการตั้งค่าสำหรับทุกคนคุณสามารถสร้าง/etc/dircolorsไฟล์และเพิ่มรายการต่อไปนี้/etc/bashrc:

d=/etc/dircolors
test -r $d && eval "$(dircolors $d)"

7

ชุด Linux ตั้งค่าสีพื้นหลังของคอนโซลพร้อม dircolors:

ไฟล์ dircolors ของคุณควบคุมสีของคำที่ปรากฏผ่าน ls บนคอนโซล ค้นหา.dircolorsไฟล์นี้สำหรับการแจกจ่ายของคุณลิงค์สำหรับช่วยเหลือ:

http://www.linuxfromscratch.org/blfs/view/svn/postlfs/profile.html

สำหรับฉันใน Fedora 17 ไฟล์ dircolors ของฉันคือ: /etc/DIR_COLORS

คัดลอก/etc/DIR_COLORSลงใน/home/el/.dircolorsไดเรกทอรีของคุณ สร้างมันหากไม่มีอยู่

แก้ไข /home/el/.dircolors ค้นหาข้อความ "dir"

เปลี่ยนสิ่งนี้:

DIR 01;34   # directory

สำหรับสิ่งนี้:

DIR 01;36   # directory

บันทึกและปิดและรีสตาร์ทเชลล์ ไดเรกทอรีไปจากสีน้ำเงินเข้มบนสีดำ (อ่านไม่ได้) เพื่อสดใสน้านสีดำ (อ่านได้)


2
-1: ไม่มี/etc/DIR_COLORSใน Distro ของเดเบียนของ OP และเขาก็รู้อยู่แล้ว~/.dircolorsว่าไม่ใช่คำถาม
MestreLion
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.