สมมติฐานของคุณ:
fortune | tee >(?stdout?) | pbcopy
จะไม่ทำงานเพราะการส่งออกจะถูกเขียนไปออกมาตรฐานสองครั้งเพื่อให้คุณจะเป็นสองเท่าออกไปfortunepbcopy
ใน OSX (และการสนับสนุนระบบอื่น ๆ/dev/std{out,err,in}) คุณสามารถตรวจสอบได้:
$ echo 1 | tee /dev/stdout | sed 's/1/2/'
2
2
การส่งออก2ครั้งที่สองแทนและ12
คุณต้องใช้ file descriptors อื่น ๆ ตัวอย่างข้อผิดพลาดมาตรฐานผ่าน/dev/stderr:
$ echo 1 | tee /dev/stderr | sed 's/1/2/'
1
2
หรือใช้ttyเพื่อรับเทอร์มินัลหลอกที่เชื่อมต่ออยู่:
$ echo 1 | tee "$(tty)" | sed 's/1/2/'
1
2
ด้วยzshและmultiosชุดตัวเลือกคุณไม่จำเป็นต้องทำอะไรเลยtee:
$ echo 1 >/dev/stderr | sed 's/1/2/'
1
2
fortune | tee $(tty) | pbcopyอย่างไร?