В каких популярных операционных системах в именах файлов и папок учитывается регистр
Обновлено: 21.11.2024
При работе с файловыми системами Windows и Linux необходимо учитывать ряд соображений. В этом руководстве мы описали некоторые из них, в том числе несколько примеров поддержки совместимости для комбинирования команд Windows и Linux.
Хранение файлов и производительность в файловых системах
Мы не рекомендуем работать с вашими файлами в разных операционных системах, если у вас нет для этого особой причины. Для максимальной производительности храните файлы в файловой системе WSL, если вы работаете в командной строке Linux (Ubuntu, OpenSUSE и т. д.). Если вы работаете в командной строке Windows (PowerShell, командная строка), храните файлы в файловой системе Windows.
Например, при хранении файлов проекта WSL:
- Используйте корневой каталог файловой системы Linux: \\wsl$\Ubuntu\home\\Project
- Не корневой каталог файловой системы Windows: /mnt/c/Users/ /Project$ или C:\Users\\Project
Когда вы видите /mnt/ в пути к файлу командной строки WSL, это означает, что вы работаете с подключенного диска. Таким образом, файловая система Windows C:/диск ( C:\Users\ \Project ) будет выглядеть так при монтировании в командной строке WSL: /mnt/c/Users/ /Project$ . Файлы проекта можно хранить на смонтированном диске, но ваша производительность улучшится, если вы сохраните их непосредственно на диске \\wsl$.
Просмотр текущего каталога в проводнике Windows
Вы можете просмотреть каталог, в котором хранятся ваши файлы, открыв проводник Windows из командной строки, используя:
В качестве альтернативы вы также можете использовать команду: powershell.exe /c start . Не забудьте добавить точку в конце команды, чтобы открыть текущий каталог.
Чтобы просмотреть все доступные дистрибутивы Linux и их корневые файловые системы в проводнике Windows, введите в адресной строке: \\wsl$
Чувствительность к регистру в именах файлов и каталогов
Чувствительность к регистру определяет, обрабатываются ли прописные (FOO.txt) и строчные (foo.txt) буквы как разные (с учетом регистра) или эквивалентные (без учета регистра) в имени файла или каталоге. Файловые системы Windows и Linux обрабатывают чувствительность к регистру по-разному: Windows нечувствительна к регистру, а Linux чувствительна к регистру. Узнайте больше о том, как настроить чувствительность к регистру, особенно при монтировании дисков с помощью WSL, в статье с инструкциями по настройке чувствительности к регистру.
Взаимодействие между командами Windows и Linux
Инструменты и команды Windows и Linux взаимозаменяемы с WSL.
- Запуск инструментов Windows (например, notepad.exe) из командной строки Linux (например, Ubuntu).
- Запуск инструментов Linux (например, grep) из командной строки Windows (например, PowerShell).
- Совместно использовать переменные среды между Linux и Windows. (сборка 17063+)
Запуск инструментов Linux из командной строки Windows
Запускайте двоичные файлы Linux из командной строки Windows (CMD) или PowerShell с помощью wsl (или wsl.exe ).
Двоичные файлы вызываются следующим образом:
- Используйте тот же рабочий каталог, что и текущая командная строка CMD или PowerShell.
- Запуск от имени пользователя WSL по умолчанию.
- Имейте те же права администратора Windows, что и вызывающий процесс и терминал.
Команда Linux, следующая за wsl (или wsl.exe ), обрабатывается как любая команда, выполняемая в WSL. Такие вещи, как sudo, конвейер и перенаправление файлов, работают.
Пример использования sudo для обновления дистрибутива Linux по умолчанию:
После выполнения этой команды будет указано имя пользователя вашего дистрибутива Linux по умолчанию, и вас попросят ввести пароль. После правильного ввода пароля ваш дистрибутив загрузит обновления.
Совмещение команд Linux и Windows
Вот несколько примеров сочетания команд Linux и Windows с помощью PowerShell.
Чтобы использовать команду Linux ls -la для вывода списка файлов и команду PowerShell findstr для фильтрации результатов по словам, содержащим "git", объедините команды:
Чтобы использовать команду PowerShell dir для вывода списка файлов и команду Linux grep для фильтрации результатов по словам, содержащим "git", объедините команды:
Чтобы использовать команду Linux ls -la для вывода списка файлов и команду PowerShell > out.txt для печати этого списка в текстовый файл с именем "out.txt", объедините команды:
Команды, переданные в wsl.exe, перенаправляются в процесс WSL без изменений. Пути к файлам должны быть указаны в формате WSL.
Чтобы использовать команду Linux ls -la для вывода списка файлов в пути файловой системы /proc/cpuinfo Linux с помощью PowerShell:
Чтобы использовать команду Linux ls -la для вывода списка файлов в пути файловой системы Windows C:\Program Files с помощью PowerShell:
Запуск инструментов Windows из Linux
WSL может запускать инструменты Windows непосредственно из командной строки WSL с помощью [имя-инструмента].exe . Например, notepad.exe .
Приложения, запускаемые таким образом, имеют следующие свойства:
- Сохраните рабочий каталог в качестве командной строки WSL (по большей части — исключения описаны ниже).
- Имейте те же права доступа, что и процесс WSL.
- Запуск от имени активного пользователя Windows.
- Отображается в диспетчере задач Windows так, как будто выполняется непосредственно из командной строки CMD.
Исполняемые файлы Windows, запущенные в WSL, обрабатываются так же, как и исходные исполняемые файлы Linux: передача по конвейеру, перенаправление и даже фоновый режим работают должным образом.
Чтобы запустить инструмент Windows ipconfig.exe , используйте инструмент Linux grep для фильтрации результатов "IPv4" и используйте инструмент Linux cut для удаления полей столбца, из дистрибутива Linux (например, Ubuntu) введите:< /p>
Давайте рассмотрим пример сочетания команд Windows и Linux. Откройте дистрибутив Linux (например, Ubuntu) и создайте текстовый файл: touch foo.txt. Теперь используйте команду Linux ls -la, чтобы вывести список прямых файлов и сведения об их создании, а также инструмент Windows PowerShell findstr.exe для фильтрации результатов, чтобы в результатах отображался только ваш файл foo.txt:
Инструменты Windows должны включать расширение файла, соответствовать регистру файла и быть исполняемым. Неисполняемые файлы, включая пакетные сценарии. Собственные команды CMD, такие как dir, можно запускать с помощью команды cmd.exe /C.
Например, выведите список содержимого каталога C:\ файловой системы Windows, введя:
Параметры передаются в двоичный файл Windows без изменений. Например, следующая команда откроет C:\temp\foo.txt в notepad.exe:
Это также будет работать:
Обмен переменными среды между Windows и WSL с помощью WSLENV
WSL и Windows совместно используют специальную переменную среды WSLENV , созданную для объединения дистрибутивов Windows и Linux, работающих на WSL.
Свойства переменной WSLENV:
- Он является общим; он существует как в среде Windows, так и в среде WSL.
- Это список переменных среды для совместного использования Windows и WSL.
- Он может форматировать переменные среды, чтобы они хорошо работали в Windows и WSL.
- Он может помочь в обмене данными между WSL и Win32.
До версии 17063 единственной переменной среды Windows, к которой WSL мог получить доступ, была PATH (поэтому вы могли запускать исполняемые файлы Win32 из-под WSL). Начиная с версии 17063, WSLENV начинает поддерживаться. WSLENV чувствителен к регистру.
флаги WSLENV
В WSLENV доступны четыре флага, влияющие на преобразование переменной среды.
- /p — преобразует путь между путями в стиле WSL/Linux и путями Win32.
- /l — указывает, что переменная среды представляет собой список путей.
- /u — указывает, что эту переменную среды следует включать только при запуске WSL из Win32.
- /w — указывает, что эту переменную среды следует включать только при запуске Win32 из WSL.
Флаги можно комбинировать по мере необходимости.
Узнайте больше о WSLENV, включая ответы на часто задаваемые вопросы и примеры установки значения WSLENV для конкатенации других предопределенных переменных среды, каждая из которых имеет косую черту, за которой следуют флаги, чтобы указать, как значение должно быть преобразовано, и передача переменных с сценарий. В этой статье также приведен пример настройки среды разработки с языком программирования Go, настроенного для совместного использования GOPATH между WSL и Win32.
Отключить совместимость
Пользователи могут отключить возможность запуска инструментов Windows для одного сеанса WSL, выполнив следующую команду от имени пользователя root:
Чтобы повторно включить двоичные файлы Windows, выйдите из всех сеансов WSL и повторно запустите bash.exe или выполните следующую команду от имени пользователя root:
Отключение взаимодействия не будет сохраняться между сеансами WSL — взаимодействие будет снова включено при запуске нового сеанса.
По умолчанию процессы Windows обрабатывают файловую систему без учета регистра. Таким образом, они не различают файлы или папки по регистру. Например, имена файлов FILE.txt и file.txt рассматриваются как один и тот же файл, даже если их содержимое и вся остальная информация различаются.
При нормальной работе это не вызывает проблем, однако проблемы могут возникнуть, если файлы или папки получены из файловой системы, поддерживающей чувствительность к регистру, например Linux или UNIX, или если компьютер использует подсистему Windows для Linux (совместимость слой для собственного запуска бинарных исполняемых файлов Linux в Windows).
Чтобы упростить учет регистра при работе с этим типом файлов или папок. В обновлении Windows 10 от апреля 2018 г. (версия 1803) появился новый флаг, настраиваемый для каждого каталога. Если этот параметр включен, все процессы Windows будут учитывать регистр символов в папке и ее файлах, поэтому они будут рассматривать FILE.txt и file.txt как разные файлы.
Этот параметр применяется только к выбранным папкам и связанным файлам. Не вся файловая система.Кроме того, параметры не наследуются какими-либо вложенными папками, созданными в каталоге с учетом регистра.
Это может повлиять на вводимое пользователем расположение файлов и папок в некоторых собственных процессах Windows, включая исключения управляемого антивируса. Если местонахождение не точно совпадает с файлом дела и папкой дела. Процесс Windows не сможет запрашивать эти расположения.
Пример расположения файла с учетом регистра исключений управляемого антивируса
В следующем примере используется тестовый файл защиты от вредоносных программ eicar:
Расположение файла с учетом регистра
Управляемое исключение антивируса
Тестовый файл игнорируется (исключается)
Тестовый файл помещен в карантин
Проверить чувствительность папки к регистру
Чтобы проверить, чувствительна ли папка к регистру, запустите из командной строки следующую команду:
файл fsutil.exe queryCaseSensitiveInfo
Например, команда и ответ:
C:\ >файл fsutil.exe queryCaseSensitiveInfo C:\case_sensitivity
Атрибут, чувствительный к регистру, в каталоге C:\case_sensitivity отключен.
Что вы хотите сделать?
- Управление исключениями и примечания.
- Просмотрите общие системные переменные исключений
- Изучите блог разработчиков Майкрософт, посвященный учету регистра в каталогах и WSL.
Обратите внимание, что мы не несем ответственности за содержание внешних сайтов.
Дисковая утилита на Mac поддерживает несколько форматов файловых систем:
Файловая система Apple (APFS): файловая система, используемая в macOS 10.13 или более поздней версии.
Mac OS Extended: файловая система, используемая в macOS 10.12 или более ранней версии.
MS-DOS (FAT) и ExFAT: файловые системы, совместимые с Windows.
Файловая система Apple (APFS)
Apple File System (APFS), файловая система по умолчанию для компьютеров Mac с macOS 10.13 или более поздней версии, отличается надежным шифрованием, совместным использованием пространства, моментальными снимками, быстрым определением размера каталога и улучшенными основами файловой системы. Хотя APFS оптимизирован для хранения Flash/SSD, используемого в последних компьютерах Mac, его также можно использовать в более старых системах с традиционными жесткими дисками (HDD) и внешним хранилищем с прямым подключением. macOS 10.13 или более поздней версии поддерживает APFS как для загрузочных томов, так и для томов данных.
APFS выделяет дисковое пространство внутри контейнера (раздела) по требованию. Когда один контейнер APFS имеет несколько томов, свободное пространство контейнера является общим и автоматически выделяется для любого из отдельных томов по мере необходимости. При желании вы можете указать размеры резерва и квоты для каждого тома. Каждый том использует только часть общего контейнера, поэтому доступное пространство равно общему размеру контейнера за вычетом размера всех томов в контейнере.
Выберите один из следующих форматов APFS для компьютеров Mac с macOS 10.13 или более поздней версии.
APFS: использует формат APFS. Выберите этот вариант, если вам не нужен зашифрованный формат или формат с учетом регистра.
APFS (с шифрованием): использует формат APFS и шифрует том.
APFS (с учетом регистра): использует формат APFS и учитывает регистр в именах файлов и папок. Например, папки с именами «Домашнее задание» и «ДОМАШНЕЕ ЗАДАНИЕ» — это две разные папки.
APFS (с учетом регистра, с шифрованием): использует формат APFS, учитывает регистр в именах файлов и папок и шифрует том. Например, папки с именами «Домашнее задание» и «ДОМАШНЕЕ ЗАДАНИЕ» — это две разные папки.
Вы можете легко добавлять или удалять тома в контейнерах APFS. Каждый том в контейнере APFS может иметь собственный формат APFS — APFS, APFS (зашифрованный), APFS (с учетом регистра) или APFS (с учетом регистра, с шифрованием).
Расширенная версия для Mac OS
Выберите один из следующих форматов файловой системы Mac OS Extended для совместимости с компьютерами Mac, использующими macOS 10.12 или более ранней версии.
Mac OS Extended (в журнале): использует формат Mac (в журнале HFS Plus) для защиты целостности иерархической файловой системы. Выберите этот вариант, если вам не нужен зашифрованный формат или формат с учетом регистра.
Mac OS Extended (в журнале, с шифрованием): использует формат Mac, требует пароль и шифрует раздел.
Mac OS Extended (с учетом регистра, в журнале): использует формат Mac и учитывает регистр в именах папок. Например, папки с именами «Домашнее задание» и «ДОМАШНЕЕ ЗАДАНИЕ» — это две разные папки.
Mac OS Extended (с учетом регистра, в журнале, с шифрованием): использует формат Mac, учитывает регистр в именах папок, требует пароль и шифрует раздел.
Форматы, совместимые с Windows
Выберите один из следующих форматов файловой системы, совместимых с Windows, если вы форматируете диск для использования с Windows.
Еще один момент, на который следует обратить внимание, заключается в том, что существует разница между тем, как операционная система представляет файл, и тем, как она его разрешает. Например, если вы использовали Windows 95/98/NT, вы, вероятно, столкнулись с файлом README.TXT.Файл может быть представлен операционной системой полностью заглавными буквами. Однако, если вы откроете командную строку MS-DOS и введете команду edit readme.txt , файл, написанный заглавными буквами, будет загружен в программу редактирования, даже если вы ввели имя строчными буквами!
Это потому что семейство операционных систем Windows 95/98/NT разрешает файлы без учета регистра, даже если файлы представлены в нем с учетом регистра. С другой стороны, операционные системы на основе Unix всегда разрешают файлы с учетом регистра; если вы попытаетесь отредактировать README.TXT с помощью команды vi readme.txt , вы, скорее всего, редактируете пустой буфер нового файла.
Вот как Samba обрабатывает регистр: case установлено значение yes , Samba всегда будет использовать регистр, предоставленный операционной системой, для представления (не разрешения) имен файлов. Если для него установлено значение no , он будет использовать регистр, указанный параметром case по умолчанию. То же самое справедливо и для краткосрочного сохранения. Если для этой опции установлено значение yes, Samba будет использовать регистр операционной системы по умолчанию для представления имен файлов 8.3; в противном случае будет использоваться регистр, указанный параметром case по умолчанию. Наконец, Samba всегда будет разрешать имена файлов в своих общих ресурсах на основе значения параметра с учетом регистра.
Опция регистра по умолчанию используется с сохранением регистра. Указывает регистр по умолчанию (верхний или нижний), который Samba будет использовать при создании файла на одном из своих общих ресурсов от имени клиента. Регистр по умолчанию — нижний , что означает, что вновь созданные файлы будут использовать имена в смешанном регистре, данные им клиентом. Если вам нужно, вы можете переопределить этот глобальный параметр, указав следующее:
Если вы укажете это значение, имена вновь создаваемых файлов будут переведены в верхний регистр и не могут быть переопределены в программе. Мы рекомендуем вам использовать значение по умолчанию, если вы не имеете дело с Windows для рабочих групп или другим клиентом 8.3, и в этом случае оно должно быть выше .
Этот параметр указывает, создается ли файл, созданный Samba от имени клиента, с регистром, предоставленным клиентской операционной системой, или с регистром, указанным выше в параметре конфигурации случая по умолчанию. Значение по умолчанию — yes, в котором используется регистр, предоставленный клиентской операционной системой. Если для него установлено значение no , используется значение параметра case по умолчанию.
Обратите внимание, что этот параметр не обрабатывает запросы файлов 8.3, отправленные от клиента — см. вариант краткого сохранения ниже. Вы можете установить для этой опции значение yes, если приложения, создающие файлы на сервере Samba, чувствительны к регистру, используемому при создании файла. Если вы хотите, например, заставить Samba имитировать поведение файловой системы Windows NT, вы можете оставить для этого параметра значение по умолчанию, да .
Этот параметр указывает, будет ли имя файла 8.3, созданное Samba от имени клиента, создаваться с регистром по умолчанию клиентской операционной системы или с регистром, заданным параметром конфигурации регистра по умолчанию. Значение по умолчанию — yes, в котором используется регистр, предоставленный клиентской операционной системой. Вы можете разрешить Samba выбирать регистр с помощью параметра case по умолчанию, установив его следующим образом:
Если вы хотите, чтобы Samba имитировала поведение файловой системы Windows NT, вы можете оставить этот параметр установленным по умолчанию. , да .
Эта опция на уровне общего ресурса указывает, будет ли Samba изменять имена файлов для клиентов 8.3 в этом общем ресурсе. Если для параметра установлено значение no , Samba не будет изменять имена и (в зависимости от клиента) они будут либо невидимы, либо усечены для тех, кто использует операционные системы 8.3. Значение по умолчанию — да. Вы можете переопределить его для каждого общего ресурса следующим образом:
Эта опция указывает Samba, следует ли ей изменять имена файлов, которые не полностью состоят из регистра, указанного с помощью параметра конфигурации регистра по умолчанию. По умолчанию для этой опции нет . Если вы установите для него значение yes , вы должны быть уверены, что все клиенты смогут обрабатывать полученные в результате искаженные имена файлов. Вы можете переопределить его для каждого общего ресурса следующим образом:
Мы рекомендуем оставить этот параметр в покое, если только у вас нет обоснованной необходимости его изменить.
Этот параметр на уровне общего доступа указывает символ искажения, используемый, когда Samba преобразует имена файлов в формат 8.3. Используемый символ по умолчанию — тильда (~). Вы можете сбросить его на любой символ, какой пожелаете, например:
Samba поддерживает локальный стек недавно измененных имен файлов 8.3; этот стек можно использовать для обратного преобразования искаженных имен файлов в исходное состояние. Это часто требуется приложениям, которые создают и сохраняют файл, закрывают его, а затем должны изменить. По умолчанию в этом стеке хранится 50 пар длинных имен файлов и искаженных имен файлов. расход памяти и немного более медленный доступ к файлам.
Если поведения по умолчанию, связанного с изменением имени, недостаточно, вы можете дать Samba дополнительные инструкции о том, как себя вести, используя параметр искаженной карты. Эта опция позволяет указать шаблоны сопоставления, которые можно использовать до или даже вместо изменения имени, выполняемого Samba. Например:
Здесь Samba получает указание искать в каждом обнаруженном файле символы, соответствующие первому шаблону, указанному в скобках, и преобразовывать их в измененный второй шаблон в скобках для отображения на клиенте 8.3. Это полезно в том случае, если изменение имени преобразует имя файла неправильно или в формат, который клиент не может сразу понять. Шаблоны разделены пробелами.
Читайте также: