file

Autres langues

Langue: pl

Version: Chronione prawem autorskim ale dystrybuowalne (openSuse - 09/10/07)

Autres sections - même nom

Section: 1 (Commandes utilisateur)

NAZWA

file - okre¶lenie typu pliku

SK£ADNIA

file [ -bciknsvzL ] [ -f nazwapliku ] [ -m lista ] plik ...
plik -C [ -m plikmag ]

OPIS

Ta strona podrêcznika opisuje wersjê 3.37 polecenia file.

file sprawdza ka¿dy ze swoich argumentów, próbuj±c go sklasyfikowaæ. Istniej± trzy zestawy testów, które s± wykonywane w nastêpuj±cej kolejno¶ci: testy systemu plików, testy liczb magicznych, testy jêzyka. Pierwszy zakoñczony powodzeniem test powoduje wypisanie typu pliku.

Wypisany typ bêdzie zwykle zawiera³ jedno ze s³ów text (plik zawiera tylko znaki drukowalne i kilka spo¶ród znaków steruj±cych oraz prawdopodobnie mo¿na go bezpiecznie czytaæ na terminalu ASCII ), executable (wykonywalny -- plik zawiera wyniki kompilacji w formacie zrozumia³ym dla j±dra pewnego Uniksa lub innego systemu) lub data (dane) oznaczaj±ce cokolwiek innego (zwykle jest to binarny, niedrukowalny plik). Wyj±tkami s± ogólnie znane formaty plików (pliki core, archiwa tar), o których wiadomo, ¿e zawieraj± dane binarne. Podczas modyfikacji pliku /usr/share/misc/magic lub te¿ samego programu zachowaj te s³owa kluczowe. Wielu polega na tym, ¿e dla wszystkich czytelnych plików wypisywane jest s³owo ,,text''. Nie nale¿y wiêc robiæ tego, co zrobiono w Berkeley - zmieniono tam ,,shell commands text'' na ,,shell script''. Nale¿y te¿ zauwa¿yæ, ¿e plik /usr/share/misc/magic jest tworzony mechanicznie z wielu ma³ych plików z podkatalogu Magdir dystrybuowanych ¼róde³ niniejszego programu.

Testy systemu plików s± oparte o sprawdzanie warto¶ci zwracanej przez funkcjê systemow± stat(2). Program sprawdza czy plik jest pusty oraz czy jest jakiego¶ rodzaju plikiem specjalnym. Powinno siê daæ rozpoznaæ wszystkie rodzaje plików wystêpuj±ce w danym systemie (gniazda, dowi±zania symboliczne, nazwane potoki (FIFO), itd.), o ile te rodzaje plików bêd± zdefiniowane w systemowym pliku nag³ówkowym sys/stat.h.

Testy liczb magicznych s³u¿± do sprawdzania plików, które zawieraj± dane w okre¶lonym formacie. Kanonicznym tego przyk³adem jest wykonywalne binarium (skompilowany program) a.out, którego format jest zdefiniowany w a.out.h i prawdopodobnie w exec.h w standardowym katalogu plików nag³ówkowych. Pliki te zawieraj± ,,liczby magiczne'' w okre¶lonym miejscu w pobli¿u pocz±tku pliku. Liczby te informuj± uniksowy system operacyjny o tym, ¿e plik jest wykonywalnym binarium oraz który z mo¿liwych typów binariów reprezentuje. Koncepcja ,,liczb magicznych'' zosta³a jako rozszerzenie zastosowana równie¿ do plików z danymi. Mo¿na tak opisaæ ka¿dy plik posiadaj±cy niezmienny identyfikator przy ma³ym i okre¶lonym przesuniêciu wzglêdem pocz±tku pliku. Informacje identyfikuj±ce te pliki s± odczytywane ze skompilowanego pliku liczb magicznych /usr/share/misc/magic.mgc lub z /usr/share/misc/magic, gdy skompilowany plik nie istnieje.

Je¶li plik nie pasuje do ¿adnego z wpisów w pliku liczb magicznych, dokonywane jest sprawdzenie czy jest to plik tekstowy. Rozpoznawane s± zestawy znaków: ASCII, ISO-8859-x, 8-bitowe rozszerzenia ASCII niezgodne z ISO (u¿ywane w systemach Macintosh i IBM PC), Unicode w kodowaniu UTF-8, Unicode w kodowaniu UTF-16 oraz EBCDIC. Sprawdzane s± zakresy i ci±gi bajtów, które stanowi± drukowalny tekst w ka¿dym z tych zestawów znaków. Je¶li plik przejdzie który¶ z tych testów, zg³aszany jest odpowiadaj±cy mu zestaw znaków. Pliki w ASCII, ISO-8859-x, UTF-8 oraz w rozszerzeniach ASCII s± identyfikowane jako ,,text'', gdy¿ s± one na ogó³ czytejne na dowolnym terminalu; pliki w UTF-16 i EBCDIC stanowi± jedynie ,,character data'' (dane znakowe), gdy¿ je¶li zawieraj± one tekst, tekst ten wymaga przed przeczytaniem konwersji. Dodatkowo, file bêdzie próbowa³ okre¶liæ inne charakterystyki plików tekstowych. Je¶li wiersze s± zakoñczone znakami CR, CRLF lub NEL, zamiast standardowego uniksowego LF, zostanie to zg³oszone. Zostan± równie¿ zidentyfikowane pliki zawieraj±ce wbudowane sekwencje unikowe lub wielokrotnego drukowania.

Po okre¶leniu przez file zestawu znaków u¿ywanego w pliku tekstowym, spróbuje on odgadn±æ w jakim jêzyku plik zosta³ napisany. Testy jêzykowe sk³adaj± siê z poszukiwañ okre¶lonych ³añcuchów znakowych (por. names.h), które mog± pojawiæ siê gdziekolwiek w kilku pierwszych blokach pliku. Na przyk³ad s³owo kluczowe .br wskazuje, ¿e plik jest najprawdopodobniek plikiem wej¶ciowym dla programu troff(1) podobnie, jak struct wskazuje na program w C. Testy te s± mniej godne zaufania ni¿ poprzednie dwie grupy, wiêc s± wykonywane na koñcu. Testy jêzykowe testuj± równie¿ niektóre pliki zbiorcze (jak archiwa tar(1)).

Plik, który nie mo¿e zostaæ okre¶lony jako jako zapisany w jednym z powy¿szych zestawów znaków, jest po prostu okre¶lany jako ,,data'' (dane).

OPCJE

-b
Nie podawanie nazw plików na pocz±tku wierszy wynikowych (tryb skrócony).
-c
Powoduje sprawdzanie wydruku przetworzonej postaci pliku magicznego. Jest to zwykle u¿ywane w po³±czeniu z aby odpluskwiæ plik liczb magicznych przed jego zainstalowaniem.
-C
Zapisuje plik wynikowy magic.mgc, który zawiera wstêpnie przetworzon± wersjê pliku.
-f nazwapliku
Odczytuje nazwy testowanych plików z nazwapliku (po jednym w wierszu) przed list± argumentów. Obecna musi byæ albo nazwapliku albo przynajmniej jeden argument bêd±cy nazw± pliku; aby testowaæ standardowe wej¶cie, nale¿y u¿yæ argumentu ,,-''jako nazwy pliku.
-i
Powoduje 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''. (Zobacz sekcjê ,,PLIKI'', poni¿ej.)
-k
Nie zatrzymuje siê po znalezieniu pierwszego dopasowania, kontynuuje testowanie.
-m lista
Podaje alternatywn± listê plików z liczbami magicznymi. Mo¿e to byæ pojedynczy plik lub rozdzielona dwukropkami lista plików.
-n
Wymusza 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.
-v
Drukuje informacje o wersji i koñczy.
-z
Próbuje zagl±daæ do plików skompresowanych.
-L
powoduje, ¿e program pod±¿a za dowi±zaniami symbolicznymi, podobnie jak w przypadku opcji ls(1) o identycznej nazwie (na systemach, które obs³uguj± dowi±zania symboliczne).
-s
Normalnie, file próbuje czytaæ i okre¶laæ rodzaj pliku jedynie dla tych argumentów, które s± plikami zg³oszonymi przez stat(2) jako zwyk³e pliki. Pozwala to unikn±æ problemów, gdy¿ czytanie plików specjalnych mo¿e mie nieprzyjemne konsekwencje. Podanie opcji -s powoduje, ¿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(2) rozmiar pliku, gdy¿ w niektórych systemach funkcja ta zg³asza zero dla surowych partycji dysków.

PLIKI

/usr/share/misc/magic.mgc - domy¶lna skompilowana lista liczb magicznych

/usr/share/misc/magic - domy¶lna lista liczb magicznych

/usr/share/misc/magic.mime - domy¶lna lista liczb magicznych, s³u¿±ca do wypisywania typów MIME w przypadku podania opcji -i.

¦RODOWISKO

Zmienna ¶rodowiskowa MAGIC ustawia domy¶lny plik liczb magicznych.

ZOBACZ TAK¯E

magic(5) - opis formatu pliku liczb magicznych.
strings(1), od(1), hexdump(1) - narzêdzia do testowania plików nietekstowych.

ZGODNO¦Æ ZE STANDARDAMI

Program ten prawdopodobnie wykracza poza definicjê FILE(CMD) z definicji interfejsu Systemu V (System V Interface Definition). Wydaje siê tak przynajmniej z tego, co mo¿na zrozumieæ z tamtejszego niejasnego jêzyka... Zachowanie programu jest w wiêkszo¶ci zgodne z zachowaniem programu z Systemu V o tej samej nazwie. Wersja niniejsza zna wiêcej magii, wiêc bêdzie dawa³a w wielu wypadkach inne (dok³adniejsze) wyniki.

Jedn± z istotnych ró¿nic miêdzy t± wersj± i wersj± z Systemu V, jest to, ¿e niniejsza wersja traktuje bia³e znaki jako separatory, wiêc spacje w ³añcuchach wzorców musz± byæ chronione (przez odwrotny uko¶nik). Na przyk³ad,
>10    string  language impress        (imPRESS data)

w istniej±cym pliku magicznym musia³o by byæ zmienione na
>10    string  language\ impress       (imPRESS data)

Dodatkowo, w tej wersji, je¶li ³añcuch wzorca zawiera odwrotny uko¶nik, to musi byæ on chroniony. Na przyk³ad
0      string          \begindata      Andrew Toolkit document

w istniej±cym pliku magicznym musia³o by byæ zmienione na
0      string          \\begindata     Andrew Toolkit document

Wersja 3.2 SunOS i pó¼niejsze pochodz±ce z Sun Microsystems zawieraj± polecenie file(1), wywodz±ce siê z polecenia z System V, lecz z pewnymi rozszerzeniami. Moja wersja ró¿ni siê od Sun-owskiej tylko ma³ymi szczegó³ami. Zawiera ona rozszerzenie operatora `&', u¿ywanego jako np.
>16    long&0x7fffffff >0              not stripped

KATALOG MAGICZNY

Wpisy w pliku liczb magicznych pochodz± z wielu ¼róde³, g³ównie z USENET-u i zg³oszone przez ró¿nych autorów. Christos Zoulas (adres poni¿ej) bêdzie zbiera³ dodatkowe lub poprawione wpisy pliku liczb magicznych. Zebrane wpisy bêd± okresowo dystrybuowane.

Kolejno¶æ wpisów w pliku magicznym jest istotna. Zale¿nie od u¿ywanego systemu, kolejno¶æ, w której s± u³o¿one, mo¿e byæ nieprawid³owa. Je¶li stare polecenie file u¿ywa pliku magicznego, warto zachowaæ stary plik magiczny dla porównania (zmieniaj±c jego nazwê na /usr/share/misc/magic.orig).

PRZYK£ADY


$ file file.c file /dev/hda

file.c:   C program text

file:     ELF 32-bit LSB executable, Intel 80386, version 1,

          dynamically linked, not stripped

/dev/hda: block special



$ 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/hda

file.c:      text/x-c

file:        application/x-executable, dynamically linked (uses shared libs), not stripped

/dev/hda:    application/x-not-regular-file



HISTORIA

Polecenie file istnia³o w ka¿dym systemie UNIX od przynajmniej wersji Research Version 6 (strona podrêcznika man z 16 stycznia 1975). Wersja z Systemu V wprowadzi³a jedn± istotn± g³ówn± zmianê: zewnêtrzn± listê typów liczb magicznych. Spowolni³o to trochê program, lecz uczyni³o go bardziej elastycznym.

Program ten, oparty na wersji z Systemu V, zosta³ napisany przez Iana Darwina <ian@darwinsys.com> bez zagl±dania do innych ¼róde³.

John Gilmore przerobi³ mocno ten kod, czyni±c go lepszym ni¿ pierwsza wersja. Geoff Collyer znalaz³ kilka nietrafno¶ci i dostarczy³ trochê wpisów w pliku liczb magicznych. Zmiana obs³ugi operatora ,,&'' przez Roba McMahona, cudcv@warwick.ac.uk, w 1989.

Guy Harris, guy@netapp.com, wykona³ wiele zmian w okresie od 1993 do dzisiaj.

Podstawowy rozwój i konserwacjê w okresie od 1990 do dzisiaj prowadzi Christos Zoulas (christos@astron.com).

Zmodyfikowany przez Chrisa Lowtha, chris@lowth.com, w 2000: Obs³uga opcji ,,-i'' powoduj±cej wyprowadzanie ³añcuchów typów MIME oraz korzystaj±cej z alternatywnego pliku liczb magicznych i wbudowanej logiki.

Zmodyfikowany przez Erica Fischera (enf@pobox.com), w lipcu 2000, aby rozpoznawa³ kody znaków i próbowa³ zidentyfikowaæ jêzyk plików nie-ASCII.

Lista osób, które wnios³y wk³ad do katalogu "Magdir" (¼ród³a pliku /etc/magic) jest za d³uga, aby j± ty przytaczaæ. Wiecie kim jeste¶cie; dziêkujemy.

NOTKA PRAWNA

Copyright (c) Ian F. Darwin, Toronto, Canada, 1986-1999. Na standardowej licencji Berkeley Software Distribution; znajduje siê ona w pliku LEGAL.NOTICE dystrybyowanych ¼róde³.

Pliki tar.h oraz is_tar.c zosta³y napisane przez Johna Gilmore'a a pochodz± z jego ogólnie dostêpnego programu tar, i nie podlegaj± powy¿szej licencji.

B£ÊDY

Musi istnieæ lepszy sposób na zautomatyzowanie konstrukcji pliku liczb magicznych ze wszystkiego w Magdir. Jaki to sposób? Co wiêcej, plik magiczny powinien byæ kompilowany do binarium (powiedzmy, ndbm(3) lub jeszcze lepiej, do ASCII o sta³ej d³ugo¶ci ³añcuchów znakowych do u¿ytku w heterogenicznych ¶rodowiskach sieciowych) w celu szybszego uruchamiania. Wtedy program dzia³a³by tak szybko, jak program o tej samej nazwie z Wersji 7, z elastyczno¶ci± wersji z Systemu V.

file u¿ywa kilku algorytmów, które przedk³adaj± szybko¶æ nad dok³adno¶æ, wiêc mo¿e zostaæ zmylony co do zawarot¶ci plików tekstowych.

Obs³uga plików tekstowych (przede wszystkim dla jêzyków programowania) jest uproszczona, nieefektywna a do aktualizacji wymaga rekompilacji.

Powinnna istnieæ klauzula ,,else'', aby obs³u¿yæ kontynuacje linii.

Plik liczb magicznych i s³owa kluczowe powinny obs³ugiwaæ wyra¿enia regularne. U¿ywanie przez nie znaku ASCII TAB jako separatora pól jest paskudne i utrudnia edycjê plików, ale jest ju¿ zakorzenione.

Mo¿e byæ zalecanym zezwolenie na wystêpowanie wielkich liter w s³owach kluczowych, np. polecenia troff(1) vs makra stron podrêcznika man. Obs³uga wyra¿eñ regularnych u³atwi³aby to.

Program nie identyfikuje poprawnie FORTRANu. Powinno byæ mo¿liwe rozpoznawanie FORTRANu przez wyszukanie pewnych s³ów kluczowych, które pojawiaj± siê po wciêciach na pocz±tku linii. Obs³uga wyra¿eñ regularnych u³atwi³aby to.

Lista s³ów kluczowych w ascmagic prawdopodobnie przynale¿y do pliku liczb magicznych. Mo¿na to zrobiæ poprzez u¿ycie jakiego¶ s³owa kluczowego, w rodzaju ,,*'' jako warto¶ci przesuniêcia w pliku.

Inn± optymalizacj± by³oby sortowanie pliku magicznego w ten sposób, by mo¿na by³o przelecieæ wszystkie testy pierwszego bajtu, pierwszego s³owa, pierwszego podwójnego s³owa itd., gdy tylko zostanie on za³adowany. Narzekania na konflikty we wpisach plików magicznych. Ustalenie zasady, ¿e wpisy w pliku liczb magicznych s± sortowane w oparciu o przesuniêcie w badanym pliku, nie za¶ o pozycjê wewn±trz pliku magicznego?

Program powinien umo¿liwiæ ocenê, ,,jak dobre'' by³o zgadniêcie. Koñczymy na usuwaniu zgadniêæ (np. ,,From '' jako pierwsze 5 znaków w pliku), poniewa¿ nie s± one tak dobre jak inne zgadniêcia (np. ,,Newsgroups:'' vs ,,Return-Path:''). Jednak wci±¿, je¶li inne nie bêd± pasowaæ, powinno byæ mo¿liwe u¿ycie pierwszych zgadniêæ.

Program ten jest wolniejszy ni¿ polecenia file niektórych dystrybutorów. Nowa obs³uga kodów wieloznakowych czyni go jeszcze wolniejszym.

Ta strona podrêcznika man, a szczególnie ta sekcja, jest zbyt d³uga.

DOSTÊPNO¦Æ

Najnowsz± oryginaln± wersjê programu tego autora mo¿na pobraæ z anonimowego ftp z ftp.astron.com z katalogu /pub/file/file-X.YY.tar.gz