Является ли это исправить , чтобы использовать некоторые специальные символы, а +
, &
, '
, .
(точка) и ,
(запятая), в основном, в именах файлов.
Я понимаю, что вы можете использовать -
и _
без проблем, но проводя некоторые исследования, я не смог найти что-то определенное в отношении других символов; некоторые говорят, что вы можете, некоторые говорят, что вы не можете, а другие говорят, что их «не поощряют» (что бы это ни значило).
filenames
unix-philosophy
Крис Кляйн
источник
источник
Ответы:
Да.
Правильно, но не обязательно желательно или удобно.
В современных файловых системах Unix и Linux вы можете использовать любые символы, кроме null и
/
внутри имени файла.Вы можете использовать пунктуацию ASCII . Некоторые утилиты используют точки ( точки ) и запятые в именах файлов, которые они создают.
Вы можете использовать управляющие символы ASCII , однако это нецелесообразно, поскольку они вряд ли будут отображаться приемлемо и сложны в использовании.
Вы можете использовать метасимволы оболочки, такие как амперсанд ASCII и апостроф ASCII. Однако это неудобно и требует, чтобы при построении команд вы проявляли особую осторожность, чтобы заключать в кавычки или экранировать такие символы.
Вы можете использовать многобайтовые символы, используя различные кодировки. Это зависит от оболочки и / или утилит, чтобы правильно интерпретировать и отображать не-ASCII символы. Желательно ограничиться популярной кодировкой, такой как UTF-8, и установить соответствующий языковой стандарт.
У вас будет меньше проблем с использованием печатаемых символов ASCII, ограничивая набор знаков пунктуации теми, которые не являются метасимволами оболочки, и не начинайте имя с дефиса (или остановки - если вы не хотите скрыть файл).
источник
Как утверждают другие, в современных системах Unix / Linux имена файлов могут содержать любые символы, кроме
\0
(NUL) и/
(косая черта).Кроме того, стандарт POSIX определяет переносимый набор символов для имен файлов:
pathchk
Утилита от GNU Coreutils проверки для этого при вызове с-p
параметром, и-P
опция будет предупреждать о пустых имен файлов (которые не являются действительными , но могут быть переданы в качестве аргументаpathchk
) и имена файлов , начинающиеся с дефиса (-
).источник
Самая безопасная ставка - обратиться к записи в Википедии о разрешенном наборе символов для любой операционной системы. Это можно найти здесь .
Например, для большинства систем, основанных на Unix, допустимым набором символов является 8-битный набор, а зарезервированным символом является нулевой символ (NUL,
'\0'
). Однако не рекомендуется использовать специальные символы в именах файлов, так как они создают проблемы при их удалении.Например, я могу иметь имя файла как
-ramesh.txt
и я пытаюсь удалить его, как показано ниже.Мне нужно удалить файл как,
Более подробную информацию можно найти в этом ответе .
Итак, в заключение, проблема заключается не в использовании специальных символов для имен файлов, а в том, как их обрабатывать.
источник
-
а просто чтобы быть точными: 1) вам определенно не нужны кавычки вокруг этого имени файла, 2) вместо использования специального--
аргумента вы можете делать именно то, чтоrm
предлагает сам:rm ./-ramesh.txt
так что вам не нужно это делать именно так, как вы предлагаете.Ваше исследование почти верно. В именах файлов можно использовать специальные символы, но это не рекомендуется, поскольку эти символы имеют особое значение. Соглашения об именовании файлов в Linux описывают и другие ограничения на имена файлов, такие как «Имена файлов никогда не должны начинаться с дефиса».
Простой пример выполнения операций командной строки со специальными символами в именах файлов.
Как личное примечание, я бы предпочел избегать специальных символов в именах файлов, потому что они требуют особого внимания, когда эти файлы используются для какой-либо обработки. Таким образом, снятие заботы со спецсимволов из процесса разработки.
источник
-
,_
и.
(точка) в именах файлов?