MAGIC(5) | File Formats Manual | MAGIC(5) |
magic - plik liczb magicznych polecenia file
Uwaga! To tłumaczenie może być nieaktualne!
Ta strona podręcznika systemowego opisuje format pliku magicznego, używanego przez polecenie file(1) w wersji 3.37. Polecenie file rozpoznaje typ pliku, korzystając (poza innymi metodami) z testu, polegającego na sprawdzeniu, czy plik nie rozpoczyna się od pewnej liczby magicznej. Plik /usr/share/misc/magic określa jakie liczby sprawdzać i jakie komunikaty drukować w wypadku znalezienia określonej liczby magicznej oraz dodatkowe dane, które mają zostać pobrane z pliku.
Każdy wiersz pliku określa test, które ma być wykonany. Test porównuje dane, rozpoczynające się przy określonym przesunięciu względem początku pliku z 1, 2 lub 4-bajtową wartością numeryczną lub łańcuchem. Jeśli test zakończy się pomyślnie, wypisywany jest komunikat. Wiersz składa się z następujących pól:
Typy numeryczne mogą występować w parze z (następującym po nich) znakiem & i wartością numeryczną wskazującą, że dana wartość ma być poddana operacji AND z zadaną wartością numeryczną przed dokonaniem porównania. Poprzedzenie typu przez u wskazuje, że porównane wartości powinny być bez znaku.
Niektóre formaty plików zawierają dodatkowe dane, które mają być wypisane razem z danym typem pliku. Wiersz, rozpoczynający się od znaku > oznacza dodatkowe testy i komunikaty. Liczba > w linii określa poziom testu; wiersz bez > jest na poziomie 0. Każdy wiersz w poziomie n+1 jest pod kontrolą wiersza w poziomie n, poprzedzającego go najbliżej w pliku magicznym. Jeśli test wiersza na poziomie n się powiedzie, dokonywane będą dalsze testy na poziomach n+1. Proces ten kończy następny wiersz na poziomie n. Jeśli pierwszy znak za ostatnim > to (, to łańcuch za nawiasem jest interpretowany jako pośrednie przesunięcie. Znaczy to, że liczba po nawiasie służy jako przesunięcie w pliku. Przy tym przesunięciu odczytywana jest wartość używana następnie jako przesunięcie w pliku. Przesunięcia pośrednie są postaci: (x[.[bslBSL]][+-][y]). Wartość x jest używana jako przesunięcie w pliku. Następnie przy tym przesunięciu odczytywany jest z niego bajt, słowo lub podwójne słowo, zależnie od specyfikatora typu [bslBSL]. Wielkie litery oznaczają liczby jako wartości grubokońce (big-endian), podczas gdy małe litery oznaczaja wartości (ostrokońce) little-endian. Do liczby tej dodawana jest wartość y, a wynik służy jako przesunięcie w pliku. Domyślnym typem przesunięcia jest long.
Czasami dokładne przesunięcie nie jest znane, gdyż może ono zależeć od długości poprzednich pól. Można podać przesunięcie względem końca ostatniego pola wyższego poziomu (oczywiście można to wykonać tylko przy testach na podpoziomach, tj. testach rozpoczynających się od >). Takie względne przesunięcie podawane jest za pomocą przedrostka & w przesunięcia.
Formaty long, belong, lelong, short, beshort, leshort, date, bedate i ledate zależą od systemu; może powinny być podawane jako liczba bajtów (2B, 4B, itd), gdyż rozpoznawane pliki zwykle pochodzą z systemu, gdzie długości są niezmienne.
Nie ma (obecnie) obsługi dla korzystania z danych o określonej końcowości (endianness) przy przesunięciach pośrednich.
file(1) - polecenie, która czyta ten plik.
Powyższe tłumaczenie pochodzi z nieistniejącego już Projektu Tłumaczenia Manuali i może nie być aktualne. W razie zauważenia różnic między powyższym opisem a rzeczywistym zachowaniem opisywanego programu lub funkcji, prosimy o zapoznanie się z oryginalną (angielską) wersją strony podręcznika za pomocą polecenia:
Prosimy o pomoc w aktualizacji stron man - więcej informacji można znaleźć pod adresem http://sourceforge.net/projects/manpages-pl/.
Ogólnie dostępne |