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 stdinchươ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 stdinmộ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 echokhông đọc gì từ stdin.
cplà một tập tin. echo 1 2 3| cp /dev/fd/0 /dev/ttysẽ 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/0hoạt động trên hầu hết các đơn vị.