Angenommen, ein Programm besteht aus zwei Argumenten. Eingabedatei und Ausgabedatei.
Was ist, wenn ich diese Ausgabedatei nicht auf der Festplatte speichern, sondern direkt an ein stdin
anderes Programm übergeben möchte? Gibt es einen Weg, dies zu erreichen?
Viele Befehle, auf die ich unter Linux stoße, bieten die Option, '-' als Ausgabedatei-Argument zu übergeben, was genau das tut, was ich oben angegeben habe. Liegt das daran, dass die Weitergabe stdin
eines Programms als Argument nicht möglich ist? Wenn ja, wie machen wir das?
Ein Beispiel für die Verwendung dieses Bilds ist:
pdftotext "C BY BRIAN W KERNIGHAN & DENNIS M RITCHIE.pdf" stdin(echo)
Die Shell, die ich benutze, ist bash.
cat < README.txt | cp /dev/fd/0
. Es hießcp: missing destination file operand after ‘/dev/fd/0’ Try 'cp --help' for more information.
program input-file /dev/stdout | another-program
? Beachten Sie auch, dass echo
nichts von stdin liest.
cp
Datei nirgendwo. echo 1 2 3| cp /dev/fd/0 /dev/tty
wird gedruckt 1 2 3
. Und übrigens /dev/fd/[num]
ist eher zu arbeiten als /dev/std(in|out|err)
in den meisten Fällen. Unter Portabilität von Dateideskriptor-Links erfahren Sie, was Sie wo erwarten können.
cat <file | cmd /dev/fd/0
funktioniert bei den meisten einheiten.