Кіріспе

Файл атауының жұрнағы файлдың типін көрсететін қосымша болып табылады.

Файл атауының кеңейтімі, файлдың кеңейтімі немесе файл жұрнағы – компьютерлік файл атауының соңына қосылатын жұрнақ (мысалы, txt, docx, md). Бұл кеңейтім файлдың мазмұнының сипаттамасын немесе оның қызметтік мақсатын көрсетеді. Файл атауының кеңейтімі әдетте файл атауының қалған бөлігінен нүкте арқылы бөлінеді, бірақ кейбір жүйелерде кеңейтім бос орынмен бөлінуі мүмкін. Кейбір файлдық жүйелер файл атауының кеңейтімін жүйенің өзіне тән мүмкіндік ретінде іске асырады және кеңейтімнің ұзындығы мен форматын шектеуі мүмкін, ал басқалары файл атауының кеңейтімін файл атауының бір бөлігі ретінде қарастырады, ерекше айырма жасамайды.

Операциялық жүйе мен файл жүйесін қолдау

Multics файлдық жүйесі файл атауын бір жол ретінде сақтайды, негізгі атау мен кеңейтімге бөлінбейді, соның арқасында "." символы файл атауларында рұқсат етілген тағы бір символ болады. Ол өзгермелі ұзындықтағы файл атауларын қолдайды, бірнеше нүктені, демек, бірнеше жұрнақты, сондай-ақ нүктенің болмауын, демек, жұрнақтың болмауын қамтиды. Multics жүйесінің кейбір бөлімдері мен оның үстінде жұмыс істейтін бағдарламалар файл түрлерін көрсету үшін жұрнақтарды пайдаланады, бірақ барлық файлдарда жұрнақ болуы міндетті емес. Мысалы, атқарылатын файлдар мен қарапайым мәтіндік файлдардың атауларында көбінесе жұрнақтар болмайды. UNIX сияқты операциялық жүйелердегі файлдық жүйелер де файл атауын бір жол ретінде сақтайды, "." символы файл атауындағы тағы бір символ ретінде қолданылады. Бірнеше жұрнағы бар файлдың бірнеше кеңейтімі бар деп айтылады, бірақ терминология осы мәселеде әртүрлі, ал көптеген авторлар кеңейтімді бір файл атауында біреуден көп болуына рұқсат етілмейтіндей етіп анықтайды. Бірнеше кеңейтім көбінесе файлдар сияқты ұялы түрлендірулерді білдіреді, мысалы, tar.gz (tar файл бір немесе бірнеше файлдан тұратын tar архиві екенін көрсетеді, ал gz tar архив файлының gzip көмегімен сығылғанын көрсетеді). Файлдарды түрлендіретін немесе жасайтын бағдарламалар кіріс файл атауларынан алынған атауларға тиісті кеңейтімді қосуы мүмкін (егер шығыс файл атауы нақты көрсетілмесе), бірақ файлдарды оқитын бағдарламалар әдетте осы ақпаратты елемейді; ол көбінесе пайдаланушыға арналған. Көбінесе, әсіресе екілік файлдарда, файлдың мазмұнын сипаттайтын ішкі немесе сыртқы метадеректерді қамтуы жиі кездеседі. Бұл модель әдетте командаларда толық файл атауын беруді талап етеді, ал метадеректер әдісі көбінесе кеңейтімді алып тастауға мүмкіндік береді. DOS және 16 биттік Windows жүйелерінде файл атауларында ең көп дегенде 8 символ, нүкте және 3 символдан тұратын кеңейтім болуы мүмкін. DOS және Windows жүйелері үшін FAT файлдық жүйесі файл атауларын 8 символдан тұратын атау және 3 символдан тұратын кеңейтім ретінде сақтайды. Нүкте символы сақталмайды. Microsoft және IBM-нің OS/2 жүйесінде қолданылатын жоғары өнімділік файлдық жүйесі (HPFS) файл атауын "." символы файл атауындағы тағы бір символ ретінде бір жол ретінде сақтайды. Жұрнақтарды пайдалану салты жалғасты, тіпті HPFS файлдар үшін кеңейтілген атрибуттарды қолдайды, бұл файлдың түрін файлда кеңейтілген атрибут ретінде сақтауға мүмкіндік береді. Microsoft-тың Windows NT жүйесінің түпкілікті файлдық жүйесі, NTFS және кейінірек ReFS де файл атауын бір жол ретінде сақтайды; тағы да, кеңейтімдерді имитациялау үшін жұрнақтарды пайдалану салты қолданыстағы Windows нұсқаларымен үйлесімділік үшін жалғасты. Windows NT 3.5 жүйесінде VFAT деп аталатын FAT файлдық жүйесінің нұсқасы пайда болды; ол ұзақ файл атауларын қолдайды, файл атауы бір жол ретінде қарастырылады. Windows 95 VFAT жүйесімен бірге ұзақ файл атауларын қолдауға кірісті және NT емес Windows жүйелерінен файл атауларындағы 8.3 атау/кеңейтім бөлінісін жойды. Классикалық Mac OS файл атауына негіделген кеңейтім метадеректерін толығымен жойды; оның орнына файл пішімін анықтау үшін файл түрінің ерекше кодын қолданды. Сонымен қатар, файлдың белгішесін екі рет шерту арқылы қандай бағдарлама іске қосылатынын анықтау үшін жасаушы коді келтірілді. macOS, алайда, UNIX сияқты NeXTSTEP операциялық жүйесінен алынғандықтан файл атауының жұрнақтарын қолданады, сондай-ақ типтік және жасаушы кодтарын пайдаланады. Commodore жүйелерінде файлдарда тек төрт кеңейтім болуы мүмкін: PRG, SEQ, USR, REL. Алайда, олар бағдарлама қолданатын дерек түрлерін бөліп алу үшін қолданылады және олардың мазмұнын анықтау үшін маңызды емес. Графикалық пайдаланушы интерфейстерінің пайда болуымен файлдарды басқару және интерфейс мінез-құлқы мәселесі туындады. Microsoft Windows бірнеше бағдарламаларды белгілі бір кеңейтіммен байланыстыруға мүмкіндік берді және қажетті бағдарламаны таңдау үшін әртүрлі әрекеттер қол жетімді болды, мысалы, файлды қарау, өңдеу немесе басып шығару арасында таңдауды ұсынатын контексттік мәзір. Кез келген кеңейтім бір файл түрін білдіреді деген болжам әлі де болды; кеңейтім мен белгіше арасында біркелкі сәйкестік болды. Интернет дәуірі алғаш келген кезде Windows жүйелерін қолданатындар әлі де 8.3 файл атаулары пішімімен шектелген веб-беттерді HTM кеңейтімімен құруға мәжбүр болды, ал Macintosh немесе UNIX компьютерлерін қолданатындар ұсынылатын html файл атауы кеңейтімін қолдана алды. Бұл Java бағдарламалау тілін тәжірибеден өткізетін бағдарламашылар үшін де проблемаға айналды, өйткені ол бастапқы код файлдары үшін төрт әріпті java жұрнағын және Java компиляторының объектілік кодты шығару үшін бес әріпті class жұрнағын талап етеді.

Мазмұн түрі

Файл атауының кеңейтімі метадеректердің бір түрі болып саналады. Олар көбінесе файлдағы деректердің қалай сақталатыны туралы ақпаратты білдіреді. Файл атауының қай бөлігі оның кеңейтімі екенін анықтау критерийлері нақты файл жүйесінің ережелеріне жатады; әдетте кеңейтім нүкте белгісінің соңғы кездесуінен кейін келетін тармақша болып табылады (мысалы: txt – readme.txt файлының кеңейтімі, ал html – index.html файлының кеңейтімі). Кейбір мейнфрейм жүйелерінің (мысалы, VM-дегі CMS, VMS) және PC жүйелерінің (мысалы, CP/M, MS DOS және олардан туындаған жүйелер) файлдық жүйелерінде кеңейтім файл атауынан бөлек кеңістік болып табылады. Microsoft DOS және Windows жүйелерінде EXE, COM немесе BAT сияқты кеңейтімдер файлдың орындалатын бағдарлама екенін көрсетеді. OS/360 және одан кейінгі жүйелерде деректер жинағы атауының соңғы нүктеден кейінгі бөлігі, «төменгі деңгейдегі анықтама» деп аталады, кейбір бағдарламалық құралдар (мысалы, TSO EDIT) оны кеңейтім ретінде қарастырады, бірақ операциялық жүйе үшін ерекше маңызы жоқ; бұл MVS-тегі Unix файлдарына да қатысты. Файл атауының кеңейтімі бастапқыда файлдың жалпы түрін анықтау үшін қолданылған. Файл түрін үш таңбаға дейін қысқарту қажеттілігі көбінесе қысқартылған кеңейтімдерге әкелді. Мысалдар: графикалық файлдар үшін GFX, қарапайым мәтін үшін TXT және музыка үшін MUS. Алайда, көптеген әртүрлі бағдарламалар осы дерек түрлерін (және басқаларын) әртүрлі жолдармен өңдейтін болғандықтан, файл атауының кеңейтімдері белгілі бір өнімдермен, тіпті олардың нақты нұсқаларымен байланысты бола бастады. Мысалы, WordStar-дың алғашқы файлдары WS немесе WSn кеңейтімдерін пайдаланды, мұнда n – бағдарлама нұсқасының нөмірі. Сондай-ақ, кейбір файл атауының кеңейтімдерін пайдалануда қайшылықтар туындады. Бір мысал – rpm, ол RPM Package Manager пакеттері мен RealPlayer Media файлдары үшін қолданылады. Басқалары: qif (DESQview қаріптері, Quicken қаржылық тізімдері және QuickTime суреттері үшін ортақ), gba (GrabIt скрипттері мен Game Boy Advance ROM кескіндері үшін ортақ), sb (SmallBasic және Scratch үшін қолданылады) және dts (Dynamix Three Space және DTS үшін қолданылады).

MIME түрімен салыстырғанда

Көптеген интернет-протоколдарында, мысалы HTTP және MIME электрондық поштасында, бит ағынының түрі файл атауының кеңейтімі емес, ағынның медиа түрі немесе MIME түрі ретінде көрсетіледі. Бұл ағын алдындағы мәтін жолында беріледі, мысалы, "Мазмұн түрі: text/plain". Файл атауының кеңейтулері мен медиа түрлері арасында стандартты сәйкестік жоқ, нәтижесінде файлдарды интернет арқылы беру кезінде авторлар, веб-серверлер және клиенттік бағдарламалық жасақтама арасында түсіндіруде қарама-қайшылықтар туындауы мүмкін. Мысалы, мазмұн авторы сығылған Scalable Vector Graphics файлы үшін "svgz" кеңейтімін көрсетуі мүмкін, бірақ бұл кеңейтімді танымайтын веб-сервер дұрыс медиа түрін "application/svg+xml" және қажетті қысу басқасын жібермеуі мүмкін, нәтижесінде веб-браузерлер кескінді дұрыс түсіндіріп, көрсетуге шамасы келмейді. BeOS жүйесінің BFS файлдық жүйесі кеңейтілген атрибуттарды қолдайды, сондықтан файлды оның медиа түрімен кеңейтілген атрибут ретінде белгілейді. KDE және GNOME сияқты кейбір десктоп орталары файл атауының соңғы бөлігін және файлдың мазмұнын "file" командасы сияқты эвристикалық әдіспен қарастырып, файлқа медиа түрін байланыстырады. Олар файл ашылған кезде іске қосылатын бағдарламаны осы медиа түріне сүйене отырып таңдайды, бұл файл атауының кеңейтімдеріне тәуелділікті азайтады. macOS файл түрін ішкі түрде анықтау үшін Бірыңғай түрін анықтаушыны таңдау үшін файл атауының кеңейтімдерін, медиа түрлерін және файл түрінің кодтарын пайдаланады.

Орындалатын бағдарламалар

Команда атауында файл кеңейтімінің қолданылуы кейде кездеседі, әдетте команданың скрипт ретінде жүзеге асырылуының қосымша салдары ретінде, мысалы, Bourne shell немесе Python үшін, ал интерпретатор атауы команда атауына қосымша жазылады. Бұл файл кеңейтімі мен интерпретатор арасындағы байланыстарға сүйенетін жүйелерде кең таралған практика, бірақ Unix сияқты жүйелерде, мысалы Linux, Oracle Solaris, BSD негізделген жүйелер және Apple-дің macOS, мұнда интерпретатор әдетте скриптте ("shebang") бас жазба ретінде көрсетіледі. Қауымдастыққа негізделген жүйелерде файл кеңейтімі әдетте сол кеңейтім үшін жүйелік деңгейдегі жалғыз интерпретаторға сәйкес келеді (мысалы, ".py" Python-ды пайдалануды білдіреді), ал команданың өзі кеңейтімсіз де командалық жолдан орындалуы мүмкін (тиісті параметрлер орнатылған жағдайда). Егер орындалу тілі өзгерсе, команда атауының кеңейтімі де өзгереді, ал операциялық жүйе екі жағдайда да кеңейтімсіз команданың нұсқасын пайдалануға мүмкіндік беретін біркелкі API ұсынады. Бұл әдіс қауымдастық картасының жаһандық сипатынан, сондай-ақ бағдарламаларды шақыру кезінде әзірлеушілердің кеңейтімдерді толыққанды болдырмауынан және олардың мұндай болдырмауды міндеттеуге мүмкіндігі болмауынан зардап шегеді. Windows осы механизмді қолданатын жалғыз кең таралған жүйе болып табылады. Интерпретатор директивалары бар жүйелерде, Unix-тің барлық нұсқаларын қоса алғанда, команда атауының кеңейтімдері ерекше мағынаға ие емес және стандартты тәжірибе бойынша қолданылмайды, өйткені скрипттер үшін интерпретаторларды орнатудың негізгі әдісі – оларды интерпретаторды анықтайтын бір жолмен бастау (мұны дегенеративті ресурс вилкасы ретінде қарастыруға болады). Мұндай ортада команда атауына кеңейтімді қосу қажетсіздей, басқа бағдарламалардан командаларға жасалған барлық сілтемелерді болашақтағы өзгерістерге қауіпті ететін орындалу егжей-тегжейін ашады. Мысалы, қабықша скрипті Python немесе Ruby-де, кейін C немесе C++-та қайта іске асырылуы мүмкін, бұл жағдайда кеңейтімдер қолданылса, команданың аты өзгеретін болар еді. Кеңейтімдерсіз бағдарлама әрқашан бірдей кеңейтімсіз атауға ие болады, тек интерпретатор директивасы және/немесе магиялық сан өзгереді, ал басқа бағдарламалардан бағдарламаға жасалған сілтемелер жарамды болып қалады.

Қауіпсіздік мәселелері

Microsoft Windows жүйесімен бірге келетін файлдар шолғышының әдепкі әрекеті файл атауының кеңейтімдерін көрсетпеу болып табылады. Зұлым пайдаланушылар LOVE LETTER FOR YOU сияқты файл атауларын пайдаланып, компьютерлік вирустар мен құрттарды таратуға тырысады. TXT. vbs. Олардың ниеті – бұл файлдың LOVE LETTER FOR YOU. TXT түрінде, зиянсыз мәтіндік файл ретінде көрінуі, пайдаланушыны оның VBScript тілінде жазылған зиянды компьютерлік бағдарлама екендігі туралы ескертпеу. ReactOS жүйесінде әдепкі әрекет – ReactOS Explorer-да файл атауының кеңейтімдерін көрсету. Windows-тың кейінгі нұсқалары (Windows XP Service Pack 2 және Windows Server 2003-тен бастап) файл атауының кеңейтімдерінің жекелендірілетін тізімдерін қамтиды, олар белгілі бір "аймақтарда" жұмыс істегенде, мысалы, интернеттен жүктеп алғанда немесе электрондық поштаға тіркеме ретінде келгенде "қауіпті" деп есептеледі. Қазіргі заманғы антивирустық бағдарламалық қамтамасыз ету жүйелері де мұндай шабуылдарға қарсы пайдаланушыларды қорғауға көмектеседі. Кейбір вирустар ".com" жоғарғы деңгейлі домен мен ".COM" файл атауының кеңейтімі арасындағы ұқсастықты пайдаланып, зиянды, орындалатын команда файл тіркемелерін URL-ге ұқсас атаулармен (мысалы, "myparty.yahoo.com") электрондық пошта арқылы жібереді, нәтижесінде салмаусыз пайдаланушылар веб-сайтқа жетеледі деп ойлаған сілтемелерге басып, іс жүзінде зиянды тіркемелерді жүктеп, орындайды. Windows-тың кейбір қолданбаларындағы осалдықтарды пайдалану үшін жасалған зиянды бағдарламалардың кейбір мысалдары бар, олар тым ұзын, өңделмеген файл атауының кеңейтімі бар файлды ашқан кезде стекке негізделген буфердің толып кетуіне әкелуі мүмкін. Файл атауының кеңейтімі – тек белгілеуіш, ал файлдың мазмұны оған сәйкес келуі міндетті емес. Бұл зиянды мазмұнды жасыру үшін пайдаланылуы мүмкін. Қауіпсіздік мақсатында файлды анықтауға тырысқанда кеңейтімге ғана сүйену қауіпті деп есептеледі және файлдың мазмұнын дұрыс талдау артықшылыққа ие. Мысалы, UNIX сияқты жүйелерде кеңейтімі жоқ файлдарды кездестіру жиі кездеседі, себебі файлдың мазмұнын анықтау үшін файл сияқты командаларды пайдалану керек, олар файлдың тақырып бөлігін оқып шығады.