Допустим, существует программа, которая принимает два аргумента; входной файл и выходной файл.
Что делать, если я не хочу сохранять этот выходной файл на диск, а просто передать его stdin
другой программе. Есть ли способ добиться этого?
Многие команды, с которыми я сталкиваюсь в Linux, предоставляют опцию для передачи «-» в качестве аргумента выходного файла, что делает то, что я указал выше. Это потому, что передача stdin
программы в качестве аргумента невозможна? Если это так, как мы это делаем?
Пример того, как я мог бы использовать это изображение:
pdftotext "C BY BRIAN W KERNIGHAN & DENNIS M RITCHIE.pdf" stdin(echo)
Я использую оболочку bash.
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
ничего не читает из стандартного ввода.
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
работает на большинстве офисов.