Har du noen gang prøvd å åpne en fil i en editor bare for å finne ut at den inneholder ulæselig binært innhold?
Linux-kommandoen "strenger" gjør det mulig å se de menneskelige lesbare tegnene i en hvilken som helst fil.
Hovedformålet med å bruke kommandoen "strenger" er å finne ut hvilken type fil det er 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.
Eksempelbruk av strengerkommandoen
En flott måte å demonstrere kraften på strenger kommandoen på er å lage et dokument ved hjelp av LibreOffice Writer.
Bare åpne LibreOffice Writer og skriv inn tekst og lagre det i standard ODT-format.
Åpne nå et terminalvindu (trykk CTRL, ALT og T samtidig), og bruk deretter kattkommandoen til å vise filen på følgende måte:
katt yourfilename.odt | mer
(Erstatt yourfilename.odt med navnet på filen du opprettet)
Det du vil se er en hel mur av ulastelig tekst.
Trykk på mellomromstasten for å bla gjennom filen. Sporadisk i hele filen vil du se noen av teksten du har skrevet inn.
Kommandoen strenger kan brukes til å vise bare de delene som er menneskelige lesbare.
I sin enkleste form kan du kjøre følgende kommando:
strenger yourfilename.odt | mer
Som tidligere vises en vegg med tekst, men bare tekst som du kan lese som et menneske. Hvis du er heldig, så vil du kunne se teksten.
Det du vil kunne se er nøkkelen, er imidlertid på første linje:
mimetypeapplication / vnd.oasis.opendocument.text
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 du fant filen på en gjenopprettet disk og filen ikke hadde en utvidelse.
Windows-gjenoppretting ville ofte gjenopprette filer med navn som 0001, 0002, 0003 osv. Det faktum at filene ble gjenopprettet, er flotte, men prøver å finne ut hva slags filene var, var et mareritt.
Ved å bruke strenge har du en sjanse til å slå 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-brenner.
Hvis du ikke var oppmerksom på en ODT-fil, er det i utgangspunktet en komprimert fil. Hvis du omdøper yourfilename.odt til yourfilename.zip kan du åpne den i et arkiveringsverktøy og til og med pakke ut filen.
Alternative oppføringer
Som standard returnerer kommandoen strenger 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 synes å vite.
Det er fornuftig å anta at du bruker strenge for å prøve å finne ut filtypen eller å se etter spesifikk tekst i en fil.
Hvis du kjører kommandoen strenger med standardoppførelsen, får du ikke resultatet du håpet på, så prøv å kjøre en av følgende kommandoer for å se om det gjør en forskjell:
Den manuelle siden sier at kommandoen ovenfor kan bidra til å redusere mengden søppel som returneres fra strenger. Kommandoen "strenger" kan settes opp for å fungere i omvendt, slik at minus d-bryteren er standardoppførelsen. Hvis dette er tilfellet på systemet, kan du returnere alle dataene ved å bruke følgende kommando: Du kan få teksten i utgangen for å vise navnet på filen ved siden av hver tekstlinje. For å gjøre dette, kjør en av følgende kommandoer: Utgangen vil nå se slik ut: Som en del av utgangen kan du også vise forskyvningen av hvor teksten vises i en fil. For å gjøre dette, kjør følgende kommando: Utgangen vil se slik ut: Forskjellen er faktisk oktalforskyvningen, selv om det avhengig av hvordan strenger er blitt sammensatt for systemet ditt, kan det lett være heksen eller desimalforskyvningen også. En mer nøyaktig måte å få motregningen du vil bruke, er å bruke følgende kommandoer: Minus t betyr returforskyvningen og tegnet som følger bestemmer offset-typen. (dvs. d = desimal, o = oktal, h = hex). Som standard skriver kommandoen strenger hver ny streng på en ny linje, men du kan angi avgrenseren av ditt valg. For eksempel å bruke et pipesymbol ("|") som avgrensningen kjører følgende kommando: Strenger-kommandoen ser som standard etter en streng med 4 utskrivbare tegn på rad. Du kan justere standard slik at den kun returnerer en streng med 8 utskrivbare tegn eller 12 skrivbare 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 å utelukke nyttig tekst, men ved å gjøre det for kort, kan du ende opp med at mye mer søppel returneres. For å justere strenggrensen, kjør følgende kommando: I eksemplet ovenfor har jeg endret grensen til 8.Du kan erstatte 8 med nummeret du ønsker. Du kan også bruke følgende kommando for å gjøre det samme: Kommandoen strenger inneholder som standard hvitt plass, for eksempel en fane eller plass som et utskrivbart tegn. Derfor, hvis du har en streng som står som "katten satt på matten", så ville kommandoen strenger returnere hele teksten. Nye linjetegn og vognreturer anses ikke som utskrivbare tegn som standard. For å få strenge til å gjenkjenne nye linjetegn og vognreturer som utskrivbare tegn, kjør strenger på følgende måte: Det er 5 kodingsalternativer tilgjengelig for bruk med strenger: Standard er 7 bit byte. For å endre kodingen, kjør følgende kommando: I kommandoen ovenfor har jeg angitt standard "s" som betyr 7 bit byte. Bare erstatt "s" med kodende brev av ditt valg. Du kan endre oppførselen til strenger slik at den bruker et annet binært filbeskrivelsesbibliotek annet enn det som er oppgitt for systemet. Denne bryteren er en for ekspertene. Hvis du har et annet bibliotek å bruke, kan du gjøre det ved å kjøre kommandoen for følgende strenger: 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. Hva du kan gjøre er å lage en tekstfil ved hjelp av nano og angi alternativene i den filen. For å prøve dette ut i en terminal, kjør følgende kommando: I filen angir du følgende tekst: Lagre filen ved å trykke CTRL og O og avslutte ved å trykke CTRL og X. For å kjøre strengene kommandoer med disse alternativene kjør følgende kommando: Alternativene vil bli lest fra filstrengene og du bør se filnavnet før hver streng, forskyvningen og "|" som en separator. Hvis du vil lese mer om strenger, kan du kjøre følgende kommando for å få hjelp. Alternativt kan du også lese den manuelle siden: For å finne versjonen av strenger du kjører, kjør en av følgende kommandoer:strenger -d din filnavn
strenge - oppgi ditt filnavnstrenger-et filnavn
Formateringsutgang
strenger -f ditt filnavn
strenger - skriv ut filnavnet dittfilnavnditt filnavn: et stykke tekst
dinfilnavn: et annet stykke tekststrenger -i ditt filnavn
16573 din
17024 tekst
strenger -t d dinfilenavn
strenger -t o yourfilenamestrenger-t h yourfilenamestrenger -s "|" yourfilename
Juster strenggrensen
strenger-en 8 dinfilnavn
strenger --bytes = 8 dittfilnavn
Inkluder hvite plass
strenger -w ditt filnavn
Endre kodingen
strenger-s s filnavn
strenger --encoding = s yourfilename Endre navnet på den binære filbeskrivelsen
strenger -T bfdname
Lesealternativer fra en fil
nano stringsopts
-f -o -n 3 -s "|"
strenger @ stringsopts yourfilename
Får hjelp
strenger --hjelp
mannstrenger
Finn ut hvilken versjon av strenger du kjører
strenger -v
strenger -Vstrenger - versjon