เกือบทุกไฟล์ที่อยู่ภายใต้การ/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(ซึ่งจะส่งกลับไบต์ null ไม่มีที่สิ้นสุด ) /dev/urandom(ซึ่งผลตอบแทนที่สุ่มไบต์ไม่มีที่สิ้นสุด )
ไฟล์อุปกรณ์บางไฟล์มีความหมายที่ขึ้นอยู่กับกระบวนการที่เข้าถึงได้ ตัวอย่างเช่น/dev/stdinกำหนดอินพุตมาตรฐานของกระบวนการปัจจุบัน การเปิดจากมีผลคล้ายกับการเปิดไฟล์ต้นฉบับที่เปิดเป็นอินพุตมาตรฐานของกระบวนการ ในทำนองเดียวกัน/dev/ttyกำหนดเทอร์มินัลที่เชื่อมต่อกระบวนการ ภายใต้ Linux ทุกวันนี้/dev/stdinและเพื่อน ๆ ไม่ได้ถูกนำมาใช้เป็นอุปกรณ์ตัวอักษร แต่เป็นการเชื่อมโยงสัญลักษณ์ไปยังกลไกทั่วไปที่อนุญาตให้อ้างอิงไฟล์ descriptor ทุกไฟล์ (แทนที่จะเป็นเพียง 0, 1 และ 2 ภายใต้วิธีดั้งเดิม); ตัวอย่างเช่นการเชื่อมโยงสัญลักษณ์/dev/stdin /proc/self/fd/0ดูที่/ dev / fd เกี่ยวข้องกับ / proc / self / fd / อย่างไร .
คุณจะพบลิงค์สัญลักษณ์/devมากมาย สิ่งนี้อาจเกิดขึ้นได้จากเหตุผลในอดีต: ไฟล์อุปกรณ์ถูกย้ายจากชื่อหนึ่งไปยังอีกชื่อหนึ่ง แต่บางแอปพลิเคชันยังคงใช้ชื่อเดิม ตัวอย่างเช่น/dev/scd0เป็นลิงค์สัญลักษณ์/dev/sr0ภายใต้ Linux; ทั้งกำหนดอุปกรณ์ซีดีเครื่องแรก เหตุผลสำหรับการเชื่อมโยงสัญลักษณ์อีกอย่างหนึ่งคือองค์กร: ภายใต้ Linux คุณจะพบฮาร์ดดิสก์ของคุณและพาร์ทิชันในหลายสถานที่: /dev/sdaและ/dev/sda1และเพื่อน (แต่ละดิสก์ที่กำหนดโดยตัวอักษรโดยพลการและพาร์ทิชันตามรูปแบบพาร์ทิชัน), /dev/disk/by-id/*(ดิสก์ที่กำหนดโดย หมายเลขซีเรียลที่ไม่ซ้ำกัน), /dev/disk/by-label/*(พาร์ติชันที่มีระบบไฟล์กำหนดโดยฉลากที่มนุษย์เลือก); และอื่น ๆ. ลิงก์สัญลักษณ์ยังใช้เมื่อชื่ออุปกรณ์ทั่วไปอาจเป็นหนึ่งในหลาย ๆ ตัวอย่างเช่น/dev/dvdอาจเป็นลิงก์สัญลักษณ์/dev/sr0หรืออาจเป็นลิงก์ไปยัง/dev/sr1หากคุณมีเครื่องอ่านซีดีสองเครื่องและเครื่องที่สองคือเครื่องอ่าน DVD เริ่มต้น
ท้ายที่สุดมีไฟล์อื่น ๆ อีกสองสามไฟล์ที่คุณอาจพบภายใต้/devเหตุผลดั้งเดิม คุณจะไม่พบสิ่งเดียวกันในทุกระบบ บน Unices ที่สุด/dev/logเป็นซ็อกเก็ตที่ใช้โปรแกรมในการปล่อยข้อความเข้าสู่ระบบ เป็นสคริปต์ที่สร้างรายการใน/dev/MAKEDEV /devบนระบบลินุกซ์ที่ทันสมัยในรายการ/dev/ที่ถูกสร้างขึ้นโดยอัตโนมัติudev , MAKEDEVobsoleting
¹สิ่งนี้ไม่เป็นความจริงภายใต้ Linux อีกต่อไป แต่รายละเอียดนี้มีความสำคัญต่อผู้เขียนโปรแกรมควบคุมอุปกรณ์เท่านั้น