Úvod
Linux file
pomáhá určit typ souboru a jeho data. Příkaz nebere v úvahu příponu souboru a místo toho spustí sérii testů, aby zjistil typ dat souboru.
V tomto tutoriálu vám ukážeme, jak file
příkaz funguje a jak jej používat.
Předpoklady
- Systém se systémem Linux.
- Přístup do okna terminálu.
Syntaxe příkazu souboru
file
používá následující základní syntaxi:
file [option] [file name]
Ve výše uvedené syntaxi file name
představuje název souboru, který chcete testovat. file
příkaz provede tři sady testů, které se snaží určit typ souboru, v tomto pořadí:
- Testy systému souborů proveďte systémové volání stat(2) a zkontrolujte výsledek proti systémovému hlavičkovému souboru. Tímto způsobem
file
určuje, zda je soubor běžného typu pro váš systém (jako je textový soubor, obrázek, adresář atd.). - Magické testy pomocí krátkého řetězce čísel uložených na začátku souboru ("magické číslo") otestujte, zda je soubor binární spustitelný soubor, a pokud ano, určete jeho typ. Informace potřebné k provedení těchto testů jsou uloženy v /etc/magic nebo /usr/share/misc/magic z kompilovaného magického souboru.
- Jazykové testy pomocí speciální značky určete, ve kterém programovacím jazyce je binární spustitelný soubor zapsán.
Výstup příkazu poskytuje krátký popis souboru a datového typu. Například pomocí file
příkaz k testování textového souboru:
file example.txt
Možnosti příkazu souboru
file
používá následující možnosti:
Možnost | Popis |
---|---|
--apple | Změní výstup příkazu na ten, který používají starší verze systému MacOS. |
-b, --brief | Změní výstup příkazu na stručný režim. |
-C, --compile | Vytvoří výstupní soubor, který obsahuje předem analyzovanou verzi magického souboru nebo adresáře. |
-c, --checking-printout | Zkontroluje výtisk analyzovanou verzi magického souboru. |
-d | Vytiskne informace o interním ladění ve standardním chybovém formátu. |
-E | Při chybě systému souborů se zobrazí chybová zpráva a skončí se. |
-e, --exclude | Vyloučí test ze seznamu testů provedených na souboru. |
--exclude-quiet | Nezahrnuje testy, které file příkaz neví o. |
--extension | Vytiskne seznam platných přípon pro daný typ souboru. |
-F, --separator | Použije zadaný řetězec jako oddělovač mezi názvem souboru a typem souboru. |
-f, --files-from | Použije poskytnutý textový soubor jako seznam souborů k testování. Seznam musí obsahovat pouze jeden název souboru na řádek. |
-h, --no-deference | Zakáže následující symbolické odkazy. |
-i, --mime | Změní výstup příkazu na řetězec typu MIME. |
--mime-type, --mime-encoding | Změní výstup příkazu na řetězec typu MIME a zobrazí pouze určený prvek (typ nebo kódování). |
-k, --keep-going | Udržuje test v chodu i po první shodě výsledků. |
-l, --list | Zobrazuje seznam odpovídajících vzorů v sestupném pořadí podle síly. |
-L, --deference | Umožňuje následující symbolické odkazy. |
-m, --magic-file | Používá alternativní magický soubor poskytnutý uživatelem. |
-N, --no-pad | Nevyplňuje názvy souborů, aby byly zarovnány s výstupem. |
-n, --no-buffer | Po kontrole každého souboru vyprázdní výstup. |
-p, --preserve-date | Pokusí se zachovat poslední čas přístupu k souboru, aby vypadal jako file příkaz to netestoval. |
-P, --parameter | Nastavuje různé parametry, jako je maximální počet bajtů nebo rekurze, počet a limit délky. |
-r, --raw | Zakáže překlad netisknutelných znaků. |
-s, --special-files | Umožňuje čtení speciálních souborů. |
-S, --no-sandbox | Zakáže sandboxing na systémech, které jej podporují. |
-v, --version | Zobrazuje verzi file příkaz. |
-z, --uncompress | Kontroluje komprimované soubory. |
-Z, --uncompress-noreport | Kontroluje komprimované soubory a zobrazuje pouze typ souboru bez komprese. |
-0, --print0 | Zobrazí prázdný znak za koncem názvu souboru. |
--help | Zobrazí zprávu nápovědy. |
Příklady příkazů souboru
Níže jsou uvedeny příklady běžných případů použití file
příkaz.
Testovat více souborů
Chcete-li testovat více souborů současně, připojte názvy souborů na konec file
příkaz:
file [file name 1] [file name 2] … [file name n]
Například testování adresáře, textového souboru, obrázku a webové stránky:
file Example example.txt sample.png index.html
Otestovat všechny soubory v adresáři
Přidejte zástupný znak (*
) do file
příkaz k otestování všech souborů a adresářů v aktuálním pracovním adresáři:
file *
Přidejte cestu k adresáři k zástupnému znaku, abyste otestovali obsah tohoto adresáře:
file [path to directory]/*
Chcete-li například otestovat obsah Příkladu adresář, použijte:
file Example/*
Testovat soubory v rozsahu
file
umožňuje otestovat podmnožinu souborů v adresáři pomocí rozsahů ve stylu Regex. Vyberte rozsah umístěním hodnot do závorek. Například testování souborů a adresářů s názvy v rozsahu a-l:
file [a-l]*
Protože rozsahy ve stylu Regex rozlišují velká a malá písmena, výstup ve výše uvedeném příkladu zobrazuje pouze typy souborů pro soubory začínající malými písmeny a-l. Přidání dalšího rozsahu vám umožní zahrnout také velká písmena:
file [a-l]* [A-L]*
Testovat soubory ze seznamu
file
umožňuje použít textový soubor jako seznam souborů k testování. Textový soubor musí obsahovat pouze jeden název souboru na řádek.
Použijte -f
a přidejte cestu k souboru seznamu do file
příkaz:
file -f list.txt
Testovat speciální soubory
file
příkaz není vždy schopen číst speciální soubory, jako jsou systémové soubory:
file /dev/sda5
Ve výše uvedeném příkladu výstup příkazu souboru ukazuje, že /dev/sda5 je speciální blokový soubor, ale nenabízí další podrobnosti. Pomocí -s
možnost vám umožní plně otestovat speciální soubory:
sudo file -s /dev/sda5
Testovat komprimované soubory
Použijte -z
možnost plně otestovat komprimované soubory a pokusit se zjistit jejich obsah:
file -z install.tar.gz
Test analyzované verze souboru
Pomocí -c
zobrazí kontrolní výpis pro analyzovanou verzi souboru:
file -c example.txt
Tato možnost se obvykle používá s -m
možnost ladění a instalace nového magického souboru.
Zobrazit stručný výstup
Pomocí -b
zobrazí stručnou verzi výstupu. Tato verze výstupu zobrazuje pouze typy souborů a vynechává názvy souborů.
file -b Example example.txt sample.png index.html
Přidat oddělovače do výstupu
Pomocí -F
umožňuje definovat znak, který funguje jako oddělovač mezi sekcemi názvu souboru a typu souboru výstupu. Přidejte například znaménko plus (+
) jako oddělovač s:
file -F + Example example.txt sample.png index.html
Odebrat odsazení názvu souboru z výstupu
Použijte -N
možnost odstranit výplň mezi sekcemi názvu souboru a typu souboru ve výstupu:
file -N Example example.txt sample.png index.html
Výsledný výstup již není svisle zarovnán: