Nur um die gute Antwort von @ jw013 zu ergänzen, kann es hilfreich sein zu erkennen, dass es dasselbe ist wie
{
cat -n
cat -n
} < infile
< file
Da es sich um eine Abkürzung 0< file
handelt, wird anstelle von 3 der Dateideskriptor 0 verwendet.
Und um die Sache ein wenig zu verwirren, diese Version:
exec 3< infile
cat -n /dev/fd/3
cat -n /dev/fd/3
Anders verhält sich je nach Betriebssystem Sie es in und laufen Art von infile
(reguläre Datei vs Rohr vs Gerät ...)
Unter Solaris und die meisten kommerziellen Unix - Varianten, ein open("/dev/fd/3")
mehr oder weniger gleichbedeutend mit einem dup(3)
(so < /dev/fd/3
ist etwa die gleiche wie <&3
), während auf Linux, für reguläre Dateien, /dev/fd/3
als symbolischen Link auf die Originaldatei implementiert ist, so open("/dev/fd/3")
es erneut von Anfang an geöffnet ( und evtl. mit abweichenden fahnen vom fd 3).