มีวิธีใดที่จะทำให้ข้อความถูกส่งผ่านไปยังส่วนหัว, หาง, น้อยลง, ฯลฯ เป็นสีหรือไม่?


26

มีวิธีที่จะทำให้ colorization ของข้อความใด ๆ ที่ส่งผ่านท่อ|ไปhead, tail, lessฯลฯ ?


โปรแกรมแสดงผลเฉพาะใด ๆ ขึ้นอยู่กับโปรแกรมที่ส่งข้อมูลผ่านไปป์ head, tailฯลฯ ไม่ได้คนเอาสีมันเป็นโปรแกรมสร้างข้อมูลที่มักจะตรวจสอบว่าการส่งออกเป็นไปคอนโซล (สี), ไฟล์หรือท่อ (ไม่ใช่สี)
KurzedMetal

คำตอบ:


15

ฉันคิดว่าคุณกำลังไปป์ไลน์lsและต้องการรักษารหัสสีของเทอร์มินัล คุณสามารถพูดได้ls --color=always(แทนที่จะเป็นค่าเริ่มต้น--color=auto) ซึ่งจะรักษารหัสไว้ แต่นั่นจะไม่รับประกันว่าสิ่งที่คุณกำลังจะรู้วิธีทำความเข้าใจ

หากคุณใช้glarkแทนgrepมันจะพยายามแสดงด้วยสี

หากคุณใช้lessกับ-Rมันจะพยายามที่จะแสดงด้วยสี


6
gitฉันท่อจาก ฉันพบว่ามันมีการกำหนดค่าที่คล้ายกัน (เช่น. git config color.diff always) ที่ช่วยให้มีสี
Timofey Gorshkov

1
@Errandir ปัญหาเกี่ยวกับการกำหนดค่าว่ามันจะทำลายสคริปต์หรือคำสั่งใด ๆ ที่ใช้git diffเอาต์พุตเป็นอินพุตเพราะมันจะส่งออกรหัสการหลบหนี ANSI เสมอ
KurzedMetal

@Errandir ขอบคุณ! ฉันไม่มีสคริปต์ใด ๆ ที่ต้องพึ่งพาเอาต์พุตที่สะอาดจากคอมไพล์ git ดังนั้นมันจึงใช้ได้กับฉัน !! ขอขอบคุณ !
Ashutosh Jindal

ฉันใช้สิ่งนี้เป็น grep: grep "string" file.txt | headเพื่อให้แน่ใจว่าผลลัพธ์จาก grep เป็นสีฉันเพิ่งเปลี่ยนสิ่งนี้เป็นgrep "string" file.txt --color=always | head
Emil Stenström

13

ขึ้นอยู่กับโปรแกรมที่สร้างเอาต์พุตในไพพ์

head,, tailฯลฯ ไม่ใช่รายการที่ลบสี แต่เป็นโปรแกรมที่สร้างข้อมูลที่มักจะตรวจสอบว่าเอาต์พุตกำลังไปที่คอนโซล (สี) ไฟล์หรือไพพ์ (ไม่ใช่สี)

ฉันพบSU Q&A อีกอันที่แสดงวิธีการโกหกไปยัง piping program เพื่อเอาท์พุทราวกับว่าพวกเขากำลังส่งออกไปยัง console (การจำลองคอนโซลด้วยunbuffer)


มีวิธีใดที่จะทำให้ colorization อยู่ในcolor=autoโหมด (เพื่อให้โปรแกรมคิดว่าเอาต์พุตไปที่คอนโซลแทนที่จะเป็นไพพ์)?
Timofey Gorshkov

@KurzedMetal โปรแกรมเช่นhead, tailฯลฯ , ตรวจพบว่ากำลังถูกไพพ์ไปยังโปรแกรมอื่น (เพื่อให้สามารถสร้างข้อมูลโดยไม่มีสี, ฯลฯ ).
Jorge Bucaran

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