Неправильная ли практика для имени папки содержать точку (.)? Как насчет имени файла с несколькими точками?

У меня была та же проблема.

Adata 32GB C902.

Всюду, где я пытался открыть диск, я получаю сообщение: «Средний не найден». Привод был указан в lsusb (Linux) и «Пожалуйста, вставьте диск в дисковод X» в (Windows)

Я загрузил свой раздел Windows XP и перешел на этот сайт: Adata USB Recovery [ ! d3] Я набрал серийный номер накопителя, подождал несколько секунд и начал загрузку.

Средство восстановления adata говорит: 4-5 строк метаданных, включая неправильное имя устройства, начиная с конца XXXXXXX и т. д. lsusb Я нажал обновление, и он начал восстанавливать диск ~ 2мин, и все было в порядке. Я отсоединяю устройство и подключаю его снова - у меня теперь свободное место на 30 ГБ.

Как раз перед ~ 5 минутами я был исправлен.

1
задан 30 January 2014 в 22:34

4 ответа

Для полноты имен имена, содержащие одну точку . или две точки .., являются особыми:

. относится к текущему каталогу .. относится к родительскому каталогу

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

5
ответ дан 24 May 2018 в 12:21
  • 1
    Хорошая точка зрения. Это относится как к Windows, так и к Ubuntu. – user68186 5 February 2014 в 03:56

Короткий ответ

В Windows не допускаются следующие символы: <>:"/\|?* (источник) Больше символов, которые обескуражены: space и dot . (source) Инструменты командной строки сложнее использовать, когда у вас есть пробелы в именах (более сложные, а не невозможные). Точки используются в RegEx (например, когда вы хотите использовать grep). Ведущая точка делает файл скрытым по соглашению в Linux. В Windows в расширении файла используются точки, которые используются для обнаружения типа файла. Windows также не разрешает имена файлов CON, PRN, AUX, CLOCK$, NUL COM1, COM2, COM3, COM4, COM5, COM6, [ f17], COM8, COM9 LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8 и LPT9. (source) Единственные символы, которые я не знаю в файловых системах Unix, я знаю / и null (нулевой байт, \0). См. Также: Ограничения файловой системы (я не знаю, к какой Windows вы хотите быть совместимой).

Длинный ответ

Технический справочник: Файловая система

Ubuntu использует файловую систему ext4. Файловая система отслеживает, где файлы хранятся в файловой системе¹, разрешения в форме owner / group / other могут читать / записывать / выполнять, временные метки, имя.

Файловая система структурирует доступное хранилище. Первый блок называется «суперблоком». Этот блок используется для монтирования файловой системы. Насколько я знаю, каждая современная файловая система делит его пространство в блоках. Я думаю (и я не слишком уверен в этом), что большинство файловых систем также имеют фиксированный размер блока, хотя размер блока можно настроить при создании файловой системы. ext4 (а также ext2 и ext3) используют так называемые «inodes» для файлов и каталогов. Эти inodes содержат указатели на другие блоки (которые также могут быть inodes или быть «блоками данных»). И «первый» inode файла содержит всю информацию, указанную выше.

Еще одна информация - это «тип» файла. «Тип» может быть:

Windows не разрешает следующие символы: <>:"/\|?* (источник) directory Больше символов, которые обескуражены: space и dot . (источник) Инструменты командной строки сложнее использовать, когда у вас есть пробелы в именах (сложнее, а не невозможно) Точки используются в RegEx (например, когда вы хотите использовать grep). Ведущая точка делает файл скрытым по соглашению в Linux. В Windows в расширении файла используются точки, которые используются для обнаружения типа файла. ...

На самом деле вы также можете открыть каталоги с помощью редактора:

vim /home

Поскольку каталог не содержит полный путь, но только имена содержимого я не вижу причины, по которой файлы не могут содержать файл /. Думаю, это может быть удобство. (Кто-нибудь знает, почему / не разрешено?)

Однако для других файловых систем все по-другому. FAT16 и FAT32 использовали так называемую «таблицу размещения файлов». Это означает, что есть таблица, которая содержит все файлы, которые хранятся в вашем файле, на которых они запускаются «кластер», и в каком кластере они заканчиваются как отдельный список.

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

Технический фон: Типы файлов

directory Linux использует «Магические байты» для обнаружения типов файлов , source являются частью содержимого файла и, следовательно, полностью независимы от имени. Эти байты являются частью спецификации типа файла (см. Пример png). Он также использует расширения имени файла для файлов с такими же магическими байтами, как .txt или .html (оба являются текстовыми файлами).

Сноски

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

Источник: ext4

Связанный

Linux использует «Магические байты» для обнаружения типов файлов. source являются частью содержимого файла и, следовательно, полностью независимы от имени. Эти байты являются частью спецификации типа файла (см. Пример png). Он также использует расширения имен файлов для файлов с такими же магическими байтами, как .txt или .html (оба являются текстовыми файлами). ... Windows также не будет разрешить имена файлов CON, PRN, AUX, CLOCK$, NUL COM1, COM2, COM3, COM4, COM5, COM6, COM7, [ COM9, LPT6, LPT7, LPT8 и LPT9. (источник)
5
ответ дан 24 May 2018 в 12:21
  • 1
    Ваше предположение относительно того, как FAT хранит имена файлов, не совсем корректно: ru.wikipedia.org/wiki/FAT32#File_Allocation_Table - фактический «FAT» хранит список кластеров , тогда как каталоги сохраняют список имен файлов с указателем на первый кластер файла, похожий на то, как вы описываете ext4. Кроме того, файлы .txt и .html действительно имеют разные «магические значения», - попробуйте переименовать html-файл в test.txt и запустить file test.txt. Это не имеет большого значения для исходного вопроса, но все же :) – Sergey 7 February 2014 в 09:38
  • 2
    Спасибо, я удалил неправильную часть о FAT. о магических значениях и file: file использует не только магические значения для определения типа файла. Каждый допустимый HTML-файл представляет собой текстовый файл (в том смысле, что он содержит читаемые символы), но не все допустимые текстовые файлы являются допустимым HTML-файлом (в том смысле, что он проверяет валидаторы W3C). Таким образом, довольно много типов файлов (html, xml, csv, js, php, c, h, cpp, ...) на самом деле являются текстовыми файлами. Только двоичные файлы имеют магические байты, которые находятся на четко определенных позициях. Все файлы, которые я назвал выше, могут иметь произвольные пробелы перед контентом. – Martin Thoma 7 February 2014 в 13:49

Это не имеет значения, а не в linux или в windows.

Обычно принято иметь папку с именем «program.d» - для сохранения конфигурации и материала для программы (смотрите в каталоге / etc )

1
ответ дан 24 May 2018 в 12:21

Именование файлов очень гибко в файловых системах Unix, Linux. Единственное имя файла, которое у вас не может быть, - это нулевой символ или тот, который содержит имя / в его имени. Но, безусловно, было бы хорошей практикой избегать использования символов, которые запрещены / зарезервированы в других системах с точки зрения переносимости имен; например, вы не должны использовать любой из " * : < > ? \ / | символов (ограниченный NTFS) в имени вашего файла, если вы хотите получить доступ к файлу в системе Windows.

И об использовании . (период ) в имени файла, я думаю, это должно быть хорошо, поскольку он не является символом null в любой из систем (кроме OpenVMS, MS-DOS и Windows, где его использование в файле / directory name разрешено, но последнее вхождение будет интерпретироваться как разделитель расширений в VMS, MS-DOS и Windows), как указано в следующей ссылке в Википедии:

Имя файла: Сравнение ограничений имени файла 5]

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

0
ответ дан 24 May 2018 в 12:21

Другие вопросы по тегам:

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