เปลี่ยนสีการแสดงชื่อไดเรกทอรี จากคำสั่ง ls

โดยส่วนใหญ่การแสดงผลด้วยการแยกสีสันต่างๆ จะช่วยทำให้ผู้ใช้งานสะดวกสบายยิ่งขึ้น แต่ในบางครั้งสีที่แสดง ก็ดูยากเหลือเกิน

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

ลองมาดูวิธีการแก้ไขเปลี่ยนสีให้ดูง่ายขึ้นกันครับ

ก่อนอื่นต้องเข้าใจก่อนว่า คำสั่ง ls ที่เราพิมพ์นั้น จริงๆ แล้วถูกแปลงด้วยคำสั่ง alias อีกที เพื่อสะดวกในการเรียกใช้ออปชัน จะได้ไม่ต้องพิมพ์ยาว

ใช้คำสั่ง alias ls เพื่อดูคำสั่งที่เรียกจริงๆ

[alice@cent7 ~]$ alias ls
alias ls='ls --color=auto'

ตัวอย่างดีฟอลต์การแสดงสีของผลลัพธ์จากคำสั่ง ls -l /var/log/
c01-ls-color-hard-to-see

วิธีการแก้ไขแบบกำปั้นทุบดินอย่างหนึ่ง (ไม่แนะนำ!) ไหนๆ สีก็มองยาก เอาออกซะเลย ก็ยกเลิกการทำ alias หรือเอาออปชัน –color=auto ออกซะ

[alice@cent7 ~]$ unalias ls
[alice@cent7 ~]$ alias ls
-bash: alias: ls: not found

ถ้าลอง ls ดูอีกที
c02-ls-no-color

คอนฟิก 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 ก็คือเปลี่ยนสีตัวหนังสือให้เป็นสีเหลือง

ลองใช้คำสั่ง ls ดูอีกที
c03-ls-color-new

ถ้าเราต้องการกำหนดสีพื้น ก็ใส่ Backgroud color ต่อท้าย เช่นสีพื้นเป็น 46=cyan

[alice@cent7 ~]$ vi .dir_colors
DIR 01;33;46

อย่าลืม หลังแก้ไขไฟล์แล้วต้องล็อกเอาท์ แล้วล็อกอินใหม่
c04-ls-with-bg-color

ยิ่งมองยากไปใหญ่ 555

ลองนำไปปรับใช้กันดูนะครับ อย่าลืมทดสอบกับโปรแกรม terminal ที่ใช้รีโมต (ssh) เข้ามาด้วยนะครับ เพราะสีที่แสดงเหมาะสมหรือไม่ ก่อนนำไปปรับแก้ในไฟล์คอนฟิกหลัง /etc/DIR_COLORS

ข้อมูลอ้างอิง

Leave a Reply

Your email address will not be published.