İçeriğe atla

file (komut)

file
Geliştirici(ler)AT&T Bell Laboratories
İlk yayınlanma1973 (1973) Unix Research Version 4'ün bir parçası olarak; 1986 (1986) açık kaynaklı yeniden uyarlama
Programlama diliC
İşletim sistemiUnix, Unix-like, Plan 9, IBM i
PlatformCross-platform
TürDosya türü belirleyici
LisansBSD lisansı, CDDL
Plan 9: MIT Lisansı
Resmî sitesidarwinsys.com/file/
Kod deposugithub.com/file/file

​file​ 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.

Tarihçe

​file​'ın orijinal sürümü 1973'te Unix Research Version 4'te ortaya çıkmıştır.[1] 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.[2] 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.

​file​ komutu, IBM i işletim sistemine de taşınmıştır.[3]

Özellikler

Tekli UNIX Belirtimi (SUS - Single UNIX Specification), komut satırında belirtilen dosya üzerinde bir dizi sınama gerçekleştirileceğini belirtir:

  1. dosya okunamazsa veya Unix dosya türü belirlenemezse, ​file​ programı dosyanın işlendiğini ancak türünün belirlenemediğini belirtir.
  2. ​file​, dizin, FIFO, soket, blok özel dosya ve karakter özel dosya türlerini belirleyebilmelidir.
  3. sıfır uzunluktaki dosyalar böyle tanımlanır.
  4. dosyanın başlangıç kısmı ele alınır ve ​file​ pozisyon duyarlı testler kullanır.
  5. tüm dosya ele alınır ve ​file​ bağlam duyarlı testler kullanır.
  6. dosya bir ​data​ dosyası olarak tanımlanır.

​file​'ı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, ​file​ komutu öncü baytların araştırılmasını sağlamak için bir veri tabanı kullanır. Bu veri tabanı, konumu genellikle ​/etc/magic​, ​/usr/share/file/magic​ veya benzer bir konumda olan ​magic​ adlı özel bir dosyada uygulanır.

Kullanım

SUS[4] aşağıdaki seçenekleri zorunlu kılmaktadır:

-M dosya, 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
-m dosya, -M için olduğu gibi, ancak varsayılan testler ​file​ içinde bulunan testlerden sonra gerçekleştirilecektir.
-d, verilen dosyaya varsayılan konuma duyarlı ve bağlama duyarlı testler gerçekleştirir; -M veya -m belirtilmediği sürece bu varsayılan davranıştır.
-h, mevcut bir dosya veya dizine işaret eden sembolik bağlantılara referans vermeyin.
-L, mevcut bir dosya veya dizine işaret eden sembolik bağlantıyı kaldırır.
-i, 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[5] ve BSD[6] 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 -s 'özel dosyalar (special files)', -k 'devam et (keep-going)' veya -r '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.

Örnekler

$ file file.c
file.c: C program metni
$ file program
program: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked
    (uses shared libs), stripped
$ file /dev/hda1
/dev/hda1: block special (0/0)
$ file -s /dev/hda1
/dev/hda1: Linux/i386 ext2 dosya sistemi

-s seçeneğinin yalnızca bazı platformlarda bulunan ve ​file​'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 ​file​ aygıt dosyalarını okumaya çalışmaz çünkü böyle bir dosyayı okumak, istenmeyen yan etkilere neden olabilir.

$ file -k -r libmagic-dev_5.35-4_armhf.deb    # (Linux'ta)
libmagic-dev_5.35-4_armhf.deb: Debian binary package (format 2.0)
- current ar archive
- data

Standart olmayan -k 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 -r seçeneği, yazdırılamayan satır sonu karakterinin sekizli gösterimi yerine ham haliyle görüntülenmesine neden olur.

$ file compressed.gz
compressed.gz: gzip compressed data, deflated, original filename, `compressed', last
    modified: Thu Jan 26 14:08:23 2006, os: Unix
$ file -i compressed.gz    # (on Linux)
compressed.gz: application/x-gzip; charset=binary
$ file data.ppm
data.ppm: Netpbm PPM "rawbits" image data
$ file /bin/cat
/bin/cat: Mach-O universal binary with 2 architectures
/bin/cat (for architecture ppc7400):	Mach-O executable ppc
/bin/cat (for architecture i386):	Mach-O executable i386
$ file /usr/bin/vi
/usr/bin/vi: symbolic link to vim

Sembolik bağlantıların tanımlanması, tüm platformlarda mevcut değildir ve -L parametresi kullanılırsa veya POSIXLY_CORRECT ayarlanırsa referans kaldırılır.

Libmagic kütüphanesi

​file​'ın Ian Darwin/Christos Zoulas sürümünün 4.00 versiyonundan itibaren, ​file​'ın işlevselliği C (ve C uyumlu) bağlantı[7][8] yoluyla erişilebilen bir ​libmagic​ kütüphanesine dahil edilmiştir; ​file​ bu kütüphane kullanılarak uygulanmaktadır.[9][10]

Kaynakça

  1. ^ "Source of the UNIX V4 "file" man page". 10 Aralık 2019 tarihinde kaynağından arşivlendi. Erişim tarihi: 13 Mart 2022. 
  2. ^ The early history of this program is recorded in its private CVS repository; see [1] 1 Nisan 2017 tarihinde Wayback Machine sitesinde arşivlendi. the log of the main program
  3. ^ "IBM System i Version 7.2 Programming Qshell" (PDF). IBM (İngilizce). 5 Mart 2021 tarihinde kaynağından arşivlendi (PDF). Erişim tarihi: 5 Eylül 2020. 
  4. ^ "The Open Group Base Specifications Issue 7 — file command". 12 Ekim 2018 tarihinde kaynağından arşivlendi. Erişim tarihi: 20 Ağustos 2014. 
  5. ^ file(1) – Linux Kullanıcı komutları kılavuzu
  6. ^ file(1) – NetBSD General Commands Manual
  7. ^ libmagic(3) – Linux Programmer's Manual – Library Functions
  8. ^ libmagic(3) – NetBSD Library Functions Manual
  9. ^ Zoulas, Christos (27 Şubat 2003). "file-3.41 is now available" (E-posta). 4 Mart 2016 tarihinde kaynağından arşivlendi. Erişim tarihi: 1 Ocak 2013.  Bilinmeyen parametre |mailing-list= görmezden gelindi (yardım)
  10. ^ Zoulas, Christos (4 Mart 2003). "file-4.00 is now available" (E-posta). 28 Aralık 2016 tarihinde kaynağından arşivlendi. Erişim tarihi: 1 Ocak 2013.  Bilinmeyen parametre |mailing-list= görmezden gelindi (yardım)

Dış bağlantılar

Vikikitap
Vikikitap
Vikikitapta bu konu hakkında daha fazla bilgi var:

Yardım dosyaları

Konuyla ilgili yayınlar

İlgili Araştırma Makaleleri

<span class="mw-page-title-main">Unix</span>

UNIX türevi işletim sistemleri çok işlemcili çok pahalı makinelerden tek işlemcili, basit ve çok ucuz ev bilgisayarlarına kadar pek çok cihaz üzerinde çalışabilen esnek ve sağlamlığı çok değişik koşullarda test edilmiş sistemlerdir. Fakat özellikle kararlı yapısı ve çok kullanıcılı-çok görevli yapısıyla çok işlemcili sunucularda adeta standart haline gelmiştir ve özellikle akademik dünyada iş istasyonları üzerinde çok yaygın bir kullanım alanı bulmuştur. UNIX, Interdata 7/32, VAX ve Motorola 68000 arasında hızla yayıldı.

Telnet, Internet ağı üzerindeki çok kullanıcılı bir makineye uzaktaki başka bir makineden bağlanmak için geliştirilen bir TCP/IP protokolü ve bu işi yapan programlara verilen genel isimdir. Telnet iki bileşenden oluşur: (1) iki tarafın nasıl iletişim kuracağını belirleyen protokolün kendisi ve (2) hizmeti sağlayan yazılım uygulaması.Kullanıcı verileri, İletim Kontrol Protokolü (TCP) üzerinden 8 bitlik bayt yönlendirmeli bir veri bağlantısında Telnet kontrol bilgisi ile bant içi serpiştirilir. Telnet, 1969'da RFC 15 ile başlayarak geliştirildi, RFC 855'te genişletildi ve ilk İnternet standartlarından biri olan İnternet Mühendisliği Görev Gücü (IETF) İnternet Standardı STD 8 olarak standartlaştırıldı. encryption sağlayan bazı Telnet eklentileri geliştirilmiştir. Bağlanılan makineye girebilmek (login) için orada bir kullanıcı isminizin (İng:username) ve bağlantının gerçekleşebilmesi için bir telnet erişim programınızın olması gereklidir. Fakat bazı kütüphane ve herkese açık telnet bazlı web servisleri, bağlantı sırasında kullanıcı ismi (numarası) istemeyebilirler; ya da, kullanıcı isim ve parola olarak ne yazmanız gerektiği bağlandığınızda otomatik olarak karşınıza çıkar. Telnet, BBS sistemlere İnternet üzerinden erişimde günümüzde yaygın olarak kullanılmaktadır. Telnet erişim programları, günümüzdeki işletim sistemlerinin çoğunda işletim sistemi ile birlikte gelmektedir. Çok kullanıcılı işletim sistemleri genellikle kullanıcılara metin tabanlı bir arayüz sunar ve bu sistemlerde tüm işlemler klavye vasıtası ile komut isteminden gerçekleştirilir.

<span class="mw-page-title-main">Bash</span>

Bash, Brian Fox tarafından GNU Projesi için Bourne kabuğuna özgür yazılım alternatifi olarak yazılmış, Unix ve benzeri işletim sistemlerinde kullanılan komut satırı kabuğu ve bu kabuğun betik dilidir. GNU Tasarısı'nın parçasıdır ve birçok GNU/Linux dağıtımında ön tanımlı kabuk olarak gelir. Ayrıca bir versiyonu Windows 10 için Linux İçin Windows Alt Sistemi aracılığıyla mevcuttur. Solaris 11'in de varsayılan kullanıcı betiğidir. Bash ayrıca 2019 öncesinde çıkan tüm MacOS sürümlerinde varsayılan kabuktu.

<span class="mw-page-title-main">/dev/random</span>

Unix türevi işletim sistemlerinde, /dev/random yalancı rastsal sayılar üreten bir stream dosyasıdır. Cihaz sürücülerinden ve diğer kaynaklardan toplanan çevresel gürültüye erişim sağlar. Bloklama ile çalışır. /dev/random normalde talep edildiğinden daha az entropi mevcutsa engeller, /dev/urandom tipik olarak asla engellemez, /dev/arandom yeterli entropi ile güvenli bir şekilde başlatılana kadar önyükleme sonrası bloklar ve daha sonra asla bloklanmaz. /dev/random ve /dev/urandom farklı işletim sistemlerinde farklı şekillerde uygulanmaktadır ve pek azı /dev/arandom desteğine sahiptir.

Berkeley r-komutları, bir Unix sisteminin kullanıcılarının TCP/IP bilgisayar ağı üzerinden başka bir Unix bilgisayarında oturum açmasını veya komutlar vermesini sağlamak için tasarlanmış bir bilgisayar programları paketidir. Berkeley r-komutları, 1982'de Berkeley'deki Kaliforniya Üniversitesi'ndeki Computer Systems Research Group (CSRG) tarafından, TCP/IP'nin erken uygulanmasına dayanarak geliştirildi.

sed, bir akım düzenleyicisi, dosya ya da borudan gelen girdideki temel metin dönüştürmelerini gerçekleştirir. Yani dosya ya da standart girdiden metni okur ve bunu kullanıcının istediği biçime dönüştürerek standart çıktıya okur.

<span class="mw-page-title-main">TAR (dosya biçimi)</span>

TAR ya da bir başka deyişle tarball, açık kaynak kodlu bir belge sıkıştırma ve arşivleme biçimidir.

cat (Unix) komut satırı programı

cat, dosyaları sırasıyla okuyan ve standart çıktıya yazan POSIX standartlı bir Unix komutudur.

Çevre değişkenleri, çevresel değişkenler ya da ortam değişkenleri, işletim sistemi seviyesinde konfigüre edilebilen ve bilgisayar işlemleri tarafından erişilebilen değişkenlerdir. Çoğu kez belli programların ve dosyaların konumlarını ve birden fazla işlem tarafından kullanılabilen bilgi ve ayarları tutmak için kullanılırlar. Çoğunlukla bir karakter dizisi olurlar.

uname

uname (veya unix name) - Unix ve Unix benzeri işletim sistemleri bir yazılım konsol programı olup, sistem hakkında bilgi verir. Geçerli makine ve üzerinde çalışdığı işletim sistemi hakkında isim, sürüm ve diğer ayrıntıları yazdırır. uname sistem çağrısı ve komut PWB / UNIX ile ilk kez ortaya çıktı. Her ikisi de POSIX tarafından belirtilir.

BioLinux aşağıdaki metodların birini veya birden fazlasını kullanarak bir Linux platformunda biyoinformatik yazılımlarına erişimi daha kolay yapmayı hedefleyen çeşitli projeler için kullanılan terimdir:

rkhunter ; rootkitleri, arka kapıları ve muhtemel yerel açıkları tarayan Unix tabanlı bir araçtır. Araç, bunu önemli dosyaların SHA-1 özetlerini çevrimiçi veri tabanlarındaki iyi versiyonlarınınkiyle kıyaslayarak; (rootkitlerin) varsayılan konumları, yanlış izinleri, gizli dosyaları, kernel modüllerindeki şüpheli dizeleri arayarak ve Linux ve FreeBSD için özel testlerle yapar. rkhunter, işletim sistemlerinde yer aldığı için önemlidir.

<span class="mw-page-title-main">Zsh</span>

Zsh, etkileşimli oturum açma kabuğu ve kabuk betikleri oluşturmak için komut yorumlayıcısı olarak kullanılabilen bir Unix kabuğudur. Bash, ksh ve tcsh'nin bazı özelliklerinin yanı sıra, birçok iyileştirme içeren, genişletilmiş bir Bourne kabuğudur.

chown

chown komutu, change owner talimatının kısaltması olup Unix ve Unix benzeri işletim sistemlerinde dosya sistemindeki dosyaların, dizinlerin sahibini değiştirmek için kullanılır.

rm (Unix)

rm Unix ve Unix benzeri işletim sistemlerinde dosyaları, dizinleri ve sembolik linkleri silmek için kullanılan bir komuttur.

<span class="mw-page-title-main">Unix shell</span> Unix işletim sistemi için yorumlayıcı program

Unix shell, Unix benzeri işletim sistemleri için bir komut satırı kullanıcı arabirimi sağlayan bir komut satırı yorumlayıcısı veya kabuğudur. Kabuk, hem etkileşimli bir komut dili hem de bir komut dosyası dilidir ve işletim sistemi tarafından sistemin kabuk komut dosyalarını kullanarak yürütülmesini kontrol etmek için kullanılır.

<span class="mw-page-title-main">Kernel panic</span>

Bir kernel panic, bir işletim sisteminin çekirdeği tarafından, güvenli bir şekilde kurtarılamadığı veya sistemi çalıştırmaya devam etmenin büyük veri kaybı yaşanabilmesinin yüksek bir riske sahip olacağı dahili bir kritik hata tespit edildiğinde alınan bir güvenlik önlemidir. Terim büyük ölçüde Unix ve Unix benzeri sistemlere özgüdür. Microsoft Windows işletim sistemlerindeki eşdeğeri, genellikle "mavi ekran" olarak adlandırılan bir durdurma hatasıdır.

env, Unix ve Unix-benzeri işletim sistemleri için bir kabuk komutudur. Ya çevre değişkenlerinin bir listesini yazdırmak ya da mevcut çevreyi değiştirmeden başka bir aracı değiştirilmiş bir ortamda çalıştırmak için kullanılır. Env kullanarak değişkenler eklenip çıkarılabilir ve var olan değişkenlere yeni değerler atanarak değiştirilebilir.

<span class="mw-page-title-main">GoboLinux</span>

GoboLinux, en belirgin özelliği geleneksel Linux dosya sisteminin yeniden düzenlenmesi olan bir Linux dağıtımıdır. Çoğu Unix benzeri sistem gibi Dosya Sistemi Hiyerarşi Standardını takip etmek yerine, bir GoboLinux sistemindeki her programın, tüm dosyalarının bulunabileceği kendi alt dizin ağacı vardır. Böylece, bir "Foo" programının tüm özel dosyaları ve kütüphaneleri /Programs/Foo dizininde, bu programın ilgili sürümü altında bulunur. Örneğin, yaygın olarak bilinen GCC derleyici paketinin 8.1.0 sürümü /Programs/GCC/8.1.0. dizini altında bulunur.

cwm (pencere yöneticisi)

cwm X Pencere Sistemi için bir yığın pencere yöneticisidir. Öncelikle OpenBSD'nin temel sisteminin bir parçası olarak geliştirilmiş olsa da diğer Unix benzeri işletim sistemlerinde taşınabilir versiyonları mevcuttur.