Udostępnij przez


Dostosowywanie czułości na wielkość liter

Ważność wielkości liter określa, czy wielkie litery (FOO.txt) i małe litery (foo.txt) są obsługiwane jako odrębne (uwzględniana wielkość liter) lub równoważne (bez uwzględniania wielkości liter) w nazwie pliku lub katalogu.

  • Rozróżnianie wielkości liter: FOO.txt ≠ foo.txt ≠ Foo.txt
  • Bez uwzględniania wielkości liter: FOO.txt = foo.txt = Foo.txt

Różnice w rozróżnianiu wielkości liter między systemami Windows i Linux

Podczas pracy z plikami i katalogami systemu Linux i Windows może być konieczne dostosowanie sposobu rozróżniania wielkości liter.

Zachowanie standardowe:

  • System plików Windows ignoruje wielkość liter w nazwach plików i katalogów. FOO.txt i foo.txt będą traktowane jako pliki równoważne.
  • System plików Linux rozróżnia wielkość liter w nazwach plików i katalogów. FOO.txt i foo.txt będą traktowane jako odrębne pliki.

System plików Windows obsługuje ustawianie rozróżniania wielkości liter za pomocą flag atrybutów dla każdego katalogu. Standardowym zachowaniem jest niewrażliwość na wielkość liter, ale można przypisać flagę atrybutu, aby katalog uwzględniał wielkość liter. Dzięki temu rozpozna pliki i foldery systemu Linux, które mogą się różnić tylko wielkością liter.

Może to być szczególnie istotne w przypadku montowania dysków w systemie plików Podsystemu Windows dla systemu Linux (WSL). Podczas pracy w systemie plików WSL używasz systemu Linux, w związku z czym pliki i katalogi są domyślnie traktowane jako rozróżniające wielkość liter.

Notatka

W przeszłości, jeśli masz pliki, których nazwa różniła się tylko wielkością liter, te pliki nie mogą być dostępne dla systemu Windows, ponieważ aplikacje systemu Windows traktują system plików jako niewrażliwy na wielkość liter i nie mogą rozróżniać plików, których nazwy różnią się tylko literami. W Eksploratorze plików systemu Windows będą wyświetlane oba pliki, ale tylko jeden zostanie otwarty niezależnie od wybranej opcji.

Zmiana rozróżniania wielkości liter w nazwach plików i katalogów

W poniższych krokach wyjaśniono, jak zmienić katalog w systemie plików systemu Windows, tak aby uwzględniał wielkość liter i rozpoznawał pliki i foldery, które różnią się tylko wielkością liter.

Ostrzeżenie

Niektóre aplikacje systemu Windows, zakładając, że system plików nie rozróżnia wielkości liter, nie używają poprawnej wielkości liter do odwoływania się do plików. Na przykład nie jest rzadkością, aby aplikacje przekształcały nazwy plików w celu używania wszystkich wyższej lub małej litery. W katalogach rozróżniających wielkość liter oznacza to, że te aplikacje nie mogą już uzyskiwać dostępu do plików. Ponadto, jeśli aplikacje systemu Windows tworzą nowe katalogi w drzewie katalogów, w którym używane są pliki wrażliwe na wielkość liter, te katalogi same nie są wrażliwe na wielkość liter. Może to utrudnić pracę z narzędziami Windows w katalogach, które rozróżniają wielkość liter, dlatego należy zachować ostrożność podczas zmieniania ustawień czułości na wielkość liter w systemie plików Windows.

Sprawdź bieżącą czułość na wielkość liter

Aby sprawdzić, czy katalog jest rozróżniany pod względem wielkości liter w systemie plików systemu Windows, uruchom polecenie:

fsutil.exe file queryCaseSensitiveInfo <path>

Zastąp <path> ścieżką pliku. W przypadku katalogu w systemie plików Systemu Windows (NTFS) <path> będzie wyglądać następująco: C:\Users\user1\case-test lub jeśli jesteś już w katalogu user1, możesz po prostu uruchomić: fsutil.exe file setCaseSensitiveInfo case-test

Modyfikowanie rozróżniania wielkości liter

Obsługa wrażliwości na wielkość liter dla poszczególnych katalogów jest dostępna od systemu Windows 10, kompilacja 17107. W systemie Windows 10, kompilacja 17692, obsługa została zaktualizowana w celu umożliwienia inspekcji i modyfikowania flagi wrażliwości na wielkość liter dla katalogu z poziomu WSL. Ważność wielkości liter jest uwidaczniona przy użyciu atrybutu rozszerzonego o nazwie system.wsl_case_sensitive. Wartość tego atrybutu będzie wynosić 0 dla katalogów bez uwzględniania wielkości liter i 1 dla katalogów z uwzględnieniem wielkości liter.

Zmiana rozróżniania wielkości liter katalogu wymaga uruchomienia z podwyższonymi uprawnieniami (uruchom jako administrator). Zmiana flagi uwzględniania wielkości liter wymaga również uprawnień do "zapisu atrybutów", "utworzenia plików", "utworzenia folderów" oraz "usunięcia podfolderów i plików" w katalogu. Zobacz sekcję rozwiązywania problemów, aby uzyskać więcej informacji na temat tego.

Aby zmienić katalog w systemie plików systemu Windows tak, aby uwzględniał wielkość liter (FOO ≠ foo), uruchom program PowerShell jako administrator i użyj polecenia :

fsutil.exe file setCaseSensitiveInfo <path> enable

Aby zmienić katalog w systemie plików systemu Windows z powrotem na wartość domyślną bez uwzględniania wielkości liter (FOO = foo), uruchom program PowerShell jako administrator i użyj polecenia :

fsutil.exe file setCaseSensitiveInfo <path> disable

Katalog musi być pusty, aby zmienić atrybut flagi uwzględniania wielkości liter w tym katalogu. Nie można wyłączyć flagi uwzględniania wielkości liter w katalogu zawierającym foldery i pliki, których nazwy różnią się tylko wielkością liter.

Dziedziczenie poufności liter

Podczas tworzenia nowych katalogów, te katalogi będą dziedziczyć rozróżnianie wielkości liter po katalogu nadrzędnym.

Ostrzeżenie

Istnieje wyjątek od tych zasad dziedziczenia podczas uruchamiania w trybie WSL 1. Gdy dystrybucja jest uruchomiona w trybie WSL 1, flaga rozróżniania wielkości liter dla katalogu nie jest dziedziczona przez podkatalogi; katalogi utworzone w takim katalogu nie stają się automatycznie rozróżniające wielkości liter. Należy jawnie oznaczyć każdy katalog jako rozróżniający wielkość liter

Opcje uwzględniania wielkości liter przy montowaniu dysku w pliku konfiguracyjnym WSL

Zarządzanie wielkością liter można kontrolować podczas montowania dysku w Windows Subsystem for Linux za pomocą pliku konfiguracyjnego WSL. Każda zainstalowana dystrybucja systemu Linux może mieć własny plik konfiguracji WSL o nazwie /etc/wsl.conf. Aby uzyskać więcej informacji na temat sposobu instalowania dysku, zobacz Wprowadzenie do instalowania dysku z systemem Linux w programie WSL 2.

Aby skonfigurować opcję rozróżniania wielkości liter w pliku wsl.conf podczas montowania dysku:

  1. Otwórz dystrybucję systemu Linux, której będziesz używać (tj. Ubuntu).
  2. Zmień katalogi do momentu wyświetlenia folderu etc (może to wymagać cd .. z katalogu home).
  3. Wyświetl listę plików w katalogu etc, aby sprawdzić, czy plik wsl.conf już istnieje (użyj polecenia ls lub explorer.exe ., aby wyświetlić katalog za pomocą Eksploratora plików systemu Windows).
  4. Jeśli plik wsl.conf jeszcze nie istnieje, możesz go utworzyć za pomocą polecenia: sudo touch wsl.conf lub uruchamiając sudo nano /etc/wsl.conf, co spowoduje utworzenie pliku podczas zapisywania z edytora Nano.
  5. Dostępne są następujące opcje dodawania do pliku wsl.conf:

Ustawienie domyślne: off dla niedostępności czułości na wielkość liter (wszystkie katalogi na zamontowanych dyskach NTFS będą ignorować wielkość liter).

[automount]
options = case = off

Włączanie rozróżniania wielkości liter na katalog: dir

[automount]
options = case = dir

Traktuj wszystkie katalogi na dysku (NTFS) jako rozróżniające wielkość liter: force

[automount]
options = case = force

Ta opcja jest obsługiwana tylko w przypadku instalowania dysków w dystrybucjach systemu Linux działających jako WSL 1 i może wymagać klucza rejestracji. Aby dodać klucz rejestracji, możesz użyć tego polecenia z wiersza polecenia z podwyższonym poziomem uprawnień (administrator): reg.exe add HKLM\SYSTEM\CurrentControlSet\Services\lxss /v DrvFsAllowForceCaseSensitivity /t REG_DWORD /d 1.

Po wprowadzeniu zmian w pliku wsl.conf należy ponownie uruchomić program WSL, aby zmiany zaczęły obowiązywać. Możesz ponownie uruchomić program WSL przy użyciu polecenia: wsl --shutdown

Napiwek

Aby zamontować dysk (który używa wtyczki systemu plików DrvFs, aby dysk był dostępny w lokalizacji /mnt, takich jak /mnt/c, /mnt/d itp.) z określonym ustawieniem wielkości liter dla wszystkich dysków, użyj /etc/wsl.conf zgodnie z powyższym opisem. Aby ustawić domyślne opcje instalacji dla jednego określonego dysku, użyj pliku /etc/fstab, aby określić te opcje. Aby uzyskać więcej opcji konfiguracji protokołu WSL, zobacz Configure per distro launch settings with wslconf.

Zmiana rozróżniania wielkości liter na dysku zamontowanym w dystrybucji WSL

Dyski sformatowane ntfs zainstalowane w dystrybucji WSL będą domyślnie bez uwzględniania wielkości liter. Aby zmienić czułość na wielkość liter dla katalogu na dysku zamontowanym w dystrybucji WSL (tj. Ubuntu), wykonaj te same kroki, co wymienione powyżej dla systemu plików Windows. (Dyski EXT4 będą domyślnie rozróżniały wielkość liter).

Aby włączyć rozróżnianie wielkości liter w katalogu (FOO ≠ foo), użyj polecenia:

fsutil.exe file setCaseSensitiveInfo <path> enable

Aby wyłączyć rozróżnianie wielkości liter w katalogu i powrócić do domyślnego trybu bez rozróżniania wielkości liter (FOO = foo), skorzystaj z polecenia:

fsutil.exe file setCaseSensitiveInfo <path> disable

Notatka

Jeśli zmienisz flagę uwzględniającą wielkość liter w istniejącym katalogu dla zainstalowanego dysku podczas działania programu WSL, upewnij się, że w programie WSL nie ma odwołań do tego katalogu lub zmiana nie będzie skuteczna. Oznacza to, że katalog nie może być otwarty przez żadne procesy WSL, w tym przy użyciu katalogu (lub jego elementów podrzędnych) jako bieżącego katalogu roboczego.

Konfigurowanie czułości na wielkość liter w Git

System kontroli wersji Git ma również ustawienie konfiguracji, które można wykorzystać do dostosowania uwzględniania wielkości liter dla plików, z którymi pracujesz. Jeśli używasz usługi Git, możesz dostosować ustawienie git config core.ignorecase.

Aby ustawić w Git uwzględnianie wielkości liter (FOO.txt ≠ foo.txt), wprowadź:

git config core.ignorecase false

Aby ustawić Git na ignorowanie wielkości liter (FOO.txt = foo.txt), wprowadź:

git config core.ignorecase true

Ustawienie tej opcji na wartość false w bezrozróżnieniowym systemie plików może prowadzić do mylących błędów, fałszywych konfliktów lub zduplikowanych plików.

Aby uzyskać więcej informacji, zobacz dokumentację Git Config.

Rozwiązywanie problemów

Mój katalog zawiera pliki, które mają różne wielkości liter i wymagają rozróżniania wielkości liter, ale narzędzia systemu plików Windows nie rozpoznają tych plików.

Aby użyć narzędzi systemu plików Windows do pracy z katalogiem systemu Linux zawierającym pliki z mieszanymi wielkościami liter, należy utworzyć zupełnie nowy katalog i ustawić go tak, aby uwzględniał wielkość liter, a następnie skopiować pliki do tego katalogu (przy użyciu git clone lub untar). Pliki pozostaną mieszane. (Należy pamiętać, że jeśli próbowano już przenieść pliki do katalogu niewrażliwego na wielkość liter i wystąpiły konflikty, prawdopodobnie niektóre pliki zostały zastąpione przez inne i nie będą już dostępne).

Błąd: Katalog nie jest pusty

Nie można zmienić ustawienia rozróżniania wielkości liter w katalogu, który zawiera inne pliki lub katalogi. Spróbuj utworzyć nowy katalog, zmienić ustawienie, a następnie skopiować do niego pliki z mieszanymi literami.

Błąd: Odmowa dostępu

Upewnij się, że masz uprawnienia „Pisanie atrybutów”, „Utwórz pliki”, „Utwórz foldery” i „Usuń podfoldery i pliki” w katalogu wymaganym do zmiany rozróżniania wielkości liter. Aby sprawdzić te ustawienia, otwórz katalog w Eksploratorze plików systemu Windows (w wierszu polecenia użyj polecenia: explorer.exe .). Kliknij prawym przyciskiem myszy katalog i wybierz pozycję właściwości , aby otworzyć okno Właściwości dokumentu, a następnie wybierz pozycję Edytuj, aby wyświetlić lub zmienić uprawnienia dla katalogu.

okna Właściwości, aby wyświetlić lub zmienić uprawnienia do katalogów NTFS

Błąd: dla tej operacji jest wymagany lokalny wolumin NTFS

Atrybut wielkości liter można ustawić tylko w katalogach w systemie plików sformatowanym w NTFS. Katalogi w systemie plików WSL (Linux) domyślnie rozróżniają wielkość liter (i nie można ich ustawić na nieuwzględnianie wielkości liter przy użyciu narzędzia fsutil.exe).

Dodatkowe zasoby