Скажімо, існує програма, яка бере два аргументи; вхідний файл і вихідний файл.
Що робити, якщо я не хочу зберігати цей вихідний файл на диску, а краще передати його безпосередньо 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
працює на більшості уніцій.