ฉันไม่มีความชัดเจนว่าการสั่งซื้อที่ดีที่สุดคือการจับภาพทั้งSTDERRและไปยังแฟ้มเดียวกันโดยใช้STDOUT teeฉันรู้ว่าถ้าฉันต้องการไปป์กับไฟล์ฉันต้องแมป filehandle หลังจากเปลี่ยนเส้นทางคือ
find . >/tmp/output.txt 2>&1
นี้จะสั่งให้เปลือกที่จะส่งSTDOUTไป/tmp/output.txtแล้วจะส่งSTDERRไปSTDOUT(ซึ่งขณะนี้ส่งไปยัง/tmp/output.txt)
ความพยายามที่จะดำเนินการ2>&1ก่อนที่จะเปลี่ยนเส้นทางไฟล์จะไม่มีผลที่ต้องการ
อย่างไรก็ตามเมื่อฉันต้องการใช้ pipe teeควรเป็น:
find . |tee /tmp/output.txt 2>&1 # or
find . 2>&1 |tee /tmp/output.txt # ?
|&ใช้แล้วข้อผิดพลาดมาตรฐานของ command1 จะเชื่อมต่อกับอินพุตมาตรฐานของ command2 ผ่านทางไพพ์ซึ่งเป็นข้อมูลย่อสำหรับการ2>&1 |เปลี่ยนทิศทางโดยปริยายของข้อผิดพลาดมาตรฐานจะดำเนินการหลังจากการเปลี่ยนทิศทางที่ระบุโดยคำสั่ง"