Digamos que exista um programa, que requer dois argumentos; arquivo de entrada e arquivo de saída.
E se eu não desejar salvar esse arquivo de saída em disco, mas passá-lo diretamente para stdin
outro programa. Existe uma maneira de conseguir isso?
Muitos comandos que encontro no Linux oferecem uma opção para passar '-' como o argumento do arquivo de saída, que faz o que eu especifiquei acima. Isso stdin
ocorre porque não é possível passar o programa como argumento? Se for, como fazemos?
Um exemplo de como eu criaria imagens usando isso é:
pdftotext "C BY BRIAN W KERNIGHAN & DENNIS M RITCHIE.pdf" stdin(echo)
O shell que estou usando é o bash.
cat < README.txt | cp /dev/fd/0
. Dissecp: missing destination file operand after ‘/dev/fd/0’ Try 'cp --help' for more information.
program input-file /dev/stdout | another-program
? Observe também que echo
não lê nada do stdin.
cp
arquivar em nenhum lugar. echo 1 2 3| cp /dev/fd/0 /dev/tty
irá imprimir 1 2 3
. E, a propósito, /dev/fd/[num]
é mais provável que funcione do que /dev/std(in|out|err)
na maioria dos casos. Consulte Portabilidade dos links do descritor de arquivos sobre o que você pode esperar para trabalhar onde.
cat <file | cmd /dev/fd/0
funciona na maioria das unidades.