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:
- Vi skapade filen
- 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:
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: 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: Utsignalen kommer nu att se ut så här: 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: Utgången kommer att se ut så här: 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: 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: 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: 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: 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: Det finns 5 kodningsalternativ tillgängliga för användning med strängar: Standardvärdet är 7 bit byte. Så här byter du kodningsrutan följande kommando: I ovanstående kommando har jag angett standard "s" vilket betyder 7 bit byte. Byt bara "s" med den kodande bokstaven du väljer. 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: 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: I filen ange följande text: 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: 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. 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 den manuella sidan: För att hitta den version av strängar som du kör kör en av följande kommandon:strängar -d ditt filnamn
strängar - data ditt filnamnsträngar-ett filnamn
Formatera utmatning
strängar -f ditt filnamn
strängar - skriv ut filnamn ditt filnamnyourfilename: en bit text
yourfilename: en annan bit textsträngar - på ditt filnamn
16573 din
17024 text
strängar -t d ditt filnamn
strängar -t o ditt filnamnsträngar -th yourfilenamesträngar -s "|" yourfilename
Justera stränggränsen
strängar -n 8 ditt filnamn
strängar --bytes = 8 ditt filnamn
Inkludera Whitespace
strängar -w ditt filnamn
Ändra kodningen
strängar-s s filnamn
strängar --encoding = s yourfilename Ändra namn på binärfil Beskrivning
strängar -T bfdname
Läseralternativ från en fil
nano stringsopts
-f -o -n 3 -s "|"
strängar @ stringsopts ditt filnamn
Få hjälp
strängar - hjälp
mansträngar
Ta reda på vilken version av strängar du kör
strängar -v
strängar -Vsträngar - version