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

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

  1. В ОС Linux имя файла должно быть не длиннее 255 символов.

  2. Имена файлов чувствительны к регистру!

  3. В именах файлов допускается указание международных символов, однако при использовании различных кодировок могут возникать проблемы (например, если разные кодировки одновременно применяются в одной и той же сети). На протяжении уже более пяти лет почти во всех дистрибутивах Linux стандартной кодировкой считается UTF-8.

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

  1. В имени файла может содержаться сколько угодно точек. Имя файла README.bootutils.gz является совершенно тривиальным и означает, что мы имеем дело с файлом README по теме «Загрузочные утилиты».

  2. Файлы, имена которых начинаются с точки, считаются скрытыми (см. подраздел «Скрытые файлы» этого раздела). Как правило, скрытые файлы не отображаются в программе 1s и в различных файловых менеджерах.

  3. Имена файлов, которые невозможно однозначно опознать как таковые после ввода команды (в частности, имена файлов, содержащие пробелы) должны даваться в кавычках (например: "a b").

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

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

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

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

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

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

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

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

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

Кавычки

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

1. user@bash: cd 'Holiday Photos'
2. user@bash: pwd
3. /home/karpaff/Documents/Holiday Photos

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

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

1. user@bash: cd Holiday\ Photos
2. user@bash: pwd
3. /home/karpaff/Documents/Holiday Photos

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

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

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

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

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

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

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

1. user@bash: ls Documents
2. FILE1.txt File1.txt file1.TXT
3. ...
4. user@bash: ls -a Documents
5. ... FILE1.txt File1.txt file1.TXT .hidden .file.txt
6. ...

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

Last updated