Как нечувствительные к регистру файловые системы отображают и верхний регистр и имена файлов нижнего регистра?

Их нельзя рассмотреть, но где искать конфигурационные файлы, и их имена до отдельной программы. Не может дать общие правила.

12
27.01.2019, 01:32
1 ответ

Файловая система без учета регистра просто означает, что всякий раз, когда файловая система должна спросить, «ссылается ли A на тот же файл / каталог, что и B?» он сравнивает имена файлов / каталогов, игнорируя различия в верхнем / нижнем регистре (точное количество различий в верхнем / нижнем регистре зависит от файловой системы - это неочевидно, если вы выйдете за пределы ASCII). Файловая система с учетом регистра не игнорирует эти различия.

Файловая система с сохранением регистра хранит имена файлов в том виде, в каком они заданы. Файловая система без сохранения регистра - нет; он обычно преобразует все буквы в верхний регистр перед их сохранением (теоретически он может использовать нижний регистр или регистр RaNsOm NoTe или что-то еще, но AFAIK все реальные буквы использовали верхний регистр).

Вы можете комбинировать эти два атрибута в любой комбинации. Я не уверен, что вы можете найти файловые системы, не сохраняющие регистр, но вы, безусловно, можете создать такую. Однако все остальные комбинации существуют или существовали в реальных системах.

Таким образом, сохраняющая регистр и нечувствительная к регистру файловая система (наиболее распространенный тип файловой системы без учета регистра в настоящее время) будет хранить и возвращать имена файлов с заглавными буквами, которые вы их создали или переименовали в последний раз, но при сравнении двух имен файлов (с проверьте, существует ли он, чтобы открыть его, удалить и т. д.) он игнорирует различия в регистре.

Когда вы используете файловую систему без учета регистра в системе Unix, различные утилиты будут делать странные вещи, потому что Unix традиционно использует файловые системы с учетом регистра, поэтому они не ожидают Document1 и document1 таким же файлом.

В случае pwd вы видите, что по умолчанию он просто выводит путь, который вы фактически использовали для доступа к каталогу. Так что, если вы попали туда через cd DirName , в выводе будет использоваться DirName . Если вы попали туда через DiRnAmE , в выходных данных вы увидите DiRnAmE . Bash делает это, отслеживая, как вы попали в текущий каталог, в переменной среды $ PWD . В основном это для символических ссылок (если вы cd в символическую ссылку, вы увидите символическую ссылку в своем pwd , даже если на самом деле это не часть пути к вашему текущему каталогу). Но это также дает несколько странное поведение, которое вы наблюдаете в файловых системах без учета регистра. Я подозреваю, что pwd -P даст вам имя каталога, используя регистр, хранящийся на диске, но не проверял.

14
27.01.2020, 19:55

Теги

Похожие вопросы