Назад | Перейти на главную страницу

Какой символ можно безопасно использовать для именования файлов в unix / linux?

До вчерашнего дня я использовал только строчные буквы, цифры, точку (.) и подчеркивание (_) для каталогов и имен файлов.

Сегодня я хотел бы начать использовать больше специальных символов. Какие из них сейф (под безопасностью я имею в виду, что у меня никогда не будет проблем)?

ps: Я не могу поверить, что этот вопрос еще не задавался на этом сайте, но я искал слово «именование» и безуспешно читал канонические вопросы (большинство из них касается имен компьютеров).

Редактировать # 1 : (кстати, я не использую заглавные буквы для имен файлов. Я не помню почему. Но через несколько месяцев у меня возникли производственные проблемы с заглавными буквами: Некоторые ОС не поддерживают ascii!)

Вот что произошло вчера на работе: Как обычно, мне пришлось создать самоподписанный сертификат SSL. Как обычно, я использовал имя сайта для файлов: www2.example.com.key www2.example.com.crt www2.example.com.csr.

Затем возникает проблема: создать самоподписанный сертификат с подстановочными знаками. Я сделал это и назвал файлы example.com.key example.com.crt example.com.csr, что вводит в заблуждение (это сертификат для * .example.com).

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

Звездочки в именах файлов меня действительно пугают: некоторые коллеги / поставщики / ... могут сделать какой-нибудь сценарий, используя rm find xarg, который приведет к http://www.ucs.cam.ac.uk/support/unix-support/misc/horror, и уже один ответ говорит о катастрофе.

Редактировать # 2 :

Просто понял, что : не нужно убегать. Кто-нибудь знает, почему он не используется в именах файлов?

Редактировать # 3 :

Подведем итог тому, что я понял до сих пор:

А как насчет всех остальных, например % или знак равно?

Похоже на рецепт катастрофы.

Вы можете использовать что угодно, кроме / - но вы можете заключить в одинарные кавычки ('), чтобы избежать использования специальных символов.

например. $*`\|

Использование специальных символов в именах файлов очень похоже на Windows-изм - в основном взято из администрирования машины с графическим интерфейсом, а не из командной строки (что не позволяет постоянно экранировать имена файлов).

Самый безопасный подход - просто придерживаться а-яА-Я0-9_.

В UNIX вы можете использовать любой символ, кроме '/', потому что он разделяет имена каталогов. Также подойдут символы Unicode.

Хотя Антонио прав, я бы посоветовал не менять стиль именования, за исключением, может быть, добавления букв в верхнем регистре (но даже это может быть неоднозначным, если другие операционные системы добавятся в смесь).

Это избавит вас от множества проблем, с которыми вы могли бы столкнуться в противном случае с языками и специальными символами, которые, возможно, потребуется экранировать (например, пробел или $ знак) в командах оболочки.

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