ตัวเลือก --color = auto สำหรับ grep GNU หมายถึงอะไร?


14

AFAICT ไม่ใช่ man page สำหรับ GNU grepและไม่info grepควรสะกดว่าอะไร--color=autoหมายถึงอะไร

ฉันต้องเป็นหนึ่งในไม่กี่คนบนโลกที่ความหมายของตัวเลือกนี้ไม่ชัดเจนในทันที

ผมคาดการณ์ว่า--color=auto"เป็นSOMEWHEREในระหว่าง" --color=neverและ--color=alwaysแต่ที่ใบยังไม่ระบุรายละเอียดมากเกินไป

คำตอบ:


14

กฎระเบียบที่มีเช่นเดียวกับที่ไม่ได้งานที่ดีกว่าการจัดเก็บเอกสารไว้ในls man lsพิเศษ:

การใช้สีเพื่อแยกความแตกต่างประเภทไฟล์ถูกปิดใช้งานโดยค่าเริ่มต้นและ
--color = never ด้วย --color = auto, ls จะปล่อยรหัสสีเฉพาะเมื่อ
เอาต์พุตมาตรฐานเชื่อมต่อกับเทอร์มินัล
ตัวแปรสภาวะแวดล้อม LS_COLORS สามารถเปลี่ยนการตั้งค่า ใช้คำสั่ง dircolors เพื่อตั้งค่า

ดังนั้นมันจะทำให้คำสั่งเพิ่มการจัดรูปแบบสีเมื่อเอาต์พุตกำลังไปยังเทอร์มินัลเท่านั้นและไม่พูดเมื่อมันไปที่ไพพ์ซึ่งโปรแกรมที่ใช้ไพพ์อาจไม่จัดการกับการจัดรูปแบบสีได้ดี


3
ใช่แล้วเวลาหลักที่ฉันพบเจอคือการทำท่อให้น้อยลง หากคุณใช้less -Rคุณสามารถรับการเน้นการจับคู่ แต่คุณต้องระบุ--color=alwaysเพื่อ grep เพื่อให้การทำงาน
Holloway

10

เนื่องจากgrepเป็นโปรแกรม GNU ตัวเลือกอื่นอาจจะดูซอร์สโค้ด


การทดสอบ grep ภายในstatic int color_optionอย่างใดอย่างหนึ่ง0, หรือ12

  • 0 ห้ามใช้เอาต์พุต colorized
  • 1 ใช้สีเสมอ
  • 2 ใช้สีเมื่อพิมพ์ไปยังเครื่องเทอร์มินัลเท่านั้น

ตอนนี้เมื่อคุณมอบ--color=autoให้กับ grep เป็นอาร์กิวเมนต์ใน CLI ของคุณมันภายในกำหนดตัวแปรเพื่อcolor_option2

ถ้าcolor_optionเท่ากับ2 grepแล้วทดสอบต่อไปไม่ว่าSTDOUTจะเชื่อมโยงกับสถานีหรือผู้ใช้คนพิการ colorized outpit shell environment variablesผ่าน หากอดีตเป็นจริงและได้รับอนุญาตเอาท์พุท colorized grepแล้วดำเนินการต่อกับการประเมินสีที่ควรใช้และในที่สุดก็พิมพ์ออกมาCLIในสีของคุณ


แหล่งที่มา: (grep 2.21)

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