Как включить регистрозависимые имена файлов и папок в Windows 10
Windows 10 теперь предлагает дополнительную чувствительную к регистру файловую систему, такую же, как Linux и другие UNIX-подобные операционные системы. Все процессы Windows будут обрабатывать файлы и папки с учетом регистра, если вы включите эту функцию. Другими словами, они будут видеть «файл» и «файл» как два отдельных файла.
Как это работает
Это функция файловой системы NTFS, которую можно включить для каждого каталога. Это не относится ко всей вашей файловой системе, поэтому вы можете просто включить чувствительность к регистру для определенных папок, которые вы используете в целях разработки.
Чувствительность к регистру была добавлена в обновлении Windows 10 за апрель 2018 года. До этого было возможно монтировать папки Windows с учетом регистра в среде Bash on Windows, также известной как подсистема Windows для Linux. Это прекрасно работало в среде Linux, но это сбивало с толку нормальные приложения Windows. Теперь это функция уровня файловой системы, что означает, что все приложения Windows также увидят чувствительную к регистру файловую систему в этой папке..
Эта функция включена через fsutil.exe
команда, которую вы должны запустить из командной строки. Вы можете сделать это из командной строки или окна PowerShell. При настройках по умолчанию папки, которые вы создаете в среде Linux, автоматически настраиваются с учетом регистра..
Как установить каталог с учетом регистра
Для начала щелкните правой кнопкой мыши кнопку «Пуск» и выберите команду «PowerShell (Администратор)». Если вы предпочитаете использовать командную строку, вы можете выполнить поиск «Командная строка» в меню «Пуск», щелкнуть по нему правой кнопкой мыши и затем выбрать команду «Запуск от имени администратора». Команда работает одинаково, независимо от того, какую среду командной строки вы выберете.
Вам может не потребоваться доступ администратора для запуска этой команды, в зависимости от ваших разрешений. Технически, вам нужно разрешение «запись атрибутов» для каталога, который вы хотите изменить. В большинстве случаев это означает, что вам потребуются разрешения администратора, если вы хотите редактировать папку где-то за пределами вашей пользовательской папки, например, c: \ project, а не если вы хотите изменить папку где-то внутри вашей пользовательской папки, например как в c: \ users \НАЗВАНИЕ\ проект.
Прежде чем продолжить, убедитесь, что ни одно из запущенных программ Linux не ссылается на каталог, который вы собираетесь изменить. Вы не должны изменять флаг чувствительности к регистру в папке, когда к ней обращается программное обеспечение Linux. Если какие-либо запущенные процессы Linux в настоящее время имеют каталог или что-либо внутри открытого каталога, даже если их текущий рабочий каталог, приложения Linux не распознают изменения и могут возникнуть проблемы.
Чтобы сделать папку чувствительной к регистру, введите следующую команду, заменив «C: \ folder» на путь к папке:
fsutil.exe файл setCaseSensitiveInfo C: \ включить папку
Если путь к папке содержит пробел, заключите весь путь в кавычки, например, так:
fsutil.exe файл setCaseSensitiveInfo "C: \ my folder" включить
Это не влияет на подпапки
Флаг чувствительности к регистру влияет только на конкретную папку, к которой вы его применяете. Он не наследуется автоматически подпапками этой папки.
Другими словами, если у вас есть папка с именем C: \ папка и в ней есть подпапки C: \ folder \ test и C: \ folder \ stuff, простое создание чувствительной к регистру папки C: \ не сделает также Подпапки «test» и «stuff» внутри него чувствительны к регистру. Вам нужно будет запустить соответствующий Fsutil
Команда отдельно, чтобы сделать все три папки чувствительными к регистру.
Инструменты Linux по умолчанию создают регистрозависимые папки
Инструменты Linux, которые вы запускаете в подсистеме Windows для Linux (оболочка Bash), теперь создают папки с установленным флагом с учетом регистра. Итак, используете ли вы MkDir
Команда создания каталога внутри оболочки Bash или средства разработки делает это за вас, созданный каталог автоматически устанавливается с учетом регистра, даже если вы создаете его в смонтированной файловой системе Windows..
Технически это происходит потому, что файловая система DrvFs для среды Linux использует Случай = каталог
флаг по умолчанию. Случай = каталог
Параметр устанавливает среду Linux для соблюдения флага NTFS каждого каталога и для автоматической установки флага чувствительности к регистру для каталогов, созданных из среды Linux. Вы можете изменить эту опцию в своем файле wsl.conf, если хотите.
Пока вы создаете папки из среды Linux, они создаются с правильными настройками чувствительности к регистру, и вам никогда не нужно трогать команду fsutil.exe.
Как проверить, является ли каталог чувствительным к регистру
Чтобы проверить, является ли каталог чувствительным к регистру, выполните следующую команду, заменив «C: \ folder» на путь к папке..
fsutil.exe файл queryCaseSensitiveInfo C: \ папка
Если для каталога включена чувствительность к регистру, вы увидите, что «Атрибут чувствителен к регистру в каталоге [путь]». Если в каталоге используется стандартная нечувствительность к регистру Windows, вы увидите, что «Атрибут чувствителен к регистру на каталог [путь] отключен. »
Как сделать каталог нечувствительным к регистру
Чтобы отменить внесенные изменения и сделать регистр без учета регистра еще раз (в соответствии с замыслом Билла Гейтса), выполните следующую команду, заменив «C: \ folder» на путь к папке..
fsutil.exe файл setCaseSensitiveInfo C: \ отключить папку
Если вы попытаетесь отключить чувствительность к регистру для папки, содержащей файлы с именами, которые могут столкнуться, вы увидите сообщение «Ошибка: каталог не пустой». Вам нужно будет удалить или переименовать конфликтующие файлы, прежде чем продолжить.