Provided by: manpages-pl_0.7-2_all 

NAZWA
magic - plik liczb magicznych polecenia file
OPIS
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:
offset Liczba, określająca w bajtach przesunięcie względem początku pliku, przy którym należy szukać
testowanych danych.
typ Typ testowanych danych. Dopuszczalne wartości to:
byte Wartość jednobajtowa.
short Wartość dwubajtowa (w większości systemów) w natywnej kolejności bajtów maszyny.
long Wartość czterobajtowa (w większości systemów) w natywnej kolejności bajtów maszyny.
string Łańcuch bajtów. Po specyfikacji typu łańcucha może opcjonalnie wystąpić /[Bbc]*.
Znacznik ,,B'' kondensuje białe znaki w testowanym tekście, który musi zawierać co
najmniej jeden biały znak. Jeśli liczba magiczna zawiera "n" kolejnych białych znaków,
to aby nastąpiło dopasowanie, testowany tekst musi zawierać co najmniej "n" kolejnych
białych znaków. Znacznik ,,b'' powoduje traktowanie wszystkich białych znaków w
testowanym tekście jako opcjonalne. Wreszcie, znacznik ,,c'' określa dopasowanie
ignorujące wielkość liter: małe litery w liczbie magicznej pasują zarówno do małych,
jak i do wielkich liter w testowanym tekście, podczas gdy wielkie litery w liczbie
magicznej pasują tylko do wielkich liter.
date Czterobajtowa wartość, interpretowana jako data uniksowa.
ldate Czterobajtowa wartość, interpretowana jako data w stylu uniksowym, ale interpretowana
jako czas lokalny, a nie UTC.
beshort Wartość dwubajtowa (w większości systemów) w grubokońcej (big-endian) kolejności
bajtów.
belong Wartość czterobajtowa (w większości systemów) w grubokońcej kolejności bajtów.
bedate Wartość czterobajtowa (w większości systemów) w grubokońcej kolejności bajtów,
interpretowana jako data uniksowa.
leshort Wartość dwubajtowa (w większości systemów) w ostrokońcej (little-endian) kolejności
bajtów.
lelong Wartość czterobajtowa (w większości systemów) w ostrokońcej kolejności bajtów.
ledate Wartość czterobajtowa (w większości systemów) w ostrokońcej kolejności bajtów,
interpretowana jako data uniksowa.
leldate Wartość czterobajtowa (w większości systemów) w ostrokońcej kolejności bajtów,
interpretowana jako data w stylu uniksowym, ale interpretowana jako czas lokalny, a nie
UTC.
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.
test Wartość, które ma być porównywana z wartością z pliku. Jeśli typ jest numeryczny, to wartość jest
podawana w postaci zgodnej z językiem C. Jeśli typ jest łańcuchowy, to wartość jest podawana jako
łańcuch języka C z dozwolonymi znakami specjalnymi (np. \n dla nowej linii).
Wartości numeryczne mogą być poprzedzone znakami określającymi operację, jaka ma zostać wykonana.
Znakiem operacji może być =, określający, że wartość z pliku musi się równać wartości podanej, <,
określający, że wartość z pliku musi być mniejsza od podanej, >, określający, że wartość z pliku
musi być większa od podanej, &, określający, że wartość z pliku musi mieć wszystkie bity, które są
ustawione w podanej wartości, ^, określający, że wartość z pliku musi mieć wyzerowane wszystkie
bity, które są ustawione w podanej wartości, lub x, określający, że pasować może dowolna wartość.
Jeśli znak operacji jest pominięty, używany jest =.
Wartości numeryczne są podawane w postaci zgodnej z językiem C, np. 13 to liczba dziesiętna, 013
to liczba ósemkowa, 0x13 to liczba szesnastkowa.
Dla wartości łańcuchowych łańcuch bajtów z pliku musi odpowiadać podanemu łańcuchowi bajtów. Do
łańcuchów mogą być stosowane operatory =, < i > (lecz nie &). Długość, używana do porównywania
jest długością argumentu łańcuchowego z pliku magicznego. Znaczy to, że wiersz można dopasować do
dowolnego łańcucha i wypisać go, stosując >\0 (ponieważ wszystkie łańcuchy są większe od łańcucha
zerowego).
komunikat
Komunikat, wypisywany po pomyślnym dopasowaniu. Jeśli łańcuch zawiera specyfikację formatu
printf(3) to wartość z pliku jest wypisywana (po odpowiednim maskowaniu) przy użyciu komunikatu
jako łańcucha formatującego.
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.
BŁĘDY
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.
ZOBACZ TAKŻE
file(1) - polecenie, która czyta ten plik.
INFORMACJE O TŁUMACZENIU
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:
man --locale=C 5 magic
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 MAGIC(5)