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

Это не решение Ubuntu, его решение Debian. Это должно поддерживать обратную сопоставимость, по крайней мере до тех пор, пока 1.8.7 не закончится в июне 2012 года (для нормальных исправлений), а затем в июне 2013 года, когда исправления безопасности прекратятся (так что во время обновления он уже EOLed). source и source2. Вы можете установить ruby ​​1.9.2 через пакет ruby1.9.1, поэтому на самом деле это не очень большая сделка - вы также можете настроить псевдоним, чтобы /usr/bin/ruby выполнил /usr/bin/ruby1.9.1. (или один из многих других вариантов)
18
задан 3 May 2018 в 12:06

6 ответов

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

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

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

Для исполняемого скрипта система ожидает в первой строке так называемой «shebang», которая выглядит, например, например

#!/usr/bin/env python3

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

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

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

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

48
ответ дан 22 May 2018 в 11:04
  • 1
    Расширения файлов не имеют значения в оболочке, но в мире GUI-приложений вам в значительной степени нужно, чтобы они делали двойной щелчок, работая правильно. – BallpointBen 2 May 2018 в 03:06
  • 2
    @BallpointBen две точки не связаны. Даже под графическим интерфейсом тип " файла можно хранить вместе, как метаданные, и может инициировать конкретное выполнение, независимо от того, имеет ли это расширение. MacOS не имеет расширений имен файлов и является графическим интерфейсом и очень хорошо выживает ... – Patrick Mevzek 2 May 2018 в 03:54
  • 3
    @PatrickMevzek, как Mac OS не имеет расширений? Я разрешаю показывать их, и все файлы имеют их. Я что-то упускаю ? Я новичок в платформе MacOS – Ciprian Tomoiagă 2 May 2018 в 11:30
  • 4
    @ CiprianTomoiagă вы можете назвать свои файлы так или иначе, как вам нравится, ОС не нуждается в расширении для правильной работы с ними. См. Например: howtogeek.com/192628/… – Patrick Mevzek 2 May 2018 в 16:33
  • 5
    @barbecue нацеливается на самый низкий общий знаменатель ... что может пойти не так с этим :-) (например, атаки через прикрепленные файлы электронной почты, называемые something.com.txt, и трюки, чтобы пропустить .txt как .com как конкретное значение в Windows-land ). Действительно, для обеспечения совместимости расширения файлов могут быть хорошей практикой. Нужно учиться, хотя это явно дефект, введенный DOS в основном и что различные ОС живут в полном довольстве файлами без расширений. – Patrick Mevzek 2 May 2018 в 20:26

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

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

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

Для исполняемого скрипта система ожидает в первой строке так называемой «shebang», которая выглядит, например, например

#!/usr/bin/env python3

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

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

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

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

48
ответ дан 17 July 2018 в 15:33

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

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

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

Для исполняемого скрипта система ожидает в первой строке так называемой «shebang», которая выглядит, например, например

#!/usr/bin/env python3

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

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

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

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

47
ответ дан 23 July 2018 в 16:29

В файле UNIX / Linux отсутствует файл типа «расширение» или «тип».

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

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

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

3
ответ дан 22 May 2018 в 11:04
  • 1
    FWIW, я также использую нестандартную конвенцию для себя. Мои сценарии, чьи имена начинаются с ".", должны быть усеяны оболочкой (они не могут эффективно работать в подоболочке). Соответственно, я отключу «начальный dot = скрытый файл» по умолчанию. в моих псевдонимах / сценариях, которые используют ls, чтобы я мог видеть все файлы, включая «скрытые»; из них. Аналогично, в Windows я отключил «скрытые расширения файлов»; установка. – John Wiersba 3 May 2018 в 23:37

В файле UNIX / Linux отсутствует файл типа «расширение» или «тип».

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

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

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

3
ответ дан 17 July 2018 в 15:33

В файле UNIX / Linux отсутствует файл типа «расширение» или «тип».

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

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

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

3
ответ дан 23 July 2018 в 16:29
  • 1
    FWIW, я также использую нестандартную конвенцию для себя. Мои сценарии, чьи имена начинаются с ".", должны быть усеяны оболочкой (они не могут эффективно работать в подоболочке). Соответственно, я отключу «начальный dot = скрытый файл» по умолчанию. в моих псевдонимах / сценариях, которые используют ls, чтобы я мог видеть все файлы, включая «скрытые»; из них. Аналогично, в Windows я отключил «скрытые расширения файлов»; установка. – John Wiersba 3 May 2018 в 23:37

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

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