วิธีการ“ ยกเลิกการบันทึก ANSI-fy”


10

เมื่อเร็ว ๆ นี้มีแนวโน้มโดยเครื่องมือบรรทัดคำสั่งเพื่อใช้สีแฟนซี ANSI ในบันทึกผลลัพธ์ของพวกเขา (ตัวอย่างเช่น NPM และโฮสต์ของเครื่องมือตาม nodejs, rvm, นักเทียบท่าและเครื่องมือ "ทันสมัย" อื่น ๆ อีกสองสาม)

สิ่งนี้ทำให้การอ่านบนหน้าจอ (*) เป็นเรื่องที่ดี แต่ไม่ดีนักเมื่อคุณต้องการไพพ์เอาต์พุตไปยังล็อกไฟล์หรือผ่านการขนส่งที่ไม่รองรับ ANSI เช่นเครื่องมือการเรียกใช้จากระยะไกลและโซลูชันการตรวจสอบผ่านเว็บ เครื่องมือที่เป็นผู้ใหญ่มากขึ้นอย่างน้อยก็มีความเหมาะสมในการตรวจจับเมื่อเอาต์พุตไม่ใช่ TTY และปิดการใช้สี แต่ไม่ใช่กับ CLIs ใหม่ที่เป็นมิตรกับผู้ใช้ซึ่งทำให้ฉันพยายามกำจัดสี ANSI ด้วยการวางท่อ เอาท์พุทผ่านกระบวนการอื่น

การซึมซับผลลัพธ์ที่ผ่านมาs/\x1B\[[0-9]*\w//gดูเหมือนจะทำให้งานเสร็จ แต่มีวิธีที่สะอาดกว่านี้เพียงคัดลอกการวางนิพจน์ปกติลงในสคริปต์ทั้งหมดของฉัน

(*) อย่างน้อยก็จนกว่าเครื่องมือจะพยายามแสดงข้อผิดพลาดเป็นสีแดงเข้มบนเทอร์มินัลพื้นหลังสีเข้มของคุณ


2
ดู: unix.stackexchange.com/questions/14684/... - unix.stackexchange.com/questions/111899/... stackoverflow.com/questions/17998978/... superuser.com/questions/380772/... - ระหว่าง 4+ คำถามมากกว่า ช่วงเวลา 3 ปีใน 3 เว็บไซต์เรามีคำตอบให้ใช้เครื่องมือที่จะทำการเปลี่ยน / ลบ regex เท่านั้น ฉันเดาว่าคงไม่มีอะไรดีไปกว่านี้แล้ว
Zoredache

เกี่ยวกับสิ่งเดียวที่น่าสนใจสำหรับการโต้วาทีคือ regex ดีที่สุดสำหรับสถานการณ์ใด
Zoredache

1
is there a cleaner approach then just copy pasting regular expressions into all of my scripts?- บันทึกตัวกรองการล้างข้อมูลของคุณลงในไฟล์ที่ชื่อว่า '/ usr / local / bin / stripttycolor.sh` หรืออะไร? ด้วยวิธีนี้คุณมี regex จำกัด อยู่ในที่เดียว?
Zoredache

3
หากคุณรู้ว่าคุณกำลังจะเขียนเอาต์พุตไปยังไฟล์สิ่งที่ง่ายที่สุดที่จะทำ (อย่างน้อยสำหรับ NPM) คือการรันด้วย--no-colorแฟล็ก คำสั่งอื่น ๆ อีกมากมายมีสถานะคล้ายกัน
Moshe Katz

@MosheKatz: น่าเสียดายที่ไม่ใช่ทุกคำสั่งเช่นbowerกัน
Guss

คำตอบ:


1

"ansifilter -p" อาจเป็นประโยชน์กับคุณ ...

มันอยู่ใน repos ของ Fedora; -p ระบุเอาต์พุตธรรมดา:

Name        : ansifilter
From repo   : updates
Summary     : ANSI terminal escape code converter
URL         : http://www.andre-simon.de/doku/ansifilter/ansifilter.php
License     : GPLv3+
Description : Ansifilter handles text files containing ANSI terminal escape codes.
            : The command sequences may be stripped or be interpreted to generate formatted
            : output (HTML, RTF, TeX, LaTeX, BBCode).

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