Interested Article - Имя файла

Отображение содержимого каталога C:\temp — имён находящихся в нём файлов — по команде dir в командном интерпретаторе ОС Windows

И́мя фа́йла — строка символов, однозначно определяющая файл в некотором пространстве имён файловой системы (ФС), обычно называемом каталогом , директорией или папкой. Имена файлов строятся по правилам, принятым в той или иной файловой и операционной системах (ОС). Многие системы позволяют назначать имена как обычным файлам, так и каталогам и специальным объектам ( символическим ссылкам , блочным устройствам и т. п.).

Имя файла является частью полного имени файла , также называемого полным или абсолютным путём к файлу. Полное имя может включать следующие компоненты:

  • протокол или способ доступа ( 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:\Windows\System32\calc.exe

Полное имя файла (включая расширение) в Windows может содержать до 260 символов, данное значение определено константой MAX_PATH в Windows API; например, полное имя файла максимально допустимой длины на диске C будет таким: «C:\<256 символов>NULL» (например, «C:\<254 символа>\<1 символ>NULL»). Однако, юникодовые версии некоторых функций позволяют использовать полные имена файлов длиной до 32767 символов, такие имена начинаются с префикса «\\?\». Пример:

\\?\C:\Windows\System32\calc.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) имеет особый домашний каталог.

  1. Для каталога каждого пользователя в современных ОС может быть настроен произвольный путь.

Запрещённые символы

Многие операционные системы запрещают использование некоторых служебных символов.

Запрещённые символы Windows (в различных версиях):

  • \ — разделитель подкаталогов
  • / — разделитель ключей командного интерпретатора
  • : — отделяет букву диска или имя альтернативного потока данных
  • * — заменяющий символ (маска «любое количество любых символов»)
  • ? — заменяющий символ (маска «один любой символ»)
  • " — используется для указания путей, содержащих пробелы
  • < — перенаправление ввода
  • > — перенаправление вывода
  • | — обозначает конвейер
  • + — (в различных версиях) конкатенация

Частично запрещённые символы Windows :

  • пробел — не допускается в конце имени файла;
  • . — не допускается в конце имени файла кроме имён каталогов, состоящих из точек и доступа с префиксом «\\?\».

Символы, вызывающие проблемы в широко распространённых компонентах:

  • % — в Windows используется для подстановки переменных окружения в интерпретаторе команд, вызывает проблемы при открытии файла через стандартный диалог открытия файла;
  • ! — в Windows используется для подстановки переменных окружения в интерпретаторе команд, в bash используется для доступа к истории ;
  • @ — в интерпретаторах команд вызывает срабатывание функций, предназначенных для почты .

В именах файлов UNIX и некоторых UNIX-подобных ОС запрещен слеш ( / ) — разделитель подкаталогов — и символ конца C-строки ( \0 ). Перечисленные выше символы (кроме слеша) использовать можно, но из соображений совместимости их лучше избегать.

Расширение имени файла

Расширение имени файла ( англ. filename extension , часто говорят просто расширение файла или расширение ) — последовательность символов, добавляемых к имени файла и предназначенных для идентификации типа ( формата ) файла . Это один из распространённых способов, с помощью которых пользователь или программное обеспечение компьютера может определить тип данных, хранящихся в файле. Расширение отделяется от основной части имени файла последней точкой . Иногда могут использоваться несколько расширений, следующих друг за другом, например, «.tar.gz».

ОС или менеджер файлов могут устанавливать соответствия между расширениями файлов и приложениями . Когда пользователь открывает файл с зарегистрированным расширением, автоматически запускается соответствующая этому расширению программа. Некоторые расширения могут показывать, что файл является исполняемым (в Windows).

См. также

Примечания

  1. Вызывает проблему в команде вида
    echo "$(ls 'Привет мир!')"
    
    . Рабочий вариант команды:
    echo "$(ls 'Привет мир'\!)"
    
    .

Литература

  • Робачевский А. Н., Немнюгин С. А., Стесик О. Л. Имен файлов / Базовая файловая система System V / Глава 4. Файловая система // Операционная система UNIX. — 2-е изд. — СПб. : БХВ-Петербург, 2008. — С. 338—339. — 656 с. — ISBN 978-5-94157-538-1 .
Источник —

Same as Имя файла