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

17

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

experiment_L0.5

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

file_L0.5.txt

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

Спасибо!

    
задан Hamid 30.01.2014 в 16:34
источник

5 ответов

26

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

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

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

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

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

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

    
ответ дан user68186 30.01.2014 в 16:44
источник
5

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

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

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

    
ответ дан Sergey 04.02.2014 в 21:55
4

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

  • В Windows не допускаются следующие символы: <,>,:,",/,\,|,?,* ( источник )
  • Больше символов, которые обескуражены: space и . ( источник )
    • Инструменты командной строки сложнее использовать, когда у вас есть пробелы в именах (более сложные, а не невозможные).
    • Точки используются в 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, and LPT9. ( источник )
  • Единственные символы, которые я не знаю в файловых системах Unix, я знаю: / и null (нулевой байт).
  • См. также: Ограничения файловой системы (я не знаю, к какой Windows вы хотите быть совместимой) .

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

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

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

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

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

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

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

vim /home

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

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

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

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

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

Сноски

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

Источник: Ссылка

Связанные

ответ дан Martin Thoma 06.02.2014 в 20:21
1

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

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

    
ответ дан Ohad Cohen 30.01.2014 в 16:47
0

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

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

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

    
ответ дан precise 08.02.2014 в 09:57