Какие символы разрешены в имени файла в операционной системе Linux

Обновлено: 06.07.2024

Благодаря достижениям в области вычислительной техники перемещение файлов между различными платформами стало намного проще, чем всего несколько лет назад. Принятие стандарта UNICODE для кодировки символов и кросс-совместимости между операционными системами привело к тому, что проблемы с открытием файла, полученного в виде вложения в электронное письмо, загруженного с веб-сайта или доступного на платформе облачного хранилища, стали крайне редкими, но проблемы все еще могут возникать. .

Хотя подавляющее большинство настольных компьютеров по-прежнему используют ОС Microsoft Windows или Macintosh, существует множество других операционных систем (и файловых систем), которые могут взаимодействовать с файлами в различных точках. Сотовые телефоны, ленточные накопители, сетевое оборудование, телевизоры и даже цифровые камеры сегодня поддерживают файловые системы.

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

Принятие правильных соглашений об именах файлов может помочь гарантировать, что файлы будут работать с различными операционными системами и форматами дисков, такими как Windows, Linux, Mac OS X и UNIX. Именование файлов также является важным фактором при передаче файлов через Интернет, когда может быть неочевидно, какая компьютерная платформа использовалась при первоначальном создании файлов.

Имена файлов могут быть как описательными, так и не описательными. Описательные имена файлов полезны для небольших четко определенных проектов с существующими схемами идентификации, которые связывают цифровой объект с исходным материалом. Однако непоследовательное применение терминов или опечатки будут способствовать ошибкам индексации и сортировки. Неописательные имена файлов обычно представляют собой генерируемые системой последовательные числовые строки, такие как цифровой идентификационный номер, и часто связаны с метаданными, хранящимися в другом месте. Неописательные имена файлов часто создаются для крупномасштабных проектов оцифровки и могут использовать цифровой идентификационный номер и числовые последовательности для обозначения пакетных или родительско-дочерних отношений. Преимущество неописательных имен заключается в том, что меньше вероятность повторения или неуникальных имен файлов в структуре данных.

Некоторые приложения и компьютерные скрипты могут не распознавать пробелы или иначе обрабатывать ваши файлы при использовании пробелов. Лучше всего заменять пробелы в именах файлов подчеркиванием (_) или дефисом (-). В приложении B бюллетеня NARA 2015-04 указано, что пробелы в именах файлов запрещены. Веб-среды переводят пробелы и отображают их как «%20». Например, «Имя файла.doc» будет отображаться в URL-адресе как «Файл%20Name.doc», где?. Это изменение может привести к путанице при определении фактического имени файла.

Следует избегать пунктуации, символов или специальных символов (точки, запятые, круглые скобки, амперсанд, звездочки и т. д.). Некоторые из этих символов используются в операционных системах для выполнения определенных задач, например для обозначения уровней папок в продуктах Microsoft и операционных системах Mac. Точки используются для идентификации форматов файлов, таких как .jpg и .doc.

Какие символы запрещены в именах каталогов Windows и Linux?

Linux — решение 1:

  • Запрещенные символы в именах файлов не будут работать в Windows, поскольку они резервируют не только символы, но и имена файлов.
  • Да, такие символы, как * " ? и другие, запрещены, но существует бесконечное количество имен, состоящих только из допустимых символов, которые запрещены.
  • Например, пробелы и точки являются допустимыми символами имени файла, но имена, состоящие только из этих символов, запрещены.
  • Windows не различает символы верхнего и нижнего регистра, поэтому вы не можете создать папку с именем A, если папка с именем a уже существует.
  • Разрешенные имена, такие как PRN, CON и многие другие, зарезервированы и запрещены.
  • В Windows также есть несколько ограничений по длине; имя файла, действительное в одной папке, может стать недействительным при перемещении в другую папку.
  • Правила именования файлов и папок есть в MSDN.
  • Как правило, для создания имен каталогов Windows используется пользовательский текст.
  • Если вы хотите, чтобы пользователи могли называть все, что они хотят, вы должны создать безопасные имена, такие как A, AB, A2 и др., сохранить созданные пользователями имена и эквиваленты их путей в файле данных приложения и выполнить сопоставление путей. в вашем приложении.
  • Если вам абсолютно необходимо разрешить имена папок, созданные пользователями, единственный способ определить, являются ли они недействительными, – перехватить исключения и предположить, что имя недействительно.
  • Даже это чревато опасностью, поскольку исключения, выдаваемые при отказе в доступе, отключенных дисках и нехватке места на диске, перекрываются с исключениями, которые могут выдаваться для недопустимых имен.

Linux — решение 2:

Линукс/Юникс:

нажмите кнопку ниже, чтобы скопировать код. Автор — руководство по Linux — команда

Окна:

нажмите кнопку ниже, чтобы скопировать код. Автор — руководство по Linux — команда
<р>2. Непечатаемые символы

Линукс/Юникс:

нажмите кнопку ниже, чтобы скопировать код. Автор — руководство по Linux — команда

Окна:

нажмите кнопку ниже, чтобы скопировать код. Автор — руководство по Linux — команда

Примечание. Хотя в файловых системах Linux/Unix разрешено создавать файлы с управляющими символами в имени файла, работа с такими файлами может стать кошмаром для пользователей.

<р>3. Зарезервированные имена файлов

Следующие имена файлов зарезервированы:

Окна:

нажмите кнопку ниже, чтобы скопировать код. Автор — руководство по Linux — команда

Окна:

нажмите кнопку ниже, чтобы скопировать код. Автор — руководство по Linux — команда

Linux — решение 3:

  • В Linux и других системах, связанных с Unix, есть только два символа, которые не могут использоваться в имени файла или каталога: NUL '\0' и косая черта '/'.
  • Конечно, косая черта может появляться в имени пути, разделяя компоненты каталога.
  • Ходят слухи1, что у Стивена Борна (известного как «оболочка») был каталог, содержащий 254 файла, по одному на каждую букву (код символа), которая может встречаться в имени файла.
  • Он использовался для тестирования оболочки Bourne и регулярно наносил ущерб неосторожным программам, таким как программы резервного копирования.
  • Другие люди рассмотрели правила Windows.
  • Обратите внимание, что в MacOS X файловая система нечувствительна к регистру.

Linux — решение 4:

  • Вместо создания черного списка персонажей вы можете использовать белый список.
  • Учитывая все обстоятельства, диапазон символов, которые имеют смысл в контексте имени файла или каталога, довольно короток, и если у вас нет особых требований к именованию, ваши пользователи не будут возражать против вашего приложения, если они не могут использовать весь ASCII. стол.
  • Это не решает проблему зарезервированных имен в целевой файловой системе, но с помощью белого списка легче снизить риски в источнике.
  • В этом духе можно рассматривать следующий диапазон символов:
    • Буквы (a-z A-Z) — также символы Юникода, если необходимо.
    • Цифры (0–9)
    • Подчеркивание (_)
    • Дефис (-)
    • Пробел
    • Точка (.)
    • Имя должно содержать хотя бы одну букву или цифру (чтобы не было только точек/пробелов)
    • Имя должно начинаться с буквы или цифры (чтобы избежать начальных точек/пробелов)

    Это уже позволяет использовать довольно сложные и бессмысленные имена. Например, эти имена возможны с этими правилами и являются допустимыми именами файлов в Windows/Linux:

    Поиски, связанные с - linux - linux tutorial - Какие символы запрещены в именах каталогов Windows и Linux

    linux red hat debian opensuse ubuntu arch linux mandrake get link linux computer linux pc linux server linux desktop Learn linux red hat linux red hat enterprise linux linux software linux tutorial linux операционная система suse linux linux download linux os linux ubuntu vmware linux lunix linux windows linux новости linux usb команды linux unix linux версия linux что такое linux linux centos linux ftp linux недопустимые символы имени файла недопустимые символы в именах файлов unix недопустимые символы имени файла какие символы разрешены в имени файла какие символы не разрешены в имени файла символы не разрешены в именах папок сколько символов можно использовать в имени файла какие символы можно использовать в имени файла

    Лучший в мире анимированный веб-сайт для самообучения с информативными учебными пособиями, объясняющими код и варианты, лежащие в основе всего этого.

    Викитехника

    Мастерская

    Присоединяйтесь к нашему сообществу

    Другие языки

    Мы обнаружили, что вы используете AdBlock Plus или другое программное обеспечение для блокировки рекламы, которое препятствует полной загрузке страницы.

    У нас нет баннеров, Flash, анимации, неприятных звуков или всплывающих окон. Мы не используем эти надоедливые типы рекламы!

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

    Правильно ли использовать определенные специальные символы, такие как + , & , ' , . (точка) и , (запятая), в основном, в именах файлов.

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

    Какие программы вы используете для работы с этими файлами. Только программы, интерпретирующие некоторые символы особым образом (например,оболочки на строки без кавычек) вызовет проблемы. Ваша обычная программа на C принимает все, что не равно NUL, не моргнув глазом.

    Проблема с использованием специальных символов в имени файла заключается в том, что это увеличивает вероятность того, что какой-то ошибочный фрагмент кода неправильно обработает имя файла. Тем не менее, я не думаю, что какой-либо из перечисленных вами персонажей может вызвать какие-либо проблемы. У вас будет больше проблем с пробелами, которых обычно следует избегать. И EOL, в частности, следует избегать любой ценой.

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

    4 ответа 4

    Правильно ли использовать определенные специальные символы, такие как +, &, ', . (точка) и , (запятая), в основном, в именах файлов.

    Правильно, но не обязательно целесообразно или удобно.

    В современных файловых системах Unix и Linux в имени файла можно использовать любые символы, кроме null и /.

    Вы можете использовать пунктуацию ASCII. Некоторые утилиты используют остановки (точка) и запятые в именах создаваемых ими файлов.

    Вы можете использовать управляющие символы ASCII, однако это нежелательно, поскольку они вряд ли будут отображаться приемлемым образом и их будет сложно использовать.

    Можно использовать метасимволы оболочки, такие как амперсанд ASCII и апостроф ASCII. Однако это неудобно и требует, чтобы при построении команд вы особенно внимательно относились к заключению таких символов в кавычки или экранированию.

    Многобайтовые символы можно использовать в различных кодировках. Оболочка и/или утилиты должны правильно интерпретировать и отображать символы, отличные от ASCII. Рекомендуется ограничиться популярной кодировкой, такой как UTF-8, и соответствующим образом установить языковой стандарт.

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

    Мы очень часто сталкиваемся с именами файлов и папок. В большинстве случаев имя файла/папки связано с содержимым файла/папки и начинается с цифры и символов. Буквенно-цифровые имена файлов довольно распространены и очень широко используются, но это не тот случай, когда нам приходится иметь дело с именами файлов/папок, в которых есть специальные символы.

    Примечание. У нас могут быть файлы любого типа, но для простоты реализации мы будем иметь дело с текстовым файлом (.txt) на протяжении всей статьи.

    Примеры имен файлов, которые имеют специальный характер и не очень распространены:

    Я согласен с вами, что такие имена файлов не являются обычным явлением, но ваша оболочка не должна ломаться/сдаваться, когда вам приходится иметь дело с любыми такими именами файлов. Кроме того, с технической точки зрения все, будь то папка, драйвер или что-либо еще, в Linux рассматривается как файл.

    Работа с файлом, в имени которого есть дефис (-)

    Создайте файл, начинающийся с дефиса (-), например -abx.txt.

    Пример вывода

    Причина вышеуказанной ошибки в том, что оболочка интерпретирует все, что следует после тире (-), как параметр, и, очевидно, такого параметра нет, отсюда и ошибка.

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

    Есть два способа устранить эту ошибку:

    Вы можете проверить созданный таким образом файл обоими указанными выше способами, выполнив команды ls или ls -l для получения длинного списка.

    Чтобы отредактировать вышеуказанный файл, вы можете сделать следующее:

    Примечание. Вы можете заменить nano любым другим редактором по вашему выбору, скажем, vim как:

    Аналогично для перемещения такого файла нужно сделать:

    и чтобы удалить этот файл, вы должны сделать:

    Если у вас много файлов в папке, имя которой содержит тире, и вы хотите удалить их все сразу, сделайте следующее:

    Важно отметить:
    <р>1. То же правило, что обсуждалось выше, действует для любого количества дефисов в имени файла и их появления. А именно, -a-b-c.txt, ab-c.txt, abc-.txt и т. д.

    <р>2. То же правило, что обсуждалось выше, действует для имени папки с любым количеством дефисов и их встречаемостью, за исключением того, что для удаления папки необходимо использовать «rm -rf» как:

    Понять это на примерах:
    Пример вывода

    и проверьте только что созданный файл как:

    Запустите ‘ls -l‘, чтобы проверить это:

    Проверьте только что созданный файл:

    и подтвердите это как:

    Вы можете переместить файл как:

    Вы можете отредактировать его, используя выбранный вами редактор, например:

    И удалить как:

    Работа с файлами, в имени которых есть точка с запятой (;)

    Если вы не в курсе, точка с запятой действует как разделитель команд в BASH и, возможно, в других оболочках. Точка с запятой позволяет выполнить несколько команд за один раз и действует как разделитель. Вы когда-нибудь имели дело с каким-либо именем файла, содержащим точку с запятой? Если не здесь, вы будете.

    Создайте файл с точкой с запятой.

    Пример вывода

    Причина вышеуказанной ошибки заключается в том, что когда вы запускаете указанную выше команду, BASH интерпретирует touch как команду, но не может найти файловый операнд перед точкой с запятой и, следовательно, сообщает об ошибке. Он также сообщает о другой ошибке, что команда «abc.txt» не найдена, только потому, что после точки с запятой BASH ожидал другую команду, а «abc.txt» не является командой.

    Чтобы устранить эту ошибку, скажите BASH не интерпретировать точку с запятой как разделитель команд, например:

    Примечание. Мы заключили имя файла в одинарные кавычки '' . Он сообщает BASH, что ; является частью имени файла, а не разделителем команд.

    Остальные действия (а именно копирование, перемещение, удаление) над файлом и папкой, в имени которых есть точка с запятой, можно выполнить напрямую, заключив имя в одинарные кавычки.

    Работа с другими специальными символами в имени файла/папки

    Знак плюса (+) в имени файла

    Не требуется ничего лишнего, просто делайте это как обычно, используя простое имя файла, как показано ниже.

    Знак доллара ($) в имени файла

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

    Процент (%) в имени файла

    Вам не нужно ничего делать по-другому, обращайтесь с ним как с обычным файлом.

    Звездочка (*) в имени файла

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

    Примечание. Если вам нужно удалить файл, начинающийся с * , никогда не используйте следующие команды для удаления таких файлов.

    Восклицательный знак (!) в имени файла

    Просто заключите имя файла в одинарные кавычки, и все остальное останется прежним.

    Подпись (@) в имени файла

    Ничего лишнего, считайте файл с именем At Sign нестандартным.

    ^ в имени файла

    Не требует дополнительного внимания. Используйте файл со знаком ^ в имени как обычный файл.

    Амперсанд (&) в имени файла

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

    Скобки () в имени файла

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

    Квадратные скобки <> в имени файла

    Дополнительный уход не требуется. Просто относитесь к нему как к другому файлу.

    Шевроны <> в имени файла

    Имя файла с шевронами должно быть заключено в одинарные кавычки.

    Квадратные скобки [ ] в имени файла

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

    Низкая оценка (_) в имени файла

    Они очень распространены и не требуют ничего дополнительного. Просто сделайте то же, что и с обычным файлом.

    Равно (=) в имени файла

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

    Работа с обратной косой чертой (\)

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

    Особый случай косой черты

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

    Поэтому, если вы можете создать такой файл, как ‘/12.txt’ или ‘b/c.txt’, то либо в вашей файловой системе есть ошибка, либо у вас есть поддержка Unicode, что позволяет создавать файл с косой чертой. В этом случае косая черта — это не настоящая косая черта, а символ Юникода, похожий на косую черту.

    Вопросительный знак (?) в имени файла

    Опять же пример, где не нужно прилагать особых усилий. Имя файла со знаком вопроса можно трактовать самым общим образом.

    Точка (.) в имени файла

    Файлы, начинающиеся с точки (.), имеют особое значение в Linux и называются точечными файлами. Это скрытые файлы, как правило, конфигурационные или системные файлы. Вы должны использовать переключатель «-a» или «-A» с командой ls для просмотра таких файлов.

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

    Примечание. В Linux в имени файла может быть столько точек (.), сколько вам нужно. В отличие от других системных точек в имени файла нет разделения имени и расширения. Вы можете создать файл с несколькими точками как:

    и проверьте это как:

    Запятая (,) в имени файла

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

    Двоеточие (:) в имени файла

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

    Наличие кавычек (одинарных и двойных) в имени файла

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

    Тильда (~) в имени файла

    Некоторые редакторы в Linux, такие как emacs, создают резервную копию редактируемого файла. Файл резервной копии имеет имя исходного файла плюс тильду в конце имени файла. Вы можете иметь файл, имя которого включает тильду, в любом месте просто так:

    Пробел в имени файла

    Создайте файл, в имени которого есть пробел между символом/словом, скажите «привет, меня зовут avishek.txt».

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

    Я пытался охватить все сценарии, с которыми вы можете столкнуться. Большинство приведенных выше реализаций явно предназначены для оболочки BASH и могут не работать в другой оболочке.

    Если вы чувствуете, что я что-то упустил (это очень распространено и характерно для человека), вы можете включить свое предложение в комментарии ниже. Оставайтесь на связи, продолжайте комментировать. Оставайтесь с нами и на связи! Ставьте лайки, делитесь нами и помогайте нам распространяться!

    Если вам понравилась эта статья, подпишитесь на уведомления по электронной почте о руководствах по Linux. Если у вас есть вопросы или сомнения? обратитесь за помощью в разделе комментариев.

    Если вы цените то, что мы делаем здесь, в TecMint, вам следует подумать о следующем:

    TecMint – это самый быстрорастущий и пользующийся наибольшим доверием сайт сообщества, где можно найти любые статьи, руководства и книги по Linux в Интернете. Миллионы людей посещают TecMint! для поиска или просмотра тысяч опубликованных статей, доступных всем БЕСПЛАТНО.

    Если вам нравится то, что вы читаете, купите нам кофе (или 2) в знак признательности.

    Поддержите нас

    Мы благодарны за вашу бесконечную поддержку.

    Похожие записи

     Отключить Su Access для пользователя

     Переместить домашний каталог в новый раздел

    Система Linux Команды администратора

     Как скачать файлы в Linux

    Примеры Linux Cron

    Linux Vmstat и команды Iostat

    10 мыслей о том, «Как работать с именами файлов, содержащими пробелы и специальные символы в Linux»

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

    «В имени файла может быть сколько угодно двоеточий, и вам не нужно ничего лишнего».

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

    При использовании MX Linux (версия 19.4) у меня нет проблем с созданием файла с двоеточием в имени. Однако, когда я пытаюсь скопировать его на другое устройство или в другой каталог, я получаю сообщение об ошибке «Недопустимое имя файла». Чтобы сделать имя файла «действительным», я должен убрать двоеточие.

    У меня есть файл с именем ~$S123.docx в AIX, когда я запускаю приведенную ниже команду, появляется сообщение, что файл не найден

    а как насчет имени файла, в котором есть тире и пробелы вроде этого:

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

    Я сталкиваюсь с проблемой, когда мне приходится копировать файлы, имена которых содержат пробелы.

    Можете ли вы помочь мне с этим?

    Большое спасибо, действительно отличная статья с хорошими практическими примерами..

    Что касается аргумента терминала, «touch *12.txt» может открыть более одного файла, если у вас есть файл с именем a12.txt, b12.txt и т. д. в текстовом редакторе, таком как Geany, или первый файл в алфавитном порядке в Nano. .

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

    Здравствуйте, у меня много файлов с [!] в их именах, мне нужно переместить только эти файлы в другую подпапку, я пытаюсь с

    для файла в $(ls | grep -e ".[!]]" | awk ‘NF < print “\””$0″\””>’); do mv -f «$PWD/$file» «$PWD/Folder001/» ; готово

    но это невозможно, потому что bash в «do mv -f «$PWD/$file»
    читается «Это пример большого имени файла.ext», например

    Это -> Файл1
    является -> Файл2
    an -> Файл 3
    пример -> Файл 4
    из -> Файл 5
    большой -> Файл 6
    filename.ext -> Файл 7

    Как я могу использовать «mv» для большого имени файла со специальными символами, такими как [!] (EJU), в другую папку.

    такие файлы легко создать, « » решит всю ситуацию, но сложно их обработать в своем скрипте или команде.
    Самое уродливое имя файла, которое я видел, это «xxx», так как, когда я перечисляю его в терминале, я не могу знать, сколько пробелов содержит это имя. а если в скрипте, то без проблем получит имя через API

    Есть что сказать? Присоединяйтесь к обсуждению. Отменить ответ

    Этот сайт использует Akismet для уменьшения количества спама. Узнайте, как обрабатываются данные ваших комментариев.

    Читайте также: