Pokusili jste se někdy otevřít soubor v editoru, jen aby zjistili, že obsahuje nečitelný binární obsah?
Příkaz "řetězce" Linuxu umožňuje zobrazit znaky, které lze číst v každém souboru.
Hlavním účelem použití příkazu "řetězce" je zjistit, jaký typ souboru se díváte, ale můžete jej také použít k extrahování textu. Například pokud máte soubor z vlastního programu, který ukládá soubory v podivném binárním formátu, můžete použít "řetězce" k extrahování textu, který jste vložili do souboru.
Příklad použití příkazu řetězců
Skvělý způsob, jak demonstrovat sílu příkazu řetězců, je vytvořit dokument pomocí programu LibreOffice Writer.
Jednoduše otevřete LibreOffice Writer a vložte nějaký text a uložte jej ve standardním formátu ODT.
Nyní otevřete okno terminálu (stiskněte současně klávesy CTRL, ALT a T) a poté pomocí příkazu cat zobrazte soubor následujícím způsobem:
cat yourfilename.odt | více
(Nahraďte název_souboru.odt názvem souboru, který jste vytvořili)
Co uvidíte, je celá stěna nečitelného textu.
Stisknutím mezerníku procházejte soubor. Sporadicky v celém souboru uvidíte část textu, který jste zadali.
Příkaz řetězce lze použít k zobrazení pouze částí, které jsou čitelné pro člověka.
Ve své nejjednodušší formě můžete spustit následující příkaz:
řetězce yourfilename.odt | více
Stejně jako dříve se objeví stěna textu, ale pouze text, který si můžete přečíst jako člověka. Pokud máte štěstí, budete moci vidět váš text.
To, co budete mít možnost vidět, je klíčové, nicméně je na prvním řádku:
mimetypeapplication / vnd.oasis.opendocument.text
Víme, že typ souboru je soubor ODT LibreOffice Writer ze 2 důvodů:
- Vytvořili jsme soubor
- Rozšíření je .ODT
Představte si, že jste soubor nevytvořili, nebo jste nalezli soubor na obnoveném disku a soubor neměl příponu.
Obnova systému Windows by často obnovovala soubory s názvy jako 0001, 0002, 0003 atd. Skutečnost, že byly soubory obnoveny, je skvělé, ale snaží se zjistit, jaké typy těchto souborů byly noční můry.
Použitím řetězců máte možnost bojovat s vyřešením typu souboru. Vědomí, že soubor je soubor opendocument.text znamená, že jej můžete uložit s příponou ODT a otevřít ji v libreOffice spisovateli.
Pokud jste nevěděli, že soubor ODT je v podstatě komprimovaný soubor. Pokud přejmenujete název_souboru.odt na název_souboru.zip, můžete ho otevřít v archivačním nástroji a dokonce i rozbalit soubor.
Alternativní chování
Ve výchozím nastavení příkaz řetězce vrací všechny řetězce v souboru, ale můžete změnit chování tak, aby vrátily řetězce z inicializovaných načtených datových úseků v souboru.
Co to přesně znamená? Zdá se, že to nikdo nezná.
Má smysl předpokládat, že používáte řetězce, abyste se pokusili zjistit typ souboru nebo hledat konkrétní text v souboru.
Pokud při spouštění příkazu řetězců pomocí výchozího chování nedostáváte výstup, o který jste doufali, zkuste spustit jeden z následujících příkazů, abyste zjistili, zda je rozdíl:
Manuální stránka uvádí, že výše uvedený příkaz může pomoci snížit množství odpadků vrácených z řetězců. Příkaz "řetězce" lze nastavit tak, aby fungoval v opačném směru, takže přepínač mínus d je výchozí chování. Pokud tomu tak je ve vašem systému, můžete vrátit všechna data pomocí následujícího příkazu: Text v rámci výstupu můžete zobrazit, aby se zobrazil název souboru vedle každého řádku textu. Chcete-li to provést, spusťte jeden z následujících příkazů: Výstup bude nyní vypadat takto: Jako součást výstupu můžete také zobrazit posun místa, kde se daný text zobrazí v souboru. Postupujte takto: Výstup bude vypadat takto: Posun je vlastně osmičkový posun, ačkoli v závislosti na tom, jak byly pro váš systém sestaveny řetězce, mohlo by to být také hexadecimální nebo dekadentní offset. Přesnější způsob získání posunu, který chcete, je použít následující příkazy: Mínus t znamená vrátit posun a znak, který následuje, určuje typ ofsetu. (tj. d = desetinná, o = osmičková, h = hex). Ve výchozím nastavení příkazy řetězců vytiskne každý nový řetězec na nové řádce, ale můžete nastavit oddělovač podle vašeho výběru. Například použít jako symbol odbočky ("|") jako oddělovač spustit následující příkaz: Příkaz řetězec ve výchozím nastavení vyhledává řetězec čtyřtisknutelných znaků v řadě. Výchozí nastavení můžete upravit tak, že vrátí pouze řetězec s 8 tiskovými znaky nebo 12 tisknutelnými znaky. Upravením tohoto limitu můžete přizpůsobit výstup, abyste dosáhli co nejlepšího výsledku. Při hledání řetězce, která je příliš dlouhá, riskujete vynechání užitečného textu, ale tím, že je příliš krátká, můžete skončit s mnohem více nevyžádaným vrácením. Chcete-li nastavit omezení řetězce, spusťte následující příkaz: Ve výše uvedeném příkladu jsem limit změnil na 8.8 můžete nahradit číslem, které si zvolíte. Můžete také použít následující příkaz, abyste provedli totéž: Ve výchozím nastavení příkaz řetězce obsahuje znaky jako je tabulka nebo mezera jako znak, který lze vytisknout. Proto pokud máte řetězec, který přečte jako "kočka seděla na podložce", pak příkaz strun vrátil celý text. Nové znaky řádků a výnosy z vozu nejsou ve výchozím nastavení považovány za znaky, které lze tisknout. Chcete-li, aby řetězce rozpoznaly nové řádkové znaky a vozík se vrací jako znak pro tisk, spusťte řetězce následujícím způsobem: Pro použití řetězců je k dispozici 5 možností kódování: Výchozí hodnota je 7 bitový byte. Chcete-li změnit kódování, spusťte následující příkaz: Ve výše uvedeném příkazu jsem zadal výchozí "s", což znamená 7 bitový byte. Jednoduše nahraďte písmeno "s" kódovým písmenem podle vašeho výběru. Chování řetězců můžete měnit tak, že používá jinou knihovnu deskriptorů binárních souborů než ta, která je k dispozici pro váš systém. Tento přepínač je určen odborníkům. Pokud máte k dispozici jinou knihovnu, můžete tak provést spuštěním následujícího řetězce: Pokud budete chtít používat stejné možnosti pokaždé, pak nechcete, abyste museli zadávat všechny přepínače při každém spuštění příkazu, protože to trvá déle. Co můžete udělat, je vytvořit textový soubor pomocí nano a určit možnosti v tomto souboru. Chcete-li to vyzkoušet v rámci terminálu, spusťte následující příkaz: V souboru zadejte následující text: Soubor uložte stisknutím kláves CTRL a O a ukončete stisknutím kláves CTRL a X. Chcete-li spustit příkazy řetězce s těmito možnostmi, spusťte následující příkaz: Možnosti budou přečteny ze souboru stringsopts a před každým řetězcem, posunem a "|" jako oddělovač. Chcete-li se dozvědět více o řetězcích, můžete spustit následující příkaz a získat pomoc. Případně si můžete také přečíst manuálovou stránku: Chcete-li najít verzi spuštěných řetězců, spusťte jeden z následujících příkazů:řetězce -d váš název_souboruřetězce - data vašeho souboruřetězce - vaše jméno souboru Formátování výstupu
řetězce -f váš název_souboruřetězce --print-file-name váš název_souboruyourfilename: textyourfilename: jiný textřetězce - jméno vašeho souboru16573 vaše17024 textřetězce -t d yourfilenameřetězce -t vaše jméno souboruřetězce -t h yourfilenameřetězce -s "|" " yourfilename Upravte omezení řetězce
řetězce -n 8 vaše jméno_souboruřetězce - bytes = 8 váš název_souboru Zahrnout bílé světlo
strings -w yourfilename Změna kódování
řetězce - s vaším jménemřetězce --encoding = s vaše jméno_souboru Změna názvu popisu binárního souboru
řetězce -T bfdname Možnosti čtení ze souboru
nano stringsopts-f -o -n 3 -s "|" "strings @ struny vypisuje jméno vašeho souboru Získání nápovědy
řetězce --helpmužské řetězce Zjistěte, kterou verzi řetězců používáte
řetězce -vřetězce -Vřetězce - verze




