มีคำสั่งบางตัวที่กรองหรือดำเนินการกับอินพุตจากนั้นส่งผ่านไปตามเอาต์พุตฉันคิดว่าปกติแล้วstdout
- แต่คำสั่งบางอย่างจะใช้stdin
และทำสิ่งที่พวกเขาทำกับมัน
ฉันคุ้นเคยกับ OS X มากที่สุดและมีอยู่สองอย่างที่นึกขึ้นมาทันทีpbcopy
และpbpaste
- ซึ่งหมายถึงการเข้าถึงคลิปบอร์ดของระบบ
อย่างไรก็ตามฉันรู้ว่าถ้าฉันต้องการ stdout และคายเอาท์พุทเพื่อไปที่ทั้งสองstdout
และไฟล์จากนั้นฉันสามารถใช้tee
คำสั่ง และฉันรู้เรื่องเล็กน้อยxargs
แต่ฉันไม่คิดว่านั่นคือสิ่งที่ฉันกำลังมองหา
ฉันต้องการทราบว่าฉันสามารถแยกstdout
คำสั่งระหว่างสองคำสั่ง (หรือมากกว่า) ได้อย่างไร ตัวอย่างเช่น:
cat file.txt | stdout-split -c1 pbcopy -c2 grep -i errors
อาจมีตัวอย่างที่ดีกว่าตัวอย่างนั้น แต่ฉันสนใจที่จะรู้ว่าฉันสามารถส่ง stdout ไปยังคำสั่งที่ไม่ส่งสัญญาณได้อย่างไรและในขณะที่ไม่stdout
ถูก "ปิดเสียง" - ฉันไม่ได้ถามเกี่ยวกับcat
ไฟล์และgrep
ส่วนหนึ่งของมันและคัดลอกไปยังคลิปบอร์ด - คำสั่งเฉพาะนั้นไม่สำคัญ
นอกจากนี้ - ฉันไม่ได้ถามว่าจะส่งไฟล์นี้ไปยังไฟล์ได้อย่างไรstdout
- อาจเป็นคำถามที่ "ซ้ำกัน" (ขออภัย) แต่ฉันได้ลองดูแล้วจะพบคนที่คล้ายกันที่ถามถึงวิธีการแยกระหว่าง stdout และไฟล์ - และคำตอบสำหรับคำถามเหล่านั้นดูเหมือนจะเป็นtee
ซึ่งฉันไม่คิดว่าจะทำงานให้ฉันได้
สุดท้ายคุณอาจถามว่า "ทำไมไม่ทำให้ pbcopy เป็นสิ่งสุดท้ายในห่วงโซ่ท่อ" และการตอบสนองของฉันคือ 1) ถ้าฉันต้องการใช้มันและยังเห็นผลลัพธ์ในคอนโซล? 2) จะทำอย่างไรถ้าฉันต้องการใช้สองคำสั่งที่ไม่ได้เอาต์พุตstdout
หลังจากที่ประมวลผลอินพุต?
โอ้และอีกอย่างหนึ่ง - ฉันรู้ว่าฉันสามารถใช้tee
และท่อที่มีชื่อ ( mkfifo
) แต่ฉันหวังว่าจะสามารถทำแบบอินไลน์ได้อย่างกระชับรัดกุมโดยไม่ต้องตั้งค่าล่วงหน้า :)