Nazwa
plik – Określ typ pliku
Streszczenie
plik …
plik-C
plik
opis
Ta strona podręcznika dokumentuje wersję 5.04 polecenia file.
plik testuje każdy argument, próbując go sklasyfikować. Istnieją trzy zestawy testów, wykonywane w tej kolejności: testy systemu plików, testy magii i testy języka. Pierwszy test, który się powiedzie, powoduje wydrukowanie typu pliku.
Typ wydrukowany zazwyczaj zawiera jedno ze słów tekst (plik zawiera tylko znaki drukowania i kilka popularnych znaków sterujących i jest bezpieczny do odczytania na terminalu ASCII), wykonywalny (plik zawiera Wynik kompilacji programu w formie zrozumiałej dla jakiegoś Unixkernela lub innego) lub dane oznaczające cokolwiek innego (dane są zwykle „binarne” lub nie są drukowalne). Wyjątkami są dobrze znane formaty plików (pliki Podstawowe, pliki tararchive), które zawierają dane binarne. Modyfikując magiczne pliki lub sam program, pamiętaj, aby zachować te słowa kluczowe. Użytkownicy polegają na tym, że wszystkie czytelne pliki w katalogu mają wydrukowane SŁOWO „TEKST”. Nie rób tego, co zrobił Berkeley i zmień „tekst poleceń powłoki” na „skrypt powłoki”.
testy systemu plików opierają się na sprawdzaniu powrotu z funkcji systemowej stat(2). Program sprawdza, czy plik jest pusty, czy jest to jakiś specjalny plik. Wszystkie znane typy plików odpowiednie dla systemu, na którym pracujesz (gniazda, dowiązania symboliczne lub nazwane rury (FIFO) na tych systemach, które je uzupełniają) są intuicyjne, jeśli są zdefiniowane w pliku nagłówkowym systemu
testy magiczne są używane do sprawdzania plików z danymi w określonych stałych formatach. Kanonicznym tego przykładem jest binarny plik wykonywalny (skompilowany program)a.out, którego format jest zdefiniowany w #include <a.out.h >
i ewentualnie #include <exec.h >
w standardowym katalogu include. Pliki te mają „magiczną liczbę” przechowywaną w określonym miejscu na początku pliku, który mówi systemowi operacyjnemu UNIX, że plik jest binarnym plikiem wykonywalnym i który z kilku jego typów. Pojęcie „magii” zostało zastosowane przez rozszerzenie do plików danych. Każdy plik z pewnym niezmiennym identyfikatorem przy małym stałym przesunięciu do pliku może być zazwyczaj opisany w ten sposób. Informacje identyfikujące te pliki są odczytywane ze skompilowanego pliku magic / usr/share/misc / magic.mgc, lub plików w katalogu / usr / share/misc / magic, jeśli skompilowany plik nie istnieje. Inaddition, if $HOME/.Magia.mgc lub $HOME/.magia istnieje, to będzie używany w preferencjach do magicznych plików systemowych. Jeśli istnieje /etc / magic, będzie on używany razem z innymi magicznymi plikami.
Jeśli plik nie pasuje do żadnego z wpisów w magicznym pliku, jest sprawdzany, aby sprawdzić, czy wydaje się, że jest to plik tekstowy. Zestawy znaków ASCII, ISO-8859-x, INNE niż ISO 8-bitextended-ASCII (takie jak te używane w systemach Macintosh i IBM PC), UTF-8-kodowany Unicode, UTF-16-kodowany Unicode i EBCDIC można odróżnić przez różne zakresy i sekwencje bajtów, które stanowią tekst do wydruku w każdym zestawie. Jeśli plik przejdzie którekolwiek z tych testów, zostanie zgłoszony jego zbiór. Pliki ASCII, ISO-8859 – x, UTF-8 i extended-ASCII są identyfikowane jako „tekstowe”, ponieważ będą w większości czytelne na prawie każdym terminalu; UTF-16 i EBCDIC są tylko „danymi znakowymi”, ponieważ, chociaż zawierają tekst, To jest to tekst, który będzie wymagał tłumaczenia, zanim będzie można go odczytać. Poza tym plik spróbuje określić inne cechy plików tekstowych. Jeśli linie pliku są zakończone przez CR, CRLF lub NEL, zamiast standardu uniksowego LF, zostanie to zgłoszone. Zidentyfikowane zostaną również pliki zawierające osadzone sekwencje specjalne lub przeciążenia.
gdy plik określi zestaw znaków używany w pliku tekstowym, spróbuje określić, w jakim języku plik jest zapisany. Testy językowe szukają poszczególnych ciągów (por. # include<names.h >
), które mogą pojawić się w dowolnym miejscu w pierwszych kilku blokach pliku. Na przykład, słowo kluczowe. br wskazuje,że plik jest najprawdopodobniej plikiem wejściowym troff(1), tak jak słowo kluczowe struct wskazuje na program C. Testy te są mniej wiarygodne niż dwie poprzednie grupy, więc są one wykonywane jako ostatnie. Procedury languagetest testują również niektóre różne (takie jak archiwa Tar (1)).
każdy plik, którego nie można zidentyfikować jako zapisany w żadnym ze zbiorów znaków wymienionych powyżej, jest po prostu nazywany „danymi”.
opcje
-b, --brief
nie poprzedzają nazw plików do linii wyjściowych (tryb krótki).
– C, –compile
napisz magię.plik wyjściowy mgc, który zawiera wstępnie przetworzoną wersję magicznego pliku lub katalogu.
-c, –checking-printout
powoduje sprawdzenie wydruku przetworzonej postaci pliku magicznego. Jest to zwykle używane w połączeniu z opcją – m do debugowania nowego pliku magic przed jego zainstalowaniem.
-e, –exclude testname
wykluczenie testu nazwanego w testname z listy testów wykonanych w celu określenia typu pliku. Poprawne nazwy testów to:
apptype
typ aplikacji EMX (tylko na EMX).
text 'różne typy plików tekstowych (ten test spróbuje odgadnąć kodowanie tekstu, niezależnie od ustawienia opcji 'kodowanie’).
kodowanie
różne kodowanie tekstu do miękkich testów magicznych.
tokeny’ wyszukuje znane tokeny w plikach tekstowych.
cdf’ drukuje szczegóły złożonych plików dokumentów.
compress
sprawdza, czy skompresowane pliki znajdują się w środku.
elf’ wypisuje Szczegóły pliku ELF.
soft ’ konsultuje magiczne pliki.
Tar ’ bada pliki tar.
-F, –separator separator
używa podanego ciągu znaków jako separatora pomiędzy nazwą pliku a zwracanym wynikiem pliku. Domyślnie’:’.
-f, –files-from namefile
odczytuje nazwy plików do sprawdzenia z namefile (po jednej linijce) przed listą argumentów. Albo plik nazw albo przynajmniej jeden plik nazwaargument musi być obecny; aby przetestować standardowe wejście, Użyj ’ – ’ jako argumentu nazwy pliku.
-h, –no-dereference
opcja powoduje, że dowiązania symboliczne nie są śledzone (w systemach obsługujących dowiązania symboliczne). Jest to wartość domyślna, jeśli zmienna środowiskowa POSIXLY_CORRECT nie jest zdefiniowana.
-i, –MIME
powoduje, że polecenie file wyświetla ciągi typu mime, a nie te bardziej tradycyjne, czytelne dla człowieka. W ten sposób może powiedzieć 'text/plain; charset=us-ascii’ ratherthan 'ASCII text’. Aby ta opcja działała, plik zmienia sposób, w jaki obsługuje pliki rozpoznawane przez samo polecenie (takie jak wiele typów plików tekstowych, katalogi itp.) i korzysta z alternatywnego pliku 'magicznego’. (Zobacz sekcję Pliki poniżej).
–mime-type, –MIME-encoding
podobnie jak-i, ale wypisuje tylko określone elementy.
-l, –dereference
opcja powoduje, że dowiązania symboliczne są śledzone, jako opcja o podobnej nazwie w ls(1) (w systemach obsługujących dowiązania symboliczne). Jest to wartość domyślna, jeśli zdefiniowano zmienną środowiskową POSIXLY_CORRECT.
-m, –magic-file magicfiles
określa alternatywną listę plików i katalogów zawierających magię. Może to być pojedynczy element lub lista rozdzielona dwukropkami. Jeśli skompilowany magiczny plik zostanie znaleziony obok pliku lub katalogu, zostanie użyty zamiast niego.
-n, –no-pad
nie zapisuje nazw plików tak, aby wyrównywały się na wyjściu.
-n, –no-buffer
wymusza opróżnienie stdout po sprawdzeniu KAŻDEGO pliku. Jest to przydatne tylko w przypadku sprawdzania listy plików. Jest przeznaczony do użycia przez programy, które chcą filetypeoutput z potoku.
-p, –preserve-date
w systemach, które obsługują utime(2) lub utime(2), próbują zachować czas dostępu do analizowanych plików, aby udawać, że plik ich nigdy nie czyta.
-r, –raw
Nie t3umaczyæ znaków niedrukowalnych na \ooo. Zwykle plik tłumaczy znaki niedrukowalne na ich ósemkową reprezentację.
-s, –special-files
Zwykle plik próbuje odczytać i określić typ plików argumentów, które raporty stat(2) są zwykłymi plikami. Zapobiega to problemom, ponieważwyszukiwanie specjalnych plików może mieć osobliwe konsekwencje. Podanie opcji-S powoduje, że plik będzie również odczytywał pliki argumentów, które są plikami blokowymi lub specjalnymi. Jest to przydatne do określania typów systemów plików danych na partycjach dysków surowych, które są plikami specjalnymi bloków. Opcja ta powoduje również, że plik pomija Rozmiar pliku zgłoszony przez stat(2), ponieważ w niektórych systemach zgłasza rozmiar zerowy dla surowych partycji dysku.
-v, –version
wypisuje wersję programu i kończy działanie.
-z, –uncompress
spróbuj zajrzeć do skompresowanych plików.
–help
wypisuje komunikat pomocy i kończy działanie.
pliki
/usr/share/misc/magic.mgc
domyślna skompilowana lista magii.
/usr/share/misc/magic’ katalog zawierający domyślne pliki magic.
środowisko
zmienna środowiskowa MAGIC może być użyta do ustawienia domyślnej nazwy pliku magic. Jeśli ta zmienna jest ustawiona, plik nie będzie próbował otworzyć$HOME/.Magia. file adds ’.mgc’ do wartości tej zmiennej odpowiednio. Zmienna środowiskowa POSIXLY_CORRECT (w systemach obsługujących dowiązania symboliczne) określa, czy plik będzie próbował podążać za dowiązaniami symbolicznymi, czy nie. Jeśli jest ustawione, plik podąża za dowiązaniem symbolicznym, w przeciwnym razie nie. Jest to również kontrolowane przez opcje-L i-H.
Zobacz także
magic(5), strings(1), od(1), hexdump(1,) file(1posix)
zgodność ze standardami
uważa się, że ten program przekracza definicję pliku(CMD) interfejsu systemu V, tak blisko, jak można określić z niejasnego języka w nim zawartego.Jego zachowanie jest w większości zgodne z programem System V o tej samej nazwie. Ta wersja zna jednak więcej magii, więc w wielu przypadkach będzie produkować inne (choć bardziej dokładne) wyjście.
jedna znacząca różnica między tą wersją a systemem V polega na tym, że ta wersja traktuje każdą białą spację jako ogranicznik, tak że spacje w patternstrings muszą być oddzielone. Na przykład,
>10 string language impress (imPRESS data)
w istniejącym pliku magic musiałby zostać zmieniony na
>10 string language\ impress (imPRESS data)
ponadto w tej wersji, jeśli ciąg wzorca zawiera ukośnik wsteczny, musi on zostać usunięty. Na przykład
0 string \begindata Andrew Toolkit document
w istniejącym pliku magic musiałby zostać zmieniony na
0 string \\begindata Andrew Toolkit document
SunOS releases 3.2 i nowsze z Sun Microsystems zawierają polecenie file pochodzące z Systemu V one, ale z pewnymi rozszerzeniami. Moja wersja różni się od Sun tylko w nieznaczny sposób. Zawiera rozszerzenie operatora’&’, używanego np. jako
>16 long&0x7fffffff >0 not stripped
Magic Directory
wpisy magic file zostały pobrane z różnych źródeł, głównie Usenetu, i Dodane przez różnych autorów. Christos Zoulas (adres poniżej) zbierze dodatkowe lub poprawione wpisy magicznych plików. Konsolidacja wpisów magic file będzie rozprowadzana okresowo.
kolejność wpisów w pliku magic jest znacząca. W zależności od tego, jakiego systemu używasz, kolejność ich złożenia może być nieprawidłowa. Jeśli twój stary plik używa magicznego pliku, zachowaj Stary magiczny plik dla celów porównawczych (zmień jego nazwę na /usr/share/misc/magic.oryg.
przykłady
$ file file.c file /dev/{wd0a,hda}file.c: C program textfile: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV),
dynamicznie łączone (używa współdzielonych bibliotek), pozbawione
/dev/wd0a: Block special (0/0)
/dev/hda: block special (3/0)
$ file-s/dev/wd0{B,d}
/dev / wd0b: data
/dev / wd0d: sektor rozruchowy x86
Historia
w każdym Uniksie istnieje polecenie file przynajmniej od wersji Research 4 (strona podręcznika z listopada 1973). W wersji systemu V wprowadzono znaczącą zmianę: zewnętrzną listę typów magii. Spowolniło to nieco program, ale uczyniło go o wiele bardziej elastycznym.
Ten program, oparty na wersji systemu V, został napisany przez Iana Darwina <[email protected]> bez patrzenia na czyjś kod źródłowy.
John Gilmore znacznie poprawił kod, czyniąc go lepszym niż pierwsza wersja. Geoff Collyer znalazł kilka niedociągnięć i dostarczył magicznych plików. „& ” [email protected], 1989.
Guy Harris, [email protected], dokonał wielu zmian od 1993 roku do chwili obecnej.
pierwotny rozwój i utrzymanie od 1990 do chwili obecnej przez Christosa Zoulasa ([email protected]).
zmieniony przez Chrisa Lowtha, [email protected], 2000: Obsługuje opcję-i do wyprowadzania ciągów typu mime, używając alternatywnego pliku magicznego i wewnętrznej logiki.
zmieniony przez Eric Fischer ([email protected]), lipiec 2000, aby zidentyfikować kody znaków i spróbować zidentyfikować języki plików nie-ASCII.
zmieniony przez Reuben Thomas ([email protected]), 2007 do 2008, aby poprawić obsługę MIME i scalić magię MIME i non-MIME, obsługuje katalogi, a także pliki ofmagic, stosuje wiele poprawek błędów i ulepsza system kompilacji.
lista współpracowników do katalogu „magic” (magiczne Pliki) jest zbyt długa, aby ją tu umieścić. Wiesz, kim jesteś, dziękuję. Wielu współpracowników jest wymienionych w plikach źródłowych.
Nota prawna
Copyright  © Ian F. Darwin, Toronto, Kanada, 1986-1999. Objęte standardowym prawem autorskim Berkeley Software Distribution; zobacz plik LEGAL.Uwaga w dystrybucji źródła.
pliki tar.h i is_tar.c zostały napisane przez Johna Gilmore ’ a z jego publicznego programu tar(1) i nie są objęte powyższą licencją.
błędy
musi być lepszy sposób na automatyzację budowy magicznego pliku ze wszystkich glopów w Magdir. O co chodzi?
plik wykorzystuje kilka algorytmów, które faworyzują szybkość nad dokładnością, dzięki czemu można go wprowadzić w błąd co do zawartości plików tekstowych.
obsługa plików tekstowych (głównie dla języków programowania) jest uproszczona, nieefektywna i wymaga rekompilacji w celu aktualizacji.
lista słów kluczowych w ascmagic prawdopodobnie należy do pliku Magic. Można to zrobić za pomocą jakiegoś słowa kluczowego, takiego jak ” * ” dla wartości offsetu.
narzekają na konflikty we wpisach magic file. Zrobić regułę, że magiczne wpisy sortują na podstawie przesunięcia pliku, a nie pozycji w magicznym pliku?
Ta strona podręcznika, a szczególnie ta sekcja, jest zbyt długa.
kod zwrotny
plik zwraca 0 W przypadku sukcesu, a niezerowy w przypadku błędu.
Jeśli plik nazwany przez operand pliku nie istnieje, nie można go odczytać lub nie można określić typu pliku nazwanego przez operand pliku, nie jest to błąd wpływający na status zakończenia.
dostępność
najnowszą wersję oryginalnego autora można uzyskać przez anonimowy FTP na ftp.astron.com w katalogu / pub / file / file-X. YZ.smoła.gz
BSD 9 października 2008 BSD