file
birkaç çeşit test kullanır :
1: Dosya yoksa, okunamıyorsa veya dosya durumu belirlenememişse, çıktı dosyanın işlendiğini, ancak türünün belirlenemediğini göstermelidir.
Bu çıktı gibi olacak cannot open file: No such file or directory
.
2: Dosya normal bir dosya değilse, dosya türü tanımlanacaktır. Dosya türleri dizini, FIFO, soket, özel blok ve özel karakter bu şekilde tanımlanmalıdır. Uygulama tarafından tanımlanan diğer dosya türleri de tanımlanabilir. Dosya sembolik bir bağlantıysa, varsayılan olarak bağlantı çözümlenecek ve dosya sembolik bağlantı tarafından başvurulan dosya türünü test edecektir. ( Aşağıdaki -h
ve -i
seçeneklerine bakın.)
Bu .: directory
ve /dev/sda: block special
. Bu ve önceki nokta için formatın çoğu POSIX tarafından kısmen tanımlanmıştır - çıktıdaki belirli dizelere güvenebilirsiniz.
3: Dosyanın uzunluğu sıfırsa, boş bir dosya olarak tanımlanmalıdır.
Bu foo: empty
.
4: Dosya yardımcı programı dosyanın ilk segmentini inceleyecek ve içeriğini konuma duyarlı testlere dayanarak belirleyecek bir tahminde bulunacaktır. (Yanıtın doğru olduğu garanti edilmez; aşağıdaki -d, -M ve -m seçeneklerine bakın.)
5: Dosya yardımcı programı dosyayı inceler ve içeriğe duyarlı varsayılan sistem testlerine dayanarak içeriğini tanımlamayı tahmin eder. (Yanıtın doğru olduğu garanti edilmez.)
Bu ikisi sihirli sayı tanımlaması kullanır ve komutun en ilginç kısmıdır. Bir sihirli sayı tanımlar türünün bir dosyada bilinen bir yerde bulunuyor bayt özel dizisidir. Geleneksel olarak bu yer ilk iki bayttır, ancak terim daha uzun dizeleri ve diğer konumları içerecek şekilde genişletilmiştir. Komuttaki sihirli sayılar hakkında daha fazla ayrıntı için bu diğer soruya bakın file
.
file
Komut bu sayıların bir veritabanına sahip ve ne karşılık tip; Bu veritabanı genellikle içeridedir/usr/share/mime/magic
ve dosya içeriğini MIME türleriyle eşler . Oradaki çıktı (genellikle file -i
varsayılan olarak alamıyorsanız , bir kısmı ) tanımlanmış bir medya türü veya bir uzantı olacaktır. "Bağlama duyarlı testler" aynı tür yaklaşımı kullanır, ancak biraz daha bulanıktır. Bunların hiçbirinin doğru olduğu garanti edilmez, ancak iyi tahminler yapılması amaçlanmıştır.
file
Ayrıca, bu türleri adlarıyla eşleştiren bir veritabanına sahiptir ve bu dosya tarafından tanımlandığı bir dosyanın application/pdf
bir PDF document
. Bu okunabilir adlar başka bir dile de yerelleştirilebilir. Bunlar her zaman dosya türünün bir makine yerine bir kişinin anlayacağı şekilde yüksek düzeyli bir açıklaması olacaktır.
Alabileceğiniz farklı çıktıların çoğu bu aşamalardan gelecektir. magic
Desteklenen türlerin bir listesini ve nasıl tanımlandığını görmek için dosyaya bakabilirsiniz - sistemim 376 farklı türü biliyor. Verilen adlar ve desteklenen türler sistem ambalajınız ve yapılandırmanız tarafından belirlenir ve böylece sisteminiz benimkinden daha fazla veya daha azını destekleyebilir, ancak genellikle birçoğu vardır. libmagic
ayrıca ek sabit kodlu testler de içerir.
6: Dosya bir veri dosyası olarak tanımlanacaktır.
Bu, foo: data
dosya hakkında hiçbir şey bulamadığında.
Görünebilecek başka küçük etiketler de vardır. Bir yürütülebilir ( +x
) dosya executable
çıktıda genellikle virgülle ayrılmış " " içerir . file
Uygulama ayrıca "örneğinde olduğu gibi, onlar hakkında ek puan tarif edebilmek için bazı dosya biçimleri hakkında ekstra şeyler biliyor olabilir PDF document, version 1.4
".