Расширения файлов не требуются в unices, тем не менее, у каждого файла tar, gzip или bzip, с которым я сталкиваюсь, есть расширение, например .tar
, .tar.gz
или .tgz
.
Есть ли какая-то особая причина для этого или это просто соглашение?
Расширения файлов не требуются в unices, тем не менее, у каждого файла tar, gzip или bzip, с которым я сталкиваюсь, есть расширение, например .tar
, .tar.gz
или .tgz
.
Есть ли какая-то особая причина для этого или это просто соглашение?
Ответы:
Первоначально в системах 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 *
сжатие каждого файла в каталоге, и уже сжатые файлы не будут изменены.
Они могут не нуждаться в расширении, но это, несомненно, облегчает их идентификацию при выводе ls
.
tar
, поэтому ты должен сказать ему, какой у тебя есть архив.
Расширения файлов - это прежде всего соглашение для людей, которые используют систему. Есть инструменты, которые используют расширение имени файла, чтобы делать вещи. Например, Наутилус показывает мне другой значок в зависимости от расширения файла.
Если бы я дал вам файл с именем file
, вы можете не знать, как открыть этот файл. Однако, если бы я дал вам файл с именем file.tar.gz
или file.tar
вы могли бы быстро и легко выяснить это.