Dosya tanımlayıcı 6'dan okumak için <&6veya </dev/fd/6(aka /proc/self/fd/6) kullanabilirsiniz. Genellikle her ikisi de eşit derecede iyi çalışır. Ancak, bu dosya tanımlayıcı bir soket olursa, garip şeyler olur. Örneğin:
$ bash -c 'ls -l /dev/fd/6;cat /dev/fd/6' 6</dev/tcp/localhost/12345
lrwx------ 1 michas michas 64 Jan 10 19:50 /dev/fd/6 -> socket:[315010]
cat: /dev/fd/6: No such device or address
Burada lstanımlayıcının gerçekten mevcut olduğunu gösterir. Ancak verilere bu şekilde erişmek mümkün değildir. Onun cat <&6yerine kullanırsam her şey tekrar iyi çalışır.
Dosya tanımlayıcıya erişmenin her iki yolu arasındaki fark nedir?
Bir değişkente verilirse tanımlayıcıya erişmenin iyi bir yolu var mı? ( </dev/fd/$fdişe yarar, ancak işe <&$fdyaramaz.)
(Yukarıdaki durum linux'da görülebilir, ancak OpenBSD'de görülemez. - Dosya tanımlayıcı orada normal bir karakter aygıtı gibi görünüyor.)