Page tree

Термином "имена файловых объектов" обозначаются имена файлов и каталогов. Правила именования для файлов и каталогов одинаковы. Далее:

  • для краткости для имен всех файловых объектов используется термин "имена файлов";
  • подразумевается, что используется стандартная для 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 байт.

  1. При использовании кодировок CP-1251 (Windows) или KOI-8 каждый символ размещается в одном байте. В кодировке UTF-8 одному символу может требоваться до четырех байт. Это может вести к увеличению длинны имен при их перекодировке и вызывать затруднения при копировании или разархивировании файлов, полученных из систем, использующих кодировку CP-1251 или KOI-8.
  2. При архивировании могут действовать ограничения, зависящие от используемой системы архивирования (и, в некоторых случаях, от типов архивируемых файлов). Более подробную информацию см. в документации на используемые архиваторы. Так, например:
    1. архиватор tar:
      1. версия gnu - длина не ограничена (эта версия входит в дистрибутивы Astra Linux);
      2. версия v7 - максимальная длина полного имени файла 99 байт;
      3. версия ustar - максимальная длина полного имени файла 256 байт, максимальная длина имени символьной ссылки - 100 байт;
  3. При использовании оптических дисков (файловая система ISO 9660) действуют следующие ограничения:
    1. длина пути не более 1024 байта;
    2. длина имени файла:
      1. версия файловой системы ISO9660 — 32 байта;
      2. версия файловой системы Joliet  — 128 байт;
      3. версия файловой системы Rockridge — 255 байт.


Специальные символы (метасимволы)

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

СимволСпециальное значение
*При сравнении имен файлов - любая последовательность символов, кроме точки в начале имени файла (точка в начале имени файла обозначает "скрытый" файл и должна указываться явно).
?При сравнении имен файлов - один любой символ.
[abC1]При сравнении имен файлов - любой символ из перечисленных в квадратных скобках.
[a-z]

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

  • [a-z]  любая латинская буква в нижнем регистре;
  • [A-Z] любая латинская буква в верхнем регистре;
  • [0-9] любая десятичная цифра;
  • [0-9A-Fa-f] любая шестнадцатеричная цифра (в любом регистре);
  • [a-zA-Z0-9] любая латинская буква в любом регистре или десятичная цифра.
/Символ "косая черта". В первой позиции имени обозначает корневой каталог, иначе разделяет имена в полном пути к файлу.
\Символ "обратная косая черта". Придает следующему за ней метасимволу значение обычного символа.
Символ "минус". Обычно используется для указания параметров команд, и указание его первым в имени файла может повлечь попытку обработать файл как параметр  (см. раздел "Решение проблем...").
_Символ "подчеркивание". В именах пакетов Debian символ "подчеркивание" отделяет имя пакета от номера версии, в иных случаях специального значения не имеет.
.Символ "точка". В начале имени файла обозначает "скрытый" файл. Кроме того, имя, состоящее из единственного символа "точка" зарезервировано для обозначения текущего каталога.
..Два символа "точка". Имя, состоящее из двух точек, зарезервировано для обозначения родительского каталога.
$Символ "доллар". Используется для указания имен подстановочных переменных.
&Символ "амперсанд". Используется для указания асинхронного выполнения команды.
"Символ "двойная кавычка". Используется для ограничения строк" (см. раздел "Решение проблем...").
'Символ "одинарная кавычка". Используется для ограничения строк" (см. раздел "Решение проблем...").
`Символ "обратная кавычка". Используется для подстановки вывода команды.

Символ "пробел". Используется для разделения имен, команд и параметров команд.

(
)
{
}
;

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

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

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

  • буквы латиницы в любом регистре;
  • десятичные цифры;
  • символ "." (точка);
  • символ "_" (подчеркивание)
  • символ "-" (тире).
  • условно безопасным является использование кириллицы, в любом регистре. Ядро Astra Linux гарантирует корректную обработку имен файлов с символами кириллицы, однако следует помнить о том что:
    • каждый символ кириллицы занимает два байта;
    • такие имена могут некорректно обрабатываться прикладными программами.

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

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

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

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

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

  1. Ввести начальные буквы имени файла (или команды);
  2. Нажать клавишу табуляции;
  3. Автоматически будут предложены возможные варианты продолжения, включая варианты, содержащие метасимволы.

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

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

mv bad*name goodname

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

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

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

Например, команда:

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

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

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

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

    rm -- -filename
    Поддерживается не всеми программами.

  • Использовать указание имен относительно текущего каталога:

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

  • No labels