Karena itu fitur shell (dari ksh, disalin oleh bash), dan shell saja.
/dev/tcp/...bukan file nyata, shell mencegat upaya untuk mengarahkan ulang ke /dev/tcp/...file dan kemudian melakukan socket(...);connect(...)(membuat koneksi TCP) alih-alih open("/dev/tcp/..."...)(membuka file itu) dalam kasus itu.
Perhatikan bahwa itu harus dieja seperti itu. cat < /dev/./tcp/...atau ///dev/tcp/...tidak akan berfungsi, dan akan mencoba membuka file-file itu (yang pada kebanyakan sistem tidak ada dan Anda akan mendapatkan kesalahan).
Arah pengalihan juga tidak masalah. Apakah Anda menggunakan 3< /dev/tcp/...atau 3> /dev/tcp/...atau 3<> /dev/tcp/...bahkan 3>> /dev/tcp/...tidak akan membuat perbedaan, Anda akan dapat membaca dan menulis dari / ke deskriptor file itu untuk menerima / mengirim data melalui soket TCP tersebut.
Ketika Anda melakukannya cat /dev/tcp/..., itu tidak berhasil karena cattidak menerapkan penanganan khusus yang sama, itu memang open("/dev/tcp/...")seperti untuk setiap file (kecuali- ), hanya shell (ksh, bash saja) yang melakukannya, dan hanya untuk target pengalihan.
Itu cat -adalah contoh lain dari jalur file yang ditangani secara khusus. Alih-alih melakukan open("-"), itu membaca langsung dari file descriptor 0 (stdin). catdan banyak utilitas teks melakukan itu, shell tidak untuk pengalihannya. Untuk membaca konten -file, Anda perlu cat ./-, atau cat < -(atau cat - < -). Pada sistem yang tidak memiliki /dev/stdin, bashakan melakukan sesuatu yang serupa untuk pengalihan dari file (virtual) itu. GNU awkmelakukan hal yang sama untuk /dev/stdin, /dev/stdout, /dev/stderrbahkan pada sistem yang memiliki file tersebut yang dapat menyebabkan beberapa kejutan pada sistem seperti Linux di mana file-file berperilaku berbeda.
zshjuga memiliki dukungan soket TCP (dan Unix domain stream), tapi itu dilakukan dengan ztcp(dan zsocket) builtins, jadi itu kurang terbatas daripada pendekatan ksh / bash. Secara khusus, ini juga dapat bertindak sebagai server yang tidak dapat dilakukan ksh / bash. Ini masih jauh lebih terbatas daripada apa yang dapat Anda lakukan dalam bahasa pemrograman nyata sekalipun.