Расширения файлов для сценариев unix shell

В википедии статья для .sh гласит:

Для типа расширения файла .sh см. Оболочка Bourne .

Как насчет других оболочек unix?

Я знаю, что shebang используется внутри файла для указания интерпретатора для выполнения, но мне интересно:

  • Каковы хорошие практики для расширений файлов для скриптов оболочки unix?
  • Обычно ли скрипты оболочки заканчиваются на .sh независимо от того, в какой оболочке они работают?
  • Существуют ли какие-либо другие распространенные расширения файлов для сценариев unix shell?

7 Solutions collect form web for “Расширения файлов для сценариев unix shell”

Я бы назвал только .sh что-то, что предназначено для переносимости (и, надеюсь , переносится).

В противном случае я думаю, что лучше скрыть язык. В любом случае осторожный читатель найдет его в линии shebang. (На практике, .bash или .zsh и т. Д. Редко используются.)

Я бы сказал, что никаких «хороших практик» для расширений файлов не существует, строго по техническим причинам: файловые системы Unix / Linux / * BSD не поддерживают расширения как таковые. То, что вы называете расширением, является просто суффиксом одного имени файла. Другое дело, что файловые системы VM / CMS, VMS, MS-DOS и Windows и ОС, где особое место в inode-моральном эквиваленте зарезервировано для расширения.

Это немного напыщенная речь, я думаю, что немного глупо помещать суффикс «.sh» или «.ksh» или «.bash» в имя файла сценария оболочки. Программа – это программа: нет никакой пользы в отличии от того, что выполняется. Никакие unix или linux или другое ядро ​​не решили вызвать интерпретатор в каком-либо файле только из-за суффикса имени файла. Все это сделано #! строка или какая-либо другая «магическое число» последовательность байтов в начале файла. Фактически, решение о том, что выполнять на основе имени файла «расширение», является одним из факторов, делающих Windows магнитом вредоносного ПО. Посмотрите, сколько мошеннических вредоносных программ для Windows связано с файлом с именем «something.jpg.exe» – по умолчанию более новые Windows не показывают расширение «.exe» и рекомендуют пользователю просто дважды щелкнуть «изображение». Вместо запуска изображения выполняется вредоносное ПО.

То, что вы могли бы подумать о команде с прямым движением, часто является сценарием оболочки. Иногда cc был sh-скриптом, firefox – sh-script, startx – это sh-script. Я не верю, что есть когнитивная или организационная польза для обозначения скрипта суффиксом «.sh».

Как тот, кто работал во многих средах, мне пришлось писать в самых разных оболочках. Верьте или нет, через платформы, оболочки не то же самое. Поэтому, если вы сохраняете свою личную библиотеку в нескольких оболочках (при необходимости), очень полезно использовать расширения для ID оболочек. Таким образом, когда вы переходите на другую платформу, а оболочка немного отличается, вы знаете, какие сценарии предназначены для модификаций. .sh .ksh .bsh .csh …

Как вы сказали, расширения файлов Unix являются чисто информацией. Вам просто нужен ваш скрипт, чтобы иметь правильный shebang и быть исполняемым.

Вы можете либо не иметь расширения, либо использовать .sh .

Я лично использую следующие соглашения, независимо от используемой оболочки (csh, tcsh, bash, sh, …):

  • нет расширения для системных или высококачественных скриптов (крайне редко).
  • .sh для классических скриптов, от низкого до высокого.

Расширения сценариев оболочки весьма полезны. Например, я часто пишу сценарии с несколькими файлами на нескольких языках (например, bash, awk и lua) в том же каталоге. Если мне нужно искать строку только в файлах bash, расширение делает это очень удобно, чтобы уменьшить ложные срабатывания. Или если я хочу сделать подсчет строк для всего моего кода bash для этого проекта.

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

Вы не должны использовать расширение для исполняемых файлов, так как они не являются взаимозаменяемыми. Представьте, что у вас есть сценарий оболочки a.sh , а затем a.sh в python a.py , теперь вам нужно изменить каждую программу, которая вызывает ваш скрипт, у вас есть утечка информации о реализации.

Вся вещь расширения имени файла в Windows a.audio, b.audio, c.audio – это беспорядок: например, что могло быть a.audio, b.audio, c.audio , могло a.mp3, b.wav, c.ogg и d.picture, e.picture, f.pictured.jpeg, e.png, f.gif . В большинстве случаев нам неважно, в каком формате находится звук или изображение. Нам также приходится долгое время обучать новых пользователей всем расширениям файлов.

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

  • Как удалить количество строк из файла повторно
  • Как я могу обернуть сложную команду сценарием оболочки?
  • Совместное использование переменных в сценариях подшивки
  • Как использовать входной файл неточных файлов для операции?
  • Как я могу отредактировать редактируемый результат?
  • Перемещение по вложенным папкам с использованием сценария bash
  • bash ест мою строку
  • bash как перенаправить вывод из функции в / dev / null
  • Скрипт командной строки с использованием строки
  • Выход из бесконечного цикла перезагрузки при запуске (rc.local)
  • Вычитание времени Bash
  • Linux и Unix - лучшая ОС в мире.