สมมติว่ามีโปรแกรมอยู่ซึ่งใช้เวลาสองข้อโต้แย้ง ไฟล์อินพุตและไฟล์เอาต์พุต
จะเกิดอะไรขึ้นถ้าฉันไม่ต้องการบันทึกไฟล์เอาต์พุตนี้ลงในดิสก์ แต่จะผ่านมันไปยังstdinโปรแกรมอื่นโดยตรง มีวิธีที่จะบรรลุเป้าหมายนี้หรือไม่?
คำสั่งจำนวนมากที่ฉันเจอบน Linux มีตัวเลือกให้ส่งผ่าน '-' เป็นอาร์กิวเมนต์ไฟล์เอาต์พุตซึ่งทำสิ่งที่ฉันได้ระบุไว้ด้านบน เป็นเพราะการผ่านstdinโปรแกรมเป็นอาร์กิวเมนต์เป็นไปไม่ได้? ถ้าเป็นเช่นนั้นเราจะทำอย่างไร
ตัวอย่างของการใช้ภาพนี้คือ:
pdftotext "C BY BRIAN W KERNIGHAN & DENNIS M RITCHIE.pdf" stdin(echo)
เชลล์ที่ฉันใช้อยู่นั้นมันทุบตี
cat < README.txt | cp /dev/fd/0. มันบอกว่าcp: missing destination file operand after ‘/dev/fd/0’ Try 'cp --help' for more information.
program input-file /dev/stdout | another-program? ยังทราบว่าechoอ่านอะไรจาก stdin
cpไฟล์ได้ที่ไหนเลย จะพิมพ์echo 1 2 3| cp /dev/fd/0 /dev/tty 1 2 3และโดยวิธีการ/dev/fd/[num]มีแนวโน้มที่จะทำงานมากกว่า/dev/std(in|out|err)ในกรณีส่วนใหญ่ ดูความสามารถในการพกพาของลิงค์ตัวอธิบายไฟล์เกี่ยวกับสิ่งที่คุณคาดหวังในการทำงาน
cat <file | cmd /dev/fd/0ทำงานได้ดีที่สุด