Dosya uzantılarının herhangi bir amacı var mı (işletim sistemi için)?


73

Linux, dosya başlığındaki bir kod aracılığıyla bir dosyanın türünü belirler. Hangi yazılımın dosyayı açmak için kullanılacağını bilmek için dosya uzantılarına bağlı değildir.

Eğitimimden hatırladığım şey bu. Lütfen hatalı olduğumda beni düzelt!

Son zamanlarda Ubuntu sistemleriyle biraz Çalışma: Ben gibi uzantılara sahip sistemlerde dosyaların bir sürü görmek .sh, .txt, .o,.c

Şimdi merak ediyorum: Bu eklentiler sadece insanlar içindir? Yani ne tür bir dosya olduğu hakkında bir fikir edinmeli?

Yoksa işletim sistemi için de bir amaçları var mı?


5
Burada iyi bir cevap alamazsanız, unix.stackexchange.com
mchid

Neredeyse yinelenen, ilgili: askubuntu.com/questions/390015/…
Zzzach ...


5
Windows'ta yaparlar, Linux / Unix'te çoğunlukla yapmazlar. - Ana istisna sıkıştırma-programlardır gzip, bzip2, xz- vb. Bu programlar, bir dosyanın sıkıştırılmış sürümünü değiştirdikleri sıkıştırılmamış sürümden ayırmak için sonekleri kullanır. Sıkıştırma programları, dosya aslında işlenmesi gereken sıkıştırılmış bir dosya olsa da, sık sık hatalı soneklerden şikayet eder.
Baard Kopperud

6
Bu soruyla ilgili sorunun bir parçası olduğunu düşünüyorum "işletim sistemi" iyi tanımlanmış bir kavram değildir. İşletim sisteminin bir parçası nedir ve bunun üzerinde bir uygulama nedir? İşletim sisteminin pek çok parçası (hangi işletim sisteminden bahsediyoruz) ne tür bir dosya olduğu umrumda değil - sadece onlara söyleneni yapıyorlar. Bu yüzden nasıl bildikleri ile ilgili ayrımların önemi yoktur; ikisi de değil. Öte yandan, başvurular bir veya iki şeyi de yapabilir.
IMSoP,

Yanıtlar:


39

Linux, dosya başlığındaki bir kod aracılığıyla bir dosyanın türünü belirler. Dosya ile bilmek dosya uzantılarına bağlı değildir, dosyayı açmak için kullanmaktır.

Eğitimimden hatırladığım şey bu. Lütfen hatalı olduğumda beni düzelt!

  • doğru hatırladım.

Bu eklentiler sadece insanlar içindir?

  • Evet, bir ama.

Uzantılara bağlı olan diğer işletim sistemleriyle etkileşime girdiğinizde, bunların ne olduğu daha akıllıca olur.

Windows'ta açılış yazılımı uzantılara eklenir.

"Dosya" "file.txt" adlı aynı dosyayı açarak daha Windows zordur adlı bir metin dosyası açılıyor (eğer dosya açık iletişim geçmek gerekir *.txtiçin *.*her zaman). Aynı şey TAB ve noktalı virgülle ayrılmış metin dosyaları için de geçerlidir. Aynı şey, e-postaların içe ve dışa aktarılması için de geçerlidir (.mbox eklentisi).

Özellikle yazılımı kodladığınızda. Bir HTML dosyası olan "software1" ve bir JavaScript dosyası olan "software2" adlı bir dosyayı açmak, "software.html" ve "software.js" ile karşılaştırıldığında daha zor hale gelir.


Linux'ta dosya uzantılarının önemli olduğu bir sistem varsa, bunu bir hata olarak adlandırırdım. Yazılım dosya uzantılarına bağlı olduğunda, bu istismar edilebilir. Bir dosyanın ne olduğunu belirlemek için bir tercüman yönergesi kullanıyoruz ("bir dosyadaki ilk iki bayt" #! "Karakterleri olabilir, bu da sihirli bir sayı oluşturur (onaltılık 23 ve 21," # "ve" ASCII değerleri! " ") sık sık shebang olarak anılır,").

Dosya uzantılarıyla ilgili en ünlü sorun Windows'ta LOVE-LETTER-FOR-YOU.TXT.vbs idi . Bu, dosya gezgininde bir metin dosyası olarak gösterilen görsel bir temel komut dosyasıdır.

Ubuntu'da, Nautilus'tan bir dosya başlattığınızda ne yapacağınız konusunda bir uyarı alırsınız. GEdit'i açması gereken bazı yazılımları başlatmak istediği Nautilus'tan bir betik çalıştırmak bir sorun olduğu açıktır ve bu konuda bir uyarı alıyoruz.

Bir şeyi çalıştırdığınızda komut satırında, uzantının ne olduğunu görsel olarak görebilirsiniz. Eğer .vbs ile biterse şüphelenmeye başlardım (ki .vbs Linux'ta çalıştırılabilir değil. En azından biraz daha çaba sarf etmeden;).


31
Son cümlede söylemek istediklerini tam olarak anlamadım. Birincisi, uzantıya sahip olmaktansa gizleme problemidir, ikincisi, istismar Linux'ta aynı şekilde çalışır - bir ikili dosya adı verirsiniz readme.txtve çalıştırılabilir hale getirirsiniz . Kullanıcı çalıştırdıysa, editörü açmaz ancak kodu çalıştırır. Bu bakımdan, uzantıların önemsenmesi (ancak gizlenmemesi), meraklı olmayan kullanıcılar için daha güvenli ve açıklamak daha kolaydır. Başka farklar da var (özellikle mevcut dizindeki dosyaları yürütmüyor), ancak uzantılarla ilgisi yok.
techraf

4
@techraf Aslında dosya yöneticisi muhtemelen readme.txtdosyayı bir metin editörüyle açmaya çalışır . KDE'de sadece yunuslarla çalıştım, çalıştırılabilir izinler ekleyerek bir kabuk betiği oluşturarak, onu kaydeterek .txtve onu tıklatarak Kate'de açacağım. Eğer onu yeniden adlandırırsam, .shüzerine tıklamak onu çalıştırır.
Bakuriu

9
linux: make, dosya uzantısına bağlı olan kurallar etrafında oluşturulduğundan, bu, yalnızca insanlardan daha fazlasını amaçlayan uzantıları yapmaz mı?
bolov

15
Bu anıtsal olarak yanlış bir cevap. Linux'un bazı bölümleri dosya türlerini belirlemek için sihirli sayılar kullanır. Dosyaları komut satırında yürütme. Ancak sistemin diğer büyük bölümleri, neye bakılacağını bilmek için dosya uzantılarını kullanıyorlar, bunlar dinamik linker (.so dosyaları istiyorlar), modprobe, inşa sistemleri, eklentiler, python kütüphaneleri, ruby, vb. sihirli sayılara sahip filedeğil, sezgiseldir, kesin değil.
Alan Shutko,

3
"Linux bir dosyanın türünü dosya başlığındaki bir kod aracılığıyla belirler" "doğru" WTF? Hangi "dosya başlığındaki kod"? Böyle bir kod yoktur ve Linux'ta böyle bir genel "dosya başlığı" yoktur.
leonbloy

68

Burada% 100 siyah veya beyaz cevap yok.

Genellikle Linux, dosya adlarına (ve dosya uzantılarına, yani normalde son dönemden sonraki dosya adının bir kısmına) dayanmaz ve bunun yerine, içeriğinin ilk birkaç baytını inceleyerek ve bunu bilinen sihirli sayılar listesiyle karşılaştırarak dosya türünü belirler. .

Örneğin, tüm Bitmap görüntü dosyaları (genellikle ad uzantısına sahip .bmp) BMilk iki bayttaki harflerle başlamalıdır . Bash, Python, Perl, AWK, vb. Gibi çoğu betik dilindeki komut dosyaları (temelde #yorum olarak başlayan satırları işleyen her şey ), #!/bin/bashilk satır gibi bir shebang içerebilir . Bu özel yorum sisteme dosyayı hangi uygulamayı açacağını söyler.

Bu nedenle, işletim sistemi normal olarak dosya içeriğine dayanır ve dosya türünü belirleme adına değil, dosya uzantılarının Linux'ta hiçbir zaman gerekli olmadığını belirten gerçeğin sadece yarısıdır.


Uygulamalar elbette, dosya adının ve uzantının doğrulanmasını da içeren dosya denetimlerini istedikleri gibi uygulayabilir. Bunun bir örneği, eogdosya biçimine göre görüntü biçimini belirleyen ve içerikle eşleşmiyorsa bir hata veren Gnome'nin Gözü'dür ( standart resim görüntüleyici). Bunun bir hata mı yoksa bir özellik mi olduğu tartışılabilir ...

Ancak, işletim sisteminin bazı bölümleri bile dosya adı uzantılarına dayanır; örneğin, yazılım kaynak dosyalarınızı ayrıştırırken /etc/apt/sources.list.d/yalnızca *.listuzantıya sahip dosyalar diğerlerinin yok sayılmasını sağlar. Belki de esas olarak buradaki dosya türünü belirlemek için kullanılmıyor, bunun yerine bazı dosyaların ayrıştırılmasını etkinleştirmek / devre dışı bırakmak, ancak hala sistemin bir dosyayı nasıl tedavi ettiğini etkileyen bir dosya uzantısı.

Ve tabii insan kullanıcı kar bariz bir dosya türünü yapar ve aynı zamanda aynı temel adla birden fazla dosya ve benzeri farklı uzantılar verir gibi dosya uzantıları en site.html, site.php, site.js, site.cssdezavantaj tabii vb dosya uzantısı ve gerçek dosya türünün / içeriğinin mutlaka eşleşmesi gerekmez.

Ek olarak, platformlar arası birlikte çalışabilirlik için gereklidir, çünkü Windows bir readmedosyayla ne yapacağını bilmeyecek , ancak yalnızca bir readme.txt.


Burada kendinizle biraz çelişiyorsunuz: standart resim görüntüleyici .bmp ile biten bir dosya adı gerektiriyorsa, işletim sisteminin hangi bölümünü "BM" ile başlayan dosya içeriğine güveniyor diyorsunuz? AFAIK, çekirdek önemsediği tek "sihirli numaralar çalıştırılabilir türleri özel bir durum da dahil olmak üzere, şunlardır #!Her şey biraz uygulamanın kararına kalmıştır..
IMSoP

@IMSoP Bunun tam olarak uygulandığını eogbilmiyorum ve dosya adını neden umursadıklarını bilmiyorum. Bu bence bir hata. Ve tabii ki dosya "bmp" olarak adlandırılmış ancak içerik formatı eşleşmiyorsa, elbette bir hata da olacaktır. Elbette her uygulama dosyaları nasıl doğrulayacağınıza karar verir, ancak genel olarak Linux uygulamaları isme dayanmamalıdır. BTWT, filedosya türlerini içeriğine göre incelemek için bu komutu kullanabilirsiniz .
Byte Commander

1
Meydan okuduğum cümle şudur: "Linux ... ilk birkaç baytı inceleyerek dosya türünü belirler". Bu cümlede ne "Linux" kullanıyorsunuz? fileYardımcı programın varlığı hiçbir şey kanıtlamaz; Herhangi bir işletim sisteminde var olabilecek faydalı bir araçtır. İşletim sisteminin hangi temel kısmı file, dosya adını bulmaktan ziyade "doğru" çalışmayı sağlar ?
IMSoP,

Bir uzantısı olmayan dosyaları unutmayın edebilir bir programla ilişkili olmalıdır.
isanae

24

Diğerleri tarafından belirtildiği gibi, Linux'ta tercüman direktif yöntemi (bazı meta verileri bir dosyada başlık veya sihir numarası olarak saklamak, böylece doğru tercümanın Windows tarafından kullanılan dosya adı uzantısı birleştirme yöntemi yerine okunması söylenebilir) kullanılır.

Bu, birkaç istisna dışında istediğiniz herhangi bir ada sahip bir dosya oluşturabileceğiniz anlamına gelir.

ancak

Dikkatli bir kelime eklemek istiyorum.

Sisteminizde dosya adı ilişkilendirmesini kullanan bir sistemden bazı dosyalarınız varsa, dosyalarda bu sihirli sayılar veya başlıklar olmayabilir. Dosya adı uzantıları, bu dosyaları okuyabilen uygulamalar tarafından tanımlamak için kullanılır ve bu dosyaları yeniden adlandırırsanız beklenmeyen efektlerle karşılaşabilirsiniz. Örneğin:

Bir dosyayı yeniden adlandırırsanız My Novel.dociçin My-Novel, LibreOffice yine açmak mümkün olacak, ancak 'İsimsiz' olarak açılır ve LibreOffice varsayılan olarak bir uzantı ekler (kaydetmek için tekrar isim vermek zorunda olacak, bu yüzden daha sonra olurdu iki dosya My-Novelve My-Novel.odtrahatsız edici olabilir)

Daha da ciddiyim, eğer bir dosyayı My Spreadsheet.xlsx'i My Spreadsheet olarak değiştirirseniz, onu açmaya çalışın xdg-open My-Spreadsheet(bunu gerçekte sıkıştırılmış bir dosya olduğu için) alacaksınız:

Ve bir dosyayı yeniden adlandırmak eğer My Spreadsheet.xlsiçin My-Spreadsheetne zaman, xdg-open My-Spreadsheetsen belirten bir hata olsun

açılış yeri hatası: Bu dosyanın kullanımı için hiçbir uygulama kayıtlı değil

(Her iki durumda da, yaparsanız tamam işe yarıyorsa da soffice My-Spreadsheet)

Eğer daha sonra extensionless dosyasını yeniden adlandırırsanız My-Spreadsheet.odsile mvve bu alacak açmaya:

(onarım başarısız)

Ve dosyayı doğru bir şekilde açmak için orijinal uzantıyı tekrar açmanız gerekir (dilerseniz formatı dönüştürebilirsiniz).

TL; DR:

Ad uzantısına sahip yerel olmayan dosyalarınız varsa, her şeyin yoluna gireceğini varsayarak uzantıları kaldırmayın!


4
Dosya uzantısı olmayan yeni stil bir MS Office belgesi (docx, xlsx, pptx vb.) Arşiv yöneticisinde açılır çünkü bu dosya türleri aslında belge içeriğini tanımlamak için gereken tüm XML belgelerini ve medya dosyalarını içeren sıradan ZIP sıkıştırılmış dosyalarıdır. ZIP sıkıştırılmış bir dizinin dosya formatı günümüzde btw oldukça yaygındır.
Byte Commander

1
Zaten çok büyük cevaplar, ancak farkettiğim libreoffice için sadece bir tane daha. Bir virgülle ayrılmış değerler dosyası (CSV) yaratır ve "test.csv" olarak kaydedersiniz, ne tür bir ayırıcı kullandığınızı soran bir pencere açılır (örneğin, libreoffice Calc). Örneğin, bu dosyayı "test.cs" olarak değiştirirseniz, libreoffice'in Yazarı açılır. Bu nedenle, yukarıdaki ZIP örneğinin yanı sıra, libreoffice dosya uzantısını kullandığı görülüyor.
Ray

3
Linux dosya sistemi dosya türleriyle ilgili hiçbir şey yapmaz. Hepsi üzerinde çalışan programlara bağlı.
Peter Green,

@PeterGreen Evet, ancak programların buna önem vermesi gerçeği, "sadece insanlar için" değil, örneğin klasik MacOS'un [dört baytlık "dosya türü" ve "yaratıcı uygulama" alanları vardı. t dosya adının bir parçası olduğundan, işletim sistemi ve uygulamalar dosya uzantılarına bakmadan ihtiyaç duydukları tüm bilgilere
sahiptiler

3
@PeterGreen Windows dosya sistemi de dosya türleriyle ilgili hiçbir şey yapmaz. Grafik kabuğu (Windows Gezgini), çift tıklatma eylemini seçmek için dosya uzantısını kullanır; ancak teknik olarak bu, Nautilus gibi, işletim sisteminin üstünde çalışan bir programdır. Bu davranışla bir Linux dosya yöneticisi veya dosya içeriğini inceleyen bir Windows yazmak mükemmel bir şekilde mümkün olacaktır.
IMSoP,

20

Buna diğer cevaplardan farklı bir yaklaşım getirmek ve "Linux" veya "Windows" un bununla ilgisi olduğu fikrine meydan okumak istiyorum (benimle birlikte).

Bir dosya uzantısı kavramı basitçe "adının bir bölümünü temel alan bir dosyanın türünü tanımlamaya yönelik bir sözleşme" olarak ifade edilebilir. Bir dosyanın türünü tanımlamak için kullanılan diğer genel kurallar, içeriğini bilinen imza veritabanına ("sihirli sayı" yaklaşımı) karşı karşılaştırmak ve onu dosya sistemine (orijinal MacOS'ta kullanılan yaklaşım) fazladan bir öznitelik olarak depolamaktır. .

Bir Windows veya Linux sistemindeki her dosyanın hem adı hem de içeriği olduğundan, dosya türünü bilmek isteyen işlemler, uygun gördükleri gibi "uzantı" veya "sihirli sayı" yaklaşımlarını kullanabilir. Çoğu dosya sisteminde bu özellik için standart bir yer olmadığından meta veri yaklaşımı genel olarak kullanılamaz.

Windows'ta, dosya uzantısını bir dosyayı tanımlamanın birincil aracı olarak kullanma geleneği vardır; en belirgin şekilde, grafiksel dosya tarayıcısı (Windows 3.1'deki Dosya Yöneticisi ve modern Windows'daki Gezgin), hangi uygulamanın başlatılacağını belirlemek için bir dosyayı çift tıkladığınızda kullanır. Linux'ta (ve daha genel olarak Unix tabanlı sistemlerde), içeriği denetlemek için daha fazla gelenek var; en önemlisi, çekirdek, nasıl çalıştırılacağını belirlemek için doğrudan yürütülen bir dosyanın başlangıcına bakar; komut dosyaları, tercümanın #!yolunu izleyerek başlayarak kullanacağınız bir tercümanı belirtebilir .

Bu gelenekler, her bir sistem için yazılan programların UI tasarımını etkiler, ancak birçok istisna vardır, çünkü her yaklaşımın farklı durumlarda artıları ve eksileri vardır. İçeriği incelemek yerine dosya uzantılarını kullanma nedenleri:

  • dosya içeriğinin incelenmesi, dosya adlarının incelenmesi ile karşılaştırıldığında oldukça maliyetlidir; bu nedenle, "* .conf adlı tüm dosyaları bul", "ilk satırı bu imzayla eşleşen tüm dosyaları bul" dan çok daha hızlı olacaktır.
  • dosya içerikleri belirsiz olabilir; Birçok dosya formatı aslında sadece özel bir şekilde işlenen metin dosyalarıdır, diğerleri ise özel olarak yapılandırılmış zip dosyalarıdır ve bunlar için doğru imzalar tanımlamak zordur.
  • bir dosya gerçekten birden fazla tür olarak geçerli olabilir; Bir HTML dosyası da geçerli XML olabilir, bir zip dosyası ve bir araya getirilmiş bir GIF her iki format için de geçerli kalır
  • sihirli sayı eşleştirmesi yanlış pozitiflere yol açabilir; başlığı olmayan bir dosya formatı, "GIF89a" baytlarıyla başlayabilir ve GIF resmi olarak yanlış tanımlanabilir
  • bir dosyayı yeniden adlandırmak "devre dışı" olarak işaretlemek için uygun bir yol olabilir; örneğin, bir yedeği belirtmek için "foo.conf" ifadesini "foo.conf ~" olarak değiştirmek, dosyayı tüm yönergelerini yorumlayacak şekilde düzenlemekten daha kolay ve otomatik olarak yüklenen bir dizinden çıkarmaktan daha kolaydır; Benzer şekilde, bir .php dosyasını .txt olarak yeniden adlandırmak Apache'ye kaynağını PHP motoruna iletmek yerine düz metin olarak sunmasını söyleyecektir.

Varsayılan olarak dosya adlarını kullanan Linux programlarına örnekler (ancak başka modları olabilir):

  • gzip ve gunzip, ".gz" ile biten herhangi bir dosyanın özel işlemesine sahiptir.
  • gcc, ".c" dosyalarını C, ve ".cc" veya ".C" yi C ++ olarak işleyecektir.

Windows aynı zamanda "iyi bilinen" bir uzantı gizleme geleneğine sahiptir ve hatta DOS bile bir komutun .COM, .BAT ve .EXE komutlarını atlamasına izin verdi, otomatik olarak hangi gerçek programın çalışacağını belirleyenleri aradı. * Nix'te böyle bir gelenek yoktur.
Monty Harder,

Bu çok daha iyi bir cevap ama tek bir hata var ... bir betiğin #!başına yerleştirilerek çalıştırılamaz . Yürütülebilir bit (ler) setine sahip herhangi bir dosya birkaç yoldan biriyle çalıştırılabilir. #!/bin/bashve benzer imzalar sadece hangi tercümanın kullanılacağını belirtir. Böyle bir imza verilmezse, varsayılan kabuk yorumlayıcısının varsayıldığı kabul edilir. İki kelimeden başka bir şey içermeyen bir dosya olan 'Merhaba Dünya', ancak yürütme biti ayarlanmışken, çalıştırıldığında 'Merhaba' komutunu bulmaya çalışır.
DocSalvager 21

1
@DocSalvager İyi yakalama, bu kadar her şey kadar beceriksiz ifadelerdi. Shebang'ın betiği çalıştırılabilir hale getirmediğini , sadece nasıl yürütüldüğünü değiştirdiğini açıklığa kavuşturmak için biraz yazıyorum .
IMSoP,

15

Aslında, bazı teknolojiler do dosya uzantılarına güvenmek, bu nedenle Ubuntu bu teknolojileri kullanan, sen de uzantıları güvenmek gerekir. Birkaç örnek:

  • gccC + C ++ dosyalarını ayırt etmek için uzantıları kullanır. Uzantı olmadan onları ayırt etmek neredeyse imkansız (sınıfsız bir C ++ dosyası hayal edin).
  • Birçok dosyaları ( docx, jar, apk) sadece özellikle ZIP arşivleri yapılandırılmıştır. Genellikle içerikten türünü tahmin mümkün olmakla birlikte, bu her zaman mümkün olmayabilir (örneğin Java Manifest olan isteğe bağlı yer jardosyaları).

Bu gibi durumlarda dosya uzantılarını kullanmamak, yalnızca geçici olmayan çözümlerle mümkün olabilir ve çok hataya açık olması muhtemeldir.


Programlamadan bahsettiğin için iyi, ama ayrıntıların çoğunu yanlış anladın. gccC dosyaları için ön uç, C ++ dosyaları g++için ise dil belirtmek için ön uç ya da komut satırı anahtarına ihtiyacınız vardır. Daha önemli olan makekullanılıp kullanılmayacağını karar programı gccveya g++ve - Belirli bir dosya oluşturmak için makeonun kural eşleştirme için dosya adı desenleri (çoğunlukla uzantıları) tamamen bağımlıdır.
Ben Voigt

@BenVoigt Bir .ccuzantıya sahip bir dosyayı derlerken gcc, gerçekten C ++ olarak derlenir ve bu şöyle belgelenir man gcc: "Herhangi bir giriş dosyası için, dosya adı soneki ne tür bir derleme yapıldığını belirler:" uzantıları ve nasıl tedavi edilir.
hvd

1
@hvd Öyleyse, doğru ön uç kullanmazsanız, belki de çok yanlış giden varsayılan kitaplıklar kümesidir. Her neyse yapmak ana örnektir, çünkü yaptığı her şey dosya uzantısına dayanır.
Ben Voigt,

1
@BenVoigt makede iyi bir örnek, ancak gccdosya adlarına çok güveniyor. İşte daha bir örnek daha açık .cvs .cc: C için gccilk adım (önişlem olup olmadığını söylemek için son ekleri kullanır .c(derleme) .i(monte) .s) veya bağlantı ( .o). Burada kullandığım -E, -Sve -canlatmak için gccnereye durdurmak , ancak işe nereden bilmek dosya adlarını kullanır başlatmak . gcc something.ccC ++ için doğru kütüphaneler yönlendirilmezsiniz ama olacak birçok kullanıcı bu hatayı yaparken aldıkları hata mesajları ile karıştırılıyor yüzden C ++, dosyayı davranın.
Eliah Kagan

7

İlk varsayımınız doğrudur: Linux'taki uzantılar önemli değildir ve sadece insanlar (ve uzantıları önemseyen Unix benzeri olmayan işletim sistemleri için faydalıdır). Bir dosyanın türü, sihirli sayı olarak bilinen dosyadaki ilk 32 bit veri tarafından belirlenir. Bu nedenle kabuk komut dosyalarının #!satırlara ihtiyacı vardır - işletim sistemine hangi tercümanın çağırılacağını söylemek için. Onsuz, kabuk betiği sadece metin dosyasıdır.

Dosya yöneticileri gittikçe, .desktoptemelde, Windows'un kısayol sürümüyle aynı olan ancak daha fazla özellik içeren dosyalar gibi bazı dosyaların uzantılarını bilmek istiyorlar . Ancak işletim sistemi söz konusu olduğunda, dosyada ne olduğunu değil, dosyada ne olduğunu bilmesi gerekir.


3
Bu tam olarak doğru değil. Belirli bir uzantı bekleyen programlar var. En sık kullanılan örnek, gunzipeğer çağrılmazsa bir dosyayı açmayacak olandır foo.gz.
terdon

Bu özel bir yazılımın uygulamasıdır. Çoğunlukla, unix benzeri sistemlerdeki yardımcı programlar bir uzantı beklemiyor.
Sergiy Kolodyazhnyy

7
Çoğunlukla yapmazlar, hayır. Ancak ilk cümleniz, asla kullanılmadıklarını ve sadece insanlar için önemli olduğunu iddia ediyor. Bu tamamen doğru değil. gunzipbir örnek, eogbaşka bir şey. Ayrıca, birçok araç doğru uzantı olmadan adları otomatik olarak tamamlamaz. Tek söylediğim, "uzantılar her zaman ilgisiz" den biraz daha karmaşık.
terdon

1
1 küçük sorun: OP işletim sistemi hakkında sorular sordu. 'gunzip' ve 'eog' işletim sistemi değildir ancak kendi sınırlamalarını (gunzip durumunda) veya yöntemini (eog) oluşturmaya karar vermiştir. "Mim türleri" olsa da.
Rinzwind

1
@Serg Tabii, OS'yi dar olarak tanımlayabilir ve soruya önemsiz bir cevap alabilirsiniz. Bu, özellikle yararlı bir cevap değil, çünkü bir kullanıcının bir bilgisayarda ne yaptığının büyük çoğunluğu dışladığınız yazılımı içerir. Sorunun "sadece insanlar için" "işletim sistemine" karşı çıktığını unutmayın; "Çekirdek" demek istediklerini sanmıyorum.
IMSoP,

6

Bu bir yorum cevabı için çok büyük.

Eğer farklı anlamlar varsa "uzatma" bile çok şey olduğunu unutmayın.

Senin bahsettiğin şey, ondan sonraki 3 harf gibi görünüyor. DOS 8.3 biçimini gerçekten popüler yaptı ve Windows bu güne .3 bölümünü kullandı.

Linux, .conf veya .list veya .d veya .c gibi birçok anlamı olan, ancak 8.3 anlamında gerçekten bir uzantısı olmayan dosyalara sahiptir. Örneğin Apache, yapılandırma yönergesi için /etc/apache2/sites-enabled/website.conf adresine bakar. Sistem MIME Türleri ve içerik üstbilgileri kullanırken ve ne bir metin dosyası olarak belirlenmemesi gerektiğine rağmen, Apache (varsayılan olarak) hala .conf ile bitmeden yüklenmeyecektir.

.c başka büyük olanıdır. Evet, bu bir metin dosyası, ancak gcc main.o ve nihayetinde main (hale geldikten sonra) main.o olmaya bağlı. Sistem hiçbir zaman .c, .o kullanır veya hiçbir uzantıyı içerik kadar anlamsız olmak için kullanır, ancak ondan sonraki şeyler. bir anlamı var. SCM'nizi main.o ve main'i görmezden gelecek şekilde ayarlamış olabilirsiniz.

Olması gereken nokta şudur: Uzantılar, pencerelerde olduğu gibi kullanılmaz. Çekirdek bir .txt dosyası yürütmez çünkü adın .txt bölümünü kaldırırsınız. Yürütme izni ayarlanmışsa bir .txt dosyası çalıştırmak da çok mutludur. Olduğu söyleniyor, bir anlamı var ve hala birçok şey için "bilgisayar düzeyinde" kullanılıyor.


1
Windows ayrıca bağlı değildir x.3gibi orada bir daha şu havlular uzun uzantıları yanı adlandırma şeması .doxc, .torrent, .partvb Bu sadece birçok dosya formatları ve uzantıları zaten sonradan 8.3 adlandırma hala şeydi zaman zamanda geri tanımlanmış ve edildi oluyor formatlar çoğunlukla 3 harfe kadar kullanım kurallarını uyarladı.
Byte Commander

Nasıl ".conf", ".c", vb "8.3 anlam" dan "farklı bir anlam" olduğunu anlamıyorum. Bir dosya uzantısı kavramı basitçe "adının bir bölümünü temel alan bir dosyanın türünü tanımlamaya yönelik bir sözleşme" olarak ifade edilebilir. DOS / Win3.1 bile doğru uzantıya ihtiyaç duymadı ("STUPIDN.AME" adlı bir Word belgesini çağırabilir ve WinWord'da Ctrl-O ile açabilirsiniz). Sadece bazı sistemler (örneğin, Windows'a çift tıklayın, gzipMakefile, vb.), Her bir dosya üzerinde yapılacak doğru eylem hakkında varsayımlar yapmak için bu sözleşmeyi kullanmak üzere yazılabilir.
IMSoP,

@ByteCommander Bu doğru, ancak uzantı hala kullanılan uygulamayı belirler. Bunu yansıtmak için cevabı nasıl düzenleyeceğimi bilmiyorum.
coteyr

1
@coteyr Yine, hepsi "işletim sistemi" ile ne demek istediğimize bağlı. Dosya Yöneticisi kesinlikle "AME" için bir kayıt defteri anahtarı yukarı bakacak ve "fan.txt" bir metin dosyası olduğunu söyleyecek. Ancak dirkomut isteminde çalıştırmak bana böyle bir şey söylemez; sadece umursamaz. Dosyaları çalıştırmak kesinlikle her iki işletim sisteminde de bir istisnadır; eğer soru bunlarla sınırlı olsaydı, cevap DOS / Windows’un sadece ismi önemser ve Unix / Linux sadece yürütme iznini ve dosyanın ilk baytını önemserdi. Bunun dışında, takip edilecek bir sözleşmeyi seçen bir uygulama her zaman vardır.
IMSoP,

1
@coteyr Windows 3.1 ve üzeri sürümlerde * .scr (ekran koruyucu ikili) modunu unuttunuz. Bununla birlikte, DOS / Windows sistemlerinde bile yürütülebilir dosyalar için bile dosya uzantısı hala kolaylık sağlıyor. Spesifikasyonlar, "işletim sistemi" hattını nereye çizdiğinize çok bağlıdır, ancak normalde işletim sisteminin yapmasını istediği işi yaparak, her zaman belleğe bir ikili dosya yükleyebilir ve kendinize atlayabilirsiniz. MS-DOS'da command.com'a bakarsanız, hiçbiri belirtilmemişse, diğer uzantıları arayacak şekilde düzenleyebileceğiniz EXE COM gibi bir liste olduğundan eminim (iyi bir fikir olacağını söylemez) umursamıyorum).
CVn
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.