ส่งออกท่อของ ls หรือ tree เพื่อลดสีให้น้อยลง?


12

treeและlsสามารถแยกประเภทไฟล์ต่าง ๆ ได้โดยการระบายสีชื่อไฟล์ต่างกัน

treeและlsมักจะส่งออกรายการยาวของไฟล์ (รวมไดเรกทอรี) ดังนั้นฉันท่อ stdout lessส่งออกไปยัง

แต่lessไม่ได้รักษาสี เราจะทำให้มันแสดงสีหรือวิธีอื่นได้อย่างไร?

เพิ่งเห็นรายการที่เชื่อมโยง แต่ไปที่less -Rหรือless -rไม่ทำงาน ระบบปฏิบัติการของฉันคือ Ubuntu 12.04 lessคือรุ่น 444: 09 มิถุนายน 2554


1
@JosephR คำถามอื่นนั้นเกี่ยวข้องกันครึ่งหนึ่ง แต่ไม่เหมือนกัน ที่นี่เรากำลังพูดถึงls(ไม่tree) ซึ่งการใช้งานบางอย่างจำเป็นต้องได้รับคำสั่งให้บังคับเอาท์พุทสีเมื่อเอาท์พุทไม่ไปที่เทอร์มินัล (นอกเหนือจากที่less -Rจำเป็น)
Stéphane Chazelas

คุณเคยลองtree -C | less -Rไหม -Cตัวเลือกเทียบเท่าต้นไม้ของน้อย--color=alwaysผมคิดว่า (อย่างน้อยก็ทำงานสำหรับฉันบน Ubuntu 12.04)
ขับขี่เหล็ก

@steeldriver ขอบคุณ มันได้ผล. treeมีและไม่มีสี-Cอยู่คนเดียวเสมอ แต่ทำไมพวกเขาถึงแตกต่างกันเมื่อใช้กับless?
ทิม

@Tim 2 เหตุผล: 1. lessลบสีโดยค่าเริ่มต้นเว้นแต่คุณจะให้-Rตัวเลือกซึ่งบอกให้ปล่อยไว้และ 2. treeและlsโปรแกรมอื่น ๆ มักจะปิดสีเมื่อตรวจพบผลลัพธ์ที่กำลังจะไปยังโปรแกรมอื่น (เช่นless) แทนของคุณโดยตรงขั้วเว้นแต่คุณจะบังคับให้สีด้วยหรือ-C --color=always
jw013

2
รายการที่คุณเชื่อมโยงนี้คืออะไร
Anthon

คำตอบ:


15

ฉันจะสมมติว่าคุณกำลังใช้ls --color=autoซึ่งบอกlsให้ใช้สีในโหมด 'อัตโนมัติ' โหมด 'อัตโนมัติ' จะบอกlessให้ดูว่า STDOUT เป็นเทอร์มินัลหรือไม่ถ้าใช้ให้ใช้สีมิฉะนั้นจะไม่ใช้สี เมื่อคุณไพพ์lsเข้าไปlessSTDOUT ไม่ใช่เทอร์มินัลเชื่อมต่อกับ STDIN ของlessซึ่งเป็นไพพ์ปกติ

การแก้ปัญหาการใช้งานหรือls --colorls --color=always

อย่างไรก็ตามตอนนี้สิ่งนี้นำไปสู่ปัญหาอื่นที่อาจเกิดขึ้น lessอาจไม่แสดงสี แต่จะแสดงรหัสการหลบหนีแทนทั้งนี้ขึ้นอยู่กับคุณ less -Rการแก้ปัญหาคือการใช้งาน สิ่งนี้บอกlessให้ผ่านรหัสการหลบหนีสำหรับการหลบหลีกสี ANSI คุณไม่ต้องการที่จะใช้-rเพราะจะทำให้เกิดปัญหากับเส้นยาวที่ล้อมรอบเนื่องจากน้อยจะไม่คำนวณความยาวของเส้นอย่างถูกต้อง

วิธีแก้ปัญหาอย่างเต็มรูปแบบ:

ls --color | less -R

ในทำนองเดียวกันสำหรับtree:

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