ถ้า py EulerianCycle.py euleriancycle.txt เขียนไปยังสตรีมเอาท์พุตมาตรฐาน (ซึ่งฉันคิดว่าเป็นเช่นนั้น เพราะไม่เช่นนั้นคุณจะไม่สามารถไปป์ได้ แมว) แล้ว แมว ไม่จำเป็นทั้งหมดที่นี่ - คุณสามารถเปลี่ยนเส้นทางเอาต์พุตมาตรฐานได้โดยตรง โดยระบุเส้นทางแบบสัมบูรณ์หรือแบบสัมพัทธ์ไปยังไฟล์เอาต์พุตของคุณ:
py EulerianCycle.py euleriancycle.txt > เอาต์พุต/euleriancycleout.txt
(หมายเหตุ: ไดเร็กทอรี เอาท์พุต/ ต้องมีอยู่แล้ว)
คำสั่งอื่นๆ ของคุณไม่ทำงานอย่างที่คุณคิด
ใน py EulerianCycle euleriancycle.txt > cat euleriancycleout.txtเชลล์จะสร้างไฟล์ชื่อ แมว ในไดเร็กทอรีปัจจุบัน และเปลี่ยนเส้นทางเอาต์พุตของ py EulerianCycle ถึงมันผ่านไป ทั้งสอง euleriancycle.txt และ euleriancycleout.txt เป็นอาร์กิวเมนต์อินพุต
ใน py EulerianCycle.py euleriancycle.txt | cat >เอาต์พุตซีดี/euleriancycleout.txtเชลล์จะสร้างไฟล์ชื่อ ซีดี ในไดเรกทอรีปัจจุบัน แมว อ่าน เอาต์พุต/euleriancycleout.txt และเขียนลงไฟล์ ซีดีโดยไม่สนใจอินพุตมาตรฐานจากท่อ (แมว อ่านเฉพาะอินพุตมาตรฐานเมื่อไม่มีไฟล์อินพุตหรือไฟล์ที่ชัดเจน -).
บางทีสิ่งที่คุณตั้งเป้าไว้ที่นี่ก็คือการไพพ์เอาต์พุตไปยัง a เปลือกย่อย ชอบ:
py EulerianCycle.py euleriancycle.txt | (เอาต์พุตซีดี cat > euleriancycleout.txt)
หรือ
py EulerianCycle.py euleriancycle.txt | (เอาต์พุตซีดี && cat > euleriancycleout.txt)
ที่นี่, แมว อ่านอินพุตมาตรฐานของ subshell - ซึ่งจัดเตรียมโดยไพพ์ - หลังจากเปลี่ยนเป็นไดเร็กทอรีเป้าหมาย รุ่นที่สองเท่านั้นที่สร้าง euleriancycleout.txt ถ้า ซีดี คำสั่งสำเร็จ; อันดับแรกสร้างในไดเร็กทอรีปัจจุบันหากไฟล์ ซีดี ล้มเหลว