Powiedzmy, że istnieje program, który przyjmuje dwa argumenty; plik wejściowy i plik wyjściowy.
Co jeśli nie chcę zapisać tego pliku wyjściowego na dysk, a raczej przekazać go bezpośrednio stdininnemu programowi. Czy istnieje sposób na osiągnięcie tego?
Wiele poleceń, na które natrafiłem w systemie Linux, udostępnia opcję przekazania „-” jako argumentu pliku wyjściowego, który robi to, co określiłem powyżej. Czy to dlatego, że przekazanie stdinprogramu jako argumentu nie jest możliwe? Jeśli tak, to jak to robimy?
Przykładem tego, w jaki sposób obrazowałbym za pomocą tego jest:
pdftotext "C BY BRIAN W KERNIGHAN & DENNIS M RITCHIE.pdf" stdin(echo)
Powłoka, której używam, to bash.
cat < README.txt | cp /dev/fd/0. Powiedziałcp: missing destination file operand after ‘/dev/fd/0’ Try 'cp --help' for more information.
program input-file /dev/stdout | another-program? Zauważ też, że echonic nie czyta ze standardowego wejścia.
cpnigdzie nie można utworzyć pliku. echo 1 2 3| cp /dev/fd/0 /dev/ttywydrukuje 1 2 3. Nawiasem mówiąc, /dev/fd/[num]jest bardziej prawdopodobne, że zadziała niż /dev/std(in|out|err)w większości przypadków. Zobacz Przenośność linków deskryptorów plików, aby dowiedzieć się, gdzie możesz pracować.
cat <file | cmd /dev/fd/0działa na większości jednorożców.