Slik bruker du strengkommandoen på Linux

Linux-terminal på en bærbar datamaskin

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.

Annonse

Her 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.

Annonse

For å 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.

Annonse

Vi 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.

Linux-kommandoer
Filer tjære · pv · katt · tac · chmod · grep · diff · sed · Med · Mann · pushd · popd · fsck · testdisk · seq · fd · pandoc · CD · $PATH · awk · bli med · jq · brette · unik · journalctl · hale · stat · ls · fstab · kastet ut · mindre · chgrp · chown · rev · se · strenger · type · endre navn · glidelås · pakke opp · montere · umount · installere · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · fra · ln · lapp · konvertere · rclone · makulere · SRM
Prosesser alias · skjerm · topp · hyggelig · renice · framgang · strace · system · tmux · chsh · historie · · parti · gratis · hvilken · dmesg · brukermod · ps · chroot · xargs · tty · rosa · lsof · vmstat · pause · vegg · ja · drepe · søvn · sudo · hans · tid · gruppeadd · brukermod · grupper · lshw · skru av · starte på nytt · Stoppe · strøm av · passwd · lscpu · crontab · Dato · bg · fg
Nettverk netstat · ping · traceroute · ip · ss · hvem er · fail2ban · bmon · du · finger · nmap · ftp · krølle · wget · hvem · hvem er jeg · I · iptables · ssh-keygen · ufw

I SLEKT: Beste Linux bærbare datamaskiner for utviklere og entusiaster

LES NESTE Profilbilde for Dave McKay Dave McKay
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

Interessante Artikler