Имя файла: различия между версиями
[непроверенная версия] | [непроверенная версия] |
→Запрещенные символы:
плюсик то забыли! |
ошибка в слове |
||
(не показано 28 промежуточных версий 19 участников) | |||
Строка 1: | Строка 1: | ||
[[Файл:Dir command in Windows Command Prompt.png|thumb|right|400px|Отображение содержимого каталога <code>C:\temp</code> |
[[Файл:Dir command in Windows Command Prompt.png|thumb|right|400px|Отображение содержимого каталога <code>C:\temp</code> — имён находящихся в нём файлов — по команде <code>dir</code> в командном интерпретаторе ОС Windows]] |
||
'''И́мя фа́йла''' |
'''И́мя фа́йла''' — строка символов, однозначно определяющая [[файл]] в некотором [[Пространство имён|пространстве имён]] [[Файловая система|файловой системы]] (ФС), обычно называемом [[Каталог (файловая система)|каталогом]], директорией или папкой. Имена файлов строятся по правилам, принятым в той или иной файловой и [[Операционная система|операционной системах]] (ОС). Многие системы позволяют назначать имена как обычным файлам, так и каталогам и специальным объектам ([[Символическая ссылка|символическим ссылкам]], [[Блочное устройство|блочным устройствам]] и т. п.). |
||
Имя файла является частью '''полного имени файла''', также называемого '''полным''' или '''абсолютным путём''' к файлу. Полное имя может включать следующие компоненты: |
Имя файла является частью '''полного имени файла''', также называемого '''полным''' или '''абсолютным путём''' к файлу. Полное имя может включать следующие компоненты: |
||
* протокол или способ доступа (<code>http</code>, <code>ftp</code>, <code>file</code> и |
* протокол или способ доступа (<code>http</code>, <code>ftp</code>, <code>file</code> и т. п.); |
||
* имя или адрес компьютера, узла сети (<code>wikipedia.org</code>, <code>207.142.131.206</code>, <code>\\MYCOMPUTER</code>, <code>SYS:</code> и |
* имя или адрес компьютера, узла сети (<code>wikipedia.org</code>, <code>207.142.131.206</code>, <code>\\MYCOMPUTER</code>, <code>SYS:</code> и т. п.); |
||
* устройство хранения, диск (<code>C:</code>, <code>/</code>, <code>SYSLIB</code> и |
* устройство хранения, диск (<code>C:</code>, <code>/</code>, <code>SYSLIB</code> и т. п.); |
||
* путь к каталогу (<code>/usr/bin</code>, <code>\TEMP</code>, <code>[USR.LIB.SRC]</code> и |
* путь к каталогу (<code>/usr/bin</code>, <code>\TEMP</code>, <code>[USR.LIB.SRC]</code> и т. п.); |
||
* собственно имя файла, которое может содержать [[#Расширение имени файла|его расширение]] (<code>.txt</code>, <code>.exe</code>, <code>.COM</code> и |
* собственно имя файла, которое может содержать [[#Расширение имени файла|его расширение]] (<code>.txt</code>, <code>.exe</code>, <code>.COM</code> и т. п.); |
||
* версия или номер ревизии{{Уточнить}}. |
* версия или номер ревизии (<code>perl6</code>, <code>ping6</code> и т. п.){{Уточнить}}. |
||
Имя файла необходимо для того, чтобы к файлу мог обратиться пользователь. В одном каталоге не может быть двух файлов с одинаковыми именами (некоторые файловые системы регистрозависимы, что оставляет возможность для создания файлов, имена которых отличаются регистром символов). |
Имя файла необходимо для того, чтобы к файлу мог обратиться пользователь. В одном каталоге не может быть двух файлов с одинаковыми именами (некоторые файловые системы регистрозависимы, что оставляет возможность для создания файлов, имена которых отличаются регистром символов). |
||
Строка 15: | Строка 15: | ||
Имя файла обычно состоит из двух частей, разделенных точкой: |
Имя файла обычно состоит из двух частей, разделенных точкой: |
||
* Название (до точки, часто также называют именем); |
* Название (до точки, часто также называют именем); |
||
* [[#Расширение имени файла|Расширение]] |
* [[#Расширение имени файла|Расширение]]. |
||
== Имена файлов в разных системах == |
== Имена файлов в разных системах == |
||
'''Полным''', или '''абсолютным''', называется имя файла, содержащее все |
'''Полным''', или '''абсолютным''', называется имя файла, содержащее все каталоги до корня файловой системы. '''Относительные''' имена файлов не содержат полного пути и обычно привязываются к [[Рабочий каталог|текущему каталогу]]. |
||
=== Windows === |
=== Windows === |
||
Строка 25: | Строка 25: | ||
<code>C:\Windows\System32\calc.exe</code> |
<code>C:\Windows\System32\calc.exe</code> |
||
Полное имя файла (включая расширение) в Windows может содержать до 260 символов, данное значение определено константой MAX_PATH в Windows API; например |
Полное имя файла (включая расширение) в Windows может содержать до 260 символов, данное значение определено константой MAX_PATH в Windows API; например, полное имя файла максимально допустимой длины на диске C будет таким: «C:\<256 символов>NULL» (например, «C:\<254 символа>\<1 символ>NULL»). Однако, юникодовые версии некоторых функций позволяют использовать полные имена файлов длиной до 32767 символов, такие имена начинаются с префикса «\\?\». Пример: |
||
<code>\\?\C:\Windows\System32\calc.exe</code> |
<code>\\?\C:\Windows\System32\calc.exe</code> |
||
При использовании префикса «\\?\» необходимо указывать абсолютный путь к файлу, относительные пути не допускаются. При использовании относительных путей |
При использовании префикса «\\?\» необходимо указывать абсолютный путь к файлу, относительные пути не допускаются. При использовании относительных путей максимальная длина полного имени файла определена константой MAX_PATH (260 символов). |
||
=== UNIX === |
=== UNIX === |
||
Строка 40: | Строка 40: | ||
<code>../mc</code> при нахождении в каталоге <code>/etc/apache2</code> эквивалентно <code>/etc/mc</code>. |
<code>../mc</code> при нахождении в каталоге <code>/etc/apache2</code> эквивалентно <code>/etc/mc</code>. |
||
Особое значение у путей, которые начинаются с [[Тильда|тильды]] (<code>~</code>). Тильда обозначает [[ |
Особое значение у путей, которые начинаются с [[Тильда|тильды]] (<code>~</code>). Тильда обозначает [[домашний каталог]] текущего или указанного пользователя. Пример: |
||
<code>~/Desktop</code> для пользователя <code>user</code> во многих системах и случаях эквивалентно <code>/home/user/Desktop</code><br> |
<code>~/Desktop</code> для пользователя <code>user</code> во многих системах и случаях эквивалентно <code>/home/user/Desktop</code><ref name="ref_home">Для каталога каждого пользователя в современных ОС может быть настроен произвольный путь.</ref><br> |
||
<code>~admin/passwords</code> для любого пользователя равносильно <code>/home/admin/passwords</code><br> |
<code>~admin/passwords</code> для любого пользователя равносильно <code>/home/admin/passwords</code><ref name="ref_home"/><br> |
||
<code>~root/test</code> для любого пользователя |
<code>~root/test</code> для любого пользователя — то же самое, что и <code>/root/test</code><ref name="ref_home"/>, потому что [[суперпользователь]] (root) имеет особый домашний каталог. |
||
{{примечания}} |
|||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
Запрещённые символы [[Windows]] (в различных версиях): |
|||
* <code>\</code> — разделитель подкаталогов |
* <code>\</code> — разделитель подкаталогов |
||
* <code>/</code> — разделитель ключей командного интерпретатора |
* <code>/</code> — разделитель ключей командного интерпретатора |
||
Строка 57: | Строка 61: | ||
* <code>></code> — перенаправление вывода |
* <code>></code> — перенаправление вывода |
||
* <code>|</code> — обозначает [[Конвейер (UNIX)|конвейер]] |
* <code>|</code> — обозначает [[Конвейер (UNIX)|конвейер]] |
||
* <code>+</code> |
* <code>+</code> — (в различных версиях) [[конкатенация]] |
||
Частично запрещённые символы [[Windows]]: |
|||
⚫ | |||
* пробел — не допускается в конце имени файла; |
|||
* <code>.</code> — не допускается в конце имени файла кроме имён каталогов, состоящих из точек и доступа с префиксом «\\?\». |
|||
Символы, вызывающие проблемы в широко распространённых компонентах: |
|||
* <code>%</code> — в [[Windows]] используется для подстановки переменных окружения в интерпретаторе команд, вызывает проблемы при открытии файла через стандартный диалог открытия файла; |
|||
* <code>!</code> — в [[Windows]] используется для подстановки переменных окружения в интерпретаторе команд, в [[bash]] используется для доступа к истории<ref>Вызывает проблему в команде вида <source lang="bash">echo "$(ls 'Привет мир!')"</source>. Рабочий вариант команды: <source lang="bash">echo "$(ls 'Привет мир'\!)"</source>.</ref>; |
|||
* <code>@</code> — в интерпретаторах команд вызывает срабатывание функций, предназначенных для [[e-mail|почты]]. |
|||
⚫ | |||
== Расширение имени файла == |
== Расширение имени файла == |
||
{{Основная статья|Расширение имени файла}} |
{{Основная статья|Расширение имени файла}} |
||
'''Расширение имени файла''' ({{lang-en|filename extension}}, часто говорят просто '''расширение файла''' или '''расширение''') |
'''Расширение имени файла''' ({{lang-en|filename extension}}, часто говорят просто '''расширение файла''' или '''расширение''') — последовательность символов, добавляемых к имени файла и предназначенных для идентификации типа ([[Формат файла|формата]]) [[файл]]а. Это один из распространённых способов, с помощью которых [[пользователь]] или [[программное обеспечение]] компьютера может определить тип данных, хранящихся в файле. Расширение отделяется от основной части имени файла последней [[Точка (знак препинания)|точкой]]. Иногда могут использоваться несколько расширений, следующих друг за другом, например, «.tar.gz». |
||
ОС или [[менеджер файлов]] могут устанавливать соответствия между расширениями файлов и [[Компьютерная программа|приложениями]]. Когда пользователь открывает файл с зарегистрированным расширением, автоматически запускается соответствующая этому расширению программа. Некоторые расширения могут показывать, что файл является исполняемым (в Windows). |
ОС или [[менеджер файлов]] могут устанавливать соответствия между расширениями файлов и [[Компьютерная программа|приложениями]]. Когда пользователь открывает файл с зарегистрированным расширением, автоматически запускается соответствующая этому расширению программа. Некоторые расширения могут показывать, что файл является исполняемым (в Windows). |
||
== См. также == |
== См. также == |
||
* [[inode]] |
* [[inode]] |
||
== |
== Примечания == |
||
{{примечания}} |
|||
== Литература == |
|||
* {{книга |
* {{книга |
||
|автор = Робачевский А. Н., Немнюгин С. А., Стесик О. Л. |
|автор = Робачевский А. Н., Немнюгин С. А., Стесик О. Л. |
Версия от 20:27, 16 октября 2021
И́мя фа́йла — строка символов, однозначно определяющая файл в некотором пространстве имён файловой системы (ФС), обычно называемом каталогом, директорией или папкой. Имена файлов строятся по правилам, принятым в той или иной файловой и операционной системах (ОС). Многие системы позволяют назначать имена как обычным файлам, так и каталогам и специальным объектам (символическим ссылкам, блочным устройствам и т. п.).
Имя файла является частью полного имени файла, также называемого полным или абсолютным путём к файлу. Полное имя может включать следующие компоненты:
- протокол или способ доступа (
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
[1]
~admin/passwords
для любого пользователя равносильно /home/admin/passwords
[1]
~root/test
для любого пользователя — то же самое, что и /root/test
[1], потому что суперпользователь (root) имеет особый домашний каталог.
Запрещённые символы
Многие операционные системы запрещают использование некоторых служебных символов.
Запрещённые символы Windows (в различных версиях):
\
— разделитель подкаталогов/
— разделитель ключей командного интерпретатора:
— отделяет букву диска или имя альтернативного потока данных*
— заменяющий символ (маска «любое количество любых символов»)?
— заменяющий символ (маска «один любой символ»)"
— используется для указания путей, содержащих пробелы<
— перенаправление ввода>
— перенаправление вывода|
— обозначает конвейер+
— (в различных версиях) конкатенация
Частично запрещённые символы Windows:
- пробел — не допускается в конце имени файла;
.
— не допускается в конце имени файла кроме имён каталогов, состоящих из точек и доступа с префиксом «\\?\».
Символы, вызывающие проблемы в широко распространённых компонентах:
%
— в Windows используется для подстановки переменных окружения в интерпретаторе команд, вызывает проблемы при открытии файла через стандартный диалог открытия файла;!
— в Windows используется для подстановки переменных окружения в интерпретаторе команд, в bash используется для доступа к истории[1];@
— в интерпретаторах команд вызывает срабатывание функций, предназначенных для почты.
В именах файлов UNIX и некоторых UNIX-подобных ОС запрещен слеш (/
) — разделитель подкаталогов — и символ конца C-строки (\0
). Перечисленные выше символы (кроме слеша) использовать можно, но из соображений совместимости их лучше избегать.
Расширение имени файла
Расширение имени файла (англ. filename extension, часто говорят просто расширение файла или расширение) — последовательность символов, добавляемых к имени файла и предназначенных для идентификации типа (формата) файла. Это один из распространённых способов, с помощью которых пользователь или программное обеспечение компьютера может определить тип данных, хранящихся в файле. Расширение отделяется от основной части имени файла последней точкой. Иногда могут использоваться несколько расширений, следующих друг за другом, например, «.tar.gz».
ОС или менеджер файлов могут устанавливать соответствия между расширениями файлов и приложениями. Когда пользователь открывает файл с зарегистрированным расширением, автоматически запускается соответствующая этому расширению программа. Некоторые расширения могут показывать, что файл является исполняемым (в Windows).
См. также
Примечания
- ↑ Вызывает проблему в команде вида . Рабочий вариант команды:
echo "$(ls 'Привет мир!')"
.echo "$(ls 'Привет мир'\!)"
Литература
- Робачевский А. Н., Немнюгин С. А., Стесик О. Л. Имен файлов / Базовая файловая система System V / Глава 4. Файловая система // Операционная система UNIX. — 2-е изд. — СПб.: БХВ-Петербург, 2008. — С. 338—339. — 656 с. — ISBN 978-5-94157-538-1.
Для улучшения этой статьи желательно:
|