Özet
file [-bcdDhiIkLnNprsvz] [--exclude-quiet] [--extension] [--mime-encoding] [--mime-type]
[-f namefile] [-m magicfiles] [-P name=value] [-M magicfiles] file
file -C [-m magicfiles]
file [--help]
Açıklama
Bu kılavuz sayfası, file komutunun 5.41 sürümünü belgelemektedir.
file, her bir bağımsız değişkeni (argument) sınıflandırmak amacıyla test eder. Bu sırayla gerçekleştirilen üç test seti vardır: dosya sistemi testleri, sihirli (magic) testler ve dil testleri. Başarılı olan ilk test, dosya türünün yazdırılmasını sağlar.
Yazdırılan tür genellikle şu kelimelerden birini içerecektir: text (dosya yalnızca yazdırılabilir karakterler ile birkaç yaygın kontrol karakteri içerir ve muhtemelen bir ASCII terminalinde güvenle okunabilir), executable (dosya, bir programın derlenmesi sonucu elde edilmiş ve herhangi bir UNIX çekirdeği tarafından anlaşılabilecek biçimdedir) veya diğer her şey anlamına gelen data (veri genellikle "ikili" [binary] veya yazdırılamayan karakterlerden oluşur). İstisnalar, ikili (binary) veri içerdiği bilinen, iyi bilinen dosya biçimleridir (core dosyaları, tar arşivleri). Magic dosyalarını veya programın kendisini değiştirirken bu anahtar kelimeleri koruduğunuzdan emin olun. Kullanıcılar, bir dizindeki tüm okunabilir dosyaların çıktısında “text” kelimesinin yazmasına güvenirler. Berkeley'in yaptığı gibi yapıp “shell commands text” ifadesini “shell script” olarak değiştirmeyin.
Dosya sistemi testleri, bir stat(2) sistem çağrısından (system call) dönen değerin incelenmesine dayanır. Program, dosyanın boş olup olmadığını veya bir tür özel dosya olup olmadığını kontrol eder. Çalıştığınız sisteme uygun bilinen dosya türleri (bunları uygulayan sistemlerdeki soketler, sembolik bağlar veya adlandırılmış borular [named pipes - FIFO'lar]), sistem başlık dosyası <sys/stat.h> içinde tanımlanmışlarsa sezgisel olarak tespit edilir.
Sihirli (magic) testler, belirli sabit biçimlerde veriye sahip dosyaları kontrol etmek için kullanılır. Bunun kurala uygun (canonical) örneği, biçimi standart include dizinindeki <elf.h>, <a.out.h> ve muhtemelen <exec.h> dosyalarında tanımlanmış olan ikili yürütülebilir (derlenmiş program) a.out dosyasıdır. Bu dosyaların, dosya başlangıcına yakın belirli bir yerinde saklanan ve UNIX işletim sistemine dosyanın bir ikili yürütülebilir dosya olduğunu ve bunun hangi türden olduğunu belirten bir "sihirli sayı" (magic number) bulunur. "Sihirli sayı" kavramı, kapsamı genişletilerek veri dosyalarına da uygulanmıştır. Dosya içinde küçük, sabit bir kayma miktarında (offset) değişmeyen bir tanımlayıcıya sahip herhangi bir dosya genellikle bu şekilde tanımlanabilir. Bu dosyaları tanımlayan bilgiler, derlenmiş magic dosyası /usr/share/file/magic.mgc'den veya derlenmiş dosya mevcut değilse /usr/share/file/magic dizinindeki dosyalardan okunur.
Eğer bir dosya magic dosyasındaki girdilerden hiçbiriyle eşleşmezse, bir metin dosyası gibi görünüp görünmediğini anlamak için incelenir. ASCII, ISO-8859-x, ISO dışı 8 bitlik genişletilmiş ASCII karakter kümeleri (Macintosh ve IBM PC sistemlerinde kullanılanlar gibi), UTF-8-kodlu Unicode, UTF-16-kodlu Unicode ve EBCDIC karakter kümeleri, her bir kümede yazdırılabilir metni oluşturan baytların farklı aralıkları ve dizilimleri ile ayırt edilebilir. Eğer bir dosya bu testlerden herhangi birini geçerse, karakter kümesi rapor edilir. ASCII, ISO-8859-x, UTF-8 ve genişletilmiş ASCII dosyaları, neredeyse her terminalde çoğunlukla okunabilir olacakları için “text” (metin) olarak tanımlanır; UTF-16 ve EBCDIC ise yalnızca “character data” (karakter verisi) olarak kabul edilir, çünkü metin içermelerine rağmen bu metin okunmadan önce çeviri gerektirecektir. Buna ek olarak file, metin türündeki dosyaların diğer özelliklerini belirlemeye çalışacaktır. Bir dosyanın satırları Unix standardı olan LF yerine CR, CRLF veya NEL ile sonlandırılıyorsa, bu durum rapor edilecektir. Gömülü kaçış dizileri (escape sequences) veya üst üste bindirme (overstriking) içeren dosyalar da tanımlanacaktır.
file, bir metin türü dosyada kullanılan karakter kümesini belirledikten sonra, dosyanın hangi dilde yazıldığını belirlemeye çalışacaktır. Dil testleri, bir dosyanın ilk birkaç bloğunun herhangi bir yerinde görünebilecek belirli dizeleri (krş. <names.h>) arar. Örneğin, struct anahtar kelimesi bir C programını gösterirken, .br anahtar kelimesi dosyanın büyük olasılıkla bir troff(1) girdi dosyası olduğunu gösterir. Bu testler önceki iki gruba göre daha az güvenilirdir, bu nedenle en son gerçekleştirilir. Dil testi rutinleri ayrıca bazı karmaşık durumları da (tar(1) arşivleri, JSON dosyaları gibi) test eder.
Yukarıda listelenen karakter kümelerinden herhangi birinde yazıldığı tespit edilemeyen herhangi bir dosya kısaca “data” (veri) olarak adlandırılır.
Seçenekler
-b, --brief Çıktı satırlarının başına dosya adlarını eklemez (kısa mod).
-C, --compile Magic dosyasının veya dizininin önceden ayrıştırılmış (pre-parsed) bir sürümünü içeren bir magic.mgc çıktı dosyası yazar.
-c, --checking-printout Magic dosyasının ayrıştırılmış biçiminin bir kontrol çıktısının verilmesini sağlar. Bu genellikle yeni bir magic dosyasını sisteme yüklemeden önce hata ayıklamak amacıyla -m seçeneği ile birlikte kullanılır.
-d
-d: Varsayılan sistem testlerini uygular; -M belirtilmediği sürece bu varsayılan davranıştır.
-D
-D: Hata ayıklama (debugging) mesajlarını yazdırır.
-E
-E: Dosya sistemi hatalarında (dosya bulunamadı vb.), POSIX'in emrettiği şekilde hatayı normal çıktı olarak ele alıp devam etmek yerine, bir hata mesajı verip çıkar.
-e, --exclude testname Dosya türünü belirlemek için yapılan testler listesinden testname içinde adı belirtilen testi hariç tutar. Geçerli test adları şunlardır:
apptype EMX uygulama türü (yalnızca EMX üzerinde).
ascii Çeşitli metin dosyası türleri (bu test, ‘encoding’ seçeneğinin ayarından bağımsız olarak metin kodlamasını tahmin etmeye çalışacaktır).
encoding Yumuşak (soft) magic testleri için farklı metin kodlamaları.
tokens Geriye dönük uyumluluk için yok sayılır.
cdf Bileşik Belge Dosyalarının (Compound Document Files) ayrıntılarını yazdırır.
compress Sıkıştırılmış dosyaları kontrol eder ve içlerine bakar.
csv Virgülle Ayrılmış Değer (Comma Separated Value - CSV) dosyalarını kontrol eder.
elf Yumuşak (soft) magic testleri etkinleştirilmişse ve elf magic bulunursa ELF dosyası ayrıntılarını yazdırır.
json JSON (RFC-7159) dosyalarını uygunluk açısından ayrıştırarak inceler.
soft Magic dosyalarına başvurur.
tar tar dosyalarını inceler.
--exclude-quiet --exclude gibidir ancak file komutunun bilmediği testleri yok sayar. Bu, file komutunun eski sürümleriyle uyumluluk sağlamak amacıyla tasarlanmıştır.
--extension Bulunan dosya türü için geçerli uzantıların eğik çizgiyle ayrılmış bir listesini yazdırır.
-F, --separator separator Dosya adı ile döndürülen dosya sonucu arasında ayırıcı olarak belirtilen dizeyi kullanır. Varsayılan olarak ‘:’ karakteridir.
-f, --files-from namefile İncelenecek dosyaların adlarını argüman listesinden önce namefile dosyasından (satır başına bir tane olacak şekilde) okur. namefile veya en az bir dosya adı argümanı mevcut olmalıdır; standart girdiyi test etmek için dosya adı argümanı olarak ‘-’ kullanın. Bu seçenekle karşılaşıldığında ve başka herhangi bir seçenek işlemi yapılmadan önce namefile dosyasının açıldığını ve içerdiği dosya adlarının işlendiğini lütfen unutmayın. Bu, aynı file çağrısında farklı komut satırı argümanlarıyla birden fazla dosya listesinin işlenmesini sağlar. Bu nedenle, sınırlayıcıyı ayarlamak istiyorsanız, bunu dosya listesini belirtmeden önce yapmanız gerekir, örneğin: “-f namefile -F @” yerine “-F @ -f namefile” şeklinde.
-h, --no-dereference Bu seçenek, (sembolik bağları destekleyen sistemlerde) sembolik bağların (symlink) takip edilmemesini sağlar.
-i
-i: Eğer dosya normal bir dosyaysa, içeriğini sınıflandırmaz.
-I, --mime file komutunun daha geleneksel insan tarafından okunabilir çıktılar yerine mime türü dizeleri vermesini sağlar. Böylece “ASCII text” yerine ‘text/plain; charset=us-ascii’ diyebilir.
--mime-type, --mime-encoding -I seçeneği gibidir, ancak yalnızca belirtilen bileşeni veya bileşenleri yazdırır.
-k, --keep-going İlk eşleşmede durmaz, devam eder. Sonraki eşleşmelerin başına ‘\012- ’ dizesi eklenecektir. (Yeni satır istiyorsanız -r seçeneğine bakın.) Eşleştirme için en yüksek güce sahip magic şablonu (bkz. -l seçeneği) ilk sırada yer alır.
-l, --list Eşleştirme için kullanılan şablonların ve güçlerinin, magic(5) gücüne göre azalan düzende sıralanmış bir listesini gösterir (ayrıca -k seçeneğine de bakın).
-L, --dereference Bu seçenek, ls(1) içindeki benzer adlı seçenek gibi sembolik bağların takip edilmesini sağlar (sembolik bağları destekleyen sistemlerde). Bu varsayılan davranıştır.
-m, --magic-file magicfiles Magic içeren dosyaların ve dizinlerin alternatif bir listesini belirtir. Bu tek bir öğe veya iki nokta üst üste ile ayrılmış bir liste olabilir. Bir dosya veya dizinin yanında derlenmiş bir magic dosyası bulunursa, bunun yerine o kullanılır.
-M magicfiles -m seçeneği gibidir, ancak -d belirtilmedikçe varsayılan kurallar uygulanmaz.
-n, --no-buffer Her bir dosya kontrol edildikten sonra stdout'un temizlenmesini (flush) zorlar. Bu sadece bir dosya listesi kontrol ediliyorsa kullanışlıdır. Bir borudan (pipe) dosya türü çıktısı almak isteyen programlar tarafından kullanılmak üzere tasarlanmıştır.
-p, --preserve-date utime(3) veya utimes(2) destekleyen sistemlerde, file komutunun dosyaları hiç okumamış gibi davranmasını sağlamak için analiz edilen dosyaların erişim zamanını korumaya çalışır.
-P, --parameter name=value Çeşitli parametre sınırlarını ayarlar.
Ad Varsayılan Açıklama bytes 1048576 dosyadan okunacak maksimum bayt sayısı elf_notes 256 işlenen maksimum ELF notu elf_phnum 2048 işlenen maksimum ELF program bölümü elf_shnum 32768 işlenen maksimum ELF bölümü encoding 65536 kodlama değerlendirmesi için taranacak maksimum bayt sayısı indir 50 dolaylı (indirect) magic için yineleme (recursion) sınırı name 60 name/use magic için kullanım sayısı sınırı regex 8192 regex aramaları için uzunluk sınırı
-r, --raw Herhangi bir işlem yapmaz, geçmişe dönük uyumluluk için dahil edilmiştir.
-s, --special-files Normalde file, yalnızca stat(2) çağrısının sıradan dosyalar olduğunu bildirdiği bağımsız değişken dosyalarını okumaya ve türlerini belirlemeye çalışır. Bu olası sorunları önler, çünkü özel dosyaları okumak garip sonuçlar doğurabilir. -s seçeneğinin belirtilmesi, file komutunun blok veya karakter özel dosyaları olan bağımsız değişken dosyalarını da okumasını sağlar. Bu, blok özel dosyaları olan ham disk bölümlerindeki verilerin dosya sistemi türlerini belirlemek için kullanışlıdır. Bu seçenek ayrıca, bazı sistemlerde ham disk bölümleri için sıfır boyutu rapor edildiğinden, file komutunun stat(2) tarafından bildirilen dosya boyutunu dikkate almamasını sağlar.
-v, --version Programın sürümünü yazdırır ve çıkar.
-z, --uncompress Sıkıştırılmış dosyaların içine bakmaya çalışır.
-Z, --uncompress-noreport Sıkıştırılmış dosyaların içine bakmaya çalışır, ancak sıkıştırma hakkında değil, yalnızca içerik hakkında bilgi rapor eder.
-0, --print0 Dosya adının bitiminden sonra bir null karakteri ‘\0’ çıktılar. Çıktıyı cut(1) ile kesmek için kullanışlıdır. Bu durum, hala yazdırılan ayırıcıyı etkilemez.
--help: Bir yardım mesajı yazdırır ve çıkar.
Dosyalar
/usr/share/file/magic.mgc Varsayılan derlenmiş magic listesi. /usr/share/file/magic Varsayılan magic dosyalarını içeren dizin.
Çevre Değişkenleri
MAGIC ortam değişkeni, varsayılan magic dosya adını ayarlamak için kullanılabilir. file, uygun şekilde bu değişkenin değerine “.mgc” ekler. Ancak file.mime dosyasının dikkate alınması için file dosyasının mevcut olması gerekir.
Eski Sürüm Açıklaması
Eski modda (legacy mode) -D, -I ve -M seçenekleri mevcut değildir.
-d, -i ve -r seçenekleri farklı davranır. -d seçeneği hata ayıklama bilgisi sağlar (uyumluluk modundaki -D ile aynı). -i seçeneği mime türü bilgisini görüntüler (uyumluluk modundaki -I ile aynı). -r seçeneği, yazdırılamayan karakterlerin çevirisini devre dışı bırakır (varsayılan olarak bu çeviri uyumluluk modunda zaten devre dışıdır).
Ayrıca, POSIXLY_CORRECT ayarlanmadığı sürece -h seçeneği varsayılan sembolik bağ davranışı (sembolik bağları takip etme) haline gelir.
Eski mod hakkında daha fazla bilgi için bkz. compat(5).
Ayrıca Bakınız
hexdump(1), od(1), strings(1), magic(5), otool(1), compat(5)
Standartlara Uyumluluk
Bu program, Single UNIX Specification sürüm 3 (“SUSv3”) ile uyumludur. Davranışı, çoğunlukla aynı adı taşıyan System V programı ile uyumludur. Ancak bu sürüm daha fazla magic bildiği için birçok durumda farklı (her ne kadar daha doğru olsa da) çıktılar üretecektir.
Bu sürüm ile System V arasındaki tek önemli fark, bu sürümün herhangi bir boşluk karakterini sınırlandırıcı (delimiter) olarak kabul etmesidir, bu nedenle şablon dizelerindeki boşluklardan kaçınılmalıdır (escaped). Örneğin,
10 string language impress (imPRESS data)
mevcut bir magic dosyasındaki girdisinin şu şekilde değiştirilmesi gerekir:
10 string language\ impress (imPRESS data)
Ayrıca bu sürümde, bir şablon dizesi ters eğik çizgi (backslash) içeriyorsa ondan kaçınılmalıdır. Örneğin,
0 string \begindata Andrew Toolkit document
mevcut bir magic dosyasındaki girdisinin şu şekilde değiştirilmesi gerekir:
0 string \begindata Andrew Toolkit document
Sun Microsystems'ın SunOS 3.2 ve sonraki sürümleri, System V'ten türetilmiş ancak bazı uzantılara sahip bir file komutu içerir. Bu sürüm, Sun'ın sürümünden yalnızca küçük yönlerden farklılık gösterir. Örneğin şu şekilde kullanılan ‘&’ operatörünün uzantısını içerir:
16 long&0x7fffffff >0 not stripped
Magic Dizini
Magic dosyası girdileri, başta USENET olmak üzere çeşitli kaynaklardan toplanmış ve çeşitli yazarlar tarafından katkıda bulunulmuştur. Christos Zoulas (adresi aşağıdadır) ek veya düzeltilmiş magic dosyası girdilerini toplayacaktır. Magic dosyası girdilerinin birleştirilmiş bir hali periyodik olarak dağıtılacaktır.
Magic dosyasındaki girdilerin sırası önemlidir. Kullandığınız sisteme bağlı olarak, bir araya getirilme sıraları yanlış olabilir. Eski file komutunuz bir magic dosyası kullanıyorsa, karşılaştırma amacıyla eski magic dosyasını saklayın (adını /usr/share/file/magic.orig olarak değiştirin).
Örnekler
$ file file.c file /dev/{wd0a,hda}
file.c: C program text
file: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV),
dynamically linked (uses shared libs), stripped
/dev/wd0a: block special (0/0)
/dev/hda: block special (3/0)
$ file -s /dev/wd0{b,d}
/dev/wd0b: data
/dev/wd0d: x86 boot sector
$ file -s /dev/hda{,1,2,3,4,5,6,7,8,9,10}
/dev/hda: x86 boot sector
/dev/hda1: Linux/i386 ext2 filesystem
/dev/hda2: x86 boot sector
/dev/hda3: x86 boot sector, extended partition table
/dev/hda4: Linux/i386 ext2 filesystem
/dev/hda5: Linux/i386 swap file
/dev/hda6: Linux/i386 swap file
/dev/hda7: Linux/i386 swap file
/dev/hda8: Linux/i386 swap file
/dev/hda9: empty
/dev/hda10: empty
$ file -i file.c file /dev/{wd0a,hda}
file.c: text/x-c
file: application/x-executable
/dev/hda: application/x-not-regular-file
/dev/wd0a: application/x-not-regular-file
Tarihçe
En azından Research Version 4'ten (kılavuz sayfası Kasım 1973 tarihlidir) beri her UNIX sisteminde bir file komutu bulunmuştur. System V sürümü önemli bir büyük değişiklik getirdi: sihirli (magic) türlerin harici listesi. Bu durum programı biraz yavaşlattı ancak onu çok daha esnek hale getirdi.
System V sürümüne dayanan bu program, Ian Darwin ⟨ian@darwinsys.com⟩ tarafından başkalarının kaynak koduna bakılmadan yazılmıştır.
John Gilmore kodu kapsamlı bir şekilde gözden geçirerek ilk sürümden daha iyi hale getirdi. Geoff Collyer bazı yetersizlikler buldu ve bazı magic dosyası girdileri sağladı. ‘&’ operatörünün Rob McMahon ⟨cudcv@warwick.ac.uk⟩ tarafından yapılan katkıları, 1989.
Guy Harris ⟨guy@netapp.com⟩, 1993'ten günümüze kadar birçok değişiklik yaptı.
1990'dan günümüze birincil geliştirme ve bakım işlemleri Christos Zoulas ⟨christos@astron.com⟩ tarafından yürütülmektedir.
Chris Lowth ⟨chris@lowth.com⟩ tarafından 2000 yılında değiştirildi: alternatif bir magic dosyası ve dahili mantık kullanarak mime türü dizelerini çıktı olarak veren -I seçeneğinin işlenmesi sağlandı.
Eric Fischer ⟨enf@pobox.com⟩ tarafından Temmuz 2000'de karakter kodlarını tanımlamak ve ASCII olmayan dosyaların dillerini belirlemeye çalışmak üzere değiştirildi.
Reuben Thomas ⟨rrt@sc3d.org⟩ tarafından 2007-2011 yılları arasında; MIME desteğini geliştirmek, MIME ve MIME olmayan magic'i birleştirmek, magic dosyalarının yanı sıra dizinleri de desteklemek, birçok hata düzeltmesi uygulamak, birçok magic girdisini güncellemek ve düzeltmek, derleme sistemini iyileştirmek, dokümantasyonu geliştirmek ve Python bağlamalarını saf Python dilinde yeniden yazmak üzere değiştirildi.
‘magic’ dizine (magic dosyalarına) katkıda bulunanların listesi buraya dahil edilemeyecek kadar uzundur. Kendinizi biliyorsunuz; teşekkür ederiz. Birçok katkıda bulunan kişi kaynak dosyalarda listelenmiştir.
Yasal Bildirim
Telif Hakkı (c) Ian F. Darwin, Toronto, Kanada, 1986-1999. Standart Berkeley Software Distribution telif hakkı kapsamındadır; kaynak dağıtımındaki COPYING dosyasına bakın.
tar.h ve is_tar.c dosyaları, John Gilmore tarafından kamu malı olan tar(1) programından yazılmıştır ve yukarıdaki lisans kapsamında değildir.
Dönüş Kodu
file, başarı durumunda 0 ve hata durumunda sıfır dışı bir değer döndürür.
Hatalar
Lütfen hataları bildirin ve yamaları https://bugs.astron.com/ adresindeki hata takipçisine veya ⟨file@astron.com⟩ adresindeki e-posta listesine gönderin (abone olmak için önce https://mailman.astron.com/mailman/listinfo/file adresini ziyaret edin).
Yapılacaklar
Çıktıyı düzelterek MIME ve APPLE bayrakları testlerinin her yerde gerekli olmamasını ve asıl çıktının yalnızca tek bir yerde yapılmasını sağlayın. Bu bir tasarım gerektirir. Öneri: olası çıktıları bir listeye ekleyin, ardından en sonda en son eklenen (umarız en spesifik olan) değeri seçin veya liste boşsa varsayılan bir değer kullanın. Bu durum değerlendirmeyi yavaşlatmamalıdır.
MAGIC_CONTINUE işlenmesi ve girdiler arasında \012- yazdırılması hantal ve karmaşıktır; yeniden yapılandırın (refactor) ve merkezileştirin.
Kodlama mantığının bir kısmı encoding.c içinde sabit olarak kodlanmıştır (hard-coded) ve bir !:charset açıklamasına (annotation) sahip olsaydık magic dosyalarına taşınabilirdi.
Tüm magic hatalarını gidermeye devam edin. İyi bir kaynak için Debian BTS'ye bakın.
Yazdırılabilmeleri için, örneğin %s şablonları gibi isteğe bağlı uzunluktaki dizeleri saklayın. Debian hatası #271672'yi düzeltir. Bu, dizeleri bir dize havuzunda (string pool) ayırarak, dize havuzunu magic dosyasının sonunda saklayarak ve tüm dize işaretçilerini dize havuzundan göreceli kayma miktarlarına (relative offsets) dönüştürerek yapılabilir.
Mevcut seviyeden sonraki göreceli kayma miktarları (relative offsets) için sözdizimi ekleyin (Debian hatası #466037).
file -ki seçeneğinin çalışmasını sağlayın, yani birden fazla MIME türü verin.
Office2007 belgelerinin içeriğini daha ayrıntılı yazdırmak üzere içlerine bakabilmemiz için bir zip kütüphanesi ekleyin.
Dosya açıklamalarının kaynakları için URL'leri yazdıracak bir seçenek ekleyin.
Betik aramalarını birleştirin ve yürütülebilir adlarını MIME türleriyle eşleştirecek bir yol ekleyin (örneğin !:mime için sonuç dizesinin bir tabloda aranmasını sağlayan sihirli bir değere sahip olmak). Bu, her yeni shebang (hash-bang) yorumlayıcısı için aynı magic'in tekrar tekrar eklenmesini önleyecektir.
Bir dosya tanımlayıcısı (file descriptor) mevcut olduğunda, şu anda yaptığımız geçici tampon yönetimi yerine tamponu atlayabilir ve ayarlayabiliriz.
Derleme zamanında tutarlılığı kontrol etmek için “name” ve “use” anahtarlarını düzeltin (mükerrer “name”, tanımlanmamış “name” işaret eden “use”). Sıralı bir isim listesi tutarak “name” / “use” yapısını daha verimli hale getirin. Ayrıştırıcıda endianlık durumunu tersine çevirmek (flip endianness) için ^ karakterine özel durum tanıyın, böylece kaçış karakteri ile yazılması gerekmez ve bunu belgeleyin.
Dosya içinde dahili olarak belirtilen kayma miktarları (offsets) tampon boyutunu (file.h içindeki HOWMANY değişkeni) aşarsa, o kayma miktarına gitmeyiz (seek yapmayız), vazgeçeriz. Tampon yönetimi dosya tanımlayıcısı mevcut olduğunda yapılsaydı, dosya içinde arama yapabilmemiz (seek) daha iyi olurdu. Ancak bu durum performans ve dolayısıyla güvenlik hususları barındırdığından dikkatli olunmalıdır, çünkü tekrar tekrar arama yapmak (seeking) işleri yavaşlatabilir.
Şu anda ayrı tamponlar tutma ve dosyanın sonundan kayma miktarlarına (offsets) sahip olma desteği vardır, ancak dahili tampon yönetiminin hala elden geçirilmesi gerekmektedir.
Erişilebilirlik
Orijinal yazarın en son sürümünü ftp.astron.com adresindeki /pub/file/file-X.YZ.tar.gz dizininden anonim FTP yoluyla edinebilirsiniz.
macOS 26.4 5 Şubat 2021 macOS 26.4