Какие символы допустимы в имени файла в операционной системе linux

Обновлено: 05.07.2024

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

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

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

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

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

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

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

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

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

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

Термином "имена файловых объектов" обозначаются имена файлов и каталогов, далее для краткости используется термин "имена файлов", при этом правила именования для файлов и каталогов одинаковы. Далее п одразумевается, что используется стандартная для Astra Linux файловая система ext4.

Данная статья применима к:

  • Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.7)
  • Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.6)
  • Astra Linux Special Edition РУСБ.10015-16 исп. 1 и 2
  • Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.5)
  • Astra Linux Special Edition РУСБ.10265-01 (очередное обновление 8.1)

Имена файлов в Astra Linux чувствительны к регистру. То есть, например: AstraLinux, Astralinux, и astralinux - это три разных имени файлов.

Для имен файлов, содержащих символы кириллицы, используется кодировка UTF-8. Следует помнить, что при использовании этой кодировки одному символу кириллицы соответствует 2 байта, другим символам (например, диакритическим) может соответствовать до четырех байт.

Имена файлов в Linux могут быть длиной до 255 байт.

Полная длина пути к файлу (включая имя файла) не должна превышать 4096 байт.

При использовании кириллицы и диакритических символов следует помнить, что одному такому символу соответствует до четырех байт. В частности, увеличение длинны имен при их перекодировке может привести к затруднениям при копировании или разархивировании файлов из систем, использующих кодировку CP-1251 или KOI-8, в системы с кодировкой UTF-8.

При архивировании могут действовать ограничения, зависящие от используемой системы архивирования (и, в некоторых случаях, от типов архивируемых файлов). Более подробную информацию см. в документации на используемые архиваторы. Так, например:

  • архиватор tar:
    • версия gnu - длина не ограничена (эта версия входит в дистрибутивы современных версия Astra Linux);
    • версия v7 - максимальная длина полного имени файла 99 байт;
    • версия ustar - максимальная длина полного имени файла 256 байт, максимальная длина имени символьной ссылки - 100 байт;

    При использовании оптических дисков (файловая система ISO 9660) действуют следующие ограничения:

    • длина пути не более 1024 байта;
    • длина имени файла:
      • оригинальная версия ISO9660 - 32 байта;
      • версия файловой системы Joliet - 128 байт;
      • версия файловой системы Rockridge - 255 байт.

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

      При сравнении имен файлов - любой символ из указанного в квадраных скобках диапазона, например:

      • [a-z] любая латинская буква в нижнем регистре;
      • [A-Z] любая латинская буква в верхнем регистре;
      • 6 любая десятичная цифра;
      • [0-9A-Fa-f] любая шестнадцатиричная цифра (в любом регистре);
      • [a-zA-Z0-9] любая латинская буква в любом регистре или десятичная цифра.

      Минимальный безопасный набор симоволов для использования в именах файлов:

      • буквы (как латиницы, так и кириллицы, в любом регистре);
      • цифры;
      • символ "." (точка);
      • символ "_" (подчеркивание)
      • символ "-" (тире).

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

      В Astra Linux можно создать имена файлов содержащие любой символ, включая непечатные (невидимые) символы и метасимволы. Далее приведены некоторые приемы для работы с такими именами файлов.

      Автозавершение

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

      Замена невидимых символов

      Для указания файлов с невидимыми символами можно использовать символ "*", обозначающий любой символ, например, переименовать файл с именем badname, содержащим невидимый символ:

      Экранирование метасимволов

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

      • символы "одинарная кавычка", внутри которых метасимволы потеряют свои специальные значения;
      • символ "обратная косая черта", отменяющий специальное значение следующего за ним символа;

      позволит переименовать файл с "неудобным" именем *Astra*Linux* в файл с другим "неудобным" именем, содержащим пробел.

      Для имен файлов, начинающихся с символа "минус" можно использовать указание их имени относительно текущего каталога:

      Символы "./" в начале имени файла обозначают "текущий каталог", и позволяют скрыть лидирующее тире, чтобы команда rm не воспринимала имя файла как опцию.

      По сравнению с Windows в Linux несколько другие правила построения имен файлов, вам придется с этим смириться. Начнем с того, что в Linux нет такого понятия, как расширение имени файла. В Windows, например, для файла Document1.doc именем файла является фрагмент Document 1, а doc — это расширение. В Linux Document1.doc — это имя файла, никакого расширения нет.

      Максимальная длина имени файла — 254 символа. Имя может содержать любые символы (в том числе и кириллицу), кроме / ? < > * " |. Но кириллицу в именах файлов я бы не рекомендовал вообще. Впрочем, если вы уверены, что не будете эти файлы передавать Windows-пользователям (на флешке, по электронной почте) — используйте на здоровье. А при обмене файлами по электронной почте (кодировка-то у всех разная, поэтому вместо русскоязычного имени пользователь может увидеть абракадабру) имя файла лучше писать латиницей.

      Также вам придется привыкнуть к тому, что Linux чувствительна к регистру в имени файла: FILE.txt и FiLe.Txt — это два разных файла.

      Разделение элементов пути осуществляется символом / (прямой слэш), а не (обратный слэш), как в Windows.

      Данный текст является ознакомительным фрагментом.

      Продолжение на ЛитРес

      Полные имена файлов

      Полные имена файлов Полное имя файла можно получить, используя функцию GetFullPathName. Функция GetShortPathName возвращает имя файла в формате DOS 8.3, в предположении, что данный том поддерживает короткие имена файлов.В NT 5.1 была введена функция SetFileShortName, позволяющая изменить

      Имена файлов

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

      IPLabs Linux Team: начало русского Linux’а

      IPLabs Linux Team: начало русского Linux’а Следующая веха на пути русского Linux’а – 1998 год, когда фирма IPLabs (точнее, ее подразделение – IPLabs Linux Team) совместно с Институтом логики (на самом деле это были одни и те же люди – Алексей Новодворский, Алексей Смирнов и Юрий Девяткин с

      4.4. Стандартные имена устройств в Linux

      4.4. Стандартные имена устройств в Linux Как уже отмечалось раньше, все устройства в Linux являются файлами. Файлы устройств находятся в специальном каталоге /dev. Для просмотра данного каталога удобнее всего использовать команду mc. Запустите mc и перейдите в каталог /dev. Если

      1.1.2. Имена разделов в ОС Linux

      1.1.2. Имена разделов в ОС Linux Linux представляет наименования разделов как имена файлов, в виде /dev/xxyN, где:? /dev — это каталог, в котором расположены все файлы, связанные с устройствами;? xx — две буквы названия раздела, указывающие тип устройства, на котором размещается раздел.

      Длинные и короткие имена файлов

      Длинные и короткие имена файлов Запрещение длинных имен файловВы можете запретить длинные имена файлов в Windows, заставив тем самым генерировать имена в формате 8.3 (DOS-овский формат). Для этого в разделе HKLMSystemCurrentControlSetcontrolFileSystemнадо изменить параметр °Win31FileSystem°, присвоив ему

      2.2. Имена IPC

      2.2. Имена IPC В табл. 1.2 мы отметили, что три типа IPC стандарта Posix имеют идентификаторы (имена), соответствующие этому стандарту. Имя IPC передается в качестве первого аргумента одной из трех функций: mq_open, sem_open и shm_open, причем оно не обязательно должно соответствовать реальному

      Пример A-4. blank-rename: переименование файлов, чьи имена содержат пробелы

      2.2 Имена

      2.2 Имена Имя (идентификатор) состоит из последовательности букв и цифр. Первый символ должен быть буквой. Символ подчерка _ считается буквой. С++ не налагает ограничений на число символов в имени, но некоторые части реализации находятся вне ведения автора компилятора (в

      У6.5 Имена

      У6.5 Имена Разработайте абстрактный тип данных ИМЯ, в котором учитывались бы различные компоненты полного имени


      inode Ценность 1575585

      тип файла Тип файла - d, что означает, что это папка.

      разрешение файла Права доступа к файлам drwxr-xr-x , Означает, что владелец файла доступен для чтения, записи и выполнения. Группа пользователей, которой принадлежит файл, не является доступной для записи, чтения и выполнения, а другие пользователи не могут писать, читать или выполнять; существует другой способ выражения разрешения:

      и так data/ Разрешение 755

      Количество жестких ссылок data/ Эта папка имеет жесткую ссылку, поэтому значение равно 2 ,;

      Владелец файла Какому пользователю принадлежит этот файл? Он принадлежит root , Что первое root ;

      Файл принадлежит группе Другими словами, для этого файла, к какой группе пользователей он принадлежит, это root группа пользователей;

      Размер файла Размер файла 4.0K Байты;

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

      Конечно, атрибуты документа не только включают их, это некоторые из наших наиболее часто используемых атрибутов.

      Об индексе

      Inode, переведенный на китайский язык, является индексным узлом. После того, как каждое устройство хранения или раздел устройства хранения (устройство хранения - жесткий диск, дискета, U-диск и т. Д.) Отформатированы как файловая система, должно быть две части: одна часть - индексный дескриптор, другая часть - блокировать, блокировать его. используется для хранения данных. Inode - это информация, используемая для хранения этих данных, включая размер файла, владельца, группу пользователей, разрешения на чтение и запись и т. Д. Inode индексирует информацию для каждого файла, поэтому есть значение inode. Согласно инструкции, операционная система может быстрее всего найти соответствующий файл по значению inode.

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

      При использовании ls для просмотра определенного каталога или файла, если вы добавите параметр -i, вы увидите узел inode

      тип файла

      Используйте ls -lh для просмотра атрибутов файла, вы можете увидеть что-то вроде -rwxrwxrwx, стоит отметить, что первый символ -, такой файл является обычным файлом в Linux. Эти файлы обычно создаются с помощью некоторых связанных приложений, таких как инструменты для изображений, инструменты для работы с документами, инструменты для архивирования . или инструменты cp и т. Д. Чтобы удалить такие файлы, используйте команду rm. Кроме того, по содержанию файла его можно условно разделить на:

      Обычный текстовый файл (ASCII)

      Это наиболее распространенный тип файла в системе Linux. Он называется обычным текстовым файлом, потому что его содержимое - это данные, которые мы, люди, можем читать напрямую, например числа, буквы и т. Д. Почти до тех пор, пока файлы, которые мы можем использовать в качестве настроек, принадлежат этому типу файлов.

      Система Linux фактически распознает и может выполнять только двоичные файлы. Исполняемые файлы в Linux (скрипты, текстовые командные файлы не учитываются) являются файлами этого формата.

      Файл формата данных (данные):

      Когда мы запускаем его в определенном каталоге, мы видим нечто похожее на drwxr-xr-x. Такой файл является каталогом. Каталог - это специальный файл в Linux. Обратите внимание, что его первый символ - d. Команда для создания каталога может использовать команду mkdir или команду cp, cp может копировать каталог в другой каталог. Удалите с помощью команды rm или rmdir.

      Символьное устройство или файл блочного устройства

      Войдите в каталог / dev, перечислите файлы, вы увидите что-то похожее на следующее:

      Атрибут / dev / tty - crw-rw-rw-. Обратите внимание, что первый символ впереди - c, что означает файл символьного устройства. Например, серийные устройства типа кошек. Мы видим, что атрибутом / dev / sda1 является brw-r—–. Обратите внимание, что первый символ впереди - это b, что означает блочное устройство, такое как жесткий диск, оптический привод и другие устройства.

      Этот тип файла используется mknode Чтобы создать, используйте rm для удаления. В настоящее время в последних дистрибутивах Linux, как правило, нет необходимости создавать файлы устройств самостоятельно. Потому что эти файлы связаны с ядром.

      Некоторые файлы, относящиеся к системной периферии и хранилищу, обычно сосредоточены в каталоге / dev! Обычно делятся на два типа:

      Блокировать файл устройства:

      Это просто некоторые интерфейсные устройства, которые хранят данные для обеспечения произвольного доступа к системе, например, жесткие диски и дискеты! Вы можете произвольно читать и писать в разных блоках жесткого диска.Это устройство является групповым! Проверьте / dev / sda, и вы обнаружите, что первый атрибут b

      Файл символьного устройства:

      То есть некоторые устройства с интерфейсом последовательного порта, такие как клавиатуры, мыши и т. Д.! Особенность этих устройств в том, что их можно прочитать один раз, а вывод нельзя обрезать. Невозможно позволить мышке перейти на другой экран, но можно скользить в другое место! Первый атрибут c 。

      Файл интерфейса данных (сокеты):

      Файл интерфейса данных (или: файл сокета), этот тип файла обычно используется для передачи данных в сети. Вы можете запустить программу для прослушивания запроса клиента, и клиент может передавать данные через этот сокет. Первый атрибут - [s], и этот тип файла чаще всего встречается в каталоге / var / run.

      Например: при запуске сервера MySQL будет создан файл mysql.sock.

      Обратите внимание, что первый символ атрибутов этого файла - s.

      Файл символьной ссылки:

      Когда вы проверяете свойства файла, вы увидите что-то вроде lrwxrwxrwx. Обратите внимание, что первый символ - I. Этот тип файла является файлом ссылки. Это через ln -s имя исходного файла имя нового файла. Выше приведен пример, который означает, что setup.log - это файл программной ссылки install.log. Как понять это? Это похоже на ярлыки в операционной системе Windows.

      Примеры создания файлов символьных ссылок:

      Файл передачи данных (FIFO, pipe):

      FIFO также является особым типом файла, и его основная цель - решить проблему с ошибкой, вызванную одновременным доступом к файлу нескольких программ. FIFO - это сокращение от first-in-first-out. Первый атрибут - [p].

      Расширение файла

      Однако возможность выполнения - это не то же самое, что возможность успешного выполнения. Например, install.log в корневом домашнем каталоге представляет собой простой текстовый файл. Если права доступа изменены на -rwxrwxrwx, может ли этот файл быть выполнено успешно?? Конечно, нет - потому что в его содержимом вообще нет исполняемых данных. Итак, этот x означает, что файл может выполняться, но, конечно, это зависит от содержимого файла.

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

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

      Вышеупомянутая проблема чаще всего возникает при передаче файлов. Например, вы загружаете исполняемый файл из Интернета, но он просто не может быть запущен в вашей системе Linux! Ха-ха! Тогда возможно, что атрибуты файла были изменены. Не сомневайтесь, атрибуты и разрешения файлов действительно будут изменены при загрузке в вашу систему Linux из сети.

      Ограничение длины имени файла Linux:

      В Linux при использовании файловой системы Ext2 / Ext3 по умолчанию длина имени файла ограничена:

      Максимально допустимое имя файла для одного файла или каталога составляет 255 символов.

      Полное имя файла, включая полный путь и каталог (/), составляет 4096 символов.

      Это довольно длинное имя файла! Linux надеется, что имя файла можно сразу увидеть, чтобы понять, что он делает, поэтому имя файла обычно очень длинное.

      Ограничение символов имени файла Linux:

      Из-за взаимосвязи команд и операций Linux в текстовом интерфейсе, вообще говоря, когда вы устанавливаете имя файла в Linux, лучше избегать использования некоторых специальных символов! Например, это ниже:

      Потому что эти символы имеют особое значение в текстовом интерфейсе. Кроме того, когда в начале имени файла стоит десятичная точка ".", Это означает, что файл является скрытым! В то же время, поскольку такие параметры, как -option, часто используются при доставке команд, лучше избегать называть имя файла с помощью -или + в начале имени файла.

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