Krótka odpowiedź
- System Windows nie zezwala na następujące znaki:
<>:"/\|?*
( źródło )
- Więcej odradzanych znaków to: spacja
i kropka .
( źródło )
- Narzędzia wiersza poleceń są trudniejsze w użyciu, gdy masz spacje w nazwach (trudniejsze, nie niemożliwe)
- Kropki są używane w RegEx (np. Gdy chcesz użyć
grep
). Wiodąca kropka powoduje, że w systemie Linux plik jest ukryty zgodnie z konwencją. W systemie Windows kropki są używane w rozszerzeniu pliku, które służy do wykrywania typu pliku.
- Okna też nie pozwoli nazwy plików
CON
, PRN
, AUX
, CLOCK$
, NUL
COM1
, COM2
, COM3
, COM4
, COM5
, COM6
, COM7
, COM8
, COM9
LPT1
, LPT2
, LPT3
, LPT4
, LPT5
, LPT6
, LPT7
, LPT8
, i LPT9
. ( źródło )
- Jedyne znaki niedozwolone w systemach plików Unix, które znam, to
/
null (bajt null, \0
).
- Zobacz także: Ograniczenia systemu plików (nie wiem, z którym systemem Windows chcesz być kompatybilny).
Długa odpowiedź
Tło techniczne: system plików
Ubuntu korzysta z ext4
systemu plików. System plików śledzi, gdzie pliki są przechowywane w pamięci podstawowej (dysk, dysk SSD lub cokolwiek innego), uprawnienia w postaci właściciela / grupy / innego mogą odczytać / zapisać / wykonać, znaczniki czasu, nazwę.
System plików strukturyzuje dostępną pamięć. Pierwszy blok nazywa się „superblokiem”. Ten blok służy do montowania systemu plików. O ile mi wiadomo, każdy nowoczesny system plików dzieli przestrzeń na bloki. Myślę (i nie jestem tego pewien), że większość systemów plików ma również stały rozmiar bloku, chociaż rozmiar bloku można skonfigurować podczas tworzenia systemu plików. ext4 (a także ext2 i ext3) wykorzystują tak zwane „i-węzły” dla plików i katalogów. Te i-węzły zawierają wskaźniki do innych bloków (które mogą być również i-węzłami lub „blokami danych”). I „pierwszy” i-węzeł pliku zawiera wszystkie informacje, o których wspomniałem powyżej.
Inną informacją jest „typ” pliku. „Typ” może być:
- zwykły plik
- informator
- plik urządzenia (urządzenie blokowe lub znakowe)
- ...
W rzeczywistości możesz także otwierać katalogi za pomocą edytora:
vim /home
Ponieważ katalog nie zawiera pełnej ścieżki, a jedynie nazwy zawartości, nie widzę powodu, dla którego pliki nie mogą zawierać /
. Myślę, że to może być wygoda. (Czy ktoś wie, dlaczego /
nie jest dozwolony?)
W przypadku innych systemów plików sytuacja wygląda jednak inaczej. FAT16 i FAT32 używały tak zwanej „tabeli alokacji plików”. Oznacza to, że istnieje tabela, która zawiera wszystkie pliki zapisane w pliku, w którym „klastrze” zaczynają i w którym klastrze kończą jako pojedynczo połączona lista.
Ważną rzeczą, którą chciałem powiedzieć, jest to, że niedozwolone znaki mogą również zależeć od systemu plików.
Tło techniczne: Typy plików
- System Windows używa rozszerzeń plików do wykrywania typów plików
- Linux używa „Magic Bytes” do wykrywania typów plików. Magic Bytes są częścią zawartości pliku i dlatego są całkowicie niezależne od nazwy. Te bajty są częścią specyfikacji typu pliku (patrz specyfikacja png jako przykład). Używa także rozszerzeń nazw plików z tymi samymi bajtami magicznymi, takimi jak
.txt
lub .html
(oba są plikami tekstowymi).
Związane z