প্রায় সব অধীনে ফাইল /devহয় ডিভাইস ফাইল । নিয়মিত ফাইলটিতে পড়া এবং লেখার সময় কোনও ডিস্ক বা অন্যান্য ফাইল সিস্টেমে ডেটা সংরক্ষণ করা হয়, ডিভাইস ফাইল অ্যাক্সেস করা কার্নেলের একটি ড্রাইভারের সাথে যোগাযোগ করে, যা সাধারণত একটি টুকরা হার্ডওয়ারের সাথে যোগাযোগ করে (একটি হার্ডওয়্যার ডিভাইস, যার ফলে নাম)।
দুটি ধরণের ডিভাইস ফাইল রয়েছে: ব্লক ডিভাইস ( bএর আউটপুটে প্রথম অক্ষর হিসাবে চিহ্নিত ls -l), এবং অক্ষর ডিভাইস (দ্বারা নির্দেশিত c)। ব্লক এবং অক্ষর ডিভাইসের মধ্যে পার্থক্য সম্পূর্ণ সর্বজনীন নয়। ব্লক ডিভাইসগুলি হ'ল ডিস্কের মতো জিনিস, যা বড়, স্থির আকারের ফাইলগুলির মতো আচরণ করে: আপনি যদি কোনও নির্দিষ্ট অফসেটে বাইট লিখে থাকেন এবং পরে সেই অফসেটে ডিভাইসটি থেকে পড়ে থাকেন তবে আপনি সেই বাইটটি ফিরে পাবেন। ক্যারেক্টার ডিভাইসগুলি অন্য যে কোনও বিষয়ে, যেখানে বাইট লেখার কিছু তাত্ক্ষণিক প্রভাব থাকে (যেমন এটি সিরিয়াল লাইনে নির্গত হয়) এবং বাইট পড়ার কিছু তাত্ক্ষণিক প্রভাব পড়ে (যেমন এটি সিরিয়াল বন্দর থেকে পড়ে)।
একটি ডিভাইস ফাইলের অর্থটি তার নাম দিয়ে নয়, নাম দ্বারা নির্ধারিত হয় (নামটি অ্যাপ্লিকেশনগুলির ক্ষেত্রে গুরুত্বপূর্ণ, তবে কার্নেলের সাথে নয়)। সংখ্যাটি আসলে দুটি সংখ্যা: প্রধান সংখ্যাটি নির্দেশ করে যে কোনও ড্রাইভার এই ডিভাইসের জন্য দায়বদ্ধ এবং সংখ্যালঘু সংখ্যাটি ড্রাইভারকে বেশ কয়েকটি ডিভাইস চালানোর অনুমতি দেয় ¹ এই সংখ্যাগুলি ls -lতালিকাতে উপস্থিত হয় , যেখানে আপনি সাধারণত ফাইলের আকার খুঁজে পাবেন। যেমন brw-rw---- 1 root disk 8, 0 Jul 12 15:54 /dev/sda→ এই ডিভাইসটি বড় 8, ছোট 0।
এর অধীনে কিছু ডিভাইস ফাইল /devহার্ডওয়্যার ডিভাইসের সাথে মিলে না। প্রতিটি ইউনিক্স সিস্টেমে বিদ্যমান একটি হ'ল /dev/null; এটিতে লেখার কোনও প্রভাব নেই, এবং এটি থেকে পড়া কখনই কোনও ডেটা ফেরায় না। এটি শেল স্ক্রিপ্টগুলিতে প্রায়শই সুবিধাজনক, যখন আপনি কোনও কমান্ড ( >/dev/null) থেকে আউটপুট উপেক্ষা করতে চান বা কোনও ইনপুট ( </dev/null) না দিয়ে কোনও কমান্ড চালাতে চান । অন্যান্য সাধারণ উদাহরণগুলি হ'ল/dev/zero (যা নাল বাইট অ্যাড ইনফিনিটাম দেয় ) /dev/urandom(যা এলোমেলোভাবে বাইট অ্যাড ইনফিনিটাম দেয় )।
কয়েকটি ডিভাইস ফাইলের একটি অর্থ রয়েছে যা এটি অ্যাক্সেস করে এমন প্রক্রিয়াটির উপর নির্ভর করে। উদাহরণস্বরূপ, /dev/stdinবর্তমান প্রক্রিয়াটির স্ট্যান্ডার্ড ইনপুটকে মনোনীত করে; প্রক্রিয়াটির স্ট্যান্ডার্ড ইনপুট হিসাবে খোলার মূল ফাইলটি খোলার থেকে প্রায় খোলার একই প্রভাব রয়েছে। কিছুটা অনুরূপভাবে, /dev/ttyপ্রক্রিয়াটি সংযুক্ত রয়েছে এমন টার্মিনালটি নির্ধারণ করে। লিনাক্সের অধীনে, আজকাল /dev/stdinএবং বন্ধুরা অক্ষর ডিভাইস হিসাবে প্রয়োগ করা হয় না, পরিবর্তে আরও সাধারণ ব্যবস্থার প্রতীকী লিঙ্ক হিসাবে প্রতিটি ফাইল বর্ণনাকারীকে রেফারেন্স দেয় (প্রচলিত পদ্ধতিতে কেবল 0, 1 এবং 2 এর বিপরীতে); উদাহরণস্বরূপ /dev/stdinএকটি প্রতীকী লিঙ্ক /proc/self/fd/0। দেখুন / dev / fd কীভাবে / proc / স্ব / fd / এর সাথে সম্পর্কিত? ।
এর অধীনে বেশ কয়েকটি প্রতীকী লিঙ্ক পাবেন /dev। এটি historicalতিহাসিক কারণে ঘটতে পারে: একটি ডিভাইস ফাইল এক নাম থেকে অন্য নাম থেকে সরানো হয়েছে, তবে কিছু অ্যাপ্লিকেশন এখনও পুরানো নামটি ব্যবহার করে। উদাহরণস্বরূপ, লিনাক্সের অধীনে /dev/scd0একটি প্রতীকী লিঙ্ক /dev/sr0; উভয়ই প্রথম সিডি ডিভাইসকে মনোনীত করে। সিম্বলিক লিঙ্কের জন্য আরেকটি কারণ প্রতিষ্ঠান: লিনাক্স অধীনে, আপনি বিভিন্ন জায়গায় আপনার হার্ড ডিস্ক এবং পার্টিশন খুঁজে পাবেন: /dev/sdaএবং /dev/sda1এবং বন্ধুদের (প্রতিটি ডিস্কের একটি অবাধ চিঠি দ্বারা মনোনীত, এবং পার্টিশন পার্টিশন বিন্যাস অনুযায়ী), /dev/disk/by-id/*(ডিস্ক একটি দ্বারা মনোনীত অনন্য সিরিয়াল নম্বর), /dev/disk/by-label/*(একটি ফাইল-সিস্টেমের সাথে পার্টিশনগুলি, যা মানুষের-নির্বাচিত লেবেল দ্বারা মনোনীত); এবং আরও। প্রতীকী লিঙ্কগুলিও ব্যবহৃত হয় যখন জেনেরিক ডিভাইসের নাম বেশ কয়েকটির মধ্যে একটি হতে পারে; উদাহরণ স্বরূপ/dev/dvd/dev/sr0এটিতে একটি প্রতীকী লিঙ্ক হতে পারে , বা এটির একটি লিঙ্ক হতে পারে /dev/sr1যদি আপনার দুটি সিডি পাঠক থাকে এবং দ্বিতীয়টি ডিফল্ট ডিভিডি রিডার হয়।
শেষ অবধি, কিছু অন্যান্য ফাইল রয়েছে যা আপনি /devপ্রচলিত কারণে সন্ধান করতে পারেন। আপনি প্রতিটি সিস্টেমে এক দেখতে পাবেন না। বেশিরভাগ সূচীতে, /dev/logএমন একটি সকেট যা প্রোগ্রামগুলি লগ বার্তা নির্গত করতে ব্যবহার করে। /dev/MAKEDEVএকটি স্ক্রিপ্ট যা এন্ট্রি তৈরি করে /dev। আধুনিক লিনাক্স সিস্টেমে, এন্ট্রিগুলি /dev/স্বয়ংক্রিয়ভাবে udev , অপ্রচলিত দ্বারা তৈরি করা হয়MAKEDEV ।
Linux এটি লিনাক্সের অধীনে আসলে আর সত্য নয়, তবে এই বিবরণটি কেবলমাত্র ডিভাইস ড্রাইভার লেখকদের ক্ষেত্রেই গুরুত্বপূর্ণ।