Katalog /dev w systemach Linux to miejsce, gdzie znajdują się tzw. pliki specjalne urządzeń, czyli device files. Są to specjalne obiekty plikowe reprezentujące sprzęt lub wirtualne urządzenia systemowe, takie jak dyski twarde, napędy USB, terminale, porty szeregowe czy nawet urządzenia wirtualne typu /dev/null. Tak naprawdę, dzięki temu katalogowi, system operacyjny i aplikacje mogą korzystać ze sprzętu w bardzo przejrzysty sposób – komunikacja z urządzeniem sprowadza się do operacji na pliku, np. odczytu czy zapisu. Moim zdaniem, to naprawdę eleganckie rozwiązanie. Większość plików w /dev tworzona jest dynamicznie przez menedżera urządzeń (np. udev), ale starsze systemy, albo jakieś egzotyczne zastosowania, mogą wymagać ręcznego tworzenia plików typu character device lub block device za pomocą polecenia mknod. Warto pamiętać, że zgodnie ze standardem Filesystem Hierarchy Standard (FHS), katalog /dev jest miejscem zarezerwowanym właśnie wyłącznie na takie pliki i nie powinno się tu umieszczać zwykłych plików użytkownika. Przykład praktyczny? Zamontowanie obrazu ISO, korzystanie z portu szeregowego ttyS0 albo podpięcie partycji przez /dev/sda1 – to wszystko dzięki plikom w /dev. Praktyka pokazuje, że rozumienie roli tego katalogu przydaje się zarówno przy administracji Linuksem, jak i przy pisaniu niskopoziomowych narzędzi.
Wybierając katalog /var, można się łatwo pomylić, bo rzeczywiście znajduje się tam dużo danych tworzonych dynamicznie przez system – logi, bazy danych czy różne pliki tymczasowe, ale nie mają one nic wspólnego z reprezentacją urządzeń podłączonych do systemu. Katalog /sbin natomiast kojarzy się głównie z narzędziami administracyjnymi, takimi jak polecenia do obsługi systemu plików czy zarządzania procesami, ale zdecydowanie nie jest miejscem przechowywania plików urządzeń. Myślę, że niektórzy mogą to pomylić, bo niektóre narzędzia ze /sbin służą do pracy bezpośrednio z urządzeniami, więc wydawałoby się logiczne, że pliki te mogą być tam. Jeśli chodzi o /proc, to jest to całkiem odrębna koncepcja – jest to system plików wirtualnych pokazujący „na żywo” bieżące informacje o systemie, procesach, sprzęcie i konfiguracji jądra. Nie przechowuje się tam plików reprezentujących urządzenia, tylko statusy systemu, jak np. /proc/cpuinfo czy /proc/meminfo. Typowym błędem jest przekonanie, że wszystko, co dotyczy sprzętu, powinno być w /proc, bo rzeczywiście można tam podejrzeć informacje o urządzeniach, ale nie ma tam plików umożliwiających bezpośredni dostęp do tych urządzeń. Często myli się też katalog /dev z innymi lokalizacjami systemu plików, bo nie każdy wie, że Linux traktuje urządzenia jako pliki. To właśnie ta filozofia „wszystko jest plikiem” odróżnia Linuksa od innych systemów. Przypisanie plików urządzeń do innego katalogu może wynikać z braku doświadczenia z architekturą systemu plików Linuksa lub z przyzwyczajeń wyniesionych z innych środowisk. Warto więc pamiętać – tylko /dev służy do przechowywania specjalnych plików urządzeń i to jest klucz do sprawnego zarządzania sprzętem pod Linuksem.