কারণ এটি শেলের (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 করতে পারে না। যদিও আপনি বাস্তব প্রোগ্রামিং ভাষায় যা করতে পারেন তার থেকে এটি এখনও অনেক বেশি সীমাবদ্ধ।