Slik bruker du strengkommandoen på Linux
Fatmawati Achmad Zaenuri/Shutterstock.com
Vil du se teksten i en binær eller datafil? Linux |_+_| kommandoen trekker de tekstbitene – kalt strenger – ut for deg.
Linux er full av kommandoer som kan se ut som løsninger på jakt etter problemer. Den |_+_| kommandoen faller definitivt inn i den leiren. Akkurat hva er formålet? Er det et poeng med en kommando som viser de utskrivbare strengene fra en binær fil?
La oss ta et skritt tilbake. Binære filer – for eksempel programfiler – kan inneholde strenger med lesbar tekst. Men hvordan får du se dem? Hvis du bruker |_+_| eller |_+_| du vil sannsynligvis ende opp med et hengt terminalvindu. Programmer som er utviklet for å fungere med tekstfiler, takler det dårlig hvis ikke-utskrivbare tegn mates gjennom dem.
De fleste bytene i en binær fil er ikke lesbare for mennesker og kan ikke skrives ut til terminalvinduet på en måte som gir mening. Det er ingen tegn eller standardsymboler som representerer binære verdier som ikke samsvarer med alfanumeriske tegn, tegnsetting eller mellomrom. Til sammen er disse kjent som utskrivbare tegn. Resten er tegn som ikke kan skrives ut.
Så det er et problem å prøve å se eller søke gjennom en binær eller datafil for tekststrenger. Og det er der |_+_| kommer inn. Den trekker ut strenger med utskrivbare tegn fra filer slik at andre kommandoer kan bruke strengene uten å måtte kjempe med tegn som ikke kan skrives ut.
Bruke strengkommandoen
Det er ikke noe komplisert med |_+_| kommandoen, og dens grunnleggende bruk er veldig enkel. Vi oppgir navnet på filen vi ønsker |_+_| for å søke gjennom på kommandolinjen.
AnnonseHer skal vi bruke strenger på en binær fil - en kjørbar fil - kalt jibber. Vi skriver |_+_|, et mellomrom, jibber og trykker deretter Enter.
strings
Strengene trekkes ut fra filen og vises i terminalvinduet.
Stille inn minimum strenglengde
Som standard vil strenger søke etter strenger som er på fire tegn eller lengre. For å angi en lengre eller kortere minimumslengde, bruk |_+_| (minimumslengde) alternativ.
Merk at jo kortere minimumslengden er, jo større er sjansen for at du ser mer søppel.
Noen binære verdier har samme numeriske verdi som verdien som representerer et utskrivbart tegn. Hvis to av disse numeriske verdiene tilfeldigvis er side ved side i filen og du angir en minimumslengde på to, vil disse bytene bli rapportert som om de var en streng.
AnnonseFor å spørre |_+_| for å bruke to som minimumslengde, bruk følgende kommando.
strings
Vi har nå to-bokstavsstrenger inkludert i resultatene. Merk at mellomrom regnes som et utskrivbart tegn.
Rørstrenger gjennom mindre
På grunn av lengden på utgangen fra |_+_|, skal vi sende den gjennom |_+_|. Vi kan deretter bla gjennom filen og se etter tekst av interesse.
cat
Oppføringen er nå presentert for oss i |_+_|, med toppen av oppføringen først.
Bruke strenger med objektfiler
Vanligvis blir programkildekodefiler kompilert til objektfiler. Disse er koblet til biblioteksfiler for å lage en binær kjørbar fil. Vi har jibber-objektfilen for hånden, så la oss ta en titt i den filen. Legg merke til filtypen .o.
less
Det første settet med strenger pakkes i kolonne åtte hvis de er lengre enn åtte tegn. Hvis de har blitt pakket inn, er et H-tegn i kolonne ni. Du kan gjenkjenne disse strengene som SQL-setninger.
Annonse
Bla gjennom utdataene viser at denne formateringen ikke brukes i hele filen.
Det er interessant å se forskjellene i tekststrengene mellom objektfilen og den ferdige kjørbare filen.
Søke i bestemte områder i filen
Kompilerte programmer har forskjellige områder i seg selv som brukes til å lagre tekst. Som standard er |_+_| søker i hele filen og leter etter tekst. Dette er akkurat som om du hadde brukt |_+_| (alle) alternativ. For å få strenger til å søke kun i initialiserte, lastede dataseksjoner i filen, bruk |_+_| (data) alternativ.
strings
Med mindre du har en god grunn til det, kan du like godt bruke standardinnstillingen og søke i hele filen.
Skrive ut strengoffset
Vi kan ha |_+_| skrive ut offset fra starten av filen der hver streng er plassert. For å gjøre dette, bruk |_+_| (offset) alternativ.
strings
Offset er gitt inn Oktal .
For å få forskyvningen vist i en annen numerisk base, for eksempel desimal eller heksadesimal, bruk |_+_| (radix) alternativ. Radix-alternativet må følges av |_+_| ( desimal ), strings
( heksadesimal ), eller |_+_| (oktal). Ved å bruke |_+_| er det samme som å bruke |_+_|.
strings
Forskyvningene er nå skrevet ut med desimaler.
-n
Offsetene er nå skrevet ut i heksadesimal.
Inkludert mellomrom
|_+_| anser tabulator- og mellomromstegn som en del av strengene den finner. Andre mellomromstegn, som nylinjer og vognretur, behandles ikke som om de var en del av strengene. Den |_+_| alternativet (mellomrom) får strenger til å behandle alle mellomromstegn som om de er deler av strengen.
strings
Annonse
Vi kan se den tomme linjen i utdataene, som er et resultat av (usynlig) vognretur og nylinjetegn på slutten av den andre linjen.
Vi er ikke begrenset til filer
Vi kan bruke |_+_| med alt som er, eller kan produsere, en strøm av bytes.
Med denne kommandoen kan vi se gjennom tilfeldig tilgangsminne (RAM) på datamaskinen vår.
Vi må bruke |_+_| fordi vi har tilgang til /dev/mem. Dette er en tegnenhetsfil som inneholder et bilde av hovedminnet på datamaskinen din.
strings
Oppføringen er ikke hele innholdet i RAM-en din. Det er bare strengene som kan trekkes ut av det.
I SLEKT: Hva betyr 'Alt er en fil' i Linux?
Søker i mange filer samtidig
Jokertegn kan brukes til å velge grupper av filer som skal søkes i. Den |_+_| tegnet representerer flere tegn, og |_+_| tegn representerer et enkelt tegn. Du kan også velge å angi mange filnavn på kommandolinjen.
AnnonseVi skal bruke et jokertegn og søke gjennom alle de kjørbare filene i /bin-katalogen. Fordi oppføringen vil inneholde resultater fra mange filer, vil vi bruke |_+_| (filnavn) alternativ. Dette vil skrive ut filnavnet på begynnelsen av hver linje. Vi kan da se hvilken fil hver streng ble funnet i.
Vi fører resultatene gjennom grep , og ser etter strenger som inneholder ordet opphavsrett.
less
Vi får en ryddig liste over opphavsrettserklæringene for hver fil i /bin-katalogen, med navnet på filen i starten av hver linje.
strenger løst opp
Det er ikke noe mysterium for strenger; det er en typisk Linux-kommando. Den gjør noe veldig spesifikt og gjør det veldig bra.
Det er en annen av Linuxs tannhjul, og kommer virkelig til live når den jobber med andre kommandoer. Når du ser hvordan det kan sitte mellom binære filer og andre verktøy som |_+_|, begynner du å sette pris på funksjonaliteten til denne litt obskure kommandoen.
I SLEKT: Beste Linux bærbare datamaskiner for utviklere og entusiaster
LES NESTE- › Slik finner du Spotify Wrapped 2021
- & rsaquo; Cyber Monday 2021: Beste Apple-tilbud
- › Datamaskinmappen er 40: Hvordan Xerox Star skapte skrivebordet
- & rsaquo; Cyber Monday 2021: Beste tekniske tilbud
- › Funksjoner vs. formler i Microsoft Excel: Hva er forskjellen?
- › 5 nettsteder hver Linux-bruker bør bokmerke
Dave McKay brukte først datamaskiner da stanset papirtape var på moten, og han har programmert siden. Etter over 30 år i IT-bransjen er han nå teknologijournalist på heltid. I løpet av sin karriere har han jobbet som frilansprogrammerer, leder for et internasjonalt programvareutviklingsteam, prosjektleder for IT-tjenester og sist som databeskyttelsesansvarlig. Hans forfatterskap har blitt publisert av howtogeek.com, cloudsavvyit.com, itenterpriser.com og opensource.com. Dave er en Linux-evangelist og forkjemper for åpen kildekode.
Les hele bio