Это плохая практика, чтобы имя папки содержало точку (.)? Как насчет имени файла с несколькими точками?

Иногда целесообразно, чтобы имя папки содержало точку (.). Например, вы храните данные для эксперимента, проведенного при L = 0,5. Таким образом, папка может иметь имя:

experiment_L0.5

Подобная проблема может возникнуть для имен файлов. Например:

file_L0.5.txt

Работа в Ubuntu, это плохая практика? Как насчет того, чтобы поделиться этими каталогами с пользователем Windows?

Спасибо!

28
задан 30 January 2014 в 20:34

5 ответов

Насколько я знаю, нет проблем с именами папок и файлов с одной или несколькими точками.

Ubuntu обычно не использует точку и три символа (например, .txt) для определения типа файла. Так что это не имеет особого значения в контексте Ubuntu. Это полезно при обмене файлами с Windows. Ubuntu использует Magic Numbers в первых нескольких байтах файла, чтобы идентифицировать тип файла. Тем не менее, Наутилус. игнорирует магические числа, если для определения типа файла доступно расширение из трех точек и символов. Этот параметр можно изменить. См. Принудительное игнорирование расширений nautilus

. В Ubuntu запуск имени файла или папки с точкой, такой как .experiment_L0.5, делает файл или папку скрытыми. Вы можете переключить отображение скрытых файлов, нажав Ctrl + H в Nautilus. В Windows имя файла начинается с. не спрятан Поэтому, если вы перенесете скрытый файл с именем .experiment_L0.5 в систему Windows, он будет отчетливо виден.

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

Ссылка: Вики на имена файлов

Надеюсь, это поможет.

0
ответ дан 30 January 2014 в 20:34

Для полноты картины имена, состоящие только из одной точки . или двух точек .., являются специальными:

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

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

0
ответ дан 30 January 2014 в 20:34

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

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

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

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

Ubuntu использует файловую систему ext4 . Файловая система отслеживает, где файлы хранятся в базовом хранилище (диск или SSD или что-то еще), права доступа в виде владельца / группы / другого могут считывать / записывать / выполнять, отметки времени, имя.

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

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

  • обычный файл
  • каталог
  • файл устройства (блочное или символьное устройство)
  • ...

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

vim /home

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

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

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

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

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

Связанные

0
ответ дан 30 January 2014 в 20:34

Это не имеет значения, ни в Linux, ни в Windows.

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

0
ответ дан 30 January 2014 в 20:34

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

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

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

0
ответ дан 30 January 2014 в 20:34

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

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