วิธีการเปลี่ยนสีของไดเร็กทอรีและไฟล์ในคำสั่ง ls
เผยแพร่แล้ว: 2022-01-29 หากคุณใช้คำสั่ง ls
ใน Bash คุณจะสังเกตเห็นว่าไดเร็กทอรีและไฟล์ที่คุณเห็นจะถูกปรับสีตามประเภท คุณสามารถปรับแต่งชุดสีของคุณเองเพื่อเลือกสีข้อความ สีพื้นหลัง และการจัดรูปแบบต่างๆ เช่น ตัวหนาและขีดเส้นใต้
มันทำงานอย่างไร
โครงร่างสีถูกเก็บไว้ในตัวแปร LS_COLORS ในการดูชุดสีปัจจุบันของคุณ คุณสามารถบอกให้ Bash พิมพ์เนื้อหาของตัวแปรได้:
เสียงสะท้อน $LS_COLORS
คุณจะเห็นรายการประเภทไฟล์และรหัสตัวเลขจำนวนมาก เราจะอธิบายวิธีสร้างรายการแบบนี้ด้วยตัวเอง
ก่อนที่จะเล่นเรื่องนี้ เราแนะนำให้บันทึกเนื้อหาปัจจุบันของตัวแปร LS_COLORS ไปยังตัวแปรอื่น วิธีนี้จะช่วยให้คุณกู้คืนการตั้งค่าเริ่มต้นได้อย่างรวดเร็วโดยไม่ต้องออกจากเชลล์และลงชื่อเข้าใช้ใหม่ หรือปิดและเปิดหน้าต่างเทอร์มินัลอีกครั้ง ในการบันทึกเนื้อหาปัจจุบันของตัวแปร LS_COLORS ไปยังตัวแปรใหม่ที่ชื่อ ORIGINAL ให้รัน:
ORIGINAL=$LS_COLORS
คุณสามารถเรียกใช้คำสั่งต่อไปนี้เพื่อเลิกทำการเปลี่ยนแปลงและคืนค่าสีเริ่มต้นเมื่อใดก็ได้
LS_COLORS=$ORIGINAL
การเปลี่ยนแปลงของคุณจะเป็นแบบชั่วคราวเสมอจนกว่าคุณจะแก้ไขไฟล์เพื่อให้เป็นค่าเริ่มต้นใหม่ คุณสามารถออกจากระบบและลงชื่อเข้าใช้ใหม่ หรือปิดและเปิดหน้าต่างเทอร์มินัลอีกครั้งเพื่อคืนค่าสีกลับเป็นการตั้งค่าเริ่มต้น อย่างไรก็ตาม สิ่งนี้ทำให้ทำได้ง่ายด้วยคำสั่งด่วนเพียงคำสั่งเดียว
วิธีตั้งค่าสีที่กำหนดเอง
ตัวแปร LS_COLORS ประกอบด้วยรายการประเภทไฟล์พร้อมกับรหัสสีที่เกี่ยวข้อง รายการเริ่มต้นยาวเนื่องจากระบุสีที่แตกต่างกันสำหรับไฟล์ประเภทต่างๆ
มาเริ่มตัวอย่างพื้นฐานเพื่อสาธิตวิธีการทำงานกัน สมมติว่าเราต้องการเปลี่ยนสีของไดเร็กทอรีจากค่าเริ่มต้นตัวหนาสีน้ำเงินเป็นสีแดงตัวหนา เราสามารถเรียกใช้คำสั่งต่อไปนี้ได้:
LS_COLORS="di=1;31"
di=1;31
บิตบอก ls
ว่าไดเร็กทอรี ( di
) คือ ( =
) ตัวหนา ( 1;
) สีแดง ( 31
)
อย่างไรก็ตาม นี่เป็นเพียงตัวแปร LS_COLORS ธรรมดาๆ ที่กำหนดไดเร็กทอรีเป็นสีเดียว และปล่อยให้ไฟล์ประเภทอื่นๆ เป็นสีเริ่มต้น สมมติว่าเราต้องการสร้างไฟล์ที่มีนามสกุล .desktop เป็นสีฟ้าที่ขีดเส้นใต้ไว้ด้วย เราสามารถเรียกใช้คำสั่งต่อไปนี้ได้:
LS_COLORS="di=1:31:*.desktop=4;36"
สิ่งนี้บอก ls
ว่าไดเร็กทอรี ( di
) คือ ( =
) ตัวหนา ( 1;
) สีแดง ( 31
) และ ( :
) ไฟล์ใดๆ ที่ลงท้ายด้วย .desktop ( *.desktop
) คือ ( =
) ขีดเส้นใต้ ( 4;
) cyan ( 36
)
นี่คือกระบวนการในการรวมรายการประเภทไฟล์และสีของคุณ ระบุมากเท่าที่คุณต้องการในรูปแบบ filetype=color โดยคั่นแต่ละรายการด้วยเครื่องหมายโคลอน (:)
ที่เกี่ยวข้อง: วิธีปรับแต่ง (และปรับสี) Bash Prompt ของคุณ
ในการประกอบรายการของคุณเอง คุณจะต้องทราบรายการรหัสสีและรหัสประเภทไฟล์ สิ่งนี้ใช้รหัสสีที่เป็นตัวเลขเดียวกับที่คุณใช้เมื่อเปลี่ยนสีในพรอมต์ Bash ของคุณ
นี่คือรายการรหัสสีสำหรับข้อความเบื้องหน้า:
- สีดำ: 30
- สีฟ้า: 34
- สีฟ้า: 36
- สีเขียว: 32
- สีม่วง: 35
- สีแดง: 31
- สีขาว: 37
- สีเหลือง: 33
ตัวอย่างเช่น เนื่องจากข้อความสีเหลืองคือรหัสสี 33 คุณจะต้องใช้ di=33
เพื่อทำให้ไดเรกทอรีเป็นสีเหลือง
รายการแอตทริบิวต์สีข้อความมีดังนี้
- ข้อความปกติ: 0
- ตัวหนาหรือข้อความอ่อน: 1 (ขึ้นอยู่กับโปรแกรมจำลองเทอร์มินัล)
- ข้อความสลัว: 2
- ข้อความที่ขีดเส้นใต้: 4
- ข้อความกะพริบ: 5 (วิธีนี้ใช้ไม่ได้กับเทอร์มินัลอีมูเลเตอร์ส่วนใหญ่)
- ข้อความกลับด้าน: 7 (วิธีนี้จะสลับสีพื้นหน้าและพื้นหลัง ดังนั้นคุณจะเห็นข้อความสีดำบนพื้นหลังสีขาว หากข้อความปัจจุบันเป็นข้อความสีขาวบนพื้นหลังสีดำ)
- ข้อความที่ซ่อนอยู่: 8
เมื่อระบุแอตทริบิวต์หรือรหัสสีมากกว่าหนึ่งรหัส ให้แยกรายการรหัสด้วยอักขระอัฒภาค (;) คุณไม่จำเป็นต้องระบุ 0 สำหรับข้อความปกติ เนื่องจากข้อความปกติจะใช้เมื่อคุณไม่ได้ระบุแอตทริบิวต์ที่นี่
ตัวอย่างเช่น เนื่องจากข้อความตัวหนาคือรหัสสี 1 และข้อความสีเหลืองคือรหัสสี 33 คุณจึงควรใช้ di=1;33
เพื่อทำให้ไดเรกทอรีเป็นสีเหลืองตัวหนา คุณยังสามารถระบุแอตทริบิวต์ได้มากกว่าหนึ่งรายการ ตัวอย่างเช่น คุณสามารถใช้ di=1;4;33
เพื่อทำให้ไดเร็กทอรีเป็นตัวหนา ขีดเส้นใต้เป็นสีเหลือง
นี่คือรายการรหัสสีพื้นหลัง:
- พื้นหลังสีดำ: 40
- พื้นหลังสีน้ำเงิน: 44
- พื้นหลังสีฟ้า: 46
- พื้นหลังสีเขียว: 42
- พื้นหลังสีม่วง: 45
- พื้นหลังสีแดง: 41
- พื้นหลังสีขาว: 47
- พื้นหลังสีเหลือง: 43
ตัวอย่างเช่น เนื่องจากพื้นหลังสีน้ำเงินคือรหัสสี 44 คุณจะต้องใช้ di=44
เพื่อใช้พื้นหลังสีน้ำเงินสำหรับไดเรกทอรี คุณยังสามารถรวมรหัสสีพื้นหลัง รหัสสีพื้นหน้า และแอตทริบิวต์ได้มากเท่าที่คุณต้องการ ตัวอย่างเช่น di=1;4;33;44
จะให้ข้อความสีเหลืองที่ขีดเส้นใต้เป็นตัวหนาบนพื้นหลังสีน้ำเงิน
นี่คือรายการรหัสประเภทไฟล์:
- Directory: di
- ไฟล์: fi
- ลิงค์สัญลักษณ์: ln
- Named Pipe (FIFO): pi
- ซ็อกเก็ต: ดังนั้น
- อุปกรณ์ที่ถูกบล็อก: bd
- อุปกรณ์ตัวละคร: cd
- Orphan Symbolic Link (ชี้ไปที่ไฟล์ที่ไม่มีอยู่แล้ว): or
- ไฟล์ที่หายไป (ไฟล์ที่ขาดหายไปที่ลิงก์สัญลักษณ์เด็กกำพร้าชี้ไป): mi
- ไฟล์ปฏิบัติการ (มีสิทธิ์ "x"): ex
- *.extension: ไฟล์ใดๆ ที่ลงท้ายด้วยนามสกุลที่คุณระบุ ตัวอย่างเช่น ใช้ *.txt สำหรับไฟล์ที่ลงท้ายด้วย .txt, *.mp3 สำหรับไฟล์ที่ลงท้ายด้วย .mp3, *.desktop สำหรับไฟล์ที่ลงท้ายด้วย .desktop หรืออะไรก็ได้ที่คุณต้องการ คุณสามารถระบุนามสกุลไฟล์ต่างๆ ได้มากเท่าที่คุณต้องการ
ระบุรหัสประเภทไฟล์ต่างๆ ได้มากด้วยสีต่างๆ ตามที่คุณต้องการ โดยคั่นด้วยอักขระ : ทำขั้นตอนนี้ซ้ำเพื่อรวบรวมตัวแปร LS_COLORS ของคุณ
ตัวอย่างเช่น สมมติว่าคุณต้องการใช้ข้อความตัวหนาสีม่วงสำหรับไดเร็กทอรี ข้อความสีแดงที่ขีดเส้นใต้สำหรับไฟล์สั่งการ และข้อความสีเขียวตัวหนาบนพื้นหลังสีแดงสำหรับไฟล์ .mp3 เมื่อรวมรหัสประเภทไฟล์และรหัสสีจากรายการด้านบนเข้าด้วยกัน คุณจะได้รับ:
LS_COLORS="di=1;35:ex=4;31:*.mp3=1;32;41"
วิธีตั้งค่าสีเริ่มต้นใหม่ของคุณ
ตอนนี้คุณมีตัวแปร LS_COLORS ที่กำหนดเองซึ่งทำงานในเซสชัน Bash ปัจจุบัน อย่างไรก็ตาม คุณอาจต้องการทำให้เป็นแบบถาวร ดังนั้นมันจึงถูกใช้โดยอัตโนมัติทุกครั้งที่คุณเริ่มเซสชัน Bash ใหม่โดยที่คุณไม่ต้องจำสิ่งนี้
คุณสามารถตั้งค่าตัวแปร LS_COLORS แบบกำหนดเองของคุณ—และตัวแปร Bash อื่นๆ ที่คุณชอบ—โดยเพิ่มลงในไฟล์ .bashrc ของบัญชีผู้ใช้ของคุณ ไฟล์นี้อยู่ที่ ~/.bashrc ดังนั้น หากชื่อผู้ใช้ของคุณคือ bob คุณจะพบได้ที่ /home/bob/.bashrc มีวิธีอื่นในการตั้งค่าตัวแปรสภาพแวดล้อมเช่นกัน แต่วิธีนี้เป็นวิธีง่ายๆ
ขั้นแรก เปิดไฟล์นี้ในโปรแกรมแก้ไขข้อความที่คุณต้องการ เราจะใช้ nano เป็นตัวอย่าง แต่คุณสามารถใช้ vi, emac หรืออะไรก็ได้ที่คุณชอบ
nano ~/.bashrc
เพิ่มตัวแปร LS_COLORS ที่กำหนดเองของคุณลงในบรรทัดใหม่ที่ท้ายไฟล์ เช่น:
LS_COLORS="di=1;35:ex=4;31:*.mp3=1;32;41"
บันทึกไฟล์และออก ใน nano ให้กด Ctrl+O จากนั้นกด Enter เพื่อบันทึก จากนั้นกด Ctrl+X เพื่อออก
เมื่อใดก็ตามที่คุณเริ่มเซสชัน Bash ใหม่ Bash จะอ่านไฟล์ .bashrc และตั้งค่าตัวแปร LS_COLORS ของคุณโดยอัตโนมัติ หากต้องการเปลี่ยนสีของคุณในอนาคต ให้กลับไปที่ไฟล์ .bashrc และแก้ไขบรรทัด LS_COLORS
คุณยังสามารถลบบรรทัด LS_COLORS=
ที่คุณเพิ่มในไฟล์ .bashrc เพื่อใช้สีเริ่มต้นอีกครั้ง หากคุณไม่ได้ตั้งค่า LS_COLORS ไว้ Bash จะใช้สีเริ่มต้น