Чи мають розширення файлів якусь мету (для операційної системи)?


73

Linux визначає тип файлу за допомогою коду у файлі-заголовку. Це не залежить від розширень файлів, щоб знати, яке програмне забезпечення використовувати для відкриття файлу.

Це я пам’ятаю зі своєї освіти. Будь ласка, виправте мене, якщо я помиляюся!

Робота трохи з системами Ubuntu недавно: Я бачу багато файлів на системах , які мають розширення , такі як .sh, .txt, .o,.c

Зараз мені цікаво: чи призначені ці розширення лише для людей? Тож треба зрозуміти, що це за файл?

Або вони також мають певну мету для операційної системи?


5
Якщо ви не отримаєте хорошої відповіді тут, пам’ятайте, що є також unix.stackexchange.com
mchid

Пов’язані, майже копії: askubuntu.com/questions/390015/…
Zzzach ...


5
У Windows вони є, в Linux / Unix вони, як правило , ні. Основне виняток є компресійної-програмою - gzip, bzip2, xz- і так далі. Ці програми використовують суфікси для відділення стислої версії файлу від нестисненої, яку вони замінюють. Програми стиснення часто скаржаться на неправильний суфікс, навіть якщо файл насправді є стислим файлом того типу, з яким він повинен працювати.
Баард Копперуд

6
Я думаю, що проблема цього питання полягає в тому, що "операційна система" не є чітко визначеною концепцією. Що є частиною операційної системи, а що додатком поверх неї? Не багато частин ОС (про яку ОС ми говоримо) дбають про те, який тип файлу - вони просто роблять те, що їм сказано. Тож відмінності щодо того, як вони знають, не мають значення; вони не роблять жодного. З іншого боку, додатки цілком можуть робити одну чи обидві речі.
IMSoP

Відповіді:


39

Linux визначає тип файлу за допомогою коду в заголовку файлу. Це не залежить від розширень файлів, тому що потрібно знати з програмним забезпеченням, це використовувати для відкриття файлу.

Це я пам’ятаю зі своєї освіти. Будь ласка, виправте мене, якщо я помиляюся!

  • правильно запам'ятав.

Ці розширення призначені лише для людей?

  • Так, але.

Якщо ви взаємодієте з іншими операційними системами, які залежать від того, якими вони є розширення, то розумніша ідея їх використовувати.

У Windows відкрите програмне забезпечення додається до розширень.

Відкриття текстового файлу з ім'ям «файл» в Windows , складніше , ніж відкрити той же файл з ім'ям «file.txt» (вам потрібно буде переключити діалог відкриття файлу з *.txtв *.*кожен раз). Те саме стосується текстових файлів, відокремлених TAB та розділених напівкрапкою. Те саме стосується імпорту та експорту електронної пошти (розширення .mbox).

Зокрема, коли ви кодуєте програмне забезпечення. Відкриття файлу з назвою "software1", що є файлом HTML, та "software2", що є файлом JavaScript, стає складнішим порівняно з "software.html" та "software.js".


Якщо в Linux існує система, де важливі розширення файлів, я б назвав це помилкою. Коли програмне забезпечення залежить від розширення файлів, це корисно. Ми використовуємо директиву інтерпретатора, щоб визначити, що таке файл ("першими двома байтами у файлі можуть бути символи" #! ", Які складають магічне число (шістнадцятковий 23 і 21, значення ASCII" # "і"! " ") часто називають шебангом").

Найвідомішою проблемою з розширеннями файлів була LOVE-LETTER-FOR-YOU.TXT.vbs на Windows. Це візуальний базовий сценарій, який відображається в провіднику файлів у вигляді текстового файлу.

У Ubuntu, коли ви запускаєте файл з Nautilus, ви отримуєте попередження про те, що він буде робити. Виконання сценарію від Nautilus, де він хоче запустити деяке програмне забезпечення, де він повинен відкрити gEdit, очевидно, проблема, і ми отримуємо попередження про це.

У командному рядку, коли щось виконуєте, ви зможете візуально побачити, що таке розширення. Якщо це закінчиться на .vbs, я став би підозрілим (не те, що .vbs виконується в Linux. Принаймні, не без додаткових зусиль;)).


31
Я абсолютно не розумію, що ти хотів сказати у своєму останньому реченні. По-перше, це проблема приховувати розширення, а не мати його, по-друге, експлуатація буде працювати так само в Linux - ви називаєте двійковий файл readme.txtі робите його виконуваним. Якщо користувач його виконав, він не відкриває редактор, але запускає код. У цьому відношенні зробити розширення важливими (але не приховувати їх) є більш безпечним і простішим для пояснення для не кмітливих користувачів. Є й інші відмінності (особливо це не виконання файлів із поточного каталогу), але вони не мають нічого спільного з розширеннями.
techraf

4
@techraf Насправді менеджер файлів , ймовірно, спробує відкрити readme.txtфайл за допомогою текстового редактора. Я щойно спробував з дельфіном у KDE, створивши скрипт оболонки, додавши виконавчий дозвіл, зберігаючи його як .txtі натискаючи на нього, це відкриє його в Kate. Якщо я перейменую його на .shпотім, натиснувши на нього, він запустить його.
Бакуріу

9
linux: оскільки make є побудова навколо правил, які залежать від розширення файлу, чи не зробить це (не призначений для каламбуру) розширеннями, призначеними для більшості людей?
болов

15
Це монументально неправильна відповідь. Деякі частини Linux використовують магічні числа для визначення типів файлів. Виконання файлів у командному рядку. Але інші величезні частини системи використовують розширення файлів, щоб знати, на що звернути увагу, будь то динамічний посилання (який хоче .so файли), modprobe, побудувати системи, плагіни, бібліотеки для python, ruby ​​тощо. Багато файлів не ' не магічні числа, fileзасновані на евристиці, не визначені.
Алан Шутко

3
"Linux визначає тип файлу за допомогою коду в заголовку файлу," "правильного" WTF? Що "код у заголовку файлу"? Такого коду немає, а в Linux немає такого загального "заголовка файлів".
leonbloy

68

Тут немає 100% чорно-білої відповіді.

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

Наприклад, усі файли зображень Bitmap (як правило, з розширенням імені .bmp) повинні починатися з літер BMу перших двох байтах. Сценарії на більшості мов сценарію, такі як Bash, Python, Perl, AWK тощо (в основному все, що стосується рядків, починаючи з #коментаря), можуть містити шебанг, як #!/bin/bashперший рядок. Цей спеціальний коментар повідомляє системі, з якою програмою відкрити файл.

Отже, як правило, операційна система покладається на вміст файлу, а не на його ім'я для визначення типу файлу, але твердження, що розширення файлів ніколи не потрібні для Linux, це лише половина правди.


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

Однак навіть деякі частини операційної системи покладаються на розширення імен файлів, наприклад, при аналізі файлів джерел програмного забезпечення в /etc/apt/sources.list.d/- лише файли з *.listрозширенням розбираються, всі інші ігноруються. Це, можливо, в основному не використовується для визначення типу файлу тут, а для вмикання / відключення розбору деяких файлів, але все ж розширення файлу впливає на те, як система обробляє файл.

І, звичайно, прибуток користувачів людини більшість з розширень файлів , як це робить тип файлу очевидного , а також дозволяє використовувати кілька файли з тією самою основою імені і різні розширення , такими як site.html, site.php, site.js, site.cssрозширення і т.д. Недоліком є те, звичайно , цим файлом і фактичним тип / вміст файлу не обов'язково повинні відповідати.

Крім того, це потрібно для міжплатформової сумісності, наприклад, Windows не знатиме, що робити з readmeфайлом, а лише a readme.txt.


Ви дещо суперечать собі: якщо для перегляду стандартного зображення потрібне ім'я файлу, що закінчується .bmp, яка частина ОС, на яку ви говорите, покладається на вміст файлу, починаючи з "BM"? AFAIK, єдині "магічні числа, про які піклується ядро, - це виконувані типи, включаючи особливий випадок #!. Все інше залежить від рішення якоїсь програми.
IMSoP

@IMSoP Я не знаю точної реалізації eogта не знаю, чому вони взагалі переймаються назвою файлу. На мою думку, це помилка. І звичайно, якщо файл буде названий "bmp", але його формат вмісту не збігається, звичайно, буде також помилка. Звичайно, кожна програма визначає, як перевірити файли, але в цілому додатки Linux не повинні покладатися на ім'я. До речі, ви можете використовувати filecommend для вивчення типів файлів за їх вмістом.
Командир байт

1
Запропоную мені речення таке: "Linux ... визначає тип файлу, вивчаючи перші кілька байтів". Яке визначення поняття "Linux" ви використовуєте в цьому реченні? Про існування fileутиліти насправді нічого не доводить; це корисний інструмент, який може існувати на будь-якій ОС. Яка основна частина ОС робить запуск fileбільш «правильним», ніж глобальний ім'я файлу?
IMSoP

Зауважте, що файли без розширення можуть бути пов’язані з програмою.
isanae

24

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

Це означає, що ви можете створити файл майже з будь-яким вподобаним вами іменем ... за кількома винятками

Однак

Я хотів би додати слово обережності.

Якщо у вашій системі є деякі файли із системи, яка використовує асоціацію імен файлів, вони можуть не мати цих магічних чисел чи заголовків. Розширення імен файлів використовуються для ідентифікації цих файлів додатками, які вміють їх читати, і при перейменуванні таких файлів можуть виникнути несподівані ефекти. Наприклад:

Якщо ви перейменовуєте файл My Novel.docу My-Novel, Libreoffice все одно зможе відкрити його, але він відкриється як "Без назви", і вам доведеться знову назвати його, щоб зберегти його (Libreoffice додає розширення за замовчуванням, тож у вас буде два файли My-Novelі My-Novel.odt, що може дратувати)

Більш серйозно, якщо ви перейменовуєте файл My Spreadsheet.xlsx в My-Spreadsheet, тоді спробуйте відкрити його, xdg-open My-Spreadsheetви отримаєте це (адже це насправді стислий файл):

І якщо перейменувати файл My Spreadsheet.xlsв My-Spreadsheet, коли xdg-open My-Spreadsheetви отримаєте помилку кажучи

помилка відкриття: жодна програма не зареєстрована як обробка цього файлу

(Хоча в обох цих випадках це добре, якщо у вас є soffice My-Spreadsheet)

Якщо потім перейменувати файл без розширень у My-Spreadsheet.odsс mvі спробувати відкрити його, ви отримаєте це:

(ремонт не вдається)

І вам доведеться повернути оригінальне розширення, щоб правильно відкрити файл (ви можете конвертувати формат, якщо бажаєте)

TL; DR:

Якщо у вас є неродні файли з розширеннями імен, не видаляйте розширення, припускаючи, що все буде добре!


4
Новий документ MS Office (docx, xlsx, pptx тощо) без розширення файлів відкривається в диспетчері архівів, оскільки ці типи файлів - це фактично звичайні ZIP-файли, що стискаються, що містять усі XML-документи та мультимедійні файли, необхідні для визначення вмісту документа. Формат файлу стисненого ZIP-файлу в наші дні досить поширений.
Байт командир

1
Вже багато чудових відповідей, але лише одна більш конкретна для ліберфоріз, яку я помітив. Ви створюєте файл розділених комами значень (CSV) і зберігаєте його як "test.csv", відкриється вікно із запитом, який тип роздільника ви використовуєте (тобто, libreoffice Calc). Якщо ви перейменовуєте цей файл у "test.cs", наприклад, тоді Writer libreoffice відкриє його. Отже, крім прикладу ZIP, описаного вище, схоже, що libreoffice використовує розширення файлу.
Рей

3
Файлова система Linux нічого не стосується типів файлів. Це все до програм, що працюють над ним.
Пітер Грін

@PeterGreen Так, але той факт, що програми присвоюють йому значущість, означає, що це не "тільки для людей", наприклад, класичний MacOS мав його [були чотирибайтові "тип файлу" та "додаток для творців", які були " t частина імені файлу, тому ОС і додатки мали всю необхідну інформацію, не дивлячись на розширення файлів]
Random832

3
@PeterGreen Файлова система Windows також нічого не стосується типів файлів. Графічна оболонка (Windows Explorer) використовує розширення файлів для вибору дії для подвійного клацання, але технічно це лише програма, що працює над версією ОС, як і Nautilus. Було б цілком можливо написати менеджер файлів Linux з такою поведінкою або Windows, який вивчав вміст файлу.
IMSoP

20

Я хотів би скористатися іншим підходом до цього, ніж інші відповіді, і оскаржую думку про те, що "Linux" або "Windows" мають щось спільне з цим (майте на увазі).

Концепція розширення файлу може бути просто виражена як "умова щодо визначення типу файлу на основі частини його імені". Інші загальні умови для ідентифікації типу файлу - зіставлення його вмісту з базою даних відомих підписів (підхід «магічне число») та зберігання його як додатковий атрибут у файловій системі (підхід, що використовується в оригінальному MacOS) .

Оскільки кожен файл в ОС Windows або Linux має і ім’я, і вміст, процеси, які хочуть знати тип файлу, можуть використовувати підходи "розширення" або "магічне число", як вони вважають за потрібне. Підхід метаданих зазвичай не доступний, оскільки для більшості файлових систем не існує стандартного місця для цього атрибута.

У Windows існує сильна традиція використання розширення файлу як основного засобу ідентифікації файлу; Найбільш помітно, що браузер графічного файлу (File Manager у Windows 3.1 та Explorer у сучасній Windows) використовує його, коли ви двічі клацніть файл, щоб визначити, яку програму запустити. У Linux (і, загалом, на базі Unix-систем) існує більше традицій щодо огляду вмісту; головне, ядро ​​розглядає початок файлу, який безпосередньо виконується, щоб визначити, як його запустити; Файли сценаріїв можуть вказувати перекладача, який слід використовувати, починаючи з #!наступного шляху до перекладача.

Ці традиції впливають на розробку інтерфейсу програм, написаних для кожної системи, але існує маса винятків, оскільки кожен підхід має плюси і мінуси в різних ситуаціях. Причини використання розширень файлів, а не вивчення вмісту, включають:

  • вивчення вмісту файлів є досить дорогим порівняно з вивченням назв файлів; наприклад, "знайти всі файли з ім'ям * .conf" буде набагато швидше, ніж "знайти всі файли, перший рядок яких відповідає цьому підпису"
  • вміст файлу може бути неоднозначним; багато форматів файлів насправді є лише текстовими файлами, обробленими особливим чином, багато інших - спеціально структуровані поштові файли, і визначення точних підписів для них може бути складним.
  • файл може справді бути дійсним як більше одного типу; HTML-файл також може бути дійсним XML, zip-файл та об'єднаний GIF разом залишаються дійсними для обох форматів
  • відповідність магічного числа може призвести до помилкових позитивних результатів; формат файлу, який не має заголовка, може починатися з байтів "GIF89a" і неправильно визначатись як зображення GIF
  • перейменування файлу може бути зручним способом позначити його як "відключений"; наприклад, змінити "foo.conf" на "foo.conf ~", щоб вказати резервну копію, простіше, ніж редагувати файл, щоб прокоментувати всі його директиви, і зручніше, ніж перемістити його з автоматично завантаженого каталогу; Аналогічно, перейменування .php-файлу в .txt дозволить Apache служити його джерелом як звичайний текст, а не передавати його в двигун PHP

Приклади програм Linux, які використовують імена файлів за замовчуванням (але можуть мати інші режими):

  • gzip та gunzip мають спеціальну обробку будь-якого файлу, що закінчується ".gz"
  • gcc буде обробляти файли ".c" як C, а ".cc" або ".C" як C ++

У Windows також є сильна традиція приховувати розширення, якщо воно "добре відоме", і навіть DOS дозволив команді опускати .COM, .BAT і .EXE, автоматично шукаючи тих, щоб визначити, яку саме програму потрібно виконати. У * nix немає такої традиції.
Monty Harder

Це набагато краща відповідь, але має одну фактичну помилку ... сценарій неможливо зробити виконаним, розмістивши його #!на початку. Будь-який файл із набором виконуваних бітів (файлів) може виконуватися одним із кількох способів. #!/bin/bashта подібні підписи просто вказують, який перекладач використовувати. Якщо такий підпис не надається, передбачається перекладач оболонки за замовчуванням. Файл, що не містить нічого, окрім двох слів «Hello World», але з набором його виконання, спробує знайти команду «Hello» при запуску.
DocSalvager

1
@DocSalvager Хороший улов, це було незграбне формулювання скільки завгодно. Я трохи переробив це, щоб зрозуміти, що shebang не робить сценарій виконуваним, він просто змінює спосіб його виконання.
IMSoP

15

На насправді, деякі технології дійсно покладатися на розширеннях файлів, так що якщо ви використовуєте ці технології в Ubuntu, вам доведеться покладатися на розширеннях теж. Кілька прикладів:

  • gccвикористовує розширення для розмежування файлів C a C ++. Без розширення їх майже неможливо розрізнити (уявіть файл C ++ без класів).
  • багато файлів ( docx, jar, apk) тільки особливо структуровані ZIP архіви. Хоча типово ти можеш зробити висновок із вмісту, це може бути не завжди можливим (наприклад, Java Manifest необов’язковий у jarфайлах).

Не використовувати розширення файлів у таких випадках буде можливим лише за допомогою хакітських методів обходу та, ймовірно, дуже схильних до помилок.


Вам добре за те, що ви згадали про програмування, але ви зрозуміли більшість деталей неправильно. gccє переднім для файлів C, для файлів C ++ вам потрібен або g++перемикач переднього або командного рядка, щоб вказати мову. Більш важливою є makeпрограма, яка вирішує, використовувати gccчи g++будувати певний файл - і makeповністю залежить від шаблонів імен файлів (переважно розширень) для його відповідності правилам.
Бен Войгт

@BenVoigt При компілюванні файлу з .ccрозширенням gcc, він дійсно буде складений як C ++, і це задокументовано в man gcc: "Для будь-якого вхідного файлу суфікс імені файлу визначає, який тип компіляції робиться:" з подальшим списком розширення та спосіб їх лікування.
hvd

1
@hvd Тоді, можливо, це набір бібліотек за замовчуванням, який жахливо помиляється, якщо ви не використовуєте правильний фронт. У будь-якому випадку зробити це головний приклад, тому що все, що він робить, засноване на розширенні файлу.
Бен Войгт

1
@BenVoigt makeє також хорошим прикладом, але gccтак само сильно покладається на назви файлів. Ось приклад, зрозумілий, ніж .cvs .cc: Для C gccвикористовує суфікси, щоб сказати, чи є його першим кроком попередня обробка ( .c), компіляція ( .i), збирання ( .s) або посилання ( .o). Тут я використовую -E, -Sі -cсказати , gccде зупинитися , але він використовує імена файлів , щоб знати , де почати . gcc something.ccне посилається на потрібні бібліотеки для C ++, але він буде розглядати файл як C ++, через що багато користувачів плутаються з повідомленнями про помилки, які вони отримують під час помилки.
Елія Каган

7

Ваше перше припущення правильне: розширення на Linux не мають значення і є корисними лише для людей (та інших ОС, не схожих на Unix, які дбають про розширення). Тип файлу визначається спочатку 32 бітами даних у файлі, який відомий як магічне число. Саме тому скриптам оболонки потрібен #!рядок - сказати операційній системі, якого інтерпретатора потрібно викликати. Без нього скрипт оболонки - це лише текстовий файл.

Що стосується менеджерів файлів, вони хочуть знати розширення деяких файлів, таких як .desktopфайли, які в основному відповідають версії ярликів Window, але мають більше можливостей. Але що стосується ОС, вона повинна знати, що знаходиться у файлі, а не те, що в його назві


3
Це не зовсім так. Є програми, які очікують конкретного розширення. Найпоширеніший приклад - це, мабуть, gunzipякий не розпаковує файл, якщо він не викликається foo.gz.
тердон

Це реалізація конкретного програмного забезпечення. Здебільшого, утиліти в unix-подібних системах не очікують розширення.
Сергій Колодяжний

7
Здебільшого вони ні, ні. Однак ваше перше речення стверджує, що вони ніколи не використовуються і мають значення лише для людини. Це не зовсім так. gunzipє один приклад, eogінший. Крім того, багато інструментів не заповнять автозаповнення імен без потрібного розширення. Я тільки говорю, що це трохи складніше, ніж "розширення завжди не мають значення".
тердон

1
1 невелике питання: ОП запитав про операційну систему. 'gunzip' та 'eog' не є операційною системою, але вирішили створити власні обмеження (у випадку gunzip) або метод (eog). "типи міми", хоча.
Rinzwind

1
@Serg Sure, ви можете вузько визначити ОС і отримати тривіальну відповідь на питання. Однак це не особливо корисна відповідь, оскільки переважна більшість тих, що користувач працює з комп’ютером, включає програмне забезпечення, яке ви виключили. Зауважте, що питання протиставлялося "лише для людей" проти "операційної системи"; Я не думаю, що вони означали "ядро".
IMSoP

6

Це занадто велика для коментаря відповідь.

Майте на увазі, що навіть "розширення" має багато, якщо різні значення.

Те, про що ви говорите, схоже, на 3 букви після. DOS зробив формат 8.3 справді популярним, і Windows до цього часу використовує частину .3.

У Linux є багато файлів, таких як .conf або .list або .d або .c, які мають значення, але насправді не є розширеннями у сенсі 8.3. Наприклад, Apache дивиться на /etc/apache2/sites-enabled/website.conf за його директивою конфігурації. Хоча система використовує типи MIME та заголовки вмісту, а що не визначає, що це текстовий файл, Apache (за замовчуванням) все ще не збирається завантажувати його, не закінчуючи в .conf.

.c - ще один чудовий. Так, це текстовий файл, але gcc залежить від main.c стає main.o і нарешті основним (після посилання). У жодному разі система не використовує розширення .c, .o чи не, щоб вони не мали жодного значення щодо вмісту, але речі після. має певне значення. Ви, ймовірно, налаштуєте свій SCM на ігнорування main.o та main.

Суть полягає в наступному: розширення використовуються не так, як вони є у Windows. Ядро не виконає .txt файл, оскільки ви видалите .txt частину імені. Також дуже радий виконати .txt файл, якщо встановлено дозвіл на виконання. За їх словами, вони мають сенс і досі використовуються на "комп'ютерному рівні" для багатьох речей.


1
Вікна також не прив'язані до x.3схемою іменування більше, ви отримали більше розширень там, а як .doxc, .torrent, .partі т.д. Це просто , що багато форматів файлів і розширення вже були визначені ще в той час , коли 8,3 іменування було ще річ , і пізніше формати здебільшого просто адаптували умову використання до 3 букв.
Байт командир

Я не бачу, як ".conf", ".c" тощо мають "інше значення" від "сенсу 8.3". Поняття розширення файлу може бути просто виражено як "умова для визначення типу файлу на основі частини його імені". Навіть DOS / Win3.1 не потребував правильного розширення (ви можете назвати документ Word "STUPIDN.AME" і відкрити його за допомогою Ctrl-O у WinWord). Просто деякі системи (наприклад, двічі клацніть на Windows, gzipваш Makefile тощо), можуть бути написані, щоб використовувати цю конвенцію, щоб зробити припущення про правильність дій, що потрібно вжити для кожного файлу.
IMSoP

@ByteCommander Це правда, але розширення все-таки визначає використовуваний додаток. Я не впевнений, як відредагувати відповідь, щоб це відобразити.
coteyr

1
@coteyr Знову ж таки, все залежить від того, що ми маємо на увазі під ОС. Файловий менеджер , безумовно , шукати ключ реєстру для «AME», і скаже мені , що «foo.txt» являє собою текстовий файл. Але біг dirу командному рядку не скаже мені такого; це просто не хвилює. Виконання файлів, безумовно, виняток на обох ОС; якщо питання обмежилося лише тими, відповідь полягала б у тому, що DOS / Windows дбає лише про ім'я, а Unix / Linux дбає лише про дозвіл на виконання та перші байти файлу. Крім цього, завжди є якась програма, яка обирає конвенцію, яку слід дотримуватися.
IMSoP

1
@coteyr Ви забули * .scr (бінарні заставки) у Windows 3.1 та новіших версіях. Тим не менше , розширення файлу навіть в системах DOS / Windows , навіть для виконуваних файлів це ще просто зручність. Особливості дуже залежать від того, де ви прорисуєте лінію "операційної системи", але ви завжди можете завантажити бінарне в пам'ять і самостійно стрибати в нього, виконуючи роботу, яку зазвичай вимагає зробити ОС. У MS-DOS, якщо ви подивитеся на command.com, я впевнений, що існує список типу EXE COM, який ви можете редагувати таким чином, щоб він шукав інші розширення, якщо жодне не вказано (не кажучи, що це було б хорошою ідеєю, пам'ятайте).
CVn
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.