8

Я использую Ubuntu 10 и быстро обнаруживаю, что он чувствителен к регистру, когда ему неудобно (например, при автозаполнении путей к файлам с помощью вкладки в терминале), но также не чувствителен к регистру при использовании команд MV и CP (также неудобно при попытке дублировать имя файла с другим регистром).

По сути, мне нужна эта команда для работы, но это не так.

cp ./filename.txt ./FileName.txt

Я просто в конечном итоге с filename.txt:

Как я могу получить один и тот же файл с другим регистром, но с тем же именем в том же каталоге?

РЕДАКТИРОВАТЬ: Комментарий Maerics ниже помог мне вспомнить, что я на самом деле разрабатываю на общем диске Windows, работающем с NTFS, который не чувствителен к регистру. Вот почему, хотя CP и MV не генерируют ошибку, файл не копируется (или, скорее всего, копируется, но Windows заменяет уже существующий).

4 ответа4

11

В bash можно включить завершение имени файла без учета регистра, добавив следующую строку в $HOME/.inputrc:

set completion-ignore-case On

Относительно имен файлов: это зависит от файловой системы. В файловых системах Linux проблем быть не должно. В других файловых системах поведение можно контролировать с помощью параметров команды mount. См. Страницу руководства по mount(8) для получения дополнительной информации о доступных опциях для монтирования.

4

NTFS 1 и VFAT не чувствительны к регистру, они просто сохраняют регистр. Это означает, что если вы создадите файл с именем FileName.txt , файловая система сохранит смешанное имя регистра, но вы можете получить доступ к файлу с любой комбинацией символов из тех же букв, например, FILENAME.TXT , filename.txt или fileNAME.txt . Это объясняет, что вы не можете иметь два файла с одинаковым написанием, только с изменением верхнего / нижнего регистра в одном каталоге.

Экспортируемая SMB файловая система должна реализовывать это поведение, чтобы не запутывать клиентов Windows.

ZFS может быть настроен на такое поведение с помощью свойства casesensitivity=mixed .

1 Технически, NTFS чувствительна к регистру, но операционные системы, монтирующие файловые системы этого типа, почти всегда настроены так, чтобы скрыть эту базовую функцию и сохранить только регистр.Однако для Windows можно включить чувствительность к регистру с изменением этого регистром ключом HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\kernel\dword:ObCaseInsensitive и Linux могут монтировать эти файловые системы с различным поведением в зависимости от ignore_case и windows_names опции монтирования.

2

Это свойство файловой системы или что-то еще?

pa-ubuntu-11388$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 10.04.3 LTS
Release:        10.04
Codename:       lucid
pa-ubuntu-11388$ ls -l
pa-ubuntu-11388$ touch filename.txt
pa-ubuntu-11388$ ls -l
-rw-r--r-- 1 dshawley dev 0 May 31 15:17 filename.txt
pa-ubuntu-11388$ cp ./filename.txt ./FileName.txt
pa-ubuntu-11388$ ls -l
-rw-r--r-- 1 dshawley dev 0 May 31 15:17 FileName.txt
-rw-r--r-- 1 dshawley dev 0 May 31 15:17 filename.txt

Он отлично работает для меня.

1

Ubuntu не чувствительна к регистру. Это всегда чувствительно к регистру. filename.txt и Filename.txt являются двумя разными файлами и могут быть размещены в одном каталоге. Итак, эта команда:

cp ./filename.txt ./FileName.txt

будет работать без проблем в том же каталоге.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .