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

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

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

experiment_L0.5

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

file_L0.5.txt

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

решение1

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

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

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

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

Ссылка:Wiki об именах файлов

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

решение2

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

  • 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. (источник)
  • Единственные известные мне символы, не разрешенные в файловых системах Unix, — это /и null (нулевой байт, \0).
  • Смотрите также:Ограничения файловой системы(Я не знаю, с какой версией Windows вы хотите обеспечить совместимость).

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

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

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

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

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

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

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

vim /home

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

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

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

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

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

Связанный

решение3

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

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

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

решение4

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

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

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

Связанный контент