Ограничение имя файла linux

Правила именования файловых объектов в Astra Linux

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

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

  • Astra Linux Special Edition РУСБ.10015-01 и РУСБ.10015-10 (очередное обновление 1.7)
  • Astra Linux Special Edition РУСБ.10015-37 (очередное обновление 7.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] любая латинская буква в верхнем регистре;
      • 3 любая десятичная цифра;
      • [0-9A-Fa-f] любая шестнадцатеричная цифра (в любом регистре);
      • [a-zA-Z0-9] любая латинская буква в любом регистре или десятичная цифра.

      Допустимые символы в именах файлов

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

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

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

      Решение проблем с метасимволами в именах файлов при работе в командной строке

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

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

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

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

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

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

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

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

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

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

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

      Имена файлов, начинающиеся с символа «-«

      Большинство команд используют символ «-» (минус) для обозначения опций (параметров) выполнения. Для того, чтобы можно было передавать командам аргументы (например, имена файлов), начинающиеся со знака «-» (минус) и не являющиеся опциями, используется специальная опция «—» (два минуса). Эта опция указывает, что все последующие аргументы команды не являются опциями независимо от наличия лидирующего символа минус. Например, чтобы удалить файл, имеющий имя «-filename», команду rm можно использовать в виде:

      Источник

      Как найти и ограничить длину имени файла в Linux

      Одним из интересных аспектов использования любого дистрибутива операционной системы Linux является его способность превращать нас в компьютерных волшебников. В Linux его открытый исходный код позволяет нарушать и/или создавать любые логические правила вычислений. Длина и ограничение имен файлов попадают под такие вычислительные правила.

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

      linux

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

      Ограничение длины имени файла в файловых системах

      Ниже приведены ограничения на длину имен файлов в основных файловых системах Unix.

      Файловая система Максимальная длина имени файла
      xt2 255 байт
      ext3 255 байт
      ext4 255 байт
      exFAT 255 символов UTF-16
      FAT32 255 кодовых единиц UCS-2 с VFAT LFNs
      NTFS 255 символов
      BTRFS 255 байтов
      ext3cow 255 байт

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

      Файловая система Linux оказывает сильное влияние на ограничения имен файлов. Например, расширения файловой системы могут изменять максимальную длину имени файла, как в случае с eCryptFS.

      Поиск ограничения длины имени файла в Linux

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

      getconf -a | grep -i name_max

      getconf

      Вывод NAME_MAX означает ограничение длины имени файла (255) или максимальную длину имени файла, которую может назначить система Linux.

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

      getconf -a | grep -i path_max

      getconf

      Подтверждение ограничения длины имени файла

      С помощью команды getconf мы убедились, что ограничение на длину имени файла в нашем дистрибутиве Linux OS составляет 255 символов. Давайте попробуем создать файл с помощью команды touch с длиной имени файла 256 символов (на 1 символ больше, чем ограничение в 255 символов).

      dict='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890' touch $(

      File nam e too long

      Согласно приведенному выше снимку экрана, полученному в результате выполнения команды touch, мы не можем создать имя файла длиной 256 символов, поскольку оно превышает ограничение длины имени файла в 255 символов.

      Если мы уменьшим длину имени файла до указанного предела (255 символов), мы сможем создать наш файл.

      Значение параметра NAME_MAX, используемое командой getconf, определяет назначенный файловой системой предел длины имени файла. Попытка переопределить это ограничение (NAME_MAX) приведет к переписыванию всего исходного кода файловой системы Linux, включая структуру диска, перед его использованием.

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

      Системный файл /usr/include/linux/limits.h еще больше подчеркивает обсуждаемое ограничение длины имени файла.

      cat /usr/include/linux/limits.h

      /usr/include/linux/limits.h

      Заключение

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

      Источник

      Какой максимальной длины может быть имя файла в Linux?

      Есть ли ограничение на длину имен файлов и директорий в Linux? Можно ли создать файл с именем, в котором будет 1000 символов?

      Да, такое ограничение существует.

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

      touch IktomiisaspiderfairyHewearsbrowndeerskinlegginswithlongsoftfringesoneithersideandtinybeadedmoccasinsonhisfeetHislongblackhairispartedinthemiddleandwrappedwithredredbandsEachroundbraidhangsoverasmallbrownearandfallsforwardoverhisshouldersHeevenpaintshisfunnyfacewithredandyellowanddrawsbigblackringsaroundhiseyesHewearsadeerskinjacketwithbrightcoloredbeadssewedtightlyonitIktomidresseslikearealDakotabraveIntruthhispaintanddeerskinsarethebestpartofhimifeverdressispartofmanorfairy touch: невозможно выполнить touch для 'IktomiisaspiderfairyHewearsbrowndeerskinlegginswithlongsoftfringesoneithersideandtinybeadedmoccasinsonhisfeetHislongblackhairispartedinthemiddleandwrappedwithredredbandsEachroundbraidhangsoverasmallbrownearandfallsforwardoverhisshouldersHeevenpaintshisfunnyfacewithredandyellowanddrawsbigblackringsaroundhiseyesHewearsadeerskinjacketwithbrightcoloredbeadssewedtightlyonitIktomidresseslikearealDakotabraveIntruthhispaintanddeerskinsarethebestpartofhimifeverdressispartofmanorfairy': Слишком длинное имя файла

      В Linux максимальная длина имени файла или директории составляет 255 байт.

      Но нужно знать, что каждый символ английского алфавита занимает 1 байт. То есть длина в 255 байт эквивалентна 255 символам английского алфавита.

      А каждая кириллическая буква занимает 2 байта. Получается, что если создавать файл только из букв русского алфавита, то максимальная длина составит всего 256/2=127,5 или просто 127 символов.

      Например, можно создать вот такой файл:

      touch ЖилибылипузырьсоломинкаилапотьПошлионивлесдроварубитьДошлидорекиинезнаюткакчерезрекуперейтиЛапотьговоритпузырюПузырьдавайнатебе

      Источник

      Limit on file name length in bash [closed]

      Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.

      This question does not appear to be about a specific programming problem, a software algorithm, or software tools primarily used by programmers. If you believe the question would be on-topic on another Stack Exchange site, you can leave a comment to explain where the question may be able to be answered.

      1. Is there a limit on the number of characters in the absolute path name of a file?
      2. Is there a limit on the number of characters for the filename (without extension) only?

      If so, what might these limits be? How can I access them in case they are system specific?

      This smells so much like homework. but in the end it belongs on ServerFault, SuperUser or Unix&Linux.

      @KarolyHorvath I was only trying in my code to code information on how data were generated into the filename, but failed to write im_syn_profile_BT,Radar94Z,_to_IWC,_chans1,2,3,4,5,6,7,8,9,10,11,12,_noise1.000000e-01,1.000000e-01,1.000000e-01,1.000000e-01,1.000000e-01,1.000000e-01,1.000000e-01,1.000000e-01,1.000000e-01,1.000000e-01,1.000000e-01,1.000000e-01,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,_0.mat 🙁

      9 Answers 9

      It depends very much on the filesystem. For the ext FS (currently the most used on Linux):

      The extension is not something the FS is aware of, it 255 bytes, extension included (you can have file names without any extensions).

      Here is a more exhaustive list of these limits, per FS.

      There can also be extensions to your file system that can change your maximum length as well. For example, eCryptFS which uses part of the lower file name to keep metadata and limits the file name to a maximum length of 143 characters. See Ubuntu eCryptFS launchpad entry.

      Источник

      Читайте также:  Terminal free space linux
Оцените статью
Adblock
detector