Почему бы не сделать .txt исполняемый файл файла вместо .sh файла для запущения скриптов?

Я задавался вопросом, что является потребностью вставить исполняемые команды a .sh файл для создания единственного сценария, так как я могу сделать то же путем вставления команд a .txt файл и создание его исполняемое использование chmod.

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

18
задан 3 May 2018 в 02:06

2 ответа

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

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

Проверьте file команда, это показывает Вам информацию, которую это может узнать о типе файла от его содержания.

Для исполняемого сценария система ожидает так называемую "хижину" в первой строке, которая смотрит, например, как

#!/usr/bin/env python3

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

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

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

Можно ли также взглянуть на расширения файла, имеют какую-либо цель (для операционной системы)?

47
ответ дан 23 November 2019 в 02:05

В имени файла UNIX / Linux не существует такого понятия, как расширение или тип файла.

Как уже отмечали другие, «тип» можно найти с помощью команды file, предполагая, что соответствующая магия доступна в вашей системе. Имена файлов UNIX / Linux обычно могут содержать любой доступный символ, но часто полезно использовать некоторую форму соглашения для имени, чтобы и люди, и машины могли принимать решения относительно содержимого (и, следовательно, использования содержимого).

В качестве примера, я часто использую запятую в качестве первого символа имени файла для обозначения временного файла, вместо того, чтобы использовать что-то вроде строки «.tmp» в конце имени файла. Результат тот же, файл, содержащий данные, которые, возможно, требуются только в течение короткого времени, но имя не обязательно должно иметь «.» внутри него ни строки "tmp". Это может иногда иметь преимущества, например при разборе списка имен файлов. Но это МОЕ соглашение, и кто-то другой может выбрать другое, даже используя ".tmp" в качестве соглашения для имени временного файла.

Поэтому я отвечу вам, что не существует такого понятия, как расширение файла UNIX / Linux, а просто набор соглашений, которые обычно выглядят как расширения файлов, используемые в других операционных системах и их файловых системах.

3
ответ дан 23 November 2019 в 02:05

Другие вопросы по тегам:

Похожие вопросы: