ฉันรู้คำตอบสำหรับเชลล์บางตัวเช่นcmd.exe
คุณสามารถ:
some.exe > out.txt 2>&1
คุณจะประสบความสำเร็จเช่นเดียวกันสำหรับกระสุนอื่น ๆ ได้อย่างไร (bash, ksh, tcsh, powershell, ฯลฯ )
ฉันรู้คำตอบสำหรับเชลล์บางตัวเช่นcmd.exe
คุณสามารถ:
some.exe > out.txt 2>&1
คุณจะประสบความสำเร็จเช่นเดียวกันสำหรับกระสุนอื่น ๆ ได้อย่างไร (bash, ksh, tcsh, powershell, ฯลฯ )
คำตอบ:
ปลาเปลือกหอย
หากต้องการเปลี่ยนเส้นทางทั้งเอาต์พุตมาตรฐานและข้อผิดพลาดมาตรฐานไปที่ไฟล์ all_output.txt คุณสามารถเขียน:
echo Hello > all_output.txt ^&1
2>&1
ยังทำงาน - เป็นหลักจดชวเลขของปลาสำหรับ^
>2
โปรดทราบว่า2>| less
หรือ^| less
ด้วยตัวเองไปป์stderr เท่านั้น ; เพื่อส่งทั้งความผิดพลาดของเราไปทำ^&1 | less
ในPowershellมันเหมือนกันทุกประการ:
2> & 1 ส่งข้อผิดพลาดไปยังไม่มีกระบวนการรับ, PowerShell 2> & 1 กระแสเอาต์พุตความสำเร็จ
(จากabout_Redirection
)
ในbash
และ ksh อย่างน้อยผมก็รู้ว่ามันทำงานด้วยวิธีนี้
ดูเหมือนว่าจะเป็นการประชุมร่วมกัน
วิธีที่รวดเร็วในการค้นหาเกี่ยวกับมันคือการเปิด man page ของเชลล์และทำการค้นหา&1
(ด้วย/
แล้วพิมพ์&1
) สิ่งนี้ไม่ค่อยเกิดขึ้นในบริบทอื่น
ในทุบตีคุณทำสิ่งเดียวกัน
./some_exec > out 2>&1