6

Я хочу создать файл с именем "message", который содержит только текст. Как система узнает, какую программу использовать для ее чтения, если я решу ее вызвать:

  • message.txt?
  • message.dat?
  • message.enc?
  • message.cpz?
  • message.asdfasdf?
  • message.abcdefghijklmnopqrstuvwxyz?
  • message.this_is_so_random?
  • или просто «сообщение» без расширения?

Мне было интересно это для текстовых файлов, но как насчет файлов, которые содержат видео и аудио?

4 ответа4

7

Linux (/Ubuntu) не зависит от расширения файла, как Windows. Каждый файл имеет часть внутри, где он идентифицирует себя относительно того, что это такое. Чтобы показать, что такое случайный файл, у нас есть командный file . Несколько случайных примеров:

$ file *
Aptana Studio 3:       directory
Create ubuntu live cd: ASCII English text, with very long lines
1.txt:      empty
gedit_open: Bourne-Again shell script text executable

Вы также можете найти mimetype из командной строки:

$ file --mime-type -b 1.txt 
application/x-empty
$ file --mime-type -b gedit_open 
text/x-shellscript

У нас есть ~/.local/share/applications/mimeapps.list где вы можете связать программы с расширением. Вы можете установить те из них, которые open with внутренними properties файла при использовании Nautilus или с помощью командной строки (см. Https://askubuntu.com/questions/46020/how-to-add-a-mime-type-with- a-project-made-in-быстро )

Таким образом, вы можете делать с именем файла все, что хотите, но я бы предложил использовать для него, например, .conf если он содержит параметры конфигурации, но это строго для human понимания. Поскольку вам, как правило, нужно execute файл, чтобы он был связан с программой, установленной для этого mimetype, и вы обычно устанавливаете разрешение для неисполняемого файла, это не проблема.

4

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

Однако некоторые программы ожидают, что их файлы будут иметь определенное расширение - это обычно имеет большее значение в графической среде - то есть диалоги «Открыть файл» фильтруют их содержимое по расширению, или диалоговое окно «Сохранить файл» может угадать, в каком формате сохранять файл, в соответствии с каким пользователем расширения. предоставлена.

В Windows использование произвольных расширений может быть немного сложнее из-за способа работы диалогов Open и Save, но все же вы можете иметь текстовый файл с расширением .kjhkhkj

Относительно того, «как система решает, какую программу использовать»: вы говорите это. В терминале вы вызываете программу и даете ей имя файла:

gedit message.kjhkjhkj

и он будет открыт в Gedit

В Nautilus вы щелкаете правой кнопкой мыши по файлу и выбираете «Открыть с помощью ...», где вы можете указать программу. Также возможно сделать эту ассоциацию постоянной, чтобы файлы .kjhkhkj всегда открывались с помощью gedit.

В Windows процедура аналогична, хотя Windows, как правило, больше полагается на известные расширения файлов (т. Е. Видеофайлы будут иметь миниатюры предварительного просмотра в Ubuntu независимо от их расширения, для Windows необходимо, чтобы они имели одно из известных расширений (.avi, .mov и т.д.)

3

И да и нет. В Windows расширение типа файла используется для определения того, что открывает файл. если вы переименуете все ваши mp3s .tomato, Windows не будет знать, что с ними делать, если вы не назначите программу, которая может открывать mp3s по умолчанию для открытия .tomato, или вы специально открыли файл с ним.

* никсы используют магические числа для той же цели, поэтому они не заботятся о расширении

0

Также некоторые приложения, такие как grep, которые по-разному обрабатывают файлы, пытаются угадать, что это за содержимое, потому что они могут по-разному обрабатывать его. Мой пример grep игнорирует расширение (я думал, что простой текст .log был двоичным), но некоторые приложения (например, Nautilus) предпочитают использовать расширение для предположения.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .