plik (polecenie) - file (command)

plik
Deweloper(zy) AT&T Bell Laboratories
Pierwsze wydanie 1973 jako część Unix Research Version 4 ; 1986 reimplementacja open-source ( 1973 ) ( 1986 )
Magazyn github .com /plik /plik
Napisane w C
System operacyjny Unix , uniksopodobny , plan 9 , IBM i
Platforma Wieloplatformowy
Rodzaj Detektor typu pliku
Licencja licencja BSD , CDDL
Strona internetowa darwinsys .com /plik /

Komenda jest standardowym programem z Unix i uniksopodobnych systemów operacyjnych uznawania typ danych zawartych w pliku komputerowym . file

Historia

Oryginalna wersja filepochodzi z Unix Research Version 4 w 1973 roku. System V przyniósł poważną aktualizację z kilkoma ważnymi zmianami, w szczególności przeniesieniem informacji o typie pliku do zewnętrznego pliku tekstowego zamiast kompilowania go do samego pliku binarnego.

Większość głównych dystrybucji BSD i Linuksa korzysta z darmowej , otwartej reimplementacji, która została napisana od podstaw w latach 1986-87 przez Iana Darwina . Został on rozszerzony przez Geoffa Collyera w 1989 roku i od tego czasu miał wkład wielu innych, w tym Guya Harrisa, Chrisa Lowtha i Erica Fischera; od końca 1993 roku jego konserwację organizuje Christos Zoulas . System OpenBSD ma własną implementację podzbioru napisaną od zera, ale nadal używa kolekcji informacji o magicznym formacie pliku Darwin/Zoulas.

fileKomenda została również przeniesiona do IBM i systemu operacyjnego.

Specyfikacja

Specyfikacja Single Unix (SUS) określa, że ​​seria testów jest wykonywana na pliku określonym w wierszu poleceń:

  1. jeśli pliku nie można odczytać lub jego uniksowy typ pliku jest nieokreślony, fileprogram wskaże, że plik został przetworzony, ale jego typ był nieokreślony.
  2. filemusi być w stanie określić typy katalog , FIFO , gniazdo , blokowy plik specjalny i znakowy plik specjalny
  3. pliki o zerowej długości są identyfikowane jako takie
  4. brana jest pod uwagę początkowa część pliku, która ma fileużywać testów pozycyjnych
  5. cały plik jest brany pod uwagę i filema używać testów kontekstowych
  6. plik jest identyfikowany jako dataplik

fileTesty pozycyjne 's są zwykle implementowane przez dopasowanie różnych lokalizacji w pliku do tekstowej bazy danych liczb magicznych (zobacz sekcję Użycie). Różni się to od innych prostszych metod, takich jak rozszerzenia plików i schematy, takie jak MIME .

W większości implementacji filepolecenie używa bazy danych do sterowania sondowaniem bajtów wiodących. Że baza danych jest zaimplementowana w pliku o nazwie magic, której położenie jest zazwyczaj /etc/magic, /usr/share/file/magiclub podobnym miejscu.

Stosowanie

SUS nakazuje następujące opcje:

-M file, określ specjalnie sformatowany plik zawierający testy zależne od pozycji; domyślne testy pozycyjne i testy kontekstowe nie będą wykonywane.
-m file, jak dla -M, ale testy domyślne zostaną wykonane po testach zawartych w file.
-d, wykonaj domyślne testy pozycyjne i kontekstowe dla podanego pliku; jest to zachowanie domyślne, chyba że określono -Mlub -m.
-h, nie usuwaj odwołań do dowiązań symbolicznych, które wskazują na istniejący plik lub katalog.
-L, wyłuskaj dowiązanie symboliczne, które wskazuje na istniejący plik lub katalog.
-i, nie klasyfikuj pliku dalej niż identyfikowanie go jako: nieistniejący, blokowy plik specjalny, znakowy plik specjalny, katalog, FIFO , gniazdo, dowiązanie symboliczne lub zwykły plik. Systemy Linux i BSD zachowują się inaczej z tą opcją i zamiast tego wyświetlają internetowy typ mediów (" typ MIME ") identyfikujący rozpoznawany format pliku.

Inne uniksowe i uniksopodobne systemy operacyjne mogą dodawać dodatkowe opcje, takie jak -s„pliki specjalne”, -k„kontynuacja” lub -r„surowe” (przykłady poniżej).

Polecenie mówi tylko, jak plik wygląda , a nie co to jest (w przypadku, gdy plik patrzy na zawartość). Program można łatwo oszukać, umieszczając w pliku magiczną liczbę, której zawartość nie pasuje. W związku z tym polecenie nie nadaje się do użytku jako narzędzie bezpieczeństwa poza określonymi sytuacjami.

Przykłady

$ file file.c
file.c: C program text
$ file program
program: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked
    (uses shared libs), stripped
$ file /dev/hda1
/dev/hda1: block special (0/0)
$ file -s /dev/hda1
/dev/hda1: Linux/i386 ext2 filesystem

Zauważ, że -s jest niestandardową opcją dostępną tylko na niektórych platformach, która nakazuje fileczytać pliki urządzeń i próbować zidentyfikować ich zawartość, a nie tylko identyfikować je jako pliki urządzeń. Zwykle filenie próbuje czytać plików urządzeń, ponieważ czytanie takiego pliku może mieć niepożądane skutki uboczne.

$ file -k -r libmagic-dev_5.35-4_armhf.deb    # (on Linux)
libmagic-dev_5.35-4_armhf.deb: Debian binary package (format 2.0)
- current ar archive
- data

Dzięki niestandardowej opcji -kprogram nie zatrzymuje się po pierwszym znalezionym trafieniu, ale szuka innych pasujących wzorców. -rOpcja, która jest dostępna w niektórych wersjach, powoduje, że nie można drukować nową linię , która będzie wyświetlana w jej surowej postaci, a nie w jego reprezentacji ósemkowej charakter.

$ file compressed.gz
compressed.gz: gzip compressed data, deflated, original filename, `compressed', last
    modified: Thu Jan 26 14:08:23 2006, os: Unix
$ file -i compressed.gz    # (on Linux)
compressed.gz: application/x-gzip; charset=binary
$ file data.ppm
data.ppm: Netpbm PPM "rawbits" image data
$ file /bin/cat
/bin/cat: Mach-O universal binary with 2 architectures
/bin/cat (for architecture ppc7400):	Mach-O executable ppc
/bin/cat (for architecture i386):	Mach-O executable i386
$ file /usr/bin/vi
/usr/bin/vi: symbolic link to vim

Identyfikacja dowiązań symbolicznych nie jest dostępna na wszystkich platformach i zostanie wyłuskana, jeśli -Lzostanie przekazana lub POSIXLY_CORRECTustawiona.

Biblioteka Libmagic

Od wersji 4.00 wersji Iana Darwina/Christosa Zoulas file, funkcjonalność programu filejest włączona do libmagic biblioteki, która jest dostępna za pośrednictwem linkowania C (i kompatybilnego z C); filejest zaimplementowany przy użyciu tej biblioteki.

Bibliografia

Zewnętrzne linki

Strony podręcznika

Inne