FILE(1) General Commands Manual FILE(1) NAZWA file - okresla typ pliku SKLADNIA file [-bcdEhiklLNnprsSvzZ0] [--apple] [--exclude-quiet] [--extension] [--mime-encoding] [--mime-type] [-e nazwa-testu] [-F separator] [-f nazwa-pliku] [-m pliki-magiczne] [-P nazwa=wartosc] file ... file -C [-m pliki-magiczne] file [--help] OPIS This manual page documents version 5.45 of the file command. file sprawdza kazdy ze swoich argumentow, probujac go sklasyfikowac. Istnieja trzy zestawy testow, ktore sa wykonywane w nastepujacej kolejnosci: testy systemu plikow, testy liczb magicznych i testy jezyka. Pierwszy test zakonczony powodzeniem powoduje wypisanie typu pliku. The type printed will usually contain one of the words text (the file contains only printing characters and a few common control characters and is probably safe to read on an ASCII terminal), executable (the file contains the result of compiling a program in a form understandable to some UNIX kernel or another), or data meaning anything else (data is usually "binary" or non-printable). Exceptions are well-known file formats (core files, tar archives) that are known to contain binary data. When modifying magic files or the program itself, make sure to preserve these keywords. Users depend on knowing that all the readable files in a directory have the word "text" printed. Don't do as Berkeley did and change "shell commands text" to "shell script". Testy systemu plikow sa oparte o sprawdzanie wartosci zwracanej przez funkcje systemowa stat(2). Program sprawdza, czy plik jest pusty oraz czy jest jakiegos rodzaju plikiem specjalnym. Powinno sie dac rozpoznac wszystkie rodzaje plikow wystepujace w danym systemie (gniazda, dowiazania symboliczne lub nazwane potoki (FIFO), w systemach ktore je zaimplementowaly), o ile te rodzaje plikow beda zdefiniowane w systemowym pliku naglowkowym Testy liczb magicznych sluza do sprawdzania plikow, ktore zawieraja dane w okreslonym formacie. Dobrym tego przykladem jest wykonywalny plik binarny (skompilowany program) a.out, ktorego format jest zdefiniowany w i prawdopodobnie in the standard include directory. These files have a "magic number" stored in a particular place near the beginning of the file that tells the UNIX operating system that the file is a binary executable, and which of several types thereof. The concept of a "magic number" has been applied by extension to data files. Any file with some invariant identifier at a small fixed offset into the file can usually be described in this way. The information identifying these files is read from the compiled magic file /usr/share/file/misc/magic.mgc, or the files in the directory /usr/share/file/misc/magic if the compiled file does not exist. In addition, if $HOME/.magic.mgc or $HOME/.magic exists, it will be used in preference to the system magic files. Jesli plik nie pasuje do zadnego z wpisow w pliku liczb magicznych, dokonywane jest sprawdzenie czy jest to plik tekstowy. Rozpoznawane sa zestawy znakow: ASCII, ISO-8859-x, 8-bitowe rozszerzenia ASCII niezgodne z ISO (uzywane w systemach Macintosh i IBM PC), Unicode w kodowaniu UTF-8, Unicode w kodowaniu UTF-16 oraz EBCDIC. Sprawdzane sa zakresy i ciagi bajtow, ktore stanowia drukowalny tekst w kazdym z tych zestawow znakow. Jesli plik przejdzie ktorys z tych testow, zglaszany jest odpowiadajacy mu zestaw znakow. Pliki w ASCII, ISO-8859-x, UTF-8 oraz w rozszerzeniach ASCII sa identyfikowane jako "text", gdyz moga byc one na ogol czytane na dowolnym terminalu; pliki w UTF-16 i EBCDIC stanowia jedynie "character data" (dane znakowe), gdyz jesli zawieraja one tekst, tekst ten wymaga przed przeczytaniem konwersji. Dodatkowo, file bedzie probowal okreslic inne charakterystyki plikow tekstowych. Jesli wiersze sa zakonczone znakami CR, CRLF lub NEL, zamiast standardowego uniksowego LF, zostanie to zgloszone. Zostana rowniez zidentyfikowane pliki zawierajace wbudowane sekwencje unikowe lub wielokrotnego drukowania. Po okresleniu przez file zestawu znakow uzywanego w pliku tekstowym, sprobuje on odgadnac w jakim jezyku plik zostal napisany. Testy jezykowe skladaja sie z poszukiwan okreslonych lancuchow znakowych (por. , ktore moga pojawic sie gdziekolwiek w kilku pierwszych blokach pliku. Na przyklad slowo kluczowe .br wskazuje, ze plik jest najprawdopodobniej plikiem wejsciowym dla programu troff(1) podobnie, jak struct wskazuje na program w C. Testy te sa mniej godne zaufania niz poprzednie dwie grupy, wiec sa wykonywane na koncu. Testy jezykowe testuja rowniez niektore pliki zbiorcze (jak archiwa tar(1), pliki JSON). Plik, ktory nie moze zostac okreslony jako jako zapisany w jednym z powyzszych zestawow znakow, jest po prostu okreslany jako "data" (dane). OPCJE --apple Causes the file command to output the file type and creator code as used by older MacOS versions. The code consists of eight letters, the first describing the file type, the latter the creator. This option works properly only for file formats that have the apple-style output defined. -b, --brief Nie podaje nazw plikow na poczatku wierszy wynikowych (tryb skrocony). -C, --compile Zapisuje plik wynikowy magic.mgc, ktory zawiera wstepnie przetworzona wersje pliku lub katalogu. -c, --checking-printout Cause a checking printout of the parsed form of the magic file. This is usually used in conjunction with the -m option to debug a new magic file before installing it. -d Wypisuje wewnetrzne informacje debugowania na standardowe wyjscie bledow. -E W przypadku bledow systemu plikow (np. nie znaleziono pliku) nie obsluguje bledu jako normalnego wyniku i nie kontynuuje dzialania, jak wymaga norma POSIX, lecz wyswietla blad i wychodzi. -e, --exclude nazwa-testu Wylacza test o nazwie nazwa-testu z listy testow, przeprowadzanych w celu okreslenia typu pliku. Poprawne nazwy testow to: apptype Typ aplikacji EMX (tylko na EMX). ascii Rozne typy plikow tekstowych (ten test stara sie odgadnac kodowanie tekstu, niezaleznie od opcji "encoding"). encoding Rozne kodowania tekstowe do testow magicznych soft. tokens Ignorowane w celu zachowania kompatybilnosci wstecznej. cdf Wypisuje szczegoly plikow Compound Document File. compress Wyszukuje i zaglebia sie w pliki skompresowane. csv Wyszukuje plikow z wartosciami rozdzielonymi przecinkiem (ang. Comma Separated Value - CSV) elf Wypisuje szczegoly pliku ELF, zakladajac ze wlaczone sa testy magiczne soft i odszukano magiczne elf. json Sprawdza pliki JSON (RFC-7159) pod katem poprawnosci. soft Sprawdza z plikami magicznymi. simh Examines SIMH tape files. tar Sprawdza pliki tar weryfikujac sume kontrolna 512-bajtowego naglowka archiwum. Wylaczenie tego testu moze dac bardziej szczegolowy opis zawartosci, przy uzyciu metody soft. text Synonim `ascii'. --exclude-quiet Like --exclude but ignore tests that file does not know about. This is intended for compatibility with older versions of file. --extension Wyswietla liste prawidlowych rozszerzen dla znalezionego typu pliku, rozdzielonych ukosnikiem. -F, --separator separator Uzywa podanego lancucha jako separatora miedzy nazwa pliku a zwroconym wynikiem pliku. Domyslnie jest to ":". -f, --pliki-od nazwa-pliku Odczytuje nazwy testowanych plikow z nazwa-pliku (po jednym w wierszu) przed lista argumentow. Obecna musi byc albo nazwa-pliku albo przynajmniej jeden argument bedacy nazwa pliku; aby testowac standardowe wejscie, nalezy uzyc argumentu "-" jako nazwy pliku. Prosze zauwazyc, ze nazwa-pliku nie jest rozwijana, a nazwy plikow sa przetwarzane przy wystapieniu tej opcji przed wszystkimi innymi opcjami. Pozwala to na przetworzenie wielu list plikow z roznymi argumentami wiersza polecenia, w tym samym wywolaniu file. Z tego powodu, jesli chce sie ustawic ogranicznik, konieczne jest zrobienie tego przed podaniem listy plikow, np. " -F @ -f nazwa-pliku ", zamiast: " -f nazwa-pliku -F @ ". -h, --no-dereference This option causes symlinks not to be followed (on systems that support symbolic links). This is the default if the environment variable POSIXLY_CORRECT is not defined. -i, --mime Causes the file command to output mime type strings rather than the more traditional human readable ones. Thus it may say `text/plain; charset=us-ascii' rather than "ASCII text". --mime-type, --mime-encoding Jak -i, lecz wypisuje jedynie okreslone element(y). -k, --keep-going Nie zatrzymuje sie po pierwszym dopasowaniu. Kolejne dopasowania beda poprzedzone lancuchem "\012- " (aby osiagnac znak nowego wiersza, prosze skorzystac z opcji -r). Wygrywa najsilniejszy wzor magiczny (patrz opcja -l). -l, --list Pokazuje liste wzorcow i ich sile posortowanych malejaca wedlug sily magic(5), ktora jest uzywana do dopasowania (zobacz tez opcje -k). -L, --dereference This option causes symlinks to be followed, as the like-named option in ls(1) (on systems that support symbolic links). This is the default if the environment variable POSIXLY_CORRECT is defined. -m, --plik-magiczny pliki-magiczne Podaje alternatywna liste plikow i katalogow zawierajacych magie. Moze byc to pojedynczy plik lub rozdzielona dwukropkami lista plikow. Jesli razem z plikiem lub katalogiem zostanie znaleziony skompilowany plik magiczny, zostanie uzyty zamiast pliku lub katalogu. -N, --no-pad Nie wyrownuje nazw plikow tak, aby wynik wygladal lepiej. -n, --no-buffer Wymusza oproznienie standardowego wyjscia po sprawdzeniu kazdego pliku. Jest to przydatne wylacznie przy sprawdzaniu listy plikow. Opcja jest przeznaczona do programow oczekujacych wyniku z typem plikow, pozyskanego z potoku. -p, --preserve-date W systemach obslugujacych utime(3) lub utimes(2), stara sie zachowac czas dostepu analizowanych plikow, aby udac, ze file nigdy ich nie odczytalo. -P, --parameter nazwa=wartosc Ustawia rozne limity parametrow. Nazwa Domyslnie Opis bytes 1M max number of bytes to read from file elf_notes 256 maks. liczba przetw. wezlow ELF elf_phnum 2K max ELF program sections processed elf_shnum 32K max ELF sections processed elf_shsize 128MB max ELF section size processed encoding 65K max number of bytes to determine encoding indir 50 limit rekurencji dla magii niebezposr. name 50 use count limit for name/use magic regex 8K length limit for regex searches -r, --raw Nie tlumaczy niedrukowalnych znakow na \ooo. Zwykle file tlumaczy znaki niedrukowalne na ich postac osemkowa. -s, --pliki-specjalne Normalnie, file probuje czytac i okreslac rodzaj pliku jedynie dla tych argumentow, ktore sa plikami zgloszonymi przez stat(2) jako zwykle pliki. Pozwala to uniknac problemow, gdyz czytanie plikow specjalnych moze miec nieprzyjemne konsekwencje. Podanie opcji -s powoduje, ze file czyta rowniez argumenty bedace plikami specjalnymi urzadzen blokowych i znakowych. Jest to przydatne do okreslania rodzaju systemu plikow w przypadku danych na surowych partycjach dyskow, stanowiacych pliki specjalne urzadzen blokowych. Opcja ta powoduje rowniez, ze file nie zwaza na zglaszany przez stat(2) rozmiar pliku, gdyz w niektorych systemach funkcja ta zglasza zero dla surowych partycji dyskow. -S, --no-sandbox On systems where libseccomp (https://github.com/seccomp/libseccomp) is available, the -S option disables sandboxing which is enabled by default. This option is needed for file to execute external decompressing programs, i.e. when the -z option is specified and the built-in decompressors are not available. On systems where sandboxing is not available, this option has no effect. -v, --version Wyswietla informacje o wersji i konczy dzialanie. -z, --uncompress Probuje zagladac do plikow skompresowanych. -Z, --uncompress-noreport Try to look inside compressed files, but report information about the contents only not the compression. -0, --print0 Wypisuje znak zerowy "\0" po koncu nazwy plikow. Przydatne do zastosowania cut(1) na wyniku. Opcja nie wplywa na separator, ktory jest w dalszym ciagu wypisywany. If this option is repeated more than once, then file prints just the filename followed by a NUL followed by the description (or ERROR: text) followed by a second NUL for each entry. --help Wyswietla komunikat pomocy i wychodzi. SRODOWISKO Zmienna srodowiskowa MAGIC moze byc wykorzystana do ustawienia domyslnej nazwy pliku magicznego. Jesli zmienna ta jest ustawiona, to file nie probuje otworzyc $HOME/.magic. file dodaje ".mgc" do wartosci tej zmiennej, jesli to konieczne. Zmienna srodowiskowa POSIXLY_CORRECT kontroluje (w systemach, ktore obsluguje dowiazania srodowiskowe), czy file bedzie probowal podazac za dowiazaniami symbolicznymi. Jesli jest ustawiona, to file podaza za nimi, w przeciwnym wypadku - nie. Za dowiazania odpowiadaja rowniez opcje -L i -h. PLIKI /usr/share/file/misc/magic.mgc Domyslna skompilowana lista liczb magicznych. /usr/share/file/misc/magic Katalog zawierajacy domyslne pliki magiczne. STATUS ZAKONCZENIA file will exit with 0 if the operation was successful or >0 if an error was encountered. The following errors cause diagnostic messages, but don't affect the program exit code (as POSIX requires), unless -E is specified: o A file cannot be found o There is no permission to read a file o The file type cannot be determined PRZYKLADY $ 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 ZOBACZ TAKZE hexdump(1), od(1), strings(1), magic(5) ZGODNOSC ZE STANDARDAMI Program ten prawdopodobnie wykracza poza definicje FILE(CMD) z definicji interfejsu Systemu V (System V Interface Definition). Wydaje sie tak przynajmniej z tego, co mozna zrozumiec z tamtejszego niejasnego jezyka... Zachowanie programu jest w wiekszosci zgodne z zachowaniem programu z Systemu V o tej samej nazwie. Wersja niniejsza zna wiecej magii, wiec bedzie dawala w wielu wypadkach inne (dokladniejsze) wyniki. Jedna z istotnych roznic miedzy ta wersja i wersja z Systemu V, jest to, ze niniejsza wersja traktuje biale znaki jako separatory, wiec spacje w lancuchach wzorcow musza byc chronione. Na przyklad, >10 string language impress (imPRESS data) w istniejacym pliku magicznym bedzie musialo byc zamienione na >10 string language\ impress (imPRESS data) Dodatkowo, w tej wersji, jesli lancuch wzorca zawiera odwrotny ukosnik, to musi byc on chroniony. Na przyklad 0 string \begindata Andrew Toolkit document w istniejacym pliku magicznym bedzie musialo byc zamienione na 0 string \\begindata Andrew Toolkit document Wersja 3.2 SunOS i pozniejsze pochodzace z Sun Microsystems zawieraja polecenie file, wywodzace sie z polecenia z System V, lecz z pewnymi rozszerzeniami. Ta wersja rozni sie od Sun-owskiej tylko malymi szczegolami. Zawiera ona rozszerzenie operatora "&", uzywanego jako np. >16 long&0x7fffffff >0 not stripped BEZPIECZENSTWO On systems where libseccomp (https://github.com/seccomp/libseccomp) is available, file is enforces limiting system calls to only the ones necessary for the operation of the program. This enforcement does not provide any security benefit when file is asked to decompress input files running external programs with the -z option. To enable execution of external decompressors, one needs to disable sandboxing using the -S option. KATALOG MAGICZNY Wpisy w pliku liczb magicznych pochodza z wielu zrodel, glownie z USENET- u i zgloszone przez roznych autorow. Christos Zoulas (adres ponizej) bedzie zbieral dodatkowe lub poprawione wpisy pliku liczb magicznych. Zebrane wpisy beda okresowo dystrybuowane. The order of entries in the magic file is significant. Depending on what system you are using, the order that they are put together may be incorrect. If your old file command uses a magic file, keep the old magic file around for comparison purposes (rename it to /usr/share/file/misc/magic.orig). HISTORIA Polecenie file istnialo w kazdym systemie UNIX od przynajmniej wersji Research Version 4 (strona podrecznika man z listopada 1973). Wersja z Systemu V wprowadzila jedna istotna glowna zmiane: zewnetrzna liste typow liczb magicznych. Spowolnilo to troche program, lecz uczynilo go bardziej elastycznym. Program ten, oparty na wersji z Systemu V, zostal napisany przez Iana Darwina bez zagladania do innych zrodel. John Gilmore przerobil mocno ten kod, czyniac go lepszym niz pierwsza wersja. Geoff Collyer znalazl kilka nietrafnosci i dostarczyl troche wpisow w pliku liczb magicznych. Zmiana obslugi operatora "&" przez Roba McMahona, , w 1989. Guy Harris, guy@netapp.com, wykonal wiele zmian w okresie od 1993 do dzisiaj. Podstawowy rozwoj i konserwacje w okresie od 1990 do dzisiaj prowadzi Christos Zoulas ( ). Zmodyfikowany przez Chrisa Lowtha, , w 2000: Obsluga opcji -i powodujacej wyprowadzanie lancuchow typow MIME oraz korzystajacej z alternatywnego pliku liczb magicznych i wbudowanej logiki. Zmodyfikowany przez Erica Fischera ( ), w lipcu 2000, aby rozpoznawal kody znakow i probowal zidentyfikowac jezyk plikow nie-ASCII. Zmodyfikowany przez Reubena Thomasa , w latach 2007-2011, w celu poprawy obslugi MIME, polaczenia magii MIME i nie MIME, obslugi zarowno katalogow jak i plikow magicznych, zaaplikowania wielu poprawek bledow, zaktualizowania i poprawienia sporej czesci magii, poprawienia systemu budowania, dokumentacji i przepisania podpiec Pythona w czystym Pythonie. Lista osob, ktore wniosly wklad do katalogu "magic" (pliki magiczne) jest za dluga, aby ja tu przytaczac. Wiecie kim jestescie; dziekujemy. Wiele osob jest wspomnianych w plikach zrodlowych. NOTKA PRAWNA Copyright (c) Ian F. Darwin, Toronto, Canada, 1986-1999. Na standardowej licencji Berkeley Software Distribution, znajduje sie ona w pliku COPYING, w katalogu zrodel. Pliki tar.h i is_tar.c zostaly napisane przez Johna Gilmore'a, a pochodza z jego ogolnie dostepnego programu tar(1) i nie podlegaja powyzszej licencji. USTERKI Prosze zglaszac bledy i wysylac latki do systemu sledzenia bledow pod adresem http://bugs.astron.com/ lub na liste dyskusyjna (najpierw prosze sie zapisac na https://mailman.astron.com/mailman/listinfo/file). DO ZROBIENIA Naprawic wyjscie, dzieki czemu testy flag MIME i APPLE nie beda potrzebne wszedzie, a rzeczywiste wyjscie byloby tworzone tylko raz w jednym miejscu. Wymaga odpowiedniego projektu. Sugestia: wypychaj prawdopodobne wyniki na liste i uzyj ostatniej wartosci z listy (powinna byc najdokladniejsza) lub uzyj wartosci domyslnej, jesli lista jest pusta. Nie powinno to spowolnic obliczen. The handling of MAGIC_CONTINUE and printing \012- between entries is clumsy and complicated; refactor and centralize. Some of the encoding logic is hard-coded in encoding.c and can be moved to the magic files if we had a !:charset annotation. Kontynuowac likwidacje wszystkich bledow. System BTS Debiana jest tu dobrym zrodlem. Store arbitrarily long strings, for example for %s patterns, so that they can be printed out. Fixes Debian bug #271672. This can be done by allocating strings in a string pool, storing the string pool at the end of the magic file and converting all the string pointers to relative offsets from the string pool. Dodac skladnie do wzglednych przesuniec po biezacym poziomie (bug Debiana #466037). Sprawic, by dzialala opcja -ki, tzn. podawanie wielu typow MIME. Add a zip library so we can peek inside Office2007 documents to print more details about their contents. Dodac opcje do wypisywania URL-i zrodel opisow plikow. Polaczyc przeszukiwania skryptow i dodac metode na powiazanie nazw plikow wykonywalnych z typami MIME (wartosc magiczna do !:mime ktora spowodowalaby wyszukanie wynikowego lancucha w tabeli). Dzieki temu unikneloby sie dodawanie tych samych wartosci magicznych dla kazdego nowego interpretera hash-bang. When a file descriptor is available, we can skip and adjust the buffer instead of the hacky buffer management we do now. Naprawic "name" i "use" aby pilnowaly spojnosci w chwili kompilacji (zduplikowane "name", "use" wskazujace na niezdefiniowana "name"). "name" / "use" powinny byc efektywniejsze poprzez utrzymywanie posortowanej listy nazw. Wdrozyc i udokumentowac ^ jako specjalny przypadek do zmieniania kolejnosci bajtow w parserze, dzieki czemu nie wymagaloby to cytowania. If the offsets specified internally in the file exceed the buffer size ( HOWMANY variable in file.h), then we don't seek to that offset, but we give up. It would be better if buffer managements was done when the file descriptor is available so we can seek around the file. One must be careful though because this has performance and thus security considerations, because one can slow down things by repeatedly seeking. There is support now for keeping separate buffers and having offsets from the end of the file, but the internal buffer management still needs an overhaul. DOSTEPNOSC Najnowsza oryginalna wersje programu tego autora mozna pobrac z anonimowego ftp z ftp.astron.com, z katalogu /pub/file/file-X.YZ.tar.gz. TLUMACZENIE Autorami polskiego tlumaczenia niniejszej strony podrecznika sa: Przemek Borys , Andrzej Krzysztofowicz i Michal Kulach Niniejsze tlumaczenie jest wolna dokumentacja. Blizsze informacje o warunkach licencji mozna uzyskac zapoznajac sie z GNU General Public License w wersji 3: https://www.gnu.org/licenses/gpl-3.0.html lub nowszej. Nie przyjmuje sie ZADNEJ ODPOWIEDZIALNOSCI. Bledy w tlumaczeniu strony podrecznika prosimy zglaszac na adres listy dyskusyjnej manpages-pl-list@lists.sourceforge.net Linux 6.8.2-arch2-1 May 21, 2023 Linux 6.8.2-arch2-1