30: System plików w Linuksie
Struktura składowania danych
Drzewo katalogów
- katalogi zawierają pliki i katalogi
- obiekty w katalogu mają unikalne nazwy
Uwaga: (prawie) wszystko jest plikiem
Pliki
- zwykłe
- niezwykłe (specjalne)
- rurki (pipe)
- gniazda (socket)
- łącza symboliczne (symlink)
- urządzenia (device)
Pliki zwykłe
- przechowują:
- dokumenty, dane
- obrazki, zdjęcia, multimedia
- programy
- mają rozmiar (bajty)
- znaczniki czasu i inne meta-dane
pipe (rurka)
- inna nazwa: FIFO
- kolejka
- komunikacja 1-do-1 między procesami (jednokierunkowa)
- zerowy rozmiar na dysku
socket (gniazdo)
- komunikacja 1-do-wielu
- odpowiednik łączności TCP/IP, ale bez stosu sieciowego
- zerowy rozmiar na dysku
device (urządzenie)
- komunikacja między procesami a urządzeniami obsługiwanymi przez sterownik kernela
- tylko w katalogu
/dev/
- zerowy rozmiar na dysku
- identyfikacja urządzeń:
- dwie liczby całkowite (major, minor)
symbolic link
- może wskazywać na plik lub katalog
- przypomina “Skrót” z Windows
- rozmiar: długość napisu ze ścieżką
katalogi
- służą organizacji danych
- mogą zawierać inne pliki i katalogi
- mogą być wirtualne
- są specjalnym rodzajem pliku
Różnice vs
- wielkość liter
- dozwolone znaki i nazwy
- ścieżki: dysk i ukośniki
- rozszerzenia i typy plików
- uprawnienia i pliki ukryte
- pliki specjalne
- znak końca linii w plikach tekstowych
- operacje i mechanizmy blokowania
Wielkość liter
bez znaczenia
ma znaczenie
Przykład
ala.txt
ALA.txt
Ala.txt
Ala.TXT
- ta sama nazwa
- nie mogą być w jednym katalogu
- 4 różne nazwy
- mogą być w jednym katalogu
Niedozwolone znaki
drukowalne:
/ \ | * : < > ? "
niedrukowalne:
ASCII 0-31
drukowalne:
/
niedrukowalne:
ASCII 0
Zastrzeżone nazwy
con
nul
com1
lpt1
i inne...
(również z dowolnym rozszerzeniem)
Drzewo katalogów
- osobne dla każdego dysku
- rzeczywiste pliki
- ew. dyski sieciowe
- jedno wirtualne drzewo (VFS)
- rzeczywiste pliki tylko w niektórych gałęziach
- również pliki i katalogi wirtualne
Dyski
/dev/sda
/dev/sda2
wymagają montowania...
Separatory
slash /
backslash \
Ścieżki
/home/mateusz/Desktop
C:\Users\mateusz\Desktop
Uwagi dot. slasha i backslasha
- w Windows można używać slasha zamiast backslasha
C:/Windows/System32
zadziała
Zastosowanie slasha /
- ścieżki w Linuksie, Uniksach, macOS
- URL-e:
https://alx.pl/
- zamykanie znaczników HTML:
<h1>Tytuł</h1>
- znak dzielenia w programowaniu:
1 / 3
Zastosowanie backslasha \
- ścieżki w Windows (oraz Symbian i UEFI)
- eskejpowanie:
printf("Hello, world.\n");
- znaczniki LaTeX-a:
\begin{article}
Rozszerzenia i typy plików
piosenka.mp3
raport.pdf
cv.docx
wakacje.jpg
różne.zip
wydatki.xlsx
Nazwa i rozszerzenie
- rozszerzenie i nazwa to dwie odrębne części
- znane rozszerzenia domyślnie niewidoczne
- brak formalnego podziału
- kropka - dozwolony znak w nazwie
- rozszerzenia zawsze widoczne
Rozszerzenia i typy plików
piosenka.mp3
Interpretacja Windowsowa
piosenka
- nazwa pliku:
piosenka
- rozszerzenie:
mp3
(niewidoczne)
- typ pliku: muzyka (MPEG-1/2 Audio Layer 3)
- (typ wynika z rozszerzenia)
Interpretacja Linuksowa
piosenka.mp3
- nazwa pliku:
piosenka.mp3
- rozszerzenie:
.mp3
(umowne)
- typ pliku: muzyka (MPEG-1/2 Audio Layer 3)
- (typ może też wynikać z zawartości)
“Nietypowe” nazwy plików w Linuksie
nazwa pliku |
uwagi |
hosts |
brak rozszerzenia |
.bash_history |
kropka na początku |
archiwum.tar.bz2 |
kilka rozszerzeń |
libpng15.so.15.13.0 |
rozszerzenie .so w środku |
Przenośność plików
Ograniczenia w Windows:
- nie zawsze są ograniczeniami systemu plików
- zaimplementowane niekonsekwentnie
- mogą powodować dziwne zachowanie systemu
Tłumaczone nazwy katalogów w Windows
nazwa wyświetlana w GUI
rzeczywista nazwa
C:\Users\mateusza\Desktop
Nazwy 8.3
Ograniczenia klasycznego FAT:
- nazwa do 8 liter
- rozszerzenia do 3 liter
- bez spacji
- bez znaków narodowych
- case insensitive
- wszystko wielkimi literami
VFAT i Long File Names
- wprowadzone wraz z Windows 95
- rozszerzenie standardu FAT
- nazwy plików do 255 znaków
- wsparcie dla znaków międzynarodowych (Unicode UCS)
- dozwolone spacje
- respektowanie wielkości liter
- case insensitive
Systemy plików w Windows (FAT, NTFS) przechowują obie nazwy: LFN i SFN.
Nazwy SFN (8.3) i LFN
nazwa długa
`C:\Program Files`
nazwa krótka
`C:\PROGRA~1`
Alternatywne strumienie danych
Programy
decyduje rozszerzenie
exe
, bat
, cmd
, com
...
rozszerzenie nie ma znaczenia
Pliki ukryte
Pliki “ukryte” w Linuksie
- pliki z nazwą zaczynającą się od kropki
- nie są domyślnie wyświetlane
- zastosowanie:
- pliki konfiguracyjne
- pliki pomocnicze, tymczasowe
- metainformacje
- “ukrycie” nie implikuje prywatności, bezpieczeństwa
- “ukrycie” oznacza zmianę nazwy
Znaki końca linii
dwa bajty
CR LF
0x0d 0x0a, (13, 10)
\r\n
separator linii
jeden bajt
LF
0x0a (10)
\n
na końcu linii
Koniec