Подтвердить что ты не робот

Какие зарезервированные имена файлов для разных платформ?

Я не спрашиваю об общих синтаксических правилах для имен файлов. Я имею в виду, что вышли из ниоткуда и кусаете вас. Например, пытаясь назвать файл "COM <n> ", в Windows?

4b9b3361

Ответ 1

От: http://www.grouplogic.com/knowledge/index.cfm/fuseaction/view_Info/docID/111.

Следующие символы недопустимы в качестве имен файлов или папок в Windows с использованием NTFS: / ? < > \ : * | " и любой символ, который вы можете ввести с помощью клавиши Ctrl.

В дополнение к вышеуказанным недопустимым символам символ ^ также не разрешен в операционных системах Windows, использующих файловую систему FAT.

В Windows с использованием файловой системы FAT имена файлов и папок могут содержать до 255 символов.

В Windows с использованием файловой системы NTFS имена файлов и папок могут быть длиной до 256 символов.

Под Window длина полного пути в обеих системах составляет 260 символов.

В дополнение к этим символам, следующие соглашения также являются незаконными:

  • Размещение пробела в конце имени
  • Размещение точки в конце имени

Следующие имена файлов также зарезервированы под Windows:

  • aux,
  • com1,
  • com2,
  • ...
  • com9,
  • lpt1,
  • lpt2,
  • ...
  • lpt9,
  • con,
  • nul,
  • prn

Ответ 3

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

Однако есть метод escape для создания и доступа к файлам с этими зарезервированными именами, например, эта команда перенаправит вывод команды ver в файл с именем COM1:

ver > "\\?\C:\Users\username\COM1"

Теперь у вас будет файл с именем COM1, который 99% программ не смогут открыть, и, вероятно, зависнет, если вы попытаетесь получить к нему доступ.

Вот статья Microsoft, которая объясняет, как работает это "пространство имен файлов". По сути, это говорит Windows не выполнять какую-либо обработку строки в тексте и передавать ее прямо в файловую систему. Этот прием также можно использовать для работы с путями длиннее 260 символов.

Ответ 4

Неверный Unix, если вы не знаете:

Файлы, которые начинаются с - или - являются законными, но боль в прикладе для работы, так как многие инструменты командной строки считают, что вы предоставляете им варианты.

Многие из этих инструментов имеют специальный маркер "-", чтобы сигнализировать о конце опций:

gzip -9vf -- -mydashedfilename

Ответ 6

Ну, для MSDOS/Windows, NUL, PRN, LPT < n и CON. Они даже вызывают проблемы при использовании с расширением: "NUL.TXT"

Ответ 7

Если вы не трогаете специальные каталоги, единственными незаконными именами в Linux являются "." и "..". Любое другое имя возможно, хотя доступ к некоторым из них из оболочки требует использования escape-последовательностей.

EDIT: Как сказал Vinko Vrsalovic, файлы, начинающиеся с "-" и "--", являются болью из оболочки, поскольку эти последовательности символов интерпретируются приложением, а не оболочкой.