สมมติว่ามีโปรแกรมอยู่ซึ่งใช้เวลาสองข้อโต้แย้ง ไฟล์อินพุตและไฟล์เอาต์พุต
จะเกิดอะไรขึ้นถ้าฉันไม่ต้องการบันทึกไฟล์เอาต์พุตนี้ลงในดิสก์ แต่จะผ่านมันไปยัง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
ทำงานได้ดีที่สุด