Visa en fils utskrivbara tecken med strängar

Har du någonsin försökt öppna en fil i en redigerare för att ta reda på att den innehåller oläsligt binärt innehåll?

Linux-strängkommandot gör det möjligt att se de mänskliga läsbara tecknen i valfri fil.

Huvudsyftet med att använda kommandot "strängar" är att ta reda på vilken typ av fil du tittar på men du kan också använda den för att extrahera text. Om du till exempel har en fil från ett eget program som sparar filer i ett konstigt binärt format kan du använda "strängar" för att extrahera texten du lägger in i filen.


Exempel på användning av strängkommandot

Ett bra sätt att visa styrkan i strängkommandot är att skapa ett dokument med LibreOffice Writer.

Öppna bara LibreOffice Writer och ange lite text och spara den sedan i standard ODT-format.

Öppna nu ett terminalfönster (tryck på CTRL, ALT och T samtidigt) och använd sedan cat-kommandot för att visa filen enligt följande:

katt yourfi

(Byt ut dittfilnamn.odt med namnet på filen du skapade)

Vad du kommer att se är en hel vägg med oläslig text.

Tryck på mellanslagstangenten för att bläddra igenom filen. Sporadiskt genom hela filen ser du en del av texten du har angett.

Strängkommandot kan användas för att bara visa de delar som är läsbara för människor.

I sin enklaste form kan du köra följande kommando:

strängar yourfi

Som tidigare visas en textvägg, men bara text som du kan läsa som människa. Om du har tur kan du se din text.

Vad du kommer att kunna se är nyckeln på första raden:

mimetypeapplication / vnd.oasis.

Vi vet att filtypen är en LibreOffice Writer ODT-fil av två skäl:

  1. Vi skapade filen
  2. Tillägget är .ODT

Tänk dig att du inte skapade filen eller att du hittade filen på en återställd disk och att filen inte hade något tillägg.

Windows-återställning skulle ofta återställa filer med namn som 0001, 0002, 0003, etc. Det faktum att filerna återhämtades är jättebra men att försöka ta reda på vilken typ av dessa filer var var en mardröm.

Genom att använda strängar har du en kämpande chans att räkna ut filtypen. Att veta att en fil är en opendocument.text-fil betyder att du kan spara den med tillägget ODT och öppna den i LibreOffice-författaren.

Om du inte kände till är en ODT-fil i grunden en komprimerad fil. Om du byter namn på ditt filnamn.odt till ditt filnamn.zip kan du öppna det i ett arkiveringsverktyg och till och med packa upp filen.

Alternativa beteenden

Som standard returnerar strängkommandot alla strängar i en fil, men du kan ändra beteendet så att det returnerar strängar från initialiserade, laddade datasektioner i en fil.

Vad betyder detta exakt? Ingen verkar veta det.

Det är vettigt att anta att du använder strängar för att försöka ta reda på filtypen eller leta efter specifik text i en fil.

Om du inte får utdata du hoppats på när du kör strängkommandot med standardbeteendet, försök att köra ett av följande kommandon för att se om det gör skillnad:

sträng

or

strängar --data ditt filnamn

Manuell sida anger att ovanstående kommando kan hjälpa till att minska mängden skräp som returneras från strängar.

Kommandot "strängar" kan ställas in för att fungera i omvänd ordning så att minus d-omkopplaren är standardbeteendet. Om så är fallet på ditt system kan du returnera all data med hjälp av följande kommando:

sträng


Formatera utdata

Du kan få texten i utgången för att visa namnet på filen tillsammans med varje textrad.

För att göra detta kör du ett av följande kommandon:

sträng

or

strängar - tryck-filnamn ditt filnamn

Produktionen ser nu ut så här:

ditt filnamn: en bit text

or

ditt filnamn: en annan text

Som en del av utgången kan du också visa förskjutningen där texten visas i en fil. För att göra det kör du följande kommando:

sträng

Utgången kommer att se ut så här:

Förskjutningen är faktiskt den oktala förskjutningen, men beroende på hur strängar har sammanställts för ditt system kan det också vara hex eller decimalförskjutning.

Ett mer exakt sätt att få den offset du vill ha är att använda följande kommandon:

strings -td ditt filnamn
strängar - till ditt filnamn
strängar - ditt filnamn

Minus t betyder att offset ska returneras och tecknet som följer bestämmer offset-typen. (dvs. d = decimal, o = oktal, h = hex).

Som standard skriver strängkommandot ut varje ny sträng på en ny rad men du kan ställa in avgränsaren efter eget val. Till exempel för att använda en rörsymbol ("|") som avgränsare kör följande kommando:

strängar -s "| &


Justera stränggränsen

Strängkommandot letar som standard efter en sträng med fyra utskrivbara tecken i rad. Du kan justera standardvärdet så att det bara returnerar en sträng med 4 utskrivbara tecken eller 8 utskrivbara tecken.

Genom att justera denna gräns kan du skräddarsy produktionen för att få bästa möjliga resultat. Genom att leta efter en sträng som är för lång riskerar du att utelämna användbar text men genom att göra den för kort kan du få mycket mer skräp tillbaka.

För att justera stränggränsen kör du följande kommando:

strängar

I exemplet ovan har jag ändrat gränsen till 8. Du kan ersätta 8 med det nummer du väljer.

Du kan också använda följande kommando för att göra samma sak:

strängar - bytes & #

Inkludera mellanslag

Som standard innehåller strängkommandot ett mellanslag, t.ex. en flik eller ett mellanslag som ett utskrivbart tecken. Därför om du har en sträng som läser som "katten satt på mattan" skulle strängkommandot returnera hela texten.

Nya linjetecken och vagnretur anses inte vara utskrivbara tecken som standard.

För att få strängar att känna igen nya radtecken och vagn returneras som en utskrivbar karaktärsträng på följande sätt:

sträng

Ändra kodningen

Det finns 5 kodningsalternativ tillgängliga för användning med strängar:

  • s = 7-bitars byte (används för ASCII, ISO 8859)
  • S = 8-bitars byte
  • b = 16 bitar bigendian
  • l = 16 bitars liten endian

Standard är en 7-bitars byte.

För att ändra kodningen kör du följande kommando:

strängar - är ditt filnamn
strängar --kodning = s ditt filnamn

I ovanstående kommando har jag angett standard "s" vilket betyder 7-bitars byte. Byt helt enkelt "s" med den kodningsbokstav du väljer.

Ändra namnet på den binära filbeskrivningen

Du kan ändra beteendet för strängar så att den använder ett annat binärt filbeskrivningsbibliotek än det som tillhandahålls för ditt system.

Denna omkopplare är en för experterna. Om du har ett annat bibliotek att använda kan du göra det genom att köra följande strängkommando:

st

Läsalternativ från en fil

Om du ska använda samma alternativ varje gång vill du inte behöva ange alla omkopplare varje gång du kör kommandot eftersom det tar tid.

Vad du kan göra är att skapa en textfil med nano och ange alternativen i den filen.

För att prova detta inom en terminal kör du följande kommando:

Ange följande text i filen:

-f -o -n

Spara filen genom att trycka på CTRL och O och avsluta genom att trycka på CTRL och X.

För att köra strängkommandona med dessa alternativ kör du följande kommando:

strängar @ strängar

Alternativen kommer att läsas från filsträngarna och du bör se filnamnet före varje sträng, offset och "|" som separator.

Få hjälp

Om du vill läsa mer om strängar kan du köra följande kommando för att få hjälp.

Alternativt kan du också läsa manualsidan:

Ta reda på vilken version av strängar du kör

För att hitta versionen av strängar du kör kör du något av följande kommandon:

strängar -v
strängar -V
strängar --version

Lämna en kommentar