Apakah ekstensi file memiliki tujuan (untuk sistem operasi)?

73

Linux menentukan jenis file melalui kode di header file. Itu tidak tergantung pada ekstensi file untuk mengetahui perangkat lunak mana yang digunakan untuk membuka file.

Itulah yang saya ingat dari pendidikan saya. Tolong koreksi saya kalau-kalau saya salah!

Bekerja sedikit dengan sistem Ubuntu baru-baru ini: Saya melihat banyak file pada sistem yang memiliki ekstensi seperti .sh, .txt, .o,.c

Sekarang saya bertanya-tanya: Apakah ekstensi ini dimaksudkan hanya untuk manusia? Jadi, siapa yang harus tahu jenis file apa itu?

Atau apakah mereka memiliki tujuan untuk sistem operasi juga?

mizech
sumber
5
Jika Anda tidak mendapatkan respons yang baik di sini, ingat juga ada unix.stackexchange.com
mchid
Terkait, hampir duplikat: askubuntu.com/questions/390015
...
5
Di Windows yang mereka lakukan, di Linux / Unix mereka kebanyakan tidak. Pengecualian utama adalah kompresi-program - gzip, bzip2, xz- dan seterusnya. Program-program ini menggunakan akhiran untuk memisahkan versi file terkompresi dari file yang tidak terkompres yang mereka ganti. Program kompresi sering mengeluh tentang sufiks yang salah, meskipun file tersebut sebenarnya adalah file terkompresi dari jenis yang harus ditangani.
Baard Kopperud
6
Saya pikir bagian dari masalah dengan pertanyaan ini adalah bahwa "sistem operasi" bukan konsep yang didefinisikan dengan baik. Apa yang merupakan bagian dari sistem operasi, dan apa aplikasi di atasnya? Tidak banyak bagian dari OS (OS mana pun yang kita bicarakan) peduli apa jenis file - mereka hanya melakukan apa yang diperintahkan. Jadi perbedaan tentang bagaimana mereka tahu tidak relevan; mereka tidak melakukan keduanya. Applcations, di sisi lain, mungkin melakukan satu atau dua hal.
IMSoP

Jawaban:

39

Linux menentukan jenis file melalui kode di header file. Itu tidak tergantung pada ekstensi file untuk mengetahui dengan perangkat lunak digunakan untuk membuka file.

Itulah yang saya ingat dari pendidikan saya. Tolong koreksi saya kalau-kalau saya salah!

  • diingat dengan benar.

Apakah ekstensi ini dimaksudkan hanya untuk manusia?

  • Ya, dengan tapi.

Ketika Anda berinteraksi dengan sistem operasi lain yang memang bergantung pada ekstensi apa adanya, itu ide yang lebih cerdas untuk menggunakannya.

Di Windows, perangkat lunak pembuka dilampirkan ke ekstensi.

Membuka file teks bernama "file" lebih sulit pada Windows daripada membuka file yang sama bernama "file.txt" (Anda akan perlu untuk beralih dialog terbuka file dari *.txtke *.*setiap kali). Hal yang sama berlaku untuk file teks yang dipisahkan oleh TAB dan semi-kolon. Hal yang sama berlaku untuk mengimpor dan mengekspor e-mail (ekstensi .mbox).

Khususnya saat Anda membuat kode perangkat lunak. Membuka file bernama "software1" yang merupakan file HTML dan "software2" yang merupakan file JavaScript menjadi lebih sulit dibandingkan dengan "software.html" dan "software.js".


Jika ada sistem di Linux di mana ekstensi file penting, saya akan menyebutnya bug. Ketika perangkat lunak tergantung pada ekstensi file, itu dapat dieksploitasi. Kami menggunakan arahan juru bahasa untuk mengidentifikasi apa file itu ("dua byte pertama dalam file dapat berupa karakter" #! ", Yang merupakan angka ajaib (heksadesimal 23 dan 21, nilai ASCII dari" # "dan"! " ") sering disebut sebagai shebang,").

Masalah yang paling terkenal dengan ekstensi file adalah LOVE-LETTER-FOR-YOU.TXT.vbs di Windows. Ini adalah skrip visual basic yang ditampilkan dalam file explorer sebagai file teks.

Di Ubuntu saat Anda memulai file dari Nautilus Anda mendapat peringatan apa yang akan dilakukan. Menjalankan skrip dari Nautilus di mana ia ingin memulai beberapa perangkat lunak di mana ia seharusnya membuka gEdit jelas merupakan masalah dan kami mendapat peringatan tentang hal itu.

Di baris perintah ketika Anda menjalankan sesuatu, Anda dapat melihat secara visual apa ekstensi itu. Jika diakhiri dengan .vbs, saya akan mulai curiga (bukan .vbs yang dapat dieksekusi di Linux. Setidaknya bukan tanpa usaha lagi;)).

Rinzwind
sumber
31
Saya benar-benar tidak mengerti apa yang ingin Anda katakan dalam kalimat terakhir Anda. Pertama, ini adalah masalah menyembunyikan ekstensi daripada memilikinya, kedua eksploit akan bekerja sama di Linux - Anda beri nama file biner readme.txtdan membuatnya dapat dieksekusi. Jika pengguna menjalankannya, itu tidak membuka editor, tetapi menjalankan kode. Dalam hal ini, membuat ekstensi penting (tetapi tidak menyembunyikannya) lebih aman dan lebih mudah dijelaskan untuk pengguna yang tidak mengerti. Ada perbedaan lain (terutama tidak mengeksekusi file dari direktori saat ini), tetapi mereka tidak ada hubungannya dengan ekstensi.
techraf
4
@ techraf Sebenarnya pengelola file mungkin akan mencoba membuka readme.txtfile dengan editor teks. Saya baru saja mencoba dengan lumba-lumba di KDE, membuat skrip shell menambahkan izin yang dapat dieksekusi, menyimpannya .txtdan mengkliknya akan membuatnya terbuka di Kate. Jika saya ganti nama untuk .shkemudian mengklik menjalankannya.
Bakuriu
9
linux: karena make dibuat berdasarkan aturan yang bergantung pada ekstensi file, bukankah ini akan membuat (tidak ada kata pun) ekstensi yang dimaksudkan untuk lebih dari sekedar manusia?
bolov
15
Ini adalah jawaban yang salah secara monumental. Beberapa bagian Linux menggunakan angka ajaib untuk menentukan jenis file. Menjalankan file di baris perintah. Tetapi bagian besar lainnya dari sistem menggunakan ekstensi file untuk mengetahui apa yang harus dilihat, apakah itu menjadi penghubung dinamis (yang menginginkan file .so), modprobe, membangun sistem, plugins, pustaka untuk python, ruby, dll. Banyak file tidak tidak memiliki angka ajaib, fileberbasis heuristik, tidak pasti.
Alan Shutko
3
"Linux menentukan jenis file melalui kode di header file" "yang benar" WTF? Apa "kode di header file"? Tidak ada kode seperti itu, dan tidak ada "file header" generik di Linux.
leonbloy
68

Tidak ada jawaban 100% hitam atau putih di sini.

Biasanya Linux tidak bergantung pada nama file (dan ekstensi file yaitu bagian dari nama file setelah periode yang biasanya terakhir) dan sebagai gantinya menentukan jenis file dengan memeriksa beberapa byte pertama dari isinya dan membandingkannya dengan daftar angka ajaib yang diketahui. .

Misalnya semua file gambar Bitmap (biasanya dengan ekstensi nama .bmp) harus dimulai dengan huruf BMdalam dua byte pertama. Skrip di sebagian besar bahasa skrip seperti Bash, Python, Perl, AWK, dll. (Pada dasarnya semua yang memperlakukan baris yang dimulai dengan #komentar) dapat berisi shebang seperti #!/bin/bashbaris pertama. Komentar khusus ini memberi tahu sistem dengan aplikasi mana untuk membuka file.

Jadi biasanya sistem operasi bergantung pada isi file dan bukan namanya untuk menentukan jenis file, tetapi menyatakan bahwa ekstensi file tidak pernah diperlukan di Linux hanya setengah dari kebenaran.


Aplikasi tentu saja dapat mengimplementasikan pemeriksaan file mereka seperti yang mereka inginkan, yang meliputi memverifikasi nama file dan ekstensi. Contohnya adalah Eye of Gnome ( eog, penampil gambar standar) yang menentukan format gambar dengan ekstensi file dan melemparkan kesalahan jika tidak cocok dengan konten. Apakah ini bug atau fitur dapat didiskusikan ...

Namun, bahkan beberapa bagian dari sistem operasi bergantung pada ekstensi nama file, misalnya ketika parsing perangkat lunak Anda sumber file dalam /etc/apt/sources.list.d/- hanya file dengan *.listekstensi dapat diuraikan semua yang lain diabaikan. Ini mungkin tidak terutama digunakan untuk menentukan jenis file di sini tetapi lebih untuk mengaktifkan / menonaktifkan parsing beberapa file, tetapi itu masih merupakan ekstensi file yang mempengaruhi bagaimana sistem memperlakukan file.

Dan tentu saja keuntungan pengguna manusia yang paling dari ekstensi file sebagai yang membuat jenis file yang jelas dan juga memungkinkan beberapa file dengan nama dasar yang sama dan ekstensi yang berbeda seperti site.html, site.php, site.js, site.cssdll Kerugiannya tentu saja bahwa mengajukan perpanjangan dan aktual jenis file / konten tidak harus harus cocok.

Selain itu diperlukan untuk interoperabilitas lintas-platform, seperti misalnya Windows tidak akan tahu apa yang harus dilakukan dengan readmefile, tetapi hanya a readme.txt.

Komandan Byte
sumber
Anda sedikit bertentangan dengan diri Anda di sini: jika penampil gambar standar memerlukan nama file yang berakhiran .bmp, bagian mana dari OS yang Anda katakan bergantung pada konten file mulai "BM"? AFAIK, satu-satunya "angka ajaib yang dipedulikan kernel adalah tipe yang dapat dieksekusi, termasuk kasus khusus #!. Segala sesuatu yang lain tergantung pada keputusan beberapa aplikasi.
IMSoP
@ IMSoP Saya tidak tahu persis implementasi eogdan saya tidak tahu mengapa mereka peduli tentang nama file sama sekali. Ini adalah bug menurut saya. Dan tentu saja jika file tersebut bernama "bmp" tetapi format kontennya tidak cocok, akan ada kesalahan juga, tentu saja. Tentu saja setiap aplikasi memutuskan cara memverifikasi file, tetapi secara umum aplikasi Linux tidak harus bergantung pada namanya. Btw, Anda dapat menggunakan filecommend untuk memeriksa jenis file berdasarkan isinya.
Byte Commander
1
Kalimat yang saya tantang adalah ini: "Linux ... menentukan jenis file dengan memeriksa beberapa byte pertama". Apa definisi "Linux" yang Anda gunakan dalam kalimat itu? Keberadaan fileutilitas tidak benar-benar membuktikan apa pun; itu alat yang berguna, yang bisa ada di OS apa pun. Bagian fundamental apa dari OS yang membuat menjalankan filelebih "benar" daripada menggulung nama file?
IMSoP
Perhatikan bahwa file tanpa ekstensi dapat dikaitkan dengan program.
isanae
24

Seperti yang disebutkan oleh orang lain, di Linux metode interpreter directive digunakan (menyimpan beberapa metadata dalam file sebagai header atau angka ajaib sehingga interpreter yang tepat dapat diminta untuk membacanya) daripada metode asosiasi ekstensi nama file yang digunakan oleh Windows.

Ini berarti Anda dapat membuat file dengan hampir semua nama yang Anda suka ... dengan beberapa pengecualian

Namun

Saya ingin menambahkan kata hati-hati.

Jika Anda memiliki beberapa file di sistem Anda dari sistem yang menggunakan asosiasi nama file, file mungkin tidak memiliki angka atau header ajaib itu. Ekstensi nama file digunakan untuk mengidentifikasi file-file ini oleh aplikasi yang dapat membacanya, dan Anda mungkin mengalami beberapa efek yang tidak terduga jika Anda mengganti nama file tersebut. Sebagai contoh:

Jika Anda mengganti nama file My Novel.docmenjadi My-Novel, Libreoffice masih akan dapat membukanya, tetapi itu akan terbuka sebagai 'Tanpa Judul' dan Anda harus memberi nama lagi untuk menyimpannya (Libreoffice menambahkan ekstensi secara default, sehingga Anda kemudian akan memiliki dua file My-Noveldan My-Novel.odt, yang bisa mengganggu)

Lebih serius lagi, jika Anda mengganti nama file My Spreadsheet.xlsx menjadi My-Spreadsheet, maka cobalah membukanya dengan xdg-open My-SpreadsheetAnda akan mendapatkan ini (karena itu sebenarnya file terkompresi):

Dan jika Anda mengganti nama file My Spreadsheet.xlsmenjadi My-Spreadsheet, saat xdg-open My-SpreadsheetAnda mendapatkan kesalahan mengatakan

lokasi pembukaan kesalahan: Tidak ada aplikasi terdaftar saat menangani file ini

(Meskipun dalam kedua kasus ini berfungsi baik jika Anda melakukannya soffice My-Spreadsheet)

Jika Anda kemudian mengganti nama file tanpa ekstensi My-Spreadsheet.odsdengan mvdan mencoba membukanya Anda akan mendapatkan ini:

(perbaikan gagal)

Dan Anda harus meletakkan ekstensi asli kembali untuk membuka file dengan benar (Anda kemudian dapat mengkonversi format jika Anda mau)

TL; DR:

Jika Anda memiliki file non-asli dengan ekstensi nama, jangan hapus ekstensi dengan asumsi semuanya akan beres!

Zanna
sumber
4
Dokumen MS Office gaya baru (docx, xlsx, pptx dll) tanpa ekstensi file terbuka di manajer arsip karena jenis file tersebut sebenarnya hanya file terkompresi ZIP biasa yang berisi semua dokumen XML dan file media yang diperlukan untuk menentukan konten dokumen. Format file direktori terkompresi ZIP cukup umum saat ini.
Byte Commander
1
Sudah banyak jawaban yang bagus, tetapi hanya satu lagi yang spesifik untuk libreoffice yang saya perhatikan. Anda membuat file dengan nilai yang dipisahkan koma (CSV) dan menyimpannya sebagai "test.csv", sebuah jendela akan terbuka menanyakan jenis pemisah apa yang Anda gunakan (yaitu, libreoffice Calc). Jika Anda mengganti nama file ini menjadi "test.cs", misalnya, maka Penulis libreoffice membukanya. Jadi, selain contoh ZIP di atas, sepertinya libreoffice memanfaatkan ekstensi file.
Ray
3
Sistem file linux tidak melakukan apa pun mengenai tipe file. Itu semua tergantung pada program yang berjalan di atasnya.
Peter Green
@PeterGreen Ya, tetapi kenyataan bahwa program-program itu memberikan arti penting berarti itu bukan "hanya untuk manusia" seperti, misalnya, MacOS klasik memilikinya [ada empat byte "tipe file" dan "app creator" bidang yang tidak ada ' t bagian dari nama file, sehingga OS dan aplikasi memiliki semua informasi yang mereka butuhkan tanpa melihat ekstensi file]
Random832
3
@PeterGreen Sistem file Windows juga tidak melakukan apa pun mengenai tipe file. Shell grafis (Windows Explorer) menggunakan ekstensi file untuk memilih tindakan untuk klik dua kali, tetapi secara teknis itu hanya program yang berjalan di atas OS, seperti halnya Nautilus. Sangat mungkin untuk menulis file manager Linux dengan perilaku itu, atau Windows yang memeriksa isi file.
IMSoP
20

Saya ingin mengambil pendekatan yang berbeda untuk ini dari jawaban lain, dan menantang gagasan bahwa "Linux" atau "Windows" ada hubungannya dengan ini (bersabarlah dengan saya).

Konsep ekstensi file dapat secara sederhana dinyatakan sebagai "konvensi untuk mengidentifikasi jenis file berdasarkan bagian namanya". Konvensi umum lainnya untuk mengidentifikasi jenis file membandingkan isinya dengan basis data tanda tangan yang dikenal (pendekatan "angka ajaib"), dan menyimpannya sebagai atribut tambahan pada sistem file (pendekatan yang digunakan dalam MacOS asli) .

Karena setiap file pada sistem Windows atau Linux memiliki nama dan konten, proses yang ingin mengetahui jenis file dapat menggunakan pendekatan "ekstensi" atau "angka ajaib" sesuai keinginan mereka. Pendekatan metadata umumnya tidak tersedia, karena tidak ada tempat standar untuk atribut ini pada kebanyakan sistem file.

Di Windows, ada tradisi kuat menggunakan ekstensi file sebagai cara utama mengidentifikasi file; yang paling jelas, browser file grafis (File Manager pada Windows 3.1 dan Explorer pada Windows modern) menggunakannya ketika Anda mengklik dua kali pada file untuk menentukan aplikasi mana yang akan diluncurkan. Di Linux (dan, lebih umum, sistem berbasis Unix), ada lebih banyak tradisi untuk memeriksa konten; paling khusus, kernel melihat pada awal file yang dieksekusi langsung untuk menentukan cara menjalankannya; file skrip dapat menunjukkan juru bahasa untuk digunakan dengan memulai dengan #!diikuti oleh jalur ke juru bahasa.

Tradisi-tradisi ini memengaruhi rancangan program UI yang ditulis untuk setiap sistem, tetapi ada banyak pengecualian, karena setiap pendekatan memiliki pro dan kontra dalam situasi yang berbeda. Alasan menggunakan ekstensi file daripada memeriksa konten meliputi:

  • memeriksa isi file cukup mahal dibandingkan dengan memeriksa nama file; jadi misalnya "temukan semua file bernama * .conf" akan jauh lebih cepat daripada "temukan semua file yang baris pertamanya cocok dengan tanda tangan ini"
  • isi file bisa ambigu; banyak format file sebenarnya hanya file teks yang diperlakukan dengan cara khusus, banyak lainnya format file zip terstruktur khusus, dan mendefinisikan tanda tangan yang akurat untuk ini bisa rumit
  • suatu file dapat benar-benar valid karena lebih dari satu jenis; file HTML juga dapat berupa XML yang valid, file zip, dan GIF yang digabungkan bersama tetap valid untuk kedua format
  • pencocokan angka ajaib dapat menyebabkan positif palsu; format file yang tidak memiliki tajuk mungkin terjadi dimulai dengan byte "GIF89a" dan salah diidentifikasi sebagai gambar GIF
  • mengganti nama file bisa menjadi cara mudah untuk menandainya sebagai "dinonaktifkan"; misalnya mengubah "foo.conf" menjadi "foo.conf ~" untuk menunjukkan cadangan lebih mudah daripada mengedit file untuk mengomentari semua arahannya, dan lebih nyaman daripada memindahkannya keluar dari direktori yang dimuat secara otomatis; demikian pula, mengganti nama file .php ke .txt akan memberi tahu Apache untuk menyajikan sumbernya sebagai teks biasa, daripada meneruskannya ke mesin PHP

Contoh program Linux yang menggunakan nama file secara default (tetapi mungkin memiliki mode lain):

  • gzip dan gunzip memiliki penanganan khusus untuk setiap file yang berakhiran ".gz"
  • gcc akan menangani file ".c" sebagai C, dan ".cc" atau ".C" sebagai C ++
IMSoP
sumber
Windows juga memiliki tradisi kuat untuk menyembunyikan ekstensi jika itu "terkenal" dan bahkan DOS mengizinkan perintah untuk menghilangkan .COM, .BAT, dan .EXE, secara otomatis mencari mereka untuk menentukan program apa yang sebenarnya untuk dieksekusi. Tidak ada tradisi seperti itu di * nix.
Monty Harder
Ini adalah jawaban yang jauh lebih baik tetapi memiliki satu kesalahan faktual ... sebuah skrip tidak dapat dibuat dieksekusi dengan menempatkan #!di awal. File apa pun dengan set bit yang dapat dieksekusi dapat dieksekusi dengan salah satu dari beberapa cara. #!/bin/bashdan tanda tangan serupa hanya menentukan penerjemah mana yang akan digunakan. Jika tidak ada tanda tangan yang disediakan, penerjemah shell default diasumsikan. File yang tidak mengandung apa pun kecuali dua kata 'Hello World', tetapi dengan set bit pelaksanaannya, akan berusaha menemukan perintah 'Hello' saat dijalankan.
DocSalvager
1
@ DocSalvager Tangkapan bagus, itu kata-kata canggung sebanyak apa pun. Saya telah menulis ulang sedikit untuk menjelaskan bahwa shebang tidak membuat skrip dapat dieksekusi, itu hanya mengubah cara dijalankannya.
IMSoP
15

Sebenarnya, beberapa teknologi memang mengandalkan ekstensi file, jadi jika Anda menggunakan teknologi itu di Ubuntu, Anda juga harus bergantung pada ekstensi. Beberapa contoh:

  • gccmenggunakan ekstensi untuk membedakan antara file C an C ++. Tanpa ekstensi itu hampir tidak mungkin untuk membedakan mereka (bayangkan file C ++ tanpa kelas).
  • banyak file ( docx, jar, apk) hanya terutama terstruktur arsip ZIP. Meskipun Anda biasanya dapat menyimpulkan jenis dari konten, itu mungkin tidak selalu mungkin (misalnya Java Manifest adalah opsional dalam jarfile).

Tidak menggunakan ekstensi file dalam kasus-kasus seperti itu hanya akan dimungkinkan dengan solusi yang bersifat meretas dan cenderung sangat rentan terhadap kesalahan.

Dmitry Grigoryev
sumber
Bagus untuk Anda yang menyebutkan pemrograman, tetapi Anda salah memahami detailnya. gccadalah front-end untuk file C, untuk file C ++ Anda memerlukan g++switch front-end atau command-line untuk menentukan bahasa. Yang lebih penting adalah makeprogram yang memutuskan apakah akan menggunakan gccatau g++membangun file tertentu - dan makesepenuhnya bergantung pada pola nama file (kebanyakan ekstensi) untuk penyesuaian aturan.
Ben Voigt
@BenVoigt Ketika mengkompilasi file dengan .ccekstensi gcc, itu benar-benar akan dikompilasi sebagai C ++, dan ini didokumentasikan dalam man gcc: "Untuk setiap file input yang diberikan, akhiran nama file menentukan jenis kompilasi yang dilakukan:" diikuti oleh daftar ekstensi dan cara penanganannya.
hvd
1
@ Hvd Maka mungkin itu adalah kumpulan default perpustakaan yang salah jika Anda tidak menggunakan frontend kanan. Pokoknya make adalah contoh utama karena semua yang dilakukannya didasarkan pada ekstensi file.
Ben Voigt
1
@BenVoigt makeadalah contoh yang baik juga, tetapi gccsangat bergantung pada nama file. Berikut ini contoh yang lebih jelas daripada .cvs .cc: Untuk C, gccgunakan sufiks untuk mengetahui apakah langkah pertamanya adalah preprocess ( .c), compile ( .i), assemble ( .s), assemble ( ), atau tautan ( .o). Di sini, saya menggunakan -E, -Sdan -cmemberi tahu di gccmana harus berhenti , tetapi menggunakan nama file untuk tahu harus mulai dari mana . gcc something.cctidak akan menautkan ke pustaka yang tepat untuk C ++ tetapi itu akan memperlakukan file sebagai C ++, itulah sebabnya banyak pengguna bingung dengan pesan kesalahan yang mereka dapatkan ketika membuat kesalahan itu.
Eliah Kagan
7

Asumsi pertama Anda benar: ekstensi di Linux tidak masalah dan hanya berguna untuk manusia (dan OS non-Unix-like lainnya yang peduli tentang ekstensi). Jenis file ditentukan oleh 32 bit data pertama dalam file tersebut, yang dikenal sebagai angka ajaib. Inilah sebabnya skrip shell perlu #!baris - untuk memberi tahu sistem operasi apa yang harus ditafsirkan juru bahasa. Tanpanya, skrip shell hanyalah file teks.

Sejauh pengelola file, mereka ingin mengetahui ekstensi beberapa file, seperti .desktopfile, yang pada dasarnya sama dengan cara pintas versi Window tetapi dengan lebih banyak kemampuan. Tapi sejauh menyangkut OS, perlu tahu apa yang ada di file, bukan apa namanya

Sergiy Kolodyazhnyy
sumber
3
Ini tidak sepenuhnya benar. Ada beberapa program yang mengharapkan ekstensi spesifik. Contoh yang paling umum digunakan mungkin adalah gunzipyang tidak akan mendekompresi file jika tidak dipanggil foo.gz.
terdon
Itu adalah implementasi dari perangkat lunak tertentu. Sebagian besar, utilitas pada sistem seperti unix tidak mengharapkan ekstensi.
Sergiy Kolodyazhnyy
7
Sebagian besar tidak, tidak. Kalimat pertama Anda, bagaimanapun, menyatakan bahwa mereka tidak pernah digunakan dan hanya penting bagi manusia. Itu tidak sepenuhnya benar. gunzipadalah salah satu contoh, eogadalah contoh lainnya. Juga, banyak alat tidak akan melengkapi nama secara otomatis tanpa ekstensi yang tepat. Yang saya katakan adalah bahwa ini sedikit lebih rumit daripada "ekstensi selalu tidak relevan".
terdon
1
1 masalah kecil: OP bertanya tentang sistem operasi. 'gunzip' dan 'eog' bukan sistem operasi tetapi memutuskan untuk membuat batasan sendiri (dalam hal gunzip) atau metode (eog). "tipe pantomim" meskipun.
Rinzwind
1
@Erg Tentu, Anda dapat mendefinisikan OS secara sempit, dan mendapatkan jawaban yang sepele untuk pertanyaan itu. Ini bukan jawaban yang sangat membantu, karena sebagian besar dari apa yang dilakukan pengguna dengan komputer melibatkan perangkat lunak yang telah Anda kecualikan. Perhatikan bahwa pertanyaan tersebut kontras "hanya untuk manusia" dengan "sistem operasi"; Saya tidak berpikir itu berarti "kernel".
IMSoP
6

Ini terlalu besar untuk jawaban komentar.

Perlu diingat bahwa bahkan "ekstensi" memiliki banyak arti jika berbeda.

Apa yang Anda bicarakan tampaknya adalah 3 huruf setelah. DOS membuat format 8.3 sangat populer dan windows menggunakan bagian .3 hingga hari ini.

Linux memiliki banyak file seperti .conf atau .list atau .d atau .c yang memiliki arti, tetapi sebenarnya bukan ekstensi dalam arti 8.3. Misalnya Apache mencari di /etc/apache2/sites-enabled/website.conf untuk arahan konfigurasi itu. Walaupun sistem menggunakan MIME Types dan header konten dan apa yang tidak menentukan itu adalah file teks, Apache (secara default) masih tidak akan memuatnya tanpa berakhir dengan .conf.

.c adalah salah satu yang hebat. Ya itu file teks, tetapi gcc tergantung pada main.c menjadi main.o dan akhirnya main (setelah menautkan). Tidak pernah ada waktu sistem menggunakan ekstensi .c, .o atau tidak memiliki arti sejauh konten, tetapi hal-hal setelah. memang memiliki beberapa arti. Anda mungkin akan mengatur SCM Anda untuk mengabaikan main.o dan main.

Intinya adalah ini: Ekstensi tidak digunakan seperti di windows. Kernel tidak akan menjalankan file .txt karena Anda menghapus bagian .txt dari nama tersebut. Juga sangat senang untuk mengeksekusi file .txt jika izin eksekusi diatur. Yang sedang berkata, mereka memiliki makna, dan masih digunakan pada "level komputer" untuk banyak hal.

kapas
sumber
1
Jendela juga tidak terikat pada x.3skema penamaan lagi, Anda sudah mendapat ekstensi lagi ada juga seperti .doxc, .torrent, .part, dll Ini hanya bahwa banyak format file dan ekstensi yang sudah didefinisikan kembali dalam waktu ketika 8,3 penamaan masih hal dan kemudian format sebagian besar hanya mengadaptasi konvensi menggunakan hingga 3 huruf.
Byte Commander
Saya tidak melihat bagaimana ".conf", ".c", dll, adalah "makna yang berbeda" dari "pengertian 8.3". Konsep ekstensi file dapat secara sederhana dinyatakan sebagai "konvensi untuk mengidentifikasi jenis file berdasarkan bagian namanya". Bahkan DOS / Win3.1 tidak memerlukan ekstensi yang benar (Anda bisa memanggil dokumen Word "STUPIDN.AME" dan membukanya dengan Ctrl-O di WinWord). Hanya saja beberapa sistem (mis. Klik dua kali pada Windows, gzipMakefile Anda, dll) dapat ditulis untuk menggunakan konvensi ini untuk membuat asumsi tentang tindakan yang benar untuk dilakukan pada setiap file.
IMSoP
@ByteCommander Itu benar, tetapi ekstensi masih menentukan aplikasi yang digunakan. Saya tidak yakin bagaimana mengedit jawaban untuk mencerminkan itu.
coteyr
1
@coteyr Sekali lagi, semuanya tergantung apa yang kita maksud dengan "OS". The File Manager pasti akan mencari kunci registri untuk "AME", dan akan memberitahu saya bahwa "foo.txt" adalah file teks. Tetapi menjalankan dirperintah prompt tidak akan memberitahuku hal seperti itu; itu tidak akan peduli. Mengeksekusi file tentu merupakan pengecualian, di kedua OS; jika pertanyaannya terbatas pada itu, jawabannya adalah bahwa DOS / Windows hanya peduli pada nama, dan Unix / Linux hanya peduli pada izin eksekusi dan byte pertama dari file. Di luar itu, selalu ada beberapa aplikasi memilih konvensi untuk diikuti.
IMSoP
1
@coteyr Anda lupa * .scr (biner screen saver) di Windows 3.1 dan yang lebih tinggi. Yang mengatakan, ekstensi file bahkan di sistem DOS / Windows bahkan untuk executables masih hanya kenyamanan. Spesifikasi sangat tergantung pada di mana Anda menggambar garis "sistem operasi", tetapi Anda selalu dapat memuat biner ke dalam memori dan melompat ke dalamnya sendiri, melakukan pekerjaan yang biasanya diminta OS untuk dilakukan. Di MS-DOS, jika Anda melihat melalui command.com, saya cukup yakin ada daftar seperti EXE COM yang dapat Anda edit sehingga mencari ekstensi lain jika tidak ada yang ditentukan (tidak mengatakan itu akan menjadi ide yang baik, keberatan kamu).
CVn