- Правила именования файловых объектов в Astra Linux
- Регистр
- Кодировка кириллицы
- Длина имени файла и пути к файлу
- Специальные символы (метасимволы)
- Допустимые символы в именах файлов
- Решение проблем с метасимволами в именах файлов при работе в командной строке
- Автозавершение
- Замена невидимых символов
- Экранирование метасимволов
- Имена файлов, начинающиеся с символа «-«
- Файлы в Linux
- В Linux нет расширений
- 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] любая латинская буква в верхнем регистре;
- 1 любая десятичная цифра;
- [0-9A-Fa-f] любая шестнадцатеричная цифра (в любом регистре);
- [a-zA-Z0-9] любая латинская буква в любом регистре или десятичная цифра.
Допустимые символы в именах файлов
Минимальный безопасный набор символов для использования в именах файлов:
- буквы (как латиницы, так и кириллицы, в любом регистре);
- цифры;
- символ «.» (точка);
- символ «_» (подчеркивание)
- символ «-» (тире).
Использование других символов не рекомендуется, так как их наличие в именах файлов может вызвать некорректную работу некоторых программ, хотя допустимо использование любых символов.
Решение проблем с метасимволами в именах файлов при работе в командной строке
В Astra Linux можно создать имена файлов содержащие любой символ, включая непечатные (невидимые) символы и метасимволы. Далее приведены некоторые приемы для работы с такими именами файлов.
Автозавершение
Автозавершение позволяет использовать клавишу табуляции для автоматического подбора подходящих имен (файлов, команд, параметров команд). Для использования автозавершения следует ввести начальные буквы имени, нажать клавишу табуляции и автоматически будут предложены возможные варианты продолжения, включая содержащие метасимволы.
Замена невидимых символов
Для указания файлов с невидимыми символами можно использовать символ «*», обозначающий любой символ, например, переименовать файл с именем badname, содержащим невидимый символ:
Экранирование метасимволов
Для управления файлами с именами, содержащими метасимволы, можно использовать:
- символы «одинарная кавычка», внутри которых метасимволы потеряют свои специальные значения;
- символ «обратная косая черта», отменяющий специальное значение следующего за ним символа;
позволит переименовать файл с «неудобным» именем *Astra*Linux* в файл с другим «неудобным» именем, содержащим пробел.
Для имен файлов, начинающихся с символа «минус» можно использовать указание их имени относительно текущего каталога:
Символы «./» в начале имени файла обозначают «текущий каталог», и позволяют скрыть лидирующее тире, чтобы команда rm не воспринимала имя файла как опцию.
Имена файлов, начинающиеся с символа «-«
Большинство команд используют символ «-» (минус) для обозначения опций (параметров) выполнения. Для того, чтобы можно было передавать командам аргументы (например, имена файлов), начинающиеся со знака «-» (минус) и не являющиеся опциями, используется специальная опция «—» (два минуса). Эта опция указывает, что все последующие аргументы команды не являются опциями независимо от наличия лидирующего символа минус. Например, чтобы удалить файл, имеющий имя «-filename», команду rm можно использовать в виде:
Файлы в Linux
Первое, что вам нужно понять: в Linux на техническом уровне все на самом деле является файлом. Текстовый файл — это файл, папка — это файл, ваша клавиатура — это файл (его система может только читать), ваш монитор — это файл (в него система может только записывать) и т. д. Конечно, эти знания не слишком помогут с тем, что мы делаем сейчас, однако они позволяют лучше понимать поведение Linux.
В Linux нет расширений
Это немного непривычно, но со временем все станет понятнее. Расширение файла обычно представляет собой набор из 2–4 символов после точки в конце файла, который обозначает тип файла. Ниже приведены распространенные расширения:
- file.exe — исполняемый файл.
- file.txt — простой текстовый файл.
- file.png, file.gif, file.jpg — изображение.
В других системах, таких как Windows, расширение важно: система использует его для определения типа файла. Linux игнорирует расширение и просматривает файл, чтобы определить, какой это тип. Так, например, у нас может быть файл photo.png с какой-то фотографией. Мы можем переименовать файл в photo.txt или просто в photo, и Linux все равно обработает этот файл как файл с изображением. Поэтому иногда бывает трудно определить, к какому типу относится конкретный файл. К счастью, есть команда под названием file , с помощью которой это можно выяснить.
Вам, наверное, интересно, почему в качестве аргумента мы указали путь к файлу вместо его имени. Если вы помните из предыдущей статьи, всякий раз, когда мы указываем файл или каталог в командной строке, на самом деле мы указываем их путь. Кроме того, поскольку каталоги (как упоминалось выше) на самом деле являются просто особым типом файлов, было бы точнее сказать, что путь — это средство доступа к определенному месту в системе, и это местоположение является файлом.
Linux чувствителен к регистру
Это часто вызывает проблемы у людей, которые плохо знакомы с Linux. В других системах, таких как Windows, регистр не учитывается при обращении к файлам. С Linux не так. То есть можно иметь два или более файлов и каталогов с одинаковыми именами, но буквами разного регистра. И это будут разные файлы.
1. [email protected]: ls Documents
2. FILE1.txt File1.txt file1.TXT
3. …
4. [email protected]: file Documents/file1.txt
5. Documents/file1.txt: ERROR: cannot open ‘file1.txt’ (No such file or directory)Параметры командной строки тоже чувствительны к регистру. Например, для команды ls есть две опции s и S , которые делают совершенно разные вещи. Распространенная ошибка — нам нужна опция, которая пишется в верхнем регистре, а мы пишем ее в нижнем и удивляемся, почему результат не соответствует нашим ожиданиям.
Пробелы в именах файлов
Пробелы в именах файлов и каталогов вполне допустимы, но с ними нужно быть немного осторожнее. Как вы помните, пробел в командной строке разделяет элементы. С его помощью мы узнаем, что является именем программы, а что — аргументами командной строки. Если бы мы хотели перейти в каталог под названием Holiday photos, то способ из примера ниже не сработал бы:
1. [email protected]: ls Documents
2. FILE1.txt File1.txt file1.TXT Holiday Photos
3. …
4. [email protected]: cd Holiday Photos
5. bash: cd: Holiday: No such file or directoryДело в том, что Holiday Photos рассматривается как два аргумента командной строки. Команда cd переходит в каталог, указанный только первым аргументом. Чтобы обойти это, нам нужно указать терминалу, что мы хотим, чтобы Linux рассматривал Holiday Photos как один аргумент командной строки. Есть два способа сделать это.
Кавычки
Первый способ — использовать кавычки. Можно использовать одинарные или двойные. Позже мы увидим, что между ними есть небольшая разница, но пока это несущественно. Все, что находится внутри кавычек, считается одним элементом.
1. [email protected]: cd 'Holiday Photos'
2. [email protected]: pwd
3. /home/karpaff/Documents/Holiday PhotosУправляющие символы
Другой способ — использовать так называемый управляющий символ, то есть обратную косую черту \ . Обратная косая черта экранирует (или аннулирует) особое значение следующего за ней символа.
1. [email protected]: cd Holiday\ Photos
2. [email protected]: pwd
3. /home/karpaff/Documents/Holiday PhotosВ приведенном выше примере пробел между Holiday и Photos обычно имеет особое значение: он разделяет их на отдельные аргументы командной строки. Поскольку мы поместили перед ним обратную косую черту, это особое значение было отменено.
Примечание. В предыдущем разделе мы узнали о заполнении строки нажатием клавиши Tab. Если вы используете это до того, как столкнетесь с пробелом в имени каталога, терминал автоматически отключит любые пробелы в имени.
Скрытые файлы и каталоги
На самом деле в Linux есть очень простой и элегантный механизм для указания того, что файл или каталог скрыт. Если имя файла или каталога начинается с . (точки), то файл считается скрытым. Вам даже не нужна специальная команда или действие, чтобы скрыть файл.
Файлы и каталоги могут быть скрыты по разным причинам. Например, файлы конфигурации для конкретного пользователя (которые обычно хранятся в домашнем каталоге) скрыты, чтобы они не мешали пользователю выполнять свои повседневные задачи.
Чтобы сделать файл или каталог скрытым, все, что вам нужно сделать, это создать файл или каталог с именем, начинающимся с . . Аналогичным образом вы можете переименовать скрытый файл, удалить точку, и он перестанет быть скрытым.
Команда ls , которую мы видели в предыдущем разделе, по умолчанию не выводит список скрытых файлов и каталогов. Мы можем отобразить скрытые файлы и каталоги, включив параметр -a .
1. [email protected]: ls Documents
2. FILE1.txt File1.txt file1.TXT
3. .
4. [email protected]: ls -a Documents
5. . FILE1.txt File1.txt file1.TXT .hidden .file.txt
6. .В приведенном выше примере вы видите, что, когда мы перечислили все элементы в нашем текущем каталоге, первые два элемента были . и .. . Если вы не знаете, что это такое, то вам стоит прочитать статью об основах навигации в Linux.
Что нужно запомнить
Команды
file
Позволяет получить информацию о типе файла.ls -a
Перечисляет содержимое каталога, включая скрытые файлы.Идеи
В Linux все является файлом.
Даже каталоги.Linux — это система без расширений.
Файлы могут иметь любое расширение или вообще не иметь.Linux чувствителен к регистру.
Остерегайтесь глупых опечаток.Практические задания
-
- Попробуйте запустить команду file с различными входными данными. При этом убедитесь, что вы попробовали как абсолютные, так и относительные пути.
- Теперь выполните команду, которая выведет список содержимого вашего домашнего каталога, включая скрытые файлы и каталоги.
СodeСhick.io — простой и эффективный способ изучения программирования.
2023 © ООО «Алгоритмы и практика»