Jump to content

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

(Перенаправлено из суффикса имени файла )

Расширение имени файла , расширение имени файла или расширение файла — это суффикс имени компьютерного файла ( например, .txt, .docx, .md). Расширение указывает на характеристику содержимого файла или его предполагаемое использование. Расширение имени файла обычно отделяется от остальной части имени файла точкой ( точкой), но в некоторых системах [1] оно разделено пробелами.

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

Поддержка операционной системы и файловой системы

[ редактировать ]

Файловая система Multics хранит имя файла в виде одной строки, не разделенной на базовое имя и компоненты расширения, что позволяет использовать "." быть просто еще одним символом, разрешенным в именах файлов. Он позволяет использовать имена файлов переменной длины, допуская более одной точки и, следовательно, несколько суффиксов, а также отсутствие точки и, следовательно, отсутствие суффикса. Некоторые компоненты Multics и приложения, работающие на нем, используют суффиксы для обозначения типов файлов, но не все файлы обязаны иметь суффикс — например, исполняемые файлы и обычные текстовые файлы обычно не имеют суффиксов в своих именах.

Файловые системы для UNIX-подобных операционных систем также хранят имя файла в виде одной строки с "." как еще один символ в имени файла. Иногда говорят, что файл с более чем одним суффиксом имеет более одного расширения, хотя терминология в этом отношении различается, и большинство авторов определяют расширение таким образом, чтобы не допускать более одного расширения в одном и том же имени файла. [ нужна ссылка ] Более одного расширения обычно представляют собой вложенные преобразования, например files.tar.gz ( .tar указывает, что файл представляет собой tar-архив из одного или нескольких файлов, а .gz указывает, что файл архива tar сжат с помощью gzip ). Программы, преобразующие или создающие файлы, могут добавлять соответствующее расширение к именам, полученным из имен входных файлов (если явно не указано имя выходного файла), но программы, читающие файлы, обычно игнорируют эту информацию; он в основном предназначен для пользователя-человека. Чаще всего, особенно в двоичных файлах, файл содержит внутренние или внешние метаданные, описывающие его содержимое.Эта модель обычно требует указания полного имени файла в командах, тогда как подход с метаданными часто позволяет опустить расширение.

В DOS и 16-разрядной версии Windows имена файлов содержат максимум 8 символов, точку и расширение до трех букв. Файловая система FAT для DOS и Windows хранит имена файлов в виде 8-значного имени и трехзначного расширения. Символ точки не сохраняется.

Высокопроизводительная файловая система (HPFS), используемая в Microsoft и IBM от OS/2 , хранит имя файла в виде одной строки с добавлением "." символ как еще один символ в имени файла. Соглашение об использовании суффиксов сохранилось, хотя HPFS поддерживает расширенные атрибуты файлов, позволяя хранить тип файла в файле как расширенный атрибут.

Microsoft Windows NT Собственная файловая система , NTFS и более поздняя ReFS , также хранят имя файла в виде одной строки; Опять же, соглашение об использовании суффиксов для имитации расширений сохранилось для совместимости с существующими версиями Windows. В Windows NT 3.5 вариант файловой системы FAT, названный VFAT появился ; он поддерживает более длинные имена файлов, причем имя файла рассматривается как одна строка.

В Windows 95 с VFAT появилась поддержка длинных имен файлов и удалено разделение имени и расширения 8.3 в именах файлов из Windows, отличных от NT.

Классическая Mac OS полностью избавлялась от метаданных расширений на основе имени файла; вместо этого он использовал отдельный код типа файла для идентификации формата файла. Кроме того, был указан код создателя файла значку по , определяющий, какое приложение будет запускаться при двойном щелчке . [2] macOS , однако, использует суффиксы имен файлов как следствие UNIX-подобной операционной системы NeXTSTEP , а также использует коды типа и создателя.

В системах Commodore файлы могут иметь только четыре расширения: PRG, SEQ, USR, REL. Однако они используются для разделения типов данных, используемых программой, и не имеют значения для идентификации их содержимого.

С появлением графических пользовательских интерфейсов возникла проблема управления файлами и поведением интерфейса. Microsoft Windows позволяла связать несколько приложений с определенным расширением, и для выбора необходимого приложения были доступны различные действия, такие как контекстное меню, предлагающее выбор между просмотром, редактированием или печатью файла. По-прежнему предполагалось, что любое расширение представляет один тип файла; между расширением и значком было однозначное сопоставление.

Когда только наступила эпоха Интернета , пользователям систем Windows, которые все еще были ограничены форматами имен файлов 8.3, приходилось создавать веб-страницы с именами, оканчивающимися на .HTM, а те, кто использует компьютеры Macintosh или UNIX, могут использовать рекомендуемую .html расширение имени файла. Это также стало проблемой для программистов, экспериментирующих с языком программирования Java , поскольку он требует четырехбуквенного суффикса .java для файлов исходного кода и пятибуквенный суффикс .class для компилятора выходных файлов объектного кода Java . [3]

Тип контента

[ редактировать ]

Расширения имен файлов можно рассматривать как тип метаданных . [4] Они обычно используются для обозначения информации о том, как данные могут храниться в файле. Точное определение, дающее критерии определения того, какая часть имени файла является его расширением, принадлежит правилам конкретной файловой системы используемой ; обычно расширением является подстрока, которая следует за последним появлением точки, если таковая имеется ( пример : txt это расширение имени файла readme.txt, и html расширение index.html).В файловых системах некоторых мэйнфреймов, таких как CMS в VM , VMS , а также в системах ПК, таких как CP/M , и производных системах, таких как MS-DOS , расширение представляет собой отдельное пространство имен от имени файла. В Microsoft DOS и Windows такие расширения, как EXE, COM или BAT указывают, что файл является исполняемым файлом программы . В OS/360 и его преемниках часть имени набора данных, следующая за последней точкой, называемая квалификатором низкого уровня, обрабатывается некоторым программным обеспечением, например TSO EDIT, как расширение, но не имеет особого значения для самой операционной системы; то же самое относится и к файлам Unix в MVS.

Расширение имени файла изначально использовалось для определения общего типа файла. [ нужна ссылка ] Необходимость свести тип файла к трем символам часто приводила к сокращенным расширениям. Примеры включают использование .GFX для графических файлов, .TXT для обычного текста и .MUS для музыки. Однако, поскольку было создано множество различных программ, которые обрабатывают эти (и другие) типы данных по-разному, расширения имен файлов стали тесно ассоциироваться с определенными продуктами — даже с конкретными версиями продуктов. Например, ранние WordStar использовали файлы .WS или .WSn, где n — номер версии программы. Кроме того, возникло противоречивое использование некоторых расширений имен файлов. Одним из примеров является .rpm, используется как для RPM Package Manager пакетов , так и для файлов RealPlayer Media;. [5] Другие .qif, общий для DESQview шрифтов , финансовых регистров Quicken и QuickTime ; изображений [6] .gba, общий для скриптов GrabIt и Game Boy Advance ; образов ПЗУ [7] .sb, используется для SmallBasic и Scratch ; и .dts, используется для Dynamix Three Space и DTS .

По сравнению с типом MIME

[ редактировать ]

Во многих интернет- протоколах, таких как электронная почта HTTP и MIME , тип битового потока указывается как тип носителя или тип MIME потока, а не как расширение имени файла. Это указывается в строке текста, предшествующей потоку, например Content-type: text/plain .

Не существует стандартного сопоставления между расширениями имен файлов и типами носителей, что приводит к возможным несоответствиям в интерпретации между авторами, веб-серверами и клиентским программным обеспечением при передаче файлов через Интернет. Например, автор контента может указать расширение svgz для сжатого файла масштабируемой векторной графики , но веб-сервер, который не распознает это расширение, может не отправить правильный тип контента application/svg+xml и требуемый заголовок сжатия, оставив веб-браузеры не в состоянии правильно интерпретировать и отобразить изображение.

BeOS , чья файловая система BFS поддерживает расширенные атрибуты, помечает файл его типом носителя как расширенный атрибут. Некоторые среды рабочего стола , такие как KDE и GNOME , связывают тип носителя с файлом, проверяя как суффикс имени файла, так и содержимое файла, подобно команде file , в качестве эвристического метода . Они выбирают приложение для запуска при открытии файла на основе этого типа носителя, уменьшая зависимость от расширений имен файлов. macOS использует как расширения имен файлов, так и типы носителей, а также коды типов файлов , чтобы выбрать универсальный идентификатор типа , по которому можно идентифицировать тип файла внутри.

Исполняемые программы

[ редактировать ]

Использование расширения имени файла в имени команды появляется время от времени, обычно как побочный эффект того, что команда была реализована в виде сценария, например, для оболочки Bourne или для Python , а имя интерпретатора добавляется к имени команды, практика, распространенная в системах, которые полагаются на ассоциации между расширением имени файла и интерпретатором, но резко устарела [8] в Unix-подобных системах, таких как Linux , Oracle Solaris , системы на базе BSD Apple и macOS , где интерпретатор обычно указывается в виде заголовка в сценарии (« shebang »).

В системах на основе ассоциаций расширение имени файла обычно сопоставляется с одним общесистемным выбором интерпретатора для этого расширения (например, «.py», что означает использование Python), а сама команда может быть запущена из командной строки, даже если расширение опущено (при условии, что соответствующая настройка выполнена). Если язык реализации изменяется, расширение имени команды также изменяется, и ОС предоставляет согласованный API , позволяя использовать одну и ту же версию команды без расширения в обоих случаях. Этот метод несколько страдает от по существу глобального характера сопоставления ассоциаций, а также от того, что разработчики не полностью избегают расширений при вызове программ и что разработчики не могут принудительно этого избежать. Windows — единственный оставшийся широко распространенный поставщик этого механизма.

В системах с директивами интерпретатора , включая практически все версии Unix, расширения имен команд не имеют особого значения и в стандартной практике не используются, поскольку основной метод установки интерпретаторов для сценариев состоит в их запуске с одной строки, определяющей интерпретатор, который будет использоваться. use (которое можно рассматривать как вырожденную вилку ресурса ). В этих средах включение расширения в имя команды без необходимости раскрывает детали реализации, что подвергает все ссылки на команды из других программ будущему риску в случае изменения реализации. Например, было бы совершенно нормально, если бы сценарий оболочки был переопределен на Python или Ruby, а затем на C или C++, и все это изменило бы имя команды, если бы использовались расширения. Без расширений программа всегда имеет одно и то же имя без расширения, меняется только директива интерпретатора и/или магическое число , а ссылки на программу из других программ остаются действительными.

Проблемы безопасности

[ редактировать ]

По умолчанию проводник файлов , браузер файлов, входящий в состав Microsoft Windows , не отображает расширения имен файлов. Злоумышленники пытались распространять компьютерные вирусы и компьютерных червей , используя имена файлов, сформированные следующим образом: LOVE-LETTER-FOR-YOU.TXT.vbs. Есть надежда, что это будет выглядеть как LOVE-LETTER-FOR-YOU.TXT, безвредный текстовый файл, не предупреждающий пользователя о том, что это вредоносная компьютерная программа, в данном случае написанная на VBScript . Поведением по умолчанию для ReactOS является отображение расширений имен файлов в ReactOS Explorer .

Более поздние версии Windows (начиная с Windows XP Service Pack 2 и Windows Server 2003 ) включали настраиваемые списки расширений имен файлов, которые следует считать «опасными» в определенных «зонах» работы, например, при загрузке из Интернета или получении по электронной почте. почтовое вложение. Современные системы антивирусного программного обеспечения также помогают защитить пользователей от таких попыток атак, где это возможно.

Некоторые вирусы используют сходство между « .com » доменом верхнего уровня и расширением имени файла «.COM» , отправляя по электронной почте вредоносные вложения исполняемых командных файлов под именами, внешне похожими на URL-адреса ( например , «myparty.yahoo.com» ), в результате чего ничего не подозревающие пользователи нажимают на встроенные в электронную почту ссылки, которые, по их мнению, ведут на веб-сайты, но на самом деле загружают и запускают вредоносные вложения.

Были случаи вредоносного ПО, созданного для использования уязвимостей в некоторых приложениях Windows, которые могли вызвать переполнение стекового буфера при открытии файла со слишком длинным необработанным расширением имени файла.

Расширение имени файла — это всего лишь маркер, и содержимое файла не обязательно должно совпадать с ним. [9] Это можно использовать для маскировки вредоносного контента. Поэтому при попытке идентифицировать файл по соображениям безопасности считается опасным полагаться только на расширение, и предпочтительнее провести надлежащий анализ содержимого файла. Например, в UNIX-подобных системах нередко можно найти файлы вообще без расширений, например, такие команды, как file предназначены для использования вместо этого и будут читать заголовок файла, чтобы определить его содержимое.

См. также

[ редактировать ]
  1. ^ «Что такое файл?» (PDF) . Учебное пособие по z/VM 7.2 CMS (PDF) . ИБМ. 05.12.2021. п. 7. СК24-6265-01. При создании файлов с помощью z/VM вам необходимо знать одну вещь: каждому файлу необходим собственный идентификатор, состоящий из трех частей. Первая часть идентификатора — это имя файла. Вторая часть — это тип файла. И третья часть — файловый режим. Эти три идентификатора файла часто обозначаются сокращением fn ft fm.
  2. ^ «Коды Mac Creator и типов файлов» . livecode.byu.edu . Проверено 2 сентября 2022 г.
  3. ^ «javac – компилятор языка программирования Java» . Сан Микросистемс, Инк. 2004 г. Проверено 31 мая 2009 г. Имена файлов исходного кода должны иметь суффиксы .java, имена файлов классов должны иметь суффиксы .class, а файлы исходного кода и файлов классов должны иметь корневые имена, идентифицирующие класс.
  4. ^ Стауффер, Тодд; МакЭлхирн, Кирк (2006). Освоение Mac OS X. Джон Уайли и сыновья. стр. 95–96. ISBN  9780782151282 . Проверено 2 октября 2017 г.
  5. ^ Расширение файла .RPM. Подробности с сайта filext.com.
  6. ^ Расширение файла .QIF. Подробности с сайта filext.com.
  7. ^ Расширение файла .GBA. Подробности с сайта filext.com.
  8. ^ Расширения имен команд считаются вредными
  9. ^ «Что такое расширение файла?» .
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 52e4140096029d58ca83df53cd7b6a4a__1722203460
URL1:https://arc.ask3.ru/arc/aa/52/4a/52e4140096029d58ca83df53cd7b6a4a.html
Заголовок, (Title) документа по адресу, URL1:
Filename extension - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)