Na página pdftotext
man:
If text-file is ´-', the text is sent to stdout.
Então, neste caso, tudo que você precisa é:
pdftotext "C BY BRIAN W KERNIGHAN & DENNIS M RITCHIE.pdf" -
Ou se você quiser canalizar isso para STDIN de outro programa:
pdftotext "C BY BRIAN W KERNIGHAN & DENNIS M RITCHIE.pdf" - | another_prog
Usar -
como substituto para um nome de arquivo é uma convenção que muitos utilitários seguem (incluindo pdftotext) quando queremos entrada de STDIN ou saída para STDOUT. No entanto, nem todos os utilitários seguem essa convenção. Nesse caso, a maneira idiomática de fazer isso no bash é usar uma substituição de processo :
my_utility "C BY BRIAN W KERNIGHAN & DENNIS M RITCHIE.pdf" >( cat )
Aqui, o >( )
se comporta em grande parte como um arquivo passado para my_utility
, mas em vez de ser um arquivo real, o fluxo é canalizado para o stdin do processo contido, ou seja, cat. Então, aqui, o texto deve finalmente sair conforme necessário.
O uso de cat
quase sempre ativa Sinos de alarme do UUOC em fóruns como esse. Eu afirmo que se o utilitário não suportar -
, então este é um uso útil de cat
, embora se houver alguma maneira de fazer essa substituição de processo sem o cat
, então eu sou todo ouvidos ;-) .
No entanto, se (como a pergunta indica) o destino final do fluxo for STDIN de outro programa, então o cat
pode ser eliminado:
my_utility "C BY BRIAN W KERNIGHAN & DENNIS M RITCHIE.pdf" >( another_prog )