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

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

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

использование

Расширения имени файла можно рассматривать как тип метаданные.[2] Они обычно используются для обозначения информации о том, как данные могут храниться в файле. Точное определение, дающее критерии для решения, какая часть имени файла является его расширением, принадлежит правилам конкретного файловая система использовал; обычно расширение - это подстрока, которая следует за последним вхождением, если оно есть, точечный символ (пример: текст это расширение имени файла readme.txt, и html расширение mysite.index.htmlВ файловых системах некоторых систем мэйнфреймов, таких как CMS в ВМ, VMS и компьютерных систем, таких как CP / M и производные системы, такие как MS-DOS, расширение - это отдельный пространство имен от имени файла. Под Microsoft ДОС и Windows, расширения, такие как EXE, COM или же ЛЕТУЧАЯ МЫШЬ указать, что файл является программой исполняемый файл. В OS / 360 и последователи, часть имени набора данных, следующая за последней точкой, рассматривается как расширение некоторым программным обеспечением, например, TSO РЕДАКТИРОВАТЬ, но это не имеет особого значения для самой операционной системы; то же самое относится к файлам Unix в MVS.

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

В VFAT, NTFS, и ReFS файловые системы для Windows также не отделяйте метаданные расширения от остальной части имени файла и разрешайте несколько расширений.

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

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

Улучшения

Расширение имени файла изначально использовалось для определения общего типа файла.[нужна цитата ] Необходимость сжать тип файла в три персонажа часто приводили к сокращенным расширениям. Примеры включают использование .GFX для графических файлов, .ТЕКСТ за простой текст, и .MUS для музыки. Однако из-за того, что было создано множество различных программ, которые обрабатывают эти (и другие) типы данных различными способами, расширения имен файлов начали тесно связываться с определенными продуктами - даже с конкретными версиями продуктов. Например, раннее WordStar используемые файлы .WS или же .WSп, куда п был номером версии программы. Кроме того, были разработаны конфликтующие варианты использования некоторых расширений файлов. Одним из примеров является .rpm, используется как для Менеджер пакетов RPM пакеты и Реальный игрок Медиа-файлы ;.[3] Другие .qif, поделился DESQview шрифты Quicken финансовые книги и QuickTime картинки;[4] .gba, поделился GrabIt скрипты и Game Boy Advance Образы ROM;[5] .sb, используется для SmallBasic и Царапать; и .dts, используется для Dynamix Three Space и DTS.

Некоторые другие операционные системы, которые использовали расширения файлов, обычно имели гораздо более либеральные размеры для имен файлов. Многие разрешали полную длину имени файла 14 или более символов, а максимальная длина имени до 255 не была редкостью. Файловые системы в операционных системах, таких как Мультики и UNIX сохранить имя файла как одну строку, не разделенную на компоненты базового имени и расширения, с помощью символа "." это просто еще один символ, разрешенный в именах файлов. Такие системы обычно допускают использование имен файлов переменной длины, допускающих использование более одной точки и, следовательно, нескольких суффиксов. Некоторые компоненты Multics и UNIX, а также приложения, работающие на них, в некоторых случаях использовали суффиксы для обозначения типов файлов, но они не использовали их так часто - например, исполняемые и обычные текстовые файлы не имели суффиксов в своих именах.

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

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

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

В итоге, Windows 95 представила поддержку длинных имен файлов и удалила разделение имени / расширения 8.3 в именах файлов из не-NT Windows в расширенной версии широко используемого ТОЛСТЫЙ файловая система называется VFAT. VFAT впервые появился в Windows NT 3.5 и Windows 95. Внутренняя реализация длинных имен файлов в VFAT в значительной степени считается кладж[кем? ], но при этом было снято важное ограничение длины и разрешено использовать файлы верхний регистр и нижний регистр буквы на машинах, которые не запускались Windows NT Что ж. Однако использование трехсимвольных расширений в Microsoft Windows продолжалось, первоначально для обратной совместимости со старыми версиями Windows, а теперь по привычке вместе с проблемами, которые это создает.

Проблемы с названием команды

Использование расширения имени файла в имени команды иногда появляется, обычно как побочный эффект команды, реализованной как сценарий, например, для Оболочка Борна или для Python, а имя интерпретатора добавляется к имени команды, практика, распространенная в системах, которые полагаются на связи между расширением имени файла и интерпретатором, но резко устарела[7] в UNIX производные системы, такие как Linux и Apple macOS, где интерпретатор обычно указывается как заголовок в сценарии ("Shebang ").

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

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

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

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

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

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

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

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

Альтернативы

Во многих Интернет протоколы, такие как HTTP и Электронная почта MIME, тип битового потока указывается как тип СМИ или MIME-тип потока, а не расширение имени файла. Это указывается в строке текста, предшествующей потоку, например Тип содержимого: текст / простой.

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

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

Смотрите также

Рекомендации

  1. ^ «Что такое файл?». z / VM, версия 7, выпуск 1, учебник по CMS (PDF). IBM. 2018-09-11. п. 7. SC24-6265-00. Одна вещь, которую вам нужно знать о создании файлов с помощью z / VM, - это то, что каждому файлу нужен собственный трехкомпонентный идентификатор. Первая часть идентификатора - это имя файла. Вторая часть - это тип файла. И третья часть - это файловый режим. Эти три идентификатора файлов часто обозначаются сокращенно fn ft fm.
  2. ^ Стауффер, Тодд; МакЭлхерн, Кирк (2006). Освоение Mac OS X. Джон Вили и сыновья. С. 95–96. ISBN  9780782151282. Получено 2 октября 2017.
  3. ^ Расширение файла .RPM Подробнее с filext.com
  4. ^ Расширение файла .QIF Подробности с filext.com
  5. ^ Расширение файла .GBA Подробнее с filext.com
  6. ^ "javac - компилятор языка программирования Java". Sun Microsystems, Inc. 2004 г.. Получено 2009-05-31. Имена файлов исходного кода должны иметь суффиксы .java, имена файлов классов должны иметь суффиксы .class, и как исходные файлы, так и файлы классов должны иметь корневые имена, которые идентифицируют класс.
  7. ^ Расширения имени команды считаются вредными
  8. ^ "Что такое расширение файла?".

внешняя ссылка