ฉันใช้sed
คำสั่งและฉันต้องการเก็บเอาท์พุทสีจากคำสั่งก่อนหน้า ผลลัพธ์ของls
มีสี แต่ผลลัพธ์ของ sed ไม่ใช่ ฉันใช้ OSX
ls -la | sed -En '/Desktop/q;p'
ฉันใช้sed
คำสั่งและฉันต้องการเก็บเอาท์พุทสีจากคำสั่งก่อนหน้า ผลลัพธ์ของls
มีสี แต่ผลลัพธ์ของ sed ไม่ใช่ ฉันใช้ OSX
ls -la | sed -En '/Desktop/q;p'
คำตอบ:
บน macOS ls
ไม่ใช่ GNU ls
และไม่ยอมรับ--color=always
ตัวเลือกที่ผู้ใช้ Linux อาจคาดหวังสำหรับการทำงานนี้
ในรุ่น MacOS ของls
สีจะถูกควบคุมโดยสองตัวแปร : และ$CLICOLOR
$CLICOLOR_FORCE
หากกำหนดไว้ก่อนหน้านี้เทอร์มินัลที่ระบุโดย$TERM
รองรับสีและเอาต์พุตเป็นเทอร์มินัลเอาต์พุตนี้จะมีสีเหมือน--color=auto
ตัวเลือกของ GNU หากตัวแปรหลังถูกกำหนดไว้เป็นอย่างดีสภาพสุดท้ายหลุดทำตัวเหมือน --color=always
GNU
หากต้องการให้สีผ่านไปsed
คุณจะต้องมีสิ่งต่อไปนี้:
CLICOLOR_FORCE=1 ls -la | sed -En '/Desktop/q;p'
-G
นั้นเทียบเท่ากับการกำหนด$CLICOLOR
(และดังนั้นจึงไม่เพียงพอ)
ฉันสุ่มสี่สุ่มห้าจะเดาว่าการกระจายของคุณเช่นเดียวกับคนที่มีนามแฝงว่าแผนที่ไปls
ควรทำงาน.ls --color=auto
ls -la --color=always | sed …
(การauto
ตั้งค่าทำให้พูดอย่างกว้าง ๆls
ตรวจสอบว่าเอาต์พุตไปที่จอแสดงผลหรือไม่และมีเพียงสีสำหรับจอแสดงผลเหตุผลสำหรับเรื่องนี้คือสีที่รับรู้ได้โดยลำดับการหลบหลีกเช่นตัวอักษรคำสั่งที่มองไม่เห็นดังนั้นโปรแกรมอาจสร้างความสับสน ส่วนหนึ่งของชื่อไฟล์สิ่งต่าง ๆ เช่นนั้น)
ls
มี-G
ตัวเลือกในการเปิดใช้งานสีเช่นกัน แต่ฉันไม่แน่ใจว่ามันทำงานอย่างไรในไปป์ไลน์