В настоящее время я использую имя YYMMDD-NAME + PAGE
для большинства своих файлов. В NAME
пробелы преобразованы в подчеркивания.
Я хотел бы использовать формат даты ГГГГ-ММ-ДД
, но Я не знаю, как отделить это от имени. -
выглядел бы странно, если бы имя начиналось с числа. Если я использую _
, тогда он конфликтует с подчеркиванием, представляющим пробел.
Какие символы в именах файлов достаточно безопасны, которые здесь будут работать? Я использую Linux, но могу делиться файлами с другими людьми (Windows 7, Mac OS X).
Резюме:
- Windows: все, кроме управляющих символов ASCII и
/:*?"|
- Linux, OS- X: все, кроме null или
/
На всех платформах лучше избегать непечатаемых символов, таких как управляющие символы ASCII.
Windows
В Windows проводник Windows не позволяет использовать управляющие символы или /: *? " |
Вы можете использовать пробелы. Если вы используете пробелы, вам часто придется заключать имя файла в кавычки при использовании из командной строки (но, насколько мне известно, приложения с графическим интерфейсом не затрагиваются). Файловая система Windows, такая как NTFS, по-видимому, хранит кодировку с именем файла, но UTF-16 является стандартным.
Некоторые части Windows чувствительны к регистру, другие — без учета регистра. В файловой системе Windows NTFS легко создать отдельные имена файлов, такие как «Ab» и «ab». Эти имена относятся к отдельным файлам, которые содержат отдельный отдельный контент. Однако, хотя в командной строке Windows оба файла будут перечислены с помощью dir
, вы не сможете легко получить доступ к одному из них или управлять им с помощью таких команд, как type
. См. Ниже.
Linux, OS-X
Только в Linux и OS-X /
из печатного набора ASCII, я считаю, запрещен. Некоторые символы (метасимволы оболочки, такие как * ?!
) вызовут проблемы в командных строках и потребуют, чтобы имя файла было соответствующим образом заключено в кавычки или экранировано.
Файловые системы Linux, такие как ext2, ext3 не зависят от набора символов (я думаю, они просто рассматривают его более или менее как поток байтов — запрещены только нули и /
). Это означает, что вы можете хранить имена файлов в кодировке UTF-8. Я считаю, что оболочка или другое приложение должны знать, какую кодировку использовать для правильного преобразования имени файла для отображения или обработки.
Заключение
Таким образом, вы, вероятно, могли бы безопасно использовать что-то вроде ✣
(если бы это было не так сложно набрать)
Чувствительность к регистру в Windows
C> dir/BAbaBаBC> type AbbbC> type aBbbC> type аBunicode homograph
Обратите внимание, что мы не можем ввести содержимое второго файла, команда Windows type
просто возвращает вместо этого содержимое Ab. Третий файл также будет отличаться от aB в Linux.
(Windows 10 NTFS).
Хотя ответ RedGrittyBrick технически верен, безопасность — не единственная проблема: также важно удобство использования. Я думаю, что лучше спросить, «какие символы лучше использовать в имени файла».
Некоторые возможные рекомендации:
- [0-9a-zA-Z_] — буквенно-цифровые символы и подчеркивание можно использовать всегда.
/: *? " |
и нулевой байт проблематичны по крайней мере в одной системе, и их следует всегда избегать.- Пробелы используются в качестве разделителей аргументов во многих системах, поэтому по возможности следует избегать имен файлов с пробелами. Другие пробелы (например, табуляции) тем более.
- Точки с запятой (;) используются для разделения команд во многих системах. Точки с запятой и запятые (,) используются для разделения аргументов командной строки в (некоторые версии?) командной строки Windows.
[] () ^ #% &! @: + = {} '~
и [`] все имеют особое значение во многих оболочках, и их раздражает работа, и т. следует избегать. Они также имеют тенденцию выглядеть ужасно в URL-адресах.-
Начальные символы , которых следует избегать:
- Многие программы командной строки используют дефис [-] для обозначения специальных аргументов.
- * системы на базе nix используют точку [.] в качестве ведущего символа для скрытых файлов и каталогов.
- Все, что не входит в набор ASCII , может вызвать проблемы в старых или более простых системах (например, в некоторых встроенные системы), и их следует использовать с осторожностью.
Это в основном оставляет вас с:
которые всегда безопасно и не раздражает в использовании (если вы начинаете имя файла с буквенно-цифрового)