ฉันสามารถกำหนดค่าเทอร์มินัลเพื่อแสดงเอาต์พุต stderr ด้วยสีที่ต่างกันได้หรือไม่


11

เป็นไปได้ไหมที่จะกำหนดค่าเทอร์มินัลใน OS X เพื่อแสดงstderrเอาต์พุตโดยอัตโนมัติในสีที่แตกต่างstdoutจากเอาท์พุทจากกระบวนการ

หรือเป็นไปได้เฉพาะในกรณีที่กระบวนการส่งสัญญาณเอาต์พุตเป็นสี?


น่าเศร้าที่เป็นของ2019คำตอบที่ถูกต้องคือนี้จะไม่มีอีกต่อไปได้ ทั้งสองhiliteและstderredไม่มีสีและแตกหักและฉันยังคงมองหาวิธีแก้ปัญหา
โซริน

@ โซรินฉันเพิ่งติดตั้งhiliteผ่าน Homebrew ก็ยังทำงานได้ตามที่คาดไว้ (จะแปลกใจถ้าไม่จริงมันใช้ฟังก์ชั่นพื้นฐานมากเพื่อให้งานสำเร็จ)
nohillside

@sorin stderredอาจไม่ทำงานอีกต่อไปเนื่องจากดูเหมือนว่าจะเปลี่ยนโหลดไลบรารีไดนามิกของตำแหน่งซึ่งอาจถูกป้องกันโดย SIP ในปัจจุบันทุกวัน
nohillside

คำตอบ:


9

ไม่มีวิธีแก้ปัญหาที่ตรงไปตรงมา แต่มีวิธีแก้ไขอย่างน้อยสองสามข้อสำหรับการทำเช่นนี้

  • คุณสามารถติดตั้งไฮไลต์โดยสร้างไฟล์ C ไฟล์เดียว ( hilite.cในกรณีนี้) หรือโดยใช้brew install hilite(โดยติดตั้งhomebrewบนระบบ) hilite <command>ใช้มันเป็น

  • คุณสามารถใช้คำสั่งจากคำตอบนี้บน serverfault (แทนที่commandด้วยชื่อสคริปต์ / คำสั่งของคุณ) เพื่อให้ stderr ปรากฏเป็นสีแดง (สำหรับสีอื่น ๆ ให้ดูรายการANSI escape sequencesและเปลี่ยน31mในคำสั่งด้านล่าง):

    command 2> >(while read line; do echo -e "\e[01;31m$line\e[0m" >&2; done)
  • คุณสามารถใช้stderredเพื่อ color stderr เป็นสีแดง


3

คุณอาจต้องการดูstderredซึ่งอนุญาตให้ส่งออก Stderr เป็นสีแดง

มันรองรับ OSX และมีคู่มือการติดตั้งบน OSX

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