นี่เป็นวิธีการแก้ปัญหาที่ทำงานได้กับการใช้งาน Unix / Linux ใด ๆ สมมติว่ามันเป็นไปตามPOSIX
มาตรฐาน มันทำงานได้ในสภาพแวดล้อม Unix ที่ไม่ใช่เช่นcygwin
กัน
echo 'ee' | tee /dev/tty | foo
ข้อมูลอ้างอิง: ข้อกำหนดจำเพาะฐานของ Open Group ฉบับที่ 7 IEEE Std 1003.1, 2013 Edition, §10.1 :
/ dev / TTY
เชื่อมโยงกับกลุ่มกระบวนการของกระบวนการนั้นถ้ามี มันมีประโยชน์สำหรับโปรแกรมหรือโพรซีเดอร์เชลล์ที่ต้องการความมั่นใจในการเขียนข้อความหรืออ่านข้อมูลจากเทอร์มินัลไม่ว่าจะมีการเปลี่ยนเส้นทางเอาต์พุตอย่างไร นอกจากนี้ยังสามารถใช้สำหรับแอปพลิเคชันที่ต้องการชื่อไฟล์สำหรับเอาต์พุตเมื่อต้องการเอาต์พุตเอาต์พุตที่พิมพ์และเป็นที่น่าเบื่อหน่ายในการค้นหาว่าเทอร์มินัลใดกำลังใช้งานอยู่ ในแต่ละกระบวนการคำพ้องความหมายสำหรับเทอร์มินัลการควบคุม
สภาพแวดล้อมบางอย่างเช่น Google Colab ได้รับรายงานว่าไม่ควรนำไปใช้/dev/tty
ในขณะที่ยังคงมีtty
คำสั่งคืนอุปกรณ์ที่ใช้งานได้ นี่คือวิธีแก้ปัญหา:
tty=$(tty)
echo 'ee' | tee $tty | foo
หรือกับบอร์นเชลล์โบราณ:
tty=`tty`
echo 'ee' | tee $tty | foo
echo 'ee' | tee /dev/stderr
งานได้ดังนั้นหากความต้องการ"บนหน้าจอ"ของคุณเป็นที่พึงพอใจโดย stderr ก็จะทำเช่นนั้น