Skip to main content

Visa en fils utskrivbara tecken med strängar

“180” Movie (April 2025)

“180” Movie (April 2025)
Anonim

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

Linux-kommandot "strängar" gör det möjligt att se de mänskliga läsbara tecknen i en fil.

Huvudsyftet med att använda kommandot "strängar" är att utreda vilken typ av fil det är 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 märkligt 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 demonstrera kraften i strängkommandot är att skapa ett dokument med LibreOffice Writer.

Öppna bara LibreOffice Writer och skriv in text och spara sedan i standard ODT-format.

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

katt yourfilename.odt | Mer

(Ersätt yourfilename.odt med namnet på filen du skapade)

Det du ser är en hel vägg av oläslig text.

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

Kommandot strängar kan användas för att bara visa de delar som är läsbara.

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

strängar yourfilename.odt | Mer

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

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

mimetypeapplication / vnd.oasis.opendocument.text

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

  1. Vi skapade filen
  2. Förlängningen är .ODT

Tänk dig att du inte skapade filen eller hittade filen på en återställd disk och filen inte hade en förlängning.

Windows-återställning skulle ofta återställa filer med namn som 0001, 0002, 0003 etc. Att filerna återhämtades är bra men försökte ta reda på vilka typerna av dessa filer var en mardröm.

Genom att använda strängar har du en stridschans att utföra filtypen. Att veta att en fil är en opendocument.text-fil betyder att du kan spara den med ODT-förlängningen och öppna den i LibreOffice-skrivare.

Om du inte vet var en ODT-fil i grund och botten en komprimerad fil. Om du byter namn på yourfilename.odt till yourfilename.zip kan du öppna den i ett arkiveringsverktyg och till och med pakka ut filen.

Alternativa beteenden

Som standard returnerar kommandot strängar alla strängar i en fil men du kan byta beteende så att den returnerar strängar från initialiserade, laddade datasektioner i en fil.

Vad betyder detta exakt? Ingen verkar veta.

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

Om du kör kommandot strängar med standardbeteendet får du inte den produktionen du hoppades på och försök sedan köra en av följande kommandon för att se om det gör skillnad:

strängar -d ditt filnamnsträngar - data ditt filnamn

Den manuella sidan anger att ovanstående kommando kan bidra 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 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ängar-ett filnamn

Formatera utmatning

Du kan få texten i utmatningen för att visa namnet på filen bredvid varje textrad.

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

strängar -f ditt filnamnsträngar - skriv ut filnamn ditt filnamn

Utsignalen kommer nu att se ut så här:

yourfilename: en bit textyourfilename: en annan bit text

Som en del av produktionen kan du också visa förskjutningen av var den texten visas i en fil. För att göra så kör följande kommando:

strängar - på ditt filnamn

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

16573 din

17024 text

Förskjutningen är faktiskt oktalförskjutningen, men beroende på hur strängar har sammanställts för ditt system kan det också vara hex eller decimalavräkning.

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

strängar -t d ditt filnamnsträngar -t o ditt filnamnsträngar -th yourfilename

Minus t betyder att offsetet återges och tecknet som följer bestämmer förskjutningstypen. (dvs d = decimalt, o = oktalt, h = hex).

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

strängar -s "|" yourfilename

Justera stränggränsen

Kommandot strängar som standard letar efter en sträng med 4 skrivbara tecken i rad. Du kan justera standard så att den bara returnerar en sträng med 8 skrivbara tecken eller 12 tecken som kan skrivas ut.

Genom att justera denna gräns kan du skräddarsy utmatningen 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 utesluta användbar text, men genom att göra den för kort kan du sluta med mycket mer skräp returnerad.

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

strängar -n 8 ditt filnamn

I ovanstående exempel har jag ändrat gränsen till 8.Du kan byta ut 8 med valfritt antal.

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

strängar --bytes = 8 ditt filnamn

Inkludera Whitespace

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

Nya linjekaraktärer och vagnreturer anses inte som utskrivbara tecken som standard.

För att få strängar att känna igen nya radtecken och vagnens retur som en utskrivbar tecken, kör strängar på följande sätt:

strängar -w ditt filnamn

Ändra kodningen

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

  • s = 7 bit byte (används för ASCII, ISO 8859)
  • S = 8 bit byte
  • b = 16 bit bigendian
  • l = 16 bit littleendian

Standardvärdet är 7 bit byte.

Så här byter du kodningsrutan följande kommando:

strängar-s s filnamnsträngar --encoding = s yourfilename

I ovanstående kommando har jag angett standard "s" vilket betyder 7 bit byte. Byt bara "s" med den kodande bokstaven du väljer.

Ändra namn på binärfil Beskrivning

Du kan ändra beteendet hos strängar så att det använder ett annat binärt filbeskrivningsbibliotek annat ä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 kommandot följande strängar:

strängar -T bfdname

Läseralternativ från en fil

Om du kommer att 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 följande kommando:

nano stringsopts

I filen ange följande text:

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

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

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

strängar @ stringsopts ditt filnamn

Alternativen kommer att läsas från filen stringsopts och du bör se filnamnet före varje sträng, offset och "|" som en 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.

strängar - hjälp

Alternativt kan du också läsa den manuella sidan:

mansträngar

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

För att hitta den version av strängar som du kör kör en av följande kommandon:

strängar -vsträngar -Vsträngar - version