Hanya dengan menambahkan jawaban baik @ jw013, mungkin membantu untuk menyadari bahwa itu sama dengan
{
cat -n
cat -n
} < infile
< file
menjadi kependekan 0< file
, yaitu menggunakan file descriptor 0 bukannya 3.
Dan sedikit membingungkan masalah ini, versi ini:
exec 3< infile
cat -n /dev/fd/3
cat -n /dev/fd/3
Berperilaku berbeda tergantung pada OS Anda menjalankannya di dan jenis dari infile
(file biasa vs pipa vs perangkat ...)
Pada Solaris dan sebagian besar Unices komersial, suatu open("/dev/fd/3")
kurang lebih setara dengan a dup(3)
(begitu < /dev/fd/3
juga dengan <&3
), sementara di Linux, untuk file biasa, /dev/fd/3
diimplementasikan sebagai symlink ke file asli, jadi open("/dev/fd/3")
bukalah lagi dari awal ( dan mungkin dengan flag berbeda dari fd 3).