File (komut)

komutu, Unix ve Unix benzeri işletim sistemlerinde standart bir program'dır. Bir bilgisayar dosyası içinde bulunan veri türünü tanımak için kullanılır.'ın orijinal sürümü 1973'te Unix Research Version 4'te ortaya çıkmıştır. System V birkaç önemli değişiklikle birlikte büyük bir güncelleme getirdi, bunlardan en önemlisi de dosya türü bilgisini programın ikili dosyanın içine derlemek yerine harici bir metin dosyasına taşımaktı.Çoğu büyük BSD ve Linux dağıtımları, komutun 1986-87 yıllarında Ian Darwin tarafından sıfırdan yazılan bir özgür, açık kaynaklı yeniden uyarlamasını kullanır. 1989'da Geoff Collyer tarafından genişletildi ve o zamandan beri Guy Harris, Chris Lowth ve Eric Fischer dahil olmak üzere birçok kişiden girdi aldı; 1993'ün sonlarından itibaren bakımı Christos Zoulas tarafından organize edildi. OpenBSD sistemi sıfırdan yazılmış kendi alt küme uygulamasına sahiptir, ancak hala Darwin/Zoulas sihirli dosya formatlı bilgi koleksiyonunu (collection of magic-file) kullanmaktadır.Tekli UNIX Belirtimi (SUS - Single UNIX Specification), komut satırında belirtilen dosya üzerinde bir dizi sınama gerçekleştirileceğini belirtir:dosya okunamazsa veya Unix dosya türü belirlenemezse,  programı dosyanın işlendiğini ancak türünün belirlenemediğini belirtir.'ın konuma duyarlı testleri normalde dosya içindeki çeşitli konumları sihirli sayılardan oluşan metinsel bir veri tabanıyla eşleştirerek uygulanır (Kullanım bölümüne bakın). Bu, dosya uzantıları ve MIME gibi şemaları kullanan diğer basit yöntemlerden farklıdır.Çoğu uygulamada,  komutu öncü baytların araştırılmasını sağlamak için bir veri tabanı kullanır. Bu veri tabanı, konumu genellikle ,  veya benzer bir konumda olan  adlı özel bir dosyada uygulanır., konuma duyarlı testleri içeren özel olarak biçimlendirilmiş bir dosya belirtin; varsayılan konuma duyarlı testler ve bağlama duyarlı testler gerçekleştirilmeyecektir,  için olduğu gibi, ancak varsayılan testler  içinde bulunan testlerden sonra gerçekleştirilecektir., verilen dosyaya varsayılan konuma duyarlı ve bağlama duyarlı testler gerçekleştirir;  veya  belirtilmediği sürece bu varsayılan davranıştır., dosyayı varolmayan, blok özel dosya, karakter özel dosya, dizin, FIFO, soket, sembolik bağlantı veya normal dosya olarak tanımlamaktan başka bir şekilde sınıflandırmaz. Linux ve BSD sistemleri bu seçenekle farklı davranır ve bunun yerine tanınan dosya biçimini tanımlayan bir İnternet ortam türü ("MIME türü") çıktısı verir.Diğer Unix ve Unix benzeri işletim sistemleri bunlara ek olarak  'özel dosyalar (special files)',  'devam et (keep-going)' veya  'ham (raw)' gibi seçenekler ekleyebilir (örnekler aşağıda).Komut, dosyanın ne olduğunu değil, yalnızca "neye benzediğini" söyler ("file" içeriğe baktığı durumda). İçeriği eşleşmeyen bir dosyaya sihirli bir sayı koyarak programı kandırmak kolaydır. Bu nedenle komut, belirli durumlar dışında bir güvenlik aracı olarak kullanılamaz.seçeneğinin yalnızca bazı platformlarda bulunan ve 'a aygıt dosyalarını okumasını ve bunları yalnızca aygıt dosyası olarak tanımlamak yerine içeriklerini tanımlamaya çalışmasını söyleyen standart olmayan bir seçenek olduğunu unutmayın.Normalde  aygıt dosyalarını okumaya çalışmaz çünkü böyle bir dosyayı okumak, istenmeyen yan etkilere neden olabilir.Standart olmayan  seçeneği sayesinde, program bulunan ilk isabetten sonra durmaz, ancak diğer eşleşen kalıpları arar.Bazı sürümlerde mevcut olan  seçeneği, yazdırılamayan satır sonu karakterinin sekizli gösterimi yerine ham haliyle görüntülenmesine neden olur.Sembolik bağlantıların tanımlanması, tüm platformlarda mevcut değildir ve  parametresi kullanılırsa veya  ayarlanırsa referans kaldırılır.'ın Ian Darwin/Christos Zoulas sürümünün 4.00 versiyonundan itibaren, 'ın işlevselliği C (ve C uyumlu) bağlantı yoluyla erişilebilen bir  kütüphanesine dahil edilmiştir;  bu kütüphane kullanılarak uygulanmaktadır.