কারণ এটি শেলের (ksh এর, বাশ দ্বারা অনুলিপি করা) এবং কেবল শেলের একটি বৈশিষ্ট্য।
/dev/tcp/...সত্যিকারের ফাইল নয়, শেলটি কোনও /dev/tcp/...ফাইলে পুনর্নির্দেশের প্রয়াসকে বাধা দেয় এবং তারপরে সেই ক্ষেত্রে (সেই ফাইলটি খোলার socket(...);connect(...)) পরিবর্তে একটি open("/dev/tcp/..."...)( একটি টিসিপি সংযোগ তৈরি করে) করে ।
মনে রাখবেন এটি এর মতো বানান করতে হবে। cat < /dev/./tcp/...বা ///dev/tcp/...কাজ করবে না এবং পরিবর্তে এই ফাইলগুলি খোলার চেষ্টা করবে (যা বেশিরভাগ সিস্টেমে উপস্থিত নেই এবং আপনি একটি ত্রুটি পাবেন)।
পুনঃনির্দেশের দিকটিও কিছু যায় আসে না। আপনি ব্যবহার 3< /dev/tcp/...বা 3> /dev/tcp/...বা 3<> /dev/tcp/...এমনকি 3>> /dev/tcp/...কোনও পার্থক্য না করা, আপনি যে টিসিপি সকেটের উপর ডেটা পেতে / প্রেরণ করতে / ফাইল ফাইলটি থেকে / লিখতে উভয়ই সক্ষম হতে পারবেন।
আপনি যখন cat /dev/tcp/...করেন, এটি কাজ করে না কারণ catএকই বিশেষ হ্যান্ডলিংটি কার্যকর করে না, এটি open("/dev/tcp/...")প্রতিটি ফাইলের জন্য (ব্যতীত -) কেবল একটি শেল (কেএসএস, কেবল বাশ) করে এবং কেবল পুনর্নির্দেশের লক্ষ্যমাত্রার জন্য।
এটি cat -বিশেষতভাবে পরিচালিত কোনও ফাইল পাথের আরেকটি উদাহরণ। open("-")এটি না করে এটি সরাসরি ফাইল বর্ণনাকারী 0 (স্টিডিন) থেকে পড়ে। catএবং অনেকগুলি পাঠ্য ইউটিলিটিগুলি তা করে, শেলটি তার পুনঃনির্দেশগুলির জন্য করে না। -ফাইলের বিষয়বস্তু পড়তে আপনার প্রয়োজন হয় cat ./-, বা cat < -(বা cat - < -)। যেসব সিস্টেমে নেই /dev/stdin, bashসেগুলিতে সেই (ভার্চুয়াল) ফাইল থেকে পুনঃনির্দেশের জন্য একই জাতীয় কিছু করবে। গনুহ awkজন্য একই আছে /dev/stdin, /dev/stdout, /dev/stderrএমনকি সিস্টেম না যে এই ধরনের ফাইল যা লিনাক্স মত সিস্টেমে কিছু চমকের সৃষ্টি করতে পারে যেখানে ঐ ফাইল ভিন্নভাবে আচরণ উপর।
zshএছাড়াও টিসিপি (এবং ইউনিক্স ডোমেন স্ট্রিম) সকেট সমর্থন রয়েছে, তবে এটি একটি ztcp(এবং zsocket) বিল্টিন দিয়ে সম্পন্ন হয়েছে , সুতরাং এটি ksh / বাশ পদ্ধতির চেয়ে কম সীমাবদ্ধ। বিশেষত, এটি সার্ভার হিসাবেও কাজ করতে পারে যা ksh / bash করতে পারে না। যদিও আপনি বাস্তব প্রোগ্রামিং ভাষায় যা করতে পারেন তার থেকে এটি এখনও অনেক বেশি সীমাবদ্ধ।