Имя файла
Имя файла — строка символов, однозначно определяющая файл в некотором пространстве имён файловой системы (ФС), обычно называемом каталогом, директорией или папкой. Имена файлов строятся по правилам, принятым в той или иной файловой и операционной системах (ОС). Многие системы позволяют назначать имена как обычным файлам, так и каталогам и специальным объектам (символическим ссылкам, блочным устройствам и т. п.).
Имя файла является частью полного имени файла, также называемого полным или абсолютным путём к файлу. Полное имя может включать следующие компоненты:
- протокол или способ доступа (http, ftp, file и т. п.);
- имя или адрес компьютера, узла сети (wikipedia.org, 207.142.131.206, MYCOMPUTER, SYS: и т. п.);
- устройство хранения, диск (C:, /, SYSLIB и т. п.);
- путь к каталогу (/usr/bin, TEMP, [USR.LIB.SRC] и т. п.);
- собственно имя файла, которое может содержать его расширение (.txt, .exe, .COM и т. п.);
- версия или номер ревизии (perl6, ping6 и т. п.)[уточнить].
Имя файла необходимо для того, чтобы к файлу мог обратиться пользователь. В одном каталоге не может быть двух файлов с одинаковыми именами (некоторые файловые системы регистрозависимы, что оставляет возможность для создания файлов, имена которых отличаются регистром символов).
Имя файла обычно состоит из двух частей, разделенных точкой:
- Название (до точки, часто также называют именем);
- Расширение.
Имена файлов в разных системах
Полным, или абсолютным, называется имя файла, содержащее все каталоги до корня файловой системы. Относительные имена файлов не содержат полного пути и обычно привязываются к текущему каталогу.
Windows
Полное имя файла в Windows-системах состоит из буквы диска, после которого ставится двоеточие и обратная наклонная черта (обратный слеш), затем через обратные слеши перечисляются подкаталоги, в конце пишется имя файла. Пример:
C:WindowsSystem32calc.exe
Полное имя файла (включая расширение) в Windows может содержать до 260 символов, данное значение определено константой MAX_PATH в Windows API; например, полное имя файла максимально допустимой длины на диске C будет таким: «C:<256 символов>NULL» (например, «C:<254 символа><1 символ>NULL»). Однако, юникодовые версии некоторых функций позволяют использовать полные имена файлов длиной до 32767 символов, такие имена начинаются с префикса «?». Пример:
?C:WindowsSystem32calc.exe
При использовании префикса «?» необходимо указывать абсолютный путь к файлу, относительные пути не допускаются. При использовании относительных путей максимальная длина полного имени файла определена константой MAX_PATH (260 символов).
UNIX
В UNIX и UNIX-подобных системах полный путь состоит из слеша (/), обозначающего корневой каталог, после которого через слеши перечисляются подкаталоги, в конце пишется имя файла. Пример:
/usr/local/bin/gcc
Пути, начинающиеся не с косой черты, считаются относительными и отсчитываются относительно рабочего каталога. Пример:
../mc при нахождении в каталоге /etc/apache2 эквивалентно /etc/mc.
Особое значение у путей, которые начинаются с тильды (~). Тильда обозначает домашний каталог текущего или указанного пользователя. Пример:
~/Desktop для пользователя user во многих системах и случаях эквивалентно /home/user/Desktop
~admin/passwords для любого пользователя равносильно /home/admin/passwords
~root/test для любого пользователя — то же самое, что и /root/test, потому что суперпользователь (root) имеет особый домашний каталог.
Запрещённые символы
Многие операционные системы запрещают использование некоторых служебных символов.
Запрещённые символы Windows (в различных версиях):
- — разделитель подкаталогов
- / — разделитель ключей командного интерпретатора
- : — отделяет букву диска или имя альтернативного потока данных
- * — заменяющий символ (маска «любое количество любых символов»)
- ? — заменяющий символ (маска «один любой символ»)
- " — используется для указания путей, содержащих пробелы
- < — перенаправление ввода
- > — перенаправление вывода
- | — обозначает конвейер
- + — (в различных версиях) конкатенация
Частично запрещённые символы Windows:
- пробел — не допускается в конце имени файла;
- . — не допускается в конце имени файла кроме имён каталогов, состоящих из точек и доступа с префиксом «?».
Символы, вызывающие проблемы в широко распространённых компонентах:
- % — в Windows используется для подстановки переменных окружения в интерпретаторе команд, вызывает проблемы при открытии файла через стандартный диалог открытия файла;
- ! — в Windows используется для подстановки переменных окружения в интерпретаторе команд, в bash используется для доступа к истории;
- @ — в интерпретаторах команд вызывает срабатывание функций, предназначенных для почты.
В именах файлов UNIX и некоторых UNIX-подобных ОС запрещен слеш (/) — разделитель подкаталогов — и символ конца C-строки ( ). Перечисленные выше символы (кроме слеша) использовать можно, но из соображений совместимости их лучше избегать.
Расширение имени файла
Расширение имени файла (англ. filename extension, часто говорят просто расширение файла или расширение) — последовательность символов, добавляемых к имени файла и предназначенных для идентификации типа (формата) файла. Это один из распространённых способов, с помощью которых пользователь или программное обеспечение компьютера может определить тип данных, хранящихся в файле. Расширение отделяется от основной части имени файла последней точкой. Иногда могут использоваться несколько расширений, следующих друг за другом, например, «.tar.gz».
ОС или менеджер файлов могут устанавливать соответствия между расширениями файлов и приложениями. Когда пользователь открывает файл с зарегистрированным расширением, автоматически запускается соответствующая этому расширению программа. Некоторые расширения могут показывать, что файл является исполняемым (в Windows).