Мне было интересно, зачем нужно помещать исполняемые команды в .sh
файл, чтобы создать один скрипт, поскольку я могу сделать то же самое, поместив команды в .txt
файл и сделав его исполняемым с помощью chmod
.
Я предполагаю, что это может быть сделано с любым из расширений файлов. Таким образом, я совершенно смущен необходимостью .sh
расширения. Любая помощь приветствуется.
.txt
.txt the.txt .txt Суффикс.txt, вы не можете.txt.txt help.txt сами.txt (или .txt anybody.txt еще .txt) понимание.txt что.txt каждый.txt файл.txt is.txt есть.txt для.txt.Ответы:
Как вы правильно выяснили, расширение файла не должно совпадать с чем-то конкретным.
В Unix-подобных системах типы файлов обычно определяются содержимым файла (т. Е. «Магическим числом» или другими характеристическими структурами в первых нескольких байтах), а не их именем. Вы также можете полностью опустить расширение, что часто делается для исполняемых файлов.
Проверьте
file
команду, она показывает вам информацию, которую она может узнать о типе файла из ее содержимого.Для исполняемого скрипта система ожидает так называемый «шебанг» в первой строке, который выглядит, например, как
и указывает, какую программу запустить в качестве интерпретатора с файлом сценария в качестве аргумента. Если вы выполняете текстовый файл без такого шебанга, он будет использовать вашу оболочку по умолчанию, т.е. Bash, чтобы попытаться интерпретировать его.
Таким образом, в системах Unix / Linux расширения имен файлов в основном являются подсказкой (но не гарантией) для пользователя-пользователя, чтобы быстро распознать, что ожидать от конкретного файла. Это также соглашение, которое может помочь, например, найти файлы быстрее.
Обратите внимание, что есть некоторые исключения, когда имя и расширение имеют значение (например, некоторые системные конфигурационные файлы, которые должны следовать соглашению об именах, или многие программы просмотра и редактирования изображений также требуют, чтобы расширение указывало тип файла).
Вы также можете посмотреть, имеет ли расширение файлов какое-либо назначение (для операционной системы)?
источник
В имени файла UNIX / Linux не существует такого понятия, как расширение или тип файла.
Как уже отмечали другие, «тип» можно найти с помощью команды file, предполагая, что соответствующая магия доступна в вашей системе. Имена файлов UNIX / Linux обычно могут содержать любой доступный символ, но часто полезно использовать некоторую форму соглашения для имени, чтобы и люди, и машины могли принимать решения относительно содержимого (и, следовательно, использования содержимого).
В качестве примера я часто использую запятую в качестве первого символа имени файла для обозначения временного файла, а не что-то вроде строки «.tmp» в конце имени файла. Результат тот же, файл, содержащий данные, которые, возможно, требуются только в течение короткого времени, но имя не обязательно должно иметь «.» внутри него ни строки "tmp". Иногда это может иметь преимущества, например, при разборе списка имен файлов. Но это МОЕ соглашение, и кто-то другой может выбрать другое, даже используя ".tmp" в качестве соглашения имени временного файла.
Поэтому я отвечу вам, что не существует такого понятия, как расширение файла UNIX / Linux, а просто набор соглашений, которые обычно выглядят как расширения файлов, используемые в других операционных системах и их файловых системах.
источник
"."
, должны быть расставлены точками в оболочке (они не могут содержательно выполняться в подоболочке). Соответственно, я отключаю стандартное соглашение «исходная точка = скрытый файл» в моих псевдонимах / сценариях, которые используют,ls
чтобы я мог видеть все файлы, включая «скрытые». Аналогично в Windows я отключаю параметр «скрывать расширения файлов».