Linux как с учетом регистра, так и без учета регистра и всегда неудобно?

8

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

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

cp ./filename.txt ./FileName.txt

Я просто заканчиваю с filename.txt:

введите описание изображения здесь

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

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

anon58192932
источник
1
Это странно: я проверил эту команду без удивления ... У меня нет проблем с разными случаями в одном каталоге.
Денис Сегюре
5
Обратите внимание, что это может зависеть от типа файловой системы, в которой эти файлы существуют. Например, FAT32 может не различать эти имена файлов.
maerics
УХ ТЫ. Это был ответ Maerics. Файлы хранятся на смонтированном диске с NTFS. Я полностью забыл, так как я разрабатываю кроссплатформенный, что я использую Windows для хранения файлов.
anon58192932
1
@advocate: NTFS чувствительна к регистру, поэтому вы можете смонтировать его так, как вам нравится. Однако вопрос в том, хотите ли вы этого :)
0xC0000022L
Тестирование показывает, что Windows 7 не чувствительна к регистру.
anon58192932

Ответы:

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параметров монтирования.

jlliagre
источник
2
NTFS абсолютно является чувствительны к регистру. Тем не менее, Win32 не чувствительна к регистру, поэтому по практическим причинам большинство людей считают, что NTFS также не.
Коди Грей
@CodyGray Да, вы правы, спасибо за указание этой функции. Базовая файловая система NTFS допускает разные имена файлов, отличающиеся регистром.
Jlliagre
11

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

set completion-ignore-case On

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

nosid
источник
Ты прав. Базовая файловая система не была файловой системой Linux, поэтому во время работы CP и MV Windows решает сохранить уже существующий файл (при переопределении из-за нечувствительности к регистру), что делает его отображаемым в терминале Unix, как будто команда вообще не работала , Кроме того, спасибо за завершение игнорирования дела, это очень поможет!
anon58192932
Является ли регистр чувствительным? ;)
Ардж
К сожалению, это не поможет вам в сценарии.
Шридхар Сарнобат
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

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

D.Shawley
источник
Maerics выше помог мне решить проблему. Я разрабатываю в Ubuntu порт windows -> linux, но файлы хранятся на компьютере Windows, и я забыл, что диск смонтирован. Основная NTFS препятствовала существованию обоих файлов одновременно.
anon58192932
1

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

cp ./filename.txt ./FileName.txt

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

PP
источник
Хотя это не так. Я пытался понять это в течение последнего часа.
anon58192932
2
может быть, у вас нет вашей filename.txtтекущей директории?
PP
Это определенно там.
anon58192932
Maerics выше помог мне решить проблему. Я разрабатываю в Ubuntu порт windows -> linux, но файлы хранятся на компьютере Windows, и я забыл, что диск смонтирован. Основная NTFS препятствовала существованию обоих файлов одновременно.
anon58192932
2
Я видел комментарий Maerics. THX
PP