Cum se afișează caracterele tipăribile ale unui fișier cu comanda Strings

Ați încercat vreodată să deschideți un fișier într-un editor doar pentru a afla că acesta conține conținut binar necitit?

Comanda "Comenzi" Linux permite vizualizarea caracterelor care pot fi citite de om în orice fișier.

Scopul principal al utilizării comenzii "șiruri" este de a determina ce tip de fișier este privit, dar îl puteți folosi și pentru extragerea textului. De exemplu, dacă aveți un fișier dintr-un program proprietar care salvează fișierele într-un format binar ciudat, puteți utiliza "șiruri" pentru a extrage textul pe care îl introduceți în fișier.

Exemplu de utilizare a comenzii de șir

O modalitate foarte bună de a demonstra puterea comenzii de șiruri este de a crea un document utilizând LibreOffice Writer.

Pur și simplu deschideți LibreOffice Writer și introduceți un text și salvați-l în format ODT standard .

Acum, deschideți o fereastră terminală (apăsați CTRL, ALT și T simultan) și apoi utilizați comanda cat pentru a afișa fișierul după cum urmează:

pisica ta Mai Mult

(Înlocuiți numele fișierului dvs. cu numele fișierului pe care l-ați creat)

Ce veți vedea este un zid întreg de text ilizibil.

Apăsați bara de spațiu pentru a derula fișierul. În mod sporadic în fișier veți vedea o parte din textul pe care l-ați introdus.

Comanda "Corzi" poate fi utilizată pentru a afișa doar părțile care pot fi citite de om.

În forma sa cea mai simplă, puteți executa următoarea comandă:

siruri de caractere Mai Mult

Ca și înainte, va apărea un zid de text, dar numai un text pe care îl puteți citi ca om. Dacă sunteți norocoși atunci veți putea vedea textul.

Ceea ce veți putea vedea că este esențial, totuși, se află pe prima linie:

mimetypeapplication / vnd.oasis.opendocument.text

Știm că tipul de fișier este un fișier ODT LibreOffice Writer pentru 2 motive:

  1. Am creat fișierul
  2. Extensia este .ODT

Imaginați-vă că nu ați creat fișierul sau că ați găsit fișierul pe un disc recuperat și că fișierul nu a avut o extensie.

Recuperarea Windows ar recupera adesea fișiere cu nume precum 0001, 0002, 0003 etc. Faptul că fișierele au fost recuperate este mare, dar încercarea de a determina ce tipuri de fișiere au fost un coșmar.

Folosind șiruri de caractere aveți o șansă de a lucra la tipul de fișier. Știind că un fișier este un fișier opendocument.text înseamnă că îl puteți salva cu extensia ODT și îl puteți deschide în scriitorul LibreOffice.

În cazul în care nu știați că un fișier ODT este în esență un fișier comprimat. Dacă vă redenumiți numele fișierului.odt la numele dvs. de fișier.zip îl puteți deschide într-un instrument de arhivare și chiar dezarhivați fișierul.

Comportamente alternative

În mod implicit, comanda de șiruri returnează toate șirurile dintr-un fișier, dar puteți comuta comportamentul astfel încât să returneze șiruri din secțiunile de date inițializate, încărcate într-un fișier.

Ce înseamnă exact asta? Nimeni nu pare să știe.

Este logic să presupuiți că utilizați șiruri de caractere pentru a încerca fie să aflați tipul de fișier, fie să căutați un text specific într-un fișier.

Dacă atunci când rulați comanda șirurilor utilizând comportamentul implicit nu obțineți ieșirea pe care ați sperat, atunci încercați să executați una din următoarele comenzi pentru a vedea dacă aceasta are o diferență:

șiruri de caractere -d numele fișierului

siruri de caractere - da numele fișierului

Pagina manuală afirmă că comanda de mai sus poate ajuta la reducerea cantității de gunoi returnate din șiruri de caractere.

Comanda "șiruri" poate fi configurată să funcționeze în sens invers, astfel încât comutatorul minus d să fie comportamentul implicit. Dacă acesta este cazul în sistemul dvs., puteți returna toate datele utilizând următoarea comandă:

siruri de caractere - numele tau

Formatare ieșire

Puteți obține textul în ieșire pentru a afișa numele fișierului alături de fiecare rând de text.

Pentru aceasta, executați una din următoarele comenzi:

siruri de caractere -f numele dvs. de fișier

șiruri - fișier-fișier-nume-numele fișierului

Rezultatul va arata acum cam asa:

numele fișierului: o bucată de text

numele fișierului dvs.: o altă piesă de text

Ca parte a ieșirii, puteți afișa și decalajul unde apare textul într-un fișier. Pentru aceasta, rulați următoarea comandă:

siruri de caractere - numele tau

Rezultatul va arata cam asa:

16573 dvs.

17024 text

Offsetul este de fapt offsetul octal, deși, în funcție de modul în care s-au compilat șiruri pentru sistemul dvs., ar putea fi cu ușurință hexazecimal sau decalajul zecimal.

O modalitate mai exactă de obținere a offsetului dorit este utilizarea următoarelor comenzi:

siruri de caractere - numele fișierului

șiruri de caractere - la numele tău

siruri de caractere

Minus t înseamnă returnarea offsetului, iar caracterul care urmează determină tipul de offset. (adică d = zecimal, o = octal, h = hex).

Implicit, comanda de șiruri imprimă fiecare șir nou pe o linie nouă, dar puteți seta delimitatorul la alegere. De exemplu, pentru a utiliza un simbol de țeavă ("|") ca delimitator rulați următoarea comandă:

șiruri de caractere "|" yourfilename

Ajustați limita de coarde

Comanda "Corzi" implicit caută un șir de 4 caractere imprimabile la rând. Puteți ajusta valoarea implicită astfel încât să returneze doar un șir cu 8 caractere imprimabile sau 12 caractere imprimabile.

Prin ajustarea acestei limite, puteți ajusta rezultatul pentru a obține cel mai bun rezultat posibil. Căutând un șir prea lung, riscați să omiteți textul util, dar făcându-l prea scurt, s-ar putea să ajungeți cu mult mai mult junk returnat.

Pentru a ajusta limita de șir rulați următoarea comandă:

șiruri de caractere -n 8 numele fișierului

În exemplul de mai sus am modificat limita la 8.

Puteți înlocui numărul 8 cu numărul ales.

De asemenea, puteți utiliza următoarea comandă pentru a face același lucru:

șiruri de caractere --bytes = 8 numele fișierului

Includeți spațiile libere

În mod implicit, comanda de șiruri include spații albe, cum ar fi o filă sau spațiu, ca personaj imprimabil. Prin urmare, dacă aveți un șir care citește ca "pisica așezată pe covor", atunci comanda de șiruri va returna întregul text.

Noile caractere de linie și caracterele returnate nu sunt considerate ca fiind caractere imprimabile în mod implicit.

Pentru a obține șiruri de caractere pentru recunoașterea caracterelor de linii noi și retururi ca un caractere imprimabile, rulați șiruri de caractere în modul următor:

siruri de caractere

Schimbarea codificării

Există 5 opțiuni de codare disponibile pentru utilizarea cu șiruri de caractere:

Valoarea prestabilită este de 7 biți octeți.

Pentru a schimba codarea rulați următoarea comandă:

șiruri de caractere

șiruri de caractere - encoding = s numele fișierului

În comanda de mai sus, am specificat implicit "s", ceea ce înseamnă 7 octeți de biți. Pur și simplu înlocuiți "s" cu litera de codare la alegere.

Modificați numele descrierii fișierului binar

Puteți modifica comportamentul șirurilor de caractere astfel încât să utilizeze o altă bibliotecă de descriptori de fișiere binare diferită de cea furnizată pentru sistemul dvs.

Acest comutator este unul pentru experți. Dacă aveți o altă bibliotecă pe care să o utilizați, puteți face acest lucru executând următoarea comandă de șiruri:

șiruri de caractere -T bfdname

Opțiunile de citire dintr-un fișier

Dacă veți folosi aceleași opțiuni de fiecare dată, atunci nu doriți să specificați toate comutatoarele de fiecare dată când executați comanda deoarece este nevoie de timp.

Ce puteți face este să creați un fișier text utilizând nano și să specificați opțiunile din acel fișier.

Pentru a încerca acest lucru într-un terminal executați următoarea comandă:

nano stringsopts

În fișier introduceți următorul text:

-f -o -n 3 -s "|" "

Salvați fișierul apăsând CTRL și O și ieșiți apăsând CTRL și X.

Pentru a rula comenzile de șiruri cu aceste opțiuni executați următoarea comandă:

șirurile stringsoptestează numele fișierului

Opțiunile vor fi citite din fișierele stringsopts și ar trebui să vedeți numele fișierului înainte de fiecare șir, offsetul și "|" ca separator.

Obținerea de ajutor

Dacă doriți să citiți mai multe despre șiruri de caractere, puteți rula următoarea comandă pentru a obține ajutor.

siruri de caractere --help

Alternativ, puteți citi și pagina manuală:

corzi de om

Aflați ce versiune de corzi sunteți în desfășurare

Pentru a găsi versiunea de șiruri pe care rulează rulați una din următoarele comenzi:

șiruri de caractere -v

siruri de caractere -V

șiruri - versiune