> For the complete documentation index, see [llms.txt](https://antons-organization-1.gitbook.io/administrirovanie-linux/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://antons-organization-1.gitbook.io/administrirovanie-linux/upravlenie-failami/struktura-failovoi-sistemy-linux/svedeniya-ob-imenakh-failov.md).

# Сведения об именах файлов

Коротко перечислю важнейшие фактические сведения об именах файлов.&#x20;

1. В ОС Linux имя файла должно быть не длиннее 255 символов.&#x20;
2. Имена файлов чувствительны к регистру!&#x20;
3. В именах файлов допускается указание международных символов, однако при использовании различных кодировок могут возникать проблемы (например, если разные кодировки одновременно применяются в одной и той же сети).  На протяжении уже более пяти лет почти во всех дистрибутивах Linux стандартной кодировкой считается UTF-8.&#x20;

Для ядра Linux имя файла — это просто байтовая последовательность, в которой не может присутствовать символ или код 0. Интерпретация этой байтовой последовательности зависит от применяемой кодировки.&#x20;

4. В имени файла может содержаться сколько угодно точек. Имя файла README.bootutils.gz является совершенно тривиальным и означает, что мы имеем дело с файлом README по теме «Загрузочные утилиты».&#x20;
5. Файлы, имена которых начинаются с точки, считаются скрытыми (см. подраздел «Скрытые файлы» этого раздела). Как правило, скрытые файлы не отображаются в программе 1s и в различных файловых менеджерах.&#x20;
6. Имена файлов, которые невозможно однозначно опознать как таковые после ввода команды (в частности, имена файлов, содержащие пробелы) должны даваться в кавычках (например: "a b").&#x20;

Размер файлов в современных версиях Linux практически ничем не ограничен и в зависимости от файловой системы может исчисляться терабайтами.

## Linux чувствителен к регистру

Это часто вызывает проблемы у людей, которые плохо знакомы с Linux. В других системах, таких как Windows, регистр не учитывается при обращении к файлам. С Linux не так. То есть можно иметь два или более файлов и каталогов с одинаковыми именами, но буквами разного регистра. И это будут разные файлы.

<pre><code><strong>1. user@bash: ls Documents
</strong>2. FILE1.txt File1.txt file1.TXT
3. …
<strong>4. user@bash: file Documents/file1.txt
</strong>5. Documents/file1.txt: ERROR: cannot open ‘file1.txt’ (No such file or directory)
</code></pre>

Параметры командной строки тоже чувствительны к регистру. Например, для команды `ls` есть две опции `s` и `S`, которые делают совершенно разные вещи. Распространенная ошибка — нам нужна опция, которая пишется в верхнем регистре, а мы пишем ее в нижнем и удивляемся, почему результат не соответствует нашим ожиданиям.

## Пробелы в именах файлов

Пробелы в именах файлов и каталогов вполне допустимы, но с ними нужно быть немного осторожнее. Как вы помните, пробел в командной строке разделяет элементы. С его помощью мы узнаем, что является именем программы, а что — аргументами командной строки. Если бы мы хотели перейти в каталог под названием Holiday photos, то способ из примера ниже не сработал бы:

<pre><code><strong>1. user@bash: ls Documents
</strong>2. FILE1.txt File1.txt file1.TXT Holiday Photos
3. …
<strong>4. user@bash: cd Holiday Photos
</strong>5. bash: cd: Holiday: No such file or directory
</code></pre>

Дело в том, что Holiday Photos рассматривается как два аргумента командной строки. Команда `cd` переходит в каталог, указанный только первым аргументом. Чтобы обойти это, нам нужно указать терминалу, что мы хотим, чтобы Linux рассматривал Holiday Photos как один аргумент командной строки. Есть два способа сделать это.

## **Кавычки**

Первый способ — использовать кавычки. Можно использовать одинарные или двойные. Позже мы увидим, что между ними есть небольшая разница, но пока это несущественно. Все, что находится внутри кавычек, считается одним элементом.

<pre><code><strong>1. user@bash: cd 'Holiday Photos'
</strong><strong>2. user@bash: pwd
</strong>3. /home/karpaff/Documents/Holiday Photos
</code></pre>

**Управляющие символы**

Другой способ — использовать так называемый управляющий символ, то есть обратную косую черту `\`. Обратная косая черта экранирует (или аннулирует) особое значение следующего за ней символа.

<pre><code><strong>1. user@bash: cd Holiday\ Photos
</strong><strong>2. user@bash: pwd
</strong>3. /home/karpaff/Documents/Holiday Photos
</code></pre>

В приведенном выше примере пробел между Holiday и Photos обычно имеет особое значение: он разделяет их на отдельные аргументы командной строки. Поскольку мы поместили перед ним обратную косую черту, это особое значение было отменено.

Примечание. В предыдущем разделе мы узнали о заполнении строки нажатием клавиши **Tab**. Если вы используете это до того, как столкнетесь с пробелом в имени каталога, терминал автоматически отключит любые пробелы в имени.

## Скрытые файлы и каталоги

На самом деле в Linux есть очень простой и элегантный механизм для указания того, что файл или каталог скрыт. Если имя файла или каталога начинается с `.` (точки), то файл считается скрытым. Вам даже не нужна специальная команда или действие, чтобы скрыть файл.

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

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

Команда `ls`, которую мы видели в предыдущем разделе, по умолчанию не выводит список скрытых файлов и каталогов. Мы можем отобразить скрытые файлы и каталоги, включив параметр `-a`.

<pre><code><strong>1. user@bash: ls Documents
</strong>2. FILE1.txt File1.txt file1.TXT
3. ...
<strong>4. user@bash: ls -a Documents
</strong>5. ... FILE1.txt File1.txt file1.TXT .hidden .file.txt
6. ...
</code></pre>

В приведенном выше примере вы видите, что, когда мы перечислили все элементы в нашем текущем каталоге, первые два элемента были `.` и `..`. Если вы не знаете, что это такое, то вам стоит прочитать статью об [основах навигации в Linux](https://codechick.io/tutorials/unix-linux/unix-linux-basic-navigation).
