/dev/zero
jest przykładem „specjalnego pliku” - w szczególności „węzła urządzenia”. Zwykle są one tworzone przez proces instalacji dystrybucji, ale możesz je całkowicie stworzyć samodzielnie, jeśli chcesz.
Jeśli zapytasz ls
o /dev/zero
:
# ls -l /dev/zero
crw-rw-rw- 1 root root 1, 5 Nov 5 09:34 /dev/zero
Litera „c” na początku informuje, że jest to „urządzenie znakowe”; drugim typem jest „urządzenie blokowe” (wydrukowane ls
jako „b”). Z grubsza urządzenia o swobodnym dostępie, takie jak dyski twarde, są zwykle urządzeniami blokowymi, podczas gdy sekwencyjne rzeczy, takie jak napędy taśm lub karta dźwiękowa, są zwykle urządzeniami znakowymi.
Część „1, 5” to „główny numer urządzenia” i „mniejszy numer urządzenia”.
Dzięki tym informacjom możemy użyć mknod
polecenia, aby utworzyć własny węzeł urządzenia:
# mknod foobar c 1 5
Spowoduje to utworzenie nowego pliku o nazwie foobar
w bieżącym folderze, który działa dokładnie tak samo jak /dev/zero
. (Jeśli chcesz, możesz oczywiście ustawić różne uprawnienia). Cały ten „plik” naprawdę zawiera trzy powyższe elementy - typ urządzenia, numer główny, mniejszy numer. Możesz użyć ls
do wyszukania kodów dla innych urządzeń i ich odtworzenia. Kiedy się nudzisz, po prostu użyj, rm
aby usunąć właśnie utworzone węzły urządzenia.
Zasadniczo liczba główna informuje jądro Linuksa, z którym sterownikiem urządzenia ma rozmawiać, a liczba mniejsza informuje sterownik urządzenia, o którym urządzeniu mówisz. (Na przykład prawdopodobnie masz jeden kontroler SATA, ale może podłączono do niego wiele dysków twardych.)
Jeśli chcesz wymyślić nowe urządzenia, które zrobią coś nowego ... musisz edytować kod źródłowy jądra Linux i skompilować własne niestandardowe jądro. Więc nie róbmy tego! :-) Ale możesz dodać pliki urządzeń, które powielają te, które już masz dobrze. Zautomatyzowany system, taki jak udev, po prostu obserwuje zdarzenia urządzenia i automatycznie dzwoni mknod
/ rm
do ciebie. Nic więcej magii niż to.
Istnieją jeszcze inne rodzaje plików specjalnych:
Linux uważa katalog za specjalny rodzaj pliku. (Zwykle nie możesz bezpośrednio otworzyć katalogu, ale gdybyś mógł, znajdziesz normalny plik, który zawiera dane w specjalnym formacie i informuje jądro, gdzie znaleźć wszystkie pliki w tym katalogu).
Dowiązanie symboliczne to specjalny plik. (Ale twardy link nie jest.) Możesz tworzyć dowiązania symboliczne za pomocą ln -s
polecenia. (Poszukaj w nim strony podręcznika.)
Jest też coś o nazwie „nazwany potok” lub „FIFO” (kolejka pierwsze wejście, pierwsze wyjście). Możesz go utworzyć za pomocą mkfifo
. FIFO to magiczny plik, który można otworzyć jednocześnie przez dwa programy - jeden odczyt, jeden zapis. Kiedy tak się dzieje, działa jak normalna rura osłonowa. Ale możesz uruchomić każdy program osobno ...
Plik, który w żaden sposób nie jest „specjalny”, nazywany jest „zwykłym plikiem”. Od czasu do czasu zobaczysz wzmiankę o tym w dokumentacji Uniksa. To właśnie oznacza; plik, który nie jest węzłem urządzenia, dowiązaniem symbolicznym ani niczym innym. Po prostu zwykły, codzienny plik bez magicznych właściwości.