"File (yazılım)" buraya yönlendirilmektedir. iOS 11 ile birlikte gelen dosya yönetim programı için Files (yazılım) sayfasına bakınız.

**`​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. 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.

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

Ö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 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 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 `-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ı yoluyla erişilebilen bir `​libmagic​` kütüphanesine dahil edilmiştir; `​file​` bu kütüphane kullanılarak uygulanmaktadır.

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 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
---------------

VikikitapVikikitap
Vikikitapta bu konu hakkında daha fazla bilgi var:
***Guide to Unix***

* `file`: determine file type – Commands & Utilities Reference, The Single UNIX Specification, Issue 7 from The Open Group
* file mailing list 21 Şubat 2019 tarihinde Wayback Machine sitesinde arşivlendi.
* file releases 2 Haziran 2023 tarihinde Wayback Machine sitesinde arşivlendi.

### Yardım dosyaları

* `file(1)` – Plan 9 Programmer's Manual, Volume 1
* `file(1)` – Linux Kullanıcı komutları kılavuzu
* `libmagic(3)` – NetBSD Library Functions Manual
* `libmagic(3)` – Linux Library Functions kılavuzu
* `file(1)` – OpenBSD General Commands Manual

### Konuyla ilgili yayınlar

* Fine Free File Command 20 Haziran 2023 tarihinde Wayback Machine sitesinde arşivlendi. – homepage for version of `file` used in major BSD and Linux distributions.
* File for Windows 6 Haziran 2023 tarihinde Wayback Machine sitesinde arşivlendi. – webpage of native GnuWin32 port of `file` for 32 bit Windows.
* The libmagic-dev package 20 Haziran 2023 tarihinde Wayback Machine sitesinde arşivlendi. on packages.debian.org 9 Şubat 2006 tarihinde Wayback Machine sitesinde arşivlendi.
* TrID 12 Haziran 2023 tarihinde Wayback Machine sitesinde arşivlendi. an alternative providing ranked answers (instead of just one) based on statistics.

| * g
* t
* d
UNIX komut satırı programları ve kabuk yerleşikleri |
| --- |
| Dosya sistemi | 
* cat
* chattr
* chmod
* chown
* chgrp
* cksum
* cmp
* cp
* dd
* du
* df
* file
* fsck
* fuser
* ln
* ls
* lsof
* mkdir
* mount
* mv
* pax
* pwd
* rm
* rmdir
* split
* tee
* touch
* type
* umask

 |
| Prosesler | 
* at
* bg
* chroot
* crontab
* fg
* kill
* killall
* nice
* pgrep
* pidof
* pkill
* ps
* pstree
* sleep
* time
* top

 |
| Kullanıcı ortamı | 
* env
* exit
* finger
* id
* logname
* mesg
* passwd
* talk
* tput
* uname
* su
* sudo **·**  uptime
* w
* wall
* who
* write
* whoami

 |
| Metin işleme | 
* awk
* basename
* comm
* csplit
* cut
* diff
* dirname
* ed
* ex
* fmt
* fold
* head
* iconv
* join
* less
* m4
* more
* nl
* paste
* patch
* printf
* read
* sed
* sort
* strings
* tac
* tail
* tr
* troff
* uniq
* vi
* wc
* xargs

 |
| Kabuk yerleşikleri | 
* alias
* cd
* dirname
* echo
* printf
* test
* unset
* wait

 |
| Arama | 
* find
* grep
* locate
* whereis
* which

 |
| Belgeleme | 
* man

 |
| Yazılım geliştirme | 
* ar
* ctags
* lex
* make
* nm
* strip
* yacc

 |
| Diğer | 
* apropos
* banner
* bc
* cal
* clear
* date
* expr
* help
* history
* info
* lp
* od
* size
* sleep
* tput
* type
* true ve false
* uname
* yes
* whatis

 |
| Kategori **Kategoriler** (Standart Unix programları, Unix SUS2008 yardımcı programları)  • Liste **Liste** |

| * g
* t
* d
Plan 9 komut satırı arayüzü programları ve kabuk eklentileri |
| --- |
| Dosya sistemi | 
* chmod
* chgrp
* cmp
* cp
* dd
* du
* file
* gzip
* ls
* mkdir
* pwd
* rm
* split
* tee
* touch

 |
| Süreçler | 
* kill
* ps

 |
| Kullanıcı ortamı | 
* passwd
* who

 |
| Metin işleme | 
* awk
* basename
* comm
* diff
* ed
* eqn
* join
* sed
* sort
* spell
* strings
* tail
* tr
* troff
* uniq
* wc

 |
| Kabuk programları | 
* echo
* test

 |
| Ağ araçları | 
* netstat

 |
| Arama | 
* grep

 |
| Yazılım geliştirme | 
* ar
* hoc
* lex
* nm
* strip
* yacc

 |
| Çeşitli | 
* bc
* cal
* fortune
* sleep

 |