Недавно я узнал, что расширения файлов (по крайней мере, для простого текста) в Unix-подобной среде обычно не имеют смысла. Независимо от того, имеет ли сценарий bash .sh, .log, .txt или .hgfjgfdjgd, он все равно может быть запущен, если вы сделаете его исполняемым с помощью chmod +x scriptname .

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

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

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

2 ответа2

6

Расширения файловой системы не имеют никакого значения в ядре Linux.

Однако некоторые приложения (веб-серверы, компиляторы, редакторы, компоновщики) имеют тенденцию использовать расширение файла специально. Вы могли бы заставить компилятор gcc принять некоторый source-file файл с именем файла (или даже bizarre.o или strange.sh) как некоторый исходный файл C , но вам понадобятся некоторые хитрости (опция -x). Также вас неприятно удивят другие люди.

Кстати, вы также можете назвать все ваши файлы как 0001 , 0002 и т.д., Но это не очень удобно для пользователя.

2

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

В Unix/Linux расширения файлов не имеют смысла, когда дело доходит до выполнения файла. Это контролируется исполняемым битом. Интерпретатор языков сценариев указывается в первой строке с использованием пути взрыва, например #!/bin/bash .

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

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

Некоторые инструменты будут использовать magic файлы для определения типа файла на основе содержимого файла. Многие типы файлов содержат magic значения в известных местах, и их можно использовать для надежного угадывания типа файла во многих случаях. Другие инструменты просто откроют файл, предполагая, что это соответствующий файл. Это позволяет воспроизводить текстовые файлы или изображения для редактирования текста, хотя ни один из них не рекомендуется.

В классификациях файлов часто встречаются несовместимые типы, которые обычно указываются расширением:

  • Картинки: BMP, JPEG, GIF, PNG, TIFF ...
  • Видео: mpg, rm, flv, wmv ...
  • Звук: mp3, ogg, wav ...
  • Документы: HTML, TXT, PDF, RTF, документ ...

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

Есть также случаи, когда несколько связанных файлов различаются по расширению. Например, программа foobar написанная на c может быть результатом файлов foobar.c , foobar.h и foobar.o .

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