Har du noen gang prøvd å åpne en fil i en redaktør bare for å finne ut at den inneholder uleselig binært innhold?
Linux "strenger" -kommandoen gjør det mulig å se menneskelesbare tegn i hvilken som helst fil.
Hovedformålet med å bruke kommandoen "strenger" er å finne ut hvilken filtype du ser på, men du kan også bruke den til å trekke ut tekst. For eksempel, hvis du har en fil fra et proprietært program som lagrer filer i et merkelig binært format, kan du bruke "strenger" for å trekke ut teksten du legger inn i filen.
Eksempel på bruk av strengekommandoen
En flott måte å demonstrere kraften til strengekommandoen er å lage et dokument ved hjelp av LibreOffice Writer.
Bare åpne LibreOffice Writer, skriv inn tekst og lagre den i standard ODT-format.
Åpne nå et terminalvindu (trykk CTRL, ALT og T på samme tid) og bruk deretter cat-kommandoen til å vise filen som følger:
katten din
(Bytt ut dittfilnavn.odt med navnet på filen du opprettet)
Det du vil se er en hel vegg med uleselig tekst.
Trykk på mellomromstasten for å bla gjennom filen. Sporadisk gjennom hele filen vil du se noe av teksten du har skrevet inn.
Strengkommandoen kan brukes til å vise bare delene som er lesbare for mennesker.
I sin enkleste form kan du kjøre følgende kommando:
strenger yourfi
Som før vises en tekstvegg, men bare tekst som du kan lese som menneske. Hvis du er heldig, vil du kunne se teksten din.
Det du vil kunne se som er nøkkelen, er imidlertid på første linje:
mimetypeapplication / vnd.oasis.
Vi vet at filtypen er en LibreOffice Writer ODT-fil av to grunner:
- Vi opprettet filen
- Utvidelsen er .ODT
Tenk deg at du ikke opprettet filen, eller at du fant filen på en gjenopprettet disk, og filen hadde ikke utvidelse.
Windows-gjenoppretting vil ofte gjenopprette filer med navn som 0001, 0002, 0003, etc. Det faktum at filene ble gjenopprettet er flott, men det var et mareritt å prøve å finne ut hva slags filene var.
Ved å bruke strenger har du en kampsjanse for å finne ut filtypen. Å vite at en fil er en opendocument.text-fil betyr at du kan lagre den med ODT-utvidelsen og åpne den i LibreOffice writer.
I tilfelle du ikke var klar over, er en ODT-fil i utgangspunktet en komprimert fil. Hvis du endrer navn på filnavn.odt til filnavn.zip, kan du åpne det i et arkiveringsverktøy og til og med pakke ut filen.
Alternative atferd
Som standard returnerer strenger-kommandoen alle strenger i en fil, men du kan bytte oppførsel slik at den returnerer strenger fra initialiserte, lastede dataseksjoner i en fil.
Hva betyr dette nøyaktig? Ingen ser ut til å vite det.
Det er fornuftig å anta at du bruker strenger for å prøve å finne ut filtypen eller å lete etter spesifikk tekst i en fil.
Hvis du ikke får utdataene du håpet på når du kjører strengekommandoen med standardadferd, kan du prøve å kjøre en av følgende kommandoer for å se om det gjør en forskjell:
string
or
strenger --data ditt filnavn
Manuell side sier at kommandoen ovenfor kan bidra til å redusere mengden søppel som returneres fra strengene.
Kommandoen "strenger" kan settes opp til å fungere i revers, slik at minus d-bryteren er standard oppførsel. Hvis dette er tilfelle på systemet ditt, kan du returnere alle dataene ved å bruke følgende kommando:
string
Formatering av utdata
Du kan få teksten i utdataene til å vise navnet på filen sammen med hver tekstlinje.
For å gjøre dette, kjør en av følgende kommandoer:
string
or
strings --print-file-name yourfilename
Utgangen vil nå se ut slik:
ditt filnavn: et stykke tekst
or
ditt filnavn: et annet stykke tekst
Som en del av utgangen kan du også vise forskyvningen av hvor teksten vises i en fil. For å gjøre det, kjør følgende kommando:
string
Utgangen vil se ut slik:
Offset er faktisk den oktale forskyvningen, men avhengig av hvordan strenger er blitt samlet for systemet ditt, kan det også være hex eller desimalforskyvning.
En mer nøyaktig måte å få forskyvningen du ønsker er å bruke følgende kommandoer:
strenger -td ditt filnavn
strenger -til ditt filnavn
strenger -th ditt filnavn
Minus t betyr å returnere forskyvningen og tegnet som følger bestemmer forskyvningstypen. (dvs. d = desimal, o = oktal, h = heks).
Som standard skriver strenger-kommandoen ut hver ny streng på en ny linje, men du kan angi skilletegnet du ønsker. For eksempel å bruke et rørsymbol ("|") som skilletegn, kjør følgende kommando:
strenger -s "| &
Juster strenggrensen
Strengekommandoen ser som standard etter en streng på 4 utskrivbare tegn på rad. Du kan justere standard slik at den bare returnerer en streng med 8 utskrivbare tegn eller 12 utskrivbare tegn.
Ved å justere denne grensen kan du skreddersy utgangen for å få best mulig resultat. Ved å lete etter en streng som er for lang, risikerer du å utelate nyttig tekst, men ved å gjøre den for kort, kan det hende du får langt mer søppel tilbake.
For å justere strenggrensen, kjør følgende kommando:
strenger
I eksemplet ovenfor har jeg endret grensen til 8. Du kan erstatte 8 med nummeret du velger.
Du kan også bruke følgende kommando for å gjøre det samme:
strenger - bytes & #
Inkluder hvitt mellomrom
Som standard inkluderer strenger-kommandoen mellomrom, for eksempel en fane eller mellomrom som et utskrivbart tegn. Derfor, hvis du har en streng som lyder som "katten satt på matten", vil strengekommandoen returnere hele teksten.
Nye linjetegn og vognretur anses ikke å være utskrivbare tegn som standard.
For å få strenger til å gjenkjenne nye strektegn og vognretur som en utskrivbar karakter kjør strenger på følgende måte:
string
Endre kodingen
Det er fem kodingsalternativer tilgjengelig for bruk med strenger:
- s = 7-biters byte (brukes til ASCII, ISO 8859)
- S = 8-biters byte
- b = 16 bit bigendian
- l = 16 bit littleendian
Standard er en 7-biters byte.
For å endre kodingen, kjør følgende kommando:
strenger -es ditt filnavn
strenger - koding = s filnavn
I kommandoen ovenfor har jeg spesifisert standard "s" som betyr 7-biters byte. Bare bytt ut "s" med kodingsbokstaven du ønsker.
Endre navnet på den binære filbeskrivelsen
Du kan endre oppførselen til strengene slik at den bruker et annet binært filbeskrivelsesbibliotek enn det som er gitt for systemet ditt.
Denne bryteren er en for ekspertene. Hvis du har et annet bibliotek å bruke, kan du gjøre det ved å kjøre følgende strengkommando:
st
Lesealternativer fra en fil
Hvis du skal bruke de samme alternativene hver gang, vil du ikke måtte spesifisere alle bryterne hver gang du kjører kommandoen fordi det tar tid.
Det du kan gjøre er å lage en tekstfil ved hjelp av nano og spesifisere alternativene i den filen.
For å prøve dette i en terminal, kjør følgende kommando:
Skriv inn følgende tekst i filen:
-f -o -n
Lagre filen ved å trykke CTRL og O, og avslutt ved å trykke CTRL og X.
For å kjøre strengekommandoer med disse alternativene, kjør følgende kommando:
strenger @ strenger
Alternativene vil bli lest fra filstrengene, og du bør se filnavnet før hver streng, forskyvningen og "|" som skilletegn.
få hjelp
Hvis du vil lese mer om strenger, kan du kjøre følgende kommando for å få hjelp.
Alternativt kan du også lese manualsiden:
Finn ut hvilken versjon av strenger du kjører
For å finne versjonen av strengene du kjører, kjør en av følgende kommandoer:
strenger -v
strenger -V
strenger - versjon