Giả sử một chương trình tồn tại, trong đó có hai đối số; tập tin đầu vào và tập tin đầu ra.
Điều gì sẽ xảy ra nếu tôi không muốn lưu tệp đầu ra này vào đĩa, nhưng chuyển thẳng sang stdin
chương trình khác. Có cách nào để đạt được điều này?
Rất nhiều lệnh tôi gặp trên Linux cung cấp tùy chọn để vượt qua '-' làm đối số tệp đầu ra, thực hiện những gì tôi đã chỉ định ở trên. Đây có phải là vì việc thông qua stdin
một chương trình như là một đối số là không thể? Nếu có, làm thế nào để chúng ta làm điều đó?
Một ví dụ về cách tôi sẽ hình ảnh bằng cách sử dụng này là:
pdftotext "C BY BRIAN W KERNIGHAN & DENNIS M RITCHIE.pdf" stdin(echo)
Vỏ tôi đang sử dụng là bash.
cat < README.txt | cp /dev/fd/0
. Nó nóicp: missing destination file operand after ‘/dev/fd/0’ Try 'cp --help' for more information.
program input-file /dev/stdout | another-program
? Cũng lưu ý rằng echo
không đọc gì từ stdin.
cp
là một tập tin. echo 1 2 3| cp /dev/fd/0 /dev/tty
sẽ in 1 2 3
. Và nhân tiện, /dev/fd/[num]
có nhiều khả năng làm việc hơn /dev/std(in|out|err)
trong hầu hết các trường hợp. Xem Tính di động của Liên kết mô tả tệp về những gì bạn có thể mong đợi để làm việc ở đâu.
cat <file | cmd /dev/fd/0
hoạt động trên hầu hết các đơn vị.