Термином "имена файловых объектов" обозначаются имена файлов и каталогов. Правила именования для файлов и каталогов одинаковы. Далее:
- для краткости для имен всех файловых объектов используется термин "имена файлов";
- подразумевается, что используется стандартная для Astra Linux файловая система ext4.
Данная статья применима к:
- Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.8)
- 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 (Windows) или KOI-8 каждый символ размещается в одном байте. В кодировке UTF-8 одному символу может требоваться до четырех байт. Это может вести к увеличению длинны имен при их перекодировке и вызывать затруднения при копировании или разархивировании файлов, полученных из систем, использующих кодировку CP-1251 или KOI-8.
- При архивировании могут действовать ограничения, зависящие от используемой системы архивирования (и, в некоторых случаях, от типов архивируемых файлов). Более подробную информацию см. в документации на используемые архиваторы. Так, например:
- архиватор tar:
- версия gnu — длина не ограничена (эта версия входит в дистрибутивы Astra Linux);
- версия v7 — максимальная длина полного имени файла 99 байт;
- версия ustar — максимальная длина полного имени файла 256 байт, максимальная длина имени символьной ссылки - 100 байт;
- архиватор tar:
- При использовании оптических дисков (файловая система ISO 9660) действуют следующие ограничения:
- длина пути не более 1024 байта;
- длина имени файла:
- версия файловой системы ISO9660 — 32 байта;
- версия файловой системы Joliet — 128 байт;
- версия файловой системы Rockridge — 255 байт.
Специальные символы (метасимволы)
Некоторые символы или последовательности символов зарезервированы для специального использования, и их не рекомендуется применять в именах файлов:
Символ | Специальное значение |
---|---|
* | При сравнении имен файлов — любая последовательность символов, кроме точки в начале имени файла (точка в начале имени файла обозначает "скрытый" файл и должна указываться явно). |
? | При сравнении имен файлов — один любой символ. |
[abC1] | При сравнении имен файлов — любой символ из перечисленных в квадратных скобках. |
[a-z] | При сравнении имен файлов — любой символ из указанного в квадратных скобках диапазона, например:
|
/ | Символ "косая черта". В первой позиции имени обозначает корневой каталог, иначе разделяет имена в полном пути к файлу. |
\ | Символ "обратная косая черта". Придает следующему за ней метасимволу значение обычного символа. |
- | Символ "минус". Обычно используется для указания параметров команд, и указание его первым в имени файла может повлечь попытку обработать файл как параметр (см. раздел "Решение проблем..."). |
_ | Символ "подчеркивание". В именах пакетов Debian символ "подчеркивание" отделяет имя пакета от номера версии, в иных случаях специального значения не имеет. |
. | Символ "точка". В начале имени файла обозначает "скрытый" файл. Кроме того, имя, состоящее из единственного символа "точка" зарезервировано для обозначения текущего каталога. |
.. | Два символа "точка". Имя, состоящее из двух точек, зарезервировано для обозначения родительского каталога. |
$ | Символ "доллар". Используется для указания имен подстановочных переменных (переменных окружения). |
& | Символ "амперсанд". Используется для указания асинхронного выполнения команды. |
" | Символ "двойная кавычка". Используется для ограничения строк" (см. раздел "Решение проблем..."). |
' | Символ "одинарная кавычка". Используется для ограничения строк" (см. раздел "Решение проблем..."). |
` | Символ "обратная кавычка". Используется для подстановки вывода команды. |
Символ "пробел". Используется для разделения имен, команд и параметров команд. | |
( | Простые и фигурные скобки, а также символ "точка с запятой". Используются для группирования и разделения команд и для указания значений переменных окружения. |
Допустимые символы в именах файлов
Минимальный безопасный набор символов для использования в именах файлов:
- буквы латиницы в любом регистре;
- десятичные цифры;
- символ "." (точка);
- символ "_" (подчеркивание)
- символ "-" (тире).
- условно безопасным является использование кириллицы, в любом регистре. Ядро Astra Linux гарантирует корректную обработку имен файлов с символами кириллицы, однако следует помнить о том что:
- каждый символ кириллицы занимает два байта;
- такие имена могут некорректно обрабатываться прикладными программами.
Использование других символов возможно, но не рекомендуется, так как их наличие в именах файлов может вызвать некорректную работу некоторых программ.
Решение проблем с метасимволами в именах файлов при работе в командной строке
В Astra Linux можно создать имена файлов содержащие любой символ, включая непечатные (невидимые) символы и метасимволы. Далее приведены некоторые приемы для работы с такими именами файлов.
Автозавершение
Автозавершение позволяет использовать клавишу табуляции для автоматического подбора подходящих имен (файлов, команд, параметров команд). Для использования автозавершения следует:
- Ввести начальные буквы имени файла (или команды);
- Нажать клавишу табуляции;
- Автоматически будут предложены возможные варианты продолжения, включая варианты, содержащие метасимволы.
Замена невидимых символов
Для указания файлов с невидимыми символами можно использовать символ "*", обозначающий любой символ, например, переименовать файл с именем badname, содержащим невидимый символ:
Экранирование метасимволов
Для управления файлами с именами, содержащими метасимволы, можно использовать:
- символы "одинарная кавычка", внутри которых метасимволы потеряют свои специальные значения;
- символ "обратная косая черта", отменяющий специальное значение следующего за ним символа;
Например, команда:
Имена файлов, начинающиеся с символа "-"
Большинство команд используют символ "-" (минус) для обозначения опций (параметров) выполнения. Для того, чтобы передать команде аргументы (например, имена файлов), начинающиеся со знака "-" (минус) и не являющиеся опциями можно:
Использовать специальную опцию "--" (два минуса). Эта опция указывает, что все последующие аргументы команды не являются опциями независимо от наличия лидирующего символа минус. Например, чтобы удалить файл, имеющий имя "-filename", команду rm можно использовать в виде:
rm -- -filenameПоддерживается не всеми программами.Использовать указание имен относительно текущего каталога:
rm ./-filenameСимволы "./" в начале имени файла обозначают "текущий каталог", позволяя скрыть лидирующее тире, чтобы команда не воспринимала имя файла как опцию.