โดยส่วนใหญ่การแสดงผลด้วยการแยกสีสันต่างๆ จะช่วยทำให้ผู้ใช้งานสะดวกสบายยิ่งขึ้น แต่ในบางครั้งสีที่แสดง ก็ดูยากเหลือเกิน
ตัวอย่างที่ผู้เขียนเห็นบ่อยมากที่สุดคือ สีของผลลัพธ์ที่แสดงจากคำสั่ง ls สีที่มองยากที่สุด แถมเป็นสีที่เห็นบ่อยด้วย ก็คือสีน้ำเงิน ซึ่งแสดงว่าชื่อไฟล์นั้นเป็นชนิดไดเรกทอรี
ลองมาดูวิธีการแก้ไขเปลี่ยนสีให้ดูง่ายขึ้นกันครับ
ก่อนอื่นต้องเข้าใจก่อนว่า คำสั่ง ls ที่เราพิมพ์นั้น จริงๆ แล้วถูกแปลงด้วยคำสั่ง alias อีกที เพื่อสะดวกในการเรียกใช้ออปชัน จะได้ไม่ต้องพิมพ์ยาว
ใช้คำสั่ง alias ls เพื่อดูคำสั่งที่เรียกจริงๆ
[alice@cent7 ~]$ alias ls alias ls='ls --color=auto'
ตัวอย่างดีฟอลต์การแสดงสีของผลลัพธ์จากคำสั่ง ls -l /var/log/
วิธีการแก้ไขแบบกำปั้นทุบดินอย่างหนึ่ง (ไม่แนะนำ!) ไหนๆ สีก็มองยาก เอาออกซะเลย ก็ยกเลิกการทำ alias หรือเอาออปชัน –color=auto ออกซะ
[alice@cent7 ~]$ unalias ls [alice@cent7 ~]$ alias ls -bash: alias: ls: not found
คอนฟิก alias ls ไว้เป็นอย่างเดิมดีกว่า แล้วมาแก้ไขสีของผลลัพธ์การแสดงผลชื่อไฟล์ที่เป็นไดเรกทอรีดีกว่า
ไฟล์ที่ใช้กำหนดสีของคำสั่ง ls ที่แสดงผลลัพธ์เป็นสี (–color) จะอยู่สองที่คือ
- ไฟล์ .dir_colors ที่อยู่ใน HOME ของแต่ละผู้ใช้งานเอง
- ถ้าไม่มีไฟล์ .dir_colors ใน HOME คำสั่ง ls จะมาอ่านคอนฟิกสี จากไฟล์ /etc/DIR_COLORS ซึ่งเป็นไฟล์คอนฟิกกำหนดสีหลักของเครื่อง
แนะนำให้สร้างไฟล์ .dir_colors ทดลองใช้ดูก่อน ถ้าแสดงผลเหมาะสม ค่อยนำคอนฟิกที่ได้ไปใส่ไว้ในไฟล์ /etc/DIR_COLORS
ลองสร้างไฟล์ .dir_colors ใน HOME ของผู้ใช้เอง
[alice@cent7 ~]$ pwd /home/alice [alice@cent7 ~]$ vi .dir_colors DIR 01;33
การแก้ไขไฟล์คอนฟิกนี้ต้องล็อกเอาท์ แล้วล็อกอินด้วยผู้ใช้อีกที
รูปแบบในการกำหนดสีในไฟล์ .dir_colors หรือไฟล์ /etc/DIR_COLORS คือ
FileType AttributeCode;TextColor;BackgroundColor
ในที่นี้ขออนุญาตตัดเนื้อหาจากไฟล์ /etc/DIR_COLORS มาอธิบายการตั้งค่ารหัสสี
[alice@cent7 ~]$ cat /etc/DIR_COLORS
...
# Below are the color init strings for the basic file types. A color init
# string consists of one or more of the following numeric codes:
# Attribute codes:
# 00=none 01=bold 04=underscore 05=blink 07=reverse 08=concealed
# Text color codes:
# 30=black 31=red 32=green 33=yellow 34=blue 35=magenta 36=cyan 37=white
# Background color codes:
# 40=black 41=red 42=green 43=yellow 44=blue 45=magenta 46=cyan 47=white
รหัสเดิมที่ใช้แสดงไดเรกทอรี (DIR) คือ 01;34 ความหมายก็คือแสดงผลแบบ 01=bold กำหนดสีตัวหนังสือ 34=blue
รหัสที่เรากำหนดใหม่เป็น 01;33 ก็คือเปลี่ยนสีตัวหนังสือให้เป็นสีเหลือง
ถ้าเราต้องการกำหนดสีพื้น ก็ใส่ Backgroud color ต่อท้าย เช่นสีพื้นเป็น 46=cyan
[alice@cent7 ~]$ vi .dir_colors DIR 01;33;46
อย่าลืม หลังแก้ไขไฟล์แล้วต้องล็อกเอาท์ แล้วล็อกอินใหม่
ยิ่งมองยากไปใหญ่ 555
ลองนำไปปรับใช้กันดูนะครับ อย่าลืมทดสอบกับโปรแกรม terminal ที่ใช้รีโมต (ssh) เข้ามาด้วยนะครับ เพราะสีที่แสดงเหมาะสมหรือไม่ ก่อนนำไปปรับแก้ในไฟล์คอนฟิกหลัง /etc/DIR_COLORS