file (Unix)

file (ang. file – plik) – standardowy program uniksowy, będący podstawową komendą tegoż systemu. Służy do określania typu informacji zawartych w pliku.

Użycie

file [opcje] nazwa

Historia

Narzędzie file pojawiło się pierwszy raz w Unix Research Version 4 w 1973. System V przyniósł wiele znaczących zmian. Jedną z większych było przeniesienie informacji o typach plików do oddzielnego pliku, zamiast włączania go do programu bezpośrednio.

Większość dużych dystrybucji BSD i Linuksa używa opensource'owej reimplementacji napisanej przez Iana Darwina. Została ona poszerzona przez Geoffa Collyera w 1989 i od tego czasu była wielokrotnie modyfikowana przez programistów, którymi byli m.in. Guy Harris, Chris Lowth i Eric Fischer.

Opcje

OpcjaZnaczenie
-bNie podawanie nazw plików na początku wierszy wynikowych (tryb skrócony).
-cPowoduje sprawdzanie wydruku przetworzonej postaci pliku magicznego. Jest to zwykle używane w połączeniu z aby odpluskwić plik liczb magicznych przed jego zainstalowaniem.
-CZapisuje plik wynikowy magic.mgc, który zawiera wstępnie przetworzoną wersję pliku.
-f NAZWAOdczytuje nazwy testowanych plików z NAZWA (po jednym w wierszu) przed listą argumentów. Obecna musi być albo nazwa pliku albo przynajmniej jeden argument będący nazwą pliku; aby testować standardowe wejście, należy użyć argumentu -jako nazwy pliku.
-iPowoduje wypisywanie przez polecenie file łańcuchów stanowiących typy MIME, zamiast bardziej tradycyjnej postaci czytelnej dla człowieka. Zatem może ono raczej wypisać text/plain; charset=us-ascii zamiast ASCII text. Aby ta opcja działała, file zmienia sposób w jaki obsługuje rozpoznane pliki (takie jak wiele typów plików tekstowych, katalogi itd.) oraz posługuje się alternatywnym plikiem liczb magicznych.
-kNie zatrzymuje się po znalezieniu pierwszego dopasowania, kontynuuje testowanie.
-m LISTAPodaje alternatywną listę plików z liczbami magicznymi. Może to być pojedynczy plik lub rozdzielona dwukropkami lista plików.
-nWymusza wyprowadzenie danych wyjściowych po sprawdzeniu każdego pliku. Jest to przydatne jedynie podczas sprawdzania listy plików. W zamierzeniu ma być przydatne programom, które wymagają wyprowadzania typów plików w potoku.
-vDrukuje informacje o wersji i kończy.
-zPróbuje zaglądać do plików skompresowanych.
-Lpowoduje, że program podąża za dowiązaniami symbolicznymi, podobnie jak w przypadku opcji ls o identycznej nazwie (na systemach, które obsługują dowiązania symboliczne).
-sPowoduje, że file czyta również argumenty będące plikami specjalnymi urządzeń blokowych i znakowych. Jest to przydatne do określania rodzaju systemu plików w przypadku danych na surowych partycjach dysków, stanowiących pliki specjalne urządzeń blokowych. Opcja ta powoduje również, że file nie zważa na zgłaszany przez stat rozmiar pliku, gdyż w niektórych systemach funkcja ta zgłasza zero dla surowych partycji dysków.

Przykłady

$ file file.c
file.c: C program text
$ file program
program: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked 
    (uses shared libs), stripped
$ file /dev/wd0a
/dev/wd0a: block special (0/0)
$ file -s /dev/hda1
/dev/hda1: Linux/i386 ext2 filesystem
$ file -s /dev/hda5
/dev/hda5: Linux/i386 swap file
$ file compressed.gz
compressed.gz: gzip compressed data, deflated, original filename, `compressed', last
    modified: Thu Jan 26 14:08:23 2006, os: Unix
$ file data.ppm
data.ppm: Netpbm PPM "rawbits" image data