Почему файлы tar и gzip обычно имеют расширение файла?

8

Расширения файлов не требуются в unices, тем не менее, у каждого файла tar, gzip или bzip, с которым я сталкиваюсь, есть расширение, например .tar, .tar.gzили .tgz.

Есть ли какая-то особая причина для этого или это просто соглашение?

Злой ученый
источник

Ответы:

17

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

  • Только обычные файлы имеют расширение, а не каталоги или имена устройств. Сам факт наличия каталога или устройства является достаточным указанием типа файла.
  • Исполняемые файлы, которые должны вызываться напрямую, не имеют расширения. Сам факт того, что он исполняемый, является достаточной информацией для пользователя, а ядро ​​не заботится об именах файлов.
  • Файлы , начинающиеся со слова заглавными буквами, часто текстовые файлы, например README, TODO. Иногда есть дополнительная часть , которая указывает на подкатегорию, например INSTALL.linux, INSTALL.solaris.
  • Файлы , чье имя начинается с точки, конфигурации или файлы состояния конкретного приложения, и часто не имеют расширения, например .bashrc, .profile, .emacs.
  • Есть несколько традиционных случаев, например Makefile.

(Это обычные случаи, а не жесткие правила.)

Большинство двоичных форматов файлов также содержат заголовки, которые описывают свойства файла и обычно позволяют идентифицировать формат файла с помощью магических чисел . Команда fileпросматривает эту информацию и показывает свои догадки.

Иногда расширение файла дает больше информации, чем формат файла, иногда это наоборот. Например, многие форматы файлов состоят из zip- архива: библиотеки Java ( .jar), документы OpenOffice ( .odt, ...), документ Microsoft Office ( .docx, ...) и т. Д. Другой пример - файлы исходного кода, где расширение указывает язык программирования, который может компьютеру будет сложно угадать автоматически из содержимого файла. И наоборот, некоторые расширения крайне неоднозначны, например .o, используются для файлов скомпилированного кода ( объектных файлов ), но проверка содержимого файла обычно легко выявляет тип машины и операционную систему, для которой предназначен объектный файл.

Преимущество расширения заключается в том, что его намного быстрее распознать, чем открыть файл и искать магические последовательности. Например, заполнение имен файлов в оболочках почти всегда основано на имени (в основном на расширении), потому что чтение каждого файла в большой директории может занять много времени, тогда как простое чтение имен файлов достаточно быстро для Tabпечати.

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

В случае архивов gzip, gzipне будут повторно сжимать файлы, имя которых заканчивается .gz, .tgzи некоторые другие расширения. Таким образом, вы можете запустить gzip *сжатие каждого файла в каталоге, и уже сжатые файлы не будут изменены.

Жиль "ТАК - перестань быть злым"
источник
1
Директории, содержащие скрипты демонов, также иногда имеют расширение .d, например init.d, cron.d и т. Д.
Lie Ryan
8

Они могут не нуждаться в расширении, но это, несомненно, облегчает их идентификацию при выводе ls.

developmentalinsanity
источник
2
Точно. Обычно нет флага «держи меня за руку, пожалуйста» tar, поэтому ты должен сказать ему, какой у тебя есть архив.
Кевин Канту
3

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

Если бы я дал вам файл с именем file, вы можете не знать, как открыть этот файл. Однако, если бы я дал вам файл с именем file.tar.gzили file.tarвы могли бы быстро и легко выяснить это.

Стефан Ласевский
источник
5
Наутилус использует больше, чем просто расширение файла, чтобы определить тип файла. Файл tar.gz без расширения, как правило, по-прежнему получит причудливый символ.
Стивен Д