GREP ja Leia operaatorid Linuxi reeglid

GREP ja Leia operaatorid Linuxi reeglid

Algselt polnud UNIX/Linuxi opsüsteemidel graafiline liides, kuna need olid keskendunud serveri kasutamisele. Tänapäeval ei ole need Windowsist madalamad, mistõttu on seda OS -i kasutajad harva teada süntaksi ja peamiste Linuxi käskude eesmärki. Samal ajal on see väga võimas tööriist, mis võimaldab teil kiiresti teha toiminguid, mis on OS -i põhiriistade kasutamisel problemaatiline või võimatu. Täna kohtute Find and Grepi operaatoriga, mis on kõigi Linuxi levitamiste failisüsteemi jaoks põhilised.

Leiu- ja GREP -i operaatorite määramine

Linuxis asuv meeskond on käsuridaoperaator, kes töötaks olemasoleva hierarhiast mööda minnes. See võimaldab teil otsida faile, kasutades paljusid filtreid, samuti teostada teatavaid toiminguid failide kaudu pärast nende edukat otsingut. Failide otsimise kriteeriumide hulgas on peaaegu kõik saadaolevad atribuudid, alates loomise kuupäevast kuni eraldusvõimeni.

Linuxi GREP -i meeskond viitab ka otsingumootoritele, kuid failide sees. Meeskonna sõnasõnaline tõlge on „regulaarsete väljendite globaalne printimine”, kuid siinne pitser tähendab vaikimisi seadme töö tulemuste järeldust, mis on tavaliselt monitor. Omades tohutut potentsiaali, kasutatakse operaatorit üsna sageli ja see võimaldab teil vastavalt määratud fragmentidele otsida ühe või mitme faili piires (mallid). Kuna terminoloogia Linuxis erineb Windowsis oluliselt, on paljudel kasutajatel nende käskude kasutamisel olulisi raskusi. Püüame selle puuduse kõrvaldada.

Grep ja leidke süntaks

Alustame operaatori leidmisega. Faili otsingumeeskonna süntaks näeb välja selline:

Leidke [kust otsida] [parameetrid] [-optiline] [toiming]

Mõni kasutab parameetreid:

  • -Sügavus: otsige praeguses kaustas ja subkatalistid;
  • -Versioon: tooge meeskonna versioon;
  • -Prindi: kuvage täielikud failinimed (Linuxis võivad need olla suvaliselt suured);
  • -Tüüp F: otsige ainult faile;
  • -Tüüp D - ainult otsingu kataloog (kaustad).

Saadaolevate valikute loetelu (näidatud sidekriipsu kaudu):

  • Nimi: faili otsing nime järgi;
  • Kasutaja: otsige faili omaniku nime järgi;
  • perm: vastavalt atribuudile "Juurdepääsurežiim";
  • Mtime: faili viimase muudatuse (redigeerimise) ajaks;
  • Rühm: rühma järgi;
  • Atime: faili viimase avamise kuupäevaks;
  • Uuem: faili otsimine, mille kuupäev on rohkem kui mallis määratud direktiiv;
  • Suurus: faili suuruse järgi baitides;
  • Nouser: otsige faile, millel pole sisestatud atribuuti "omanik".

GREP süntaks:

GREP [OPTIONS] Mall [kust otsida]

Valikuid tuleks mõista kui täiendavaid selgitavaid parameetreid, näiteks pöördrežiimi kasutamist või antud arvu ridade otsimist.

Mall näitab, mida tuleb otsida otse määratud rea või regulaarse avaldise abil.

Regulaarsete väljendite kasutamise võimalus võib otsinguvõimalusi märkimisväärselt laiendada. Standardse järelduse näitaja võib olla kasulik, kui ülesandeks on logides salvestatud vead või PID -protsessi otsida käsu tulemustes, mis võib olla mitme leheküljel.

Mõelge kõige levinumatele GRAS -i parameetritele:

  • -B: enne saadud rea väljastamist kuvage plokkinumber;
  • -C: on vaja arvutada soovitud fragmendi kirjete arv;
  • -I: otsing ilma registri registreerimiseta;
  • -N: väljastage reanumber standardsele väljundseadmele, milles leiti soovitud fragment või mall;
  • - L: Väljaandmise tulemusel tuleks esineda ainult leitud otsingufragmendiga failide nimed;
  • -S: ignoreerige vea väljundit;
  • -W: otsige mõlemalt poolt ümbritsetud fragmenti;
  • -V: ümberpööratud otsing, see tähendab kõigi ridade kuvamine, mis ei sisalda antud fragmenti;
  • -E: parameeter näitab, et järgneb veelgi regulaarne avaldis, millel on oma süntaks;
  • -An: soovitud fragmendi ja eelneva n liini järeldus;
  • -BN: Sama, kuid kui jooned lähevad pärast malli.

Nüüd on mõistlik liikuda teoreetilisest osast praktilisele.3

Kommunaalteenuste kasutamise näited

Kui teate, mis on kombinatooriumid, tuleks esindada otsingumeeskondade võimalike kombinatsioonide tõeline arv. Piirdume ainult kõige kasulikumate näidetega, mis võivad teile töö ajal kasulikud olla.

Otsige teksti failidest

Olgem administraatori õigused ja meil on ülesanne leida konkreetne kasutaja tohutu paroolifaili. Vajame üsna lihtsat meeskonda, mis näitab faili postitamise teed:

GREP NANEKER /etc /PASSWD

Kui otsingutulemus on positiivne, saame sellest tuleneva rea ​​umbes järgmist tüüpi:

Nameser: x: 1021: 1021: nameser ,,:/kodu/kasutaja:/bin/bash

Kui peate otsima teksti fragmenti ilma registriregistrit arvesse võtmata, näeb meeskond välja järgmine:

Gras -i "nameser" /etc /passwd

Sel juhul leitakse nimekasutaja kasutaja ja selle "nimekaim" nimekasutaja, aga ka kõik muud võimalikud kombinatsioonid.

Mitme liini järeldus

Saame kõik vigu aknakesta logist xorg.logi. Ülesanne teeb keeruliseks asjaolu, et pärast ekslikku stringi, mis sisaldab väärtuslikku teavet. Otsustatakse, kui sunnime käsku kuvama mitu rida, kasutades mallina rea ​​"PP":

Gras -a5 "pp"/var/log/xorg.0.logi

Saame joone, mis sisaldab malli ja 5 rida.

Gras -c3 "pp"/var/log/xorg.0.logi

Rea väljund teksti fragmendiga ja kolm rida enne ja pärast.

Regulaarsete avaldiste kasutamine grepis

See on üks võimsamaid Linuxi tööriistu, mis märkimisväärselt laiendab otsingumalli moodustamise võimalust. Regulaarsel avaldisel on oma süntaks, üsna keeruline. Me ei süvene sellesse, piirates end RV kasutamise näitega. Nagu te juba teate, näidata, et regulaarset avaldist kasutatakse veelgi, kasutatakse parameetrit -e.

Las meid faili sõnumitega.2 Peame septembriks kõik read kinni püüdma:

Grep "^september 09"

Tulemuseks on midagi sellist:

09. september 01:11:45 GS124 NTPD [2243]: Aja lähtestamine +0.197579 s

09. september 01:19:10 GS124 NTPD [2243]: Aja lähtestamine +0.203484 s

Tullijoone lõpus asuva malli otsimiseks kasutatakse sümbolit $:

Grep "termin.$ "Sõnumid

Tulemus:

17. juuni 19:01:19 CLONEME KERNEL: Logide deemoni termin.

11. september 06:30:54 CLONEME KERNEL: Logideemoni termin.

Ja siin on näide tavalise avaldise kasutamisest, mis võimaldab teil otsida ridu, mis sisaldavad numbreid, välja arvatud null:

Grep "[1-9]"/var/log/xorg.1.logi

Kasutades rekursiivset otsingut grepis

Kui olete tuttav mõistega "rekursioon", siis kasutatakse seda tehnikat Linuxis eriti, et otsida fragmenti mitmest kataloogis asuvast failist ja selle alamkataalidest. Variant -r näitab rekursiooni olemasolu. Otsime fragmenti "NimetiMain.Org "failides, mis asuvad kausta /etc /apache1 subcatalides:

Gras -R "nimegaMain.Org "/etc/apache1/

Tulemus võib olla midagi sellist:

/etc/apache1/vhosts.D/ nimetatud.Org

Kui failinimi pole vaja, kasutame -H: H: H:

Grep -h -r "nimegaMain.Org "/etc/apache1/

Otsige sõnu

Standard QWE fragmendi otsimine lõpeb kõigi sõnade väljaandmisega, milles see fragment leitakse: KBQWE, QWE123, AAFRQWE32. Otsingu piiramiseks ainult antud fragmendiga peate kasutama parameetrit -W:

Gras -W "QWE", kust leida

Otsige kahte või enamat sõna

Raskendab ülesannet: peame leidma kõik read, kus leitakse kaks sõna. Meeskond saab olema selline:

Gras -W "Word01 | Word02", kus_ leida

Liinide arv

Arvutamiseks on vaja. Mitu korda leitakse failist soovitud fragment, kasutame kujundust -c parameetriga:

Gras -c "" tekst ", kus_ leiate

Parameeter -n aitab välja selgitada, millises joones leitakse soovitud mall:

Gras -n "Nuser" /etc /passwd

Ümberpööratud otsing GREP abil

Mõnikord ei ole failide sisu järgi GREP -i kasutamise ülesanne mitte kirje enda leidmine, vaid read, kus see fragment puudub. Variant -v aitab meid:

Gras -v "txt", kus_ leida

Failinime väljund

Laske teil leida kõik failid määratud kataloogist, mis sisaldab soovitud malli. Seda saab teha parameetri -L abil. Niisiis, kaustas /etc sekundaarse stringi sisaldavate failide väljundi täielik käsk näeb välja järgmine:

Grep -l "sekundaarne" /jne

Värvi väljund GREP abil

Teise värviga püsimine on suurepärane viis soovitud sissekande visualiseerimiseks, mis vähendab märkimisväärselt silmade koormust, kui toimingut sageli tehakse. Selgub, et GRAS -il on otsingutulemuste väljundi võimalus:

GROPOR -värvi "teisene" /jne

Jätkame Linuxis utiliidi leidmise näidete kaalumist.

Otsige kõiki faile

Praeguses kataloogis asuvate failide loendi väljavõtmiseks kasutame käsku järgmises vormingus:

Leidma .

Kui teil on vaja failide täisnime näidata, kasutame käsku

Leidma . -Trükikoda

Faili väljund antud kataloogis

Kasutaja määratletud kausta failide otsimiseks kasutame käsku

Leidma ./jne

Kuid kuidas leiate praeguses kataloogis antud fragmenti sisaldavad failid:

Leidma . -Nimi "*.Gif "

Kui otsingut tuleb läbi viia ilma registri arvestamata, tuleb käsku muuta:

Ärge arvestage nime järgi otsimisel registrit:

Leidma . -Minu sees "*.Gif "

Otsingu sügavuse piiramine

Veel üks üsna tüüpiline ülesanne on konkreetsest kaustast failide otsimine vastavalt eelnimele:

Leidma . -maxDepth01 1 -Name "*.Html "

Malli ümberpööramine

Oleme juba kaalunud meeskonna analoog, et otsida ridu, mis ei sisalda antud fragmenti. Samamoodi saate teha failidega, mis ei vasta antud mallile:

Leidma . -Mitte -Name "kasutaja*"

Otsige mitme kriteeriumi järgi

Toome näite käsurida kohta, kasutades otsingu utiliiti kahe kriteeriumi järgi, kasutades operaatori Not (välista):

Leidma . -Nimi "Kasutaja" -NOT -Name "*.Html "

Sel juhul ei leita faile, mille nimi sisaldab kasutaja fragmenti, kuid millel on laiendus. Erandoperaatorite asemel saate kasutada loogilist "/" või "::

Leidke -Name "*.js "-o -name"*.SQL "

Sel juhul saame täieliku loendi failidest, mille mõlemad laiendused asuvad praeguses kataloogis.

Otsi mitmest kataloogist

Kui peame faile leidma kahest kataloogist, märkige lihtsalt tühimikust:

Leida -tüüp f ./ /test01 ./ /test02 -Name "*.SQL "

Otsige varjatud faile

Linuxis, nagu ka Windowsis. See sümbol on Tilda ja direktiivil on järgmine pilk:

Leidke ~ -Name ".*""

Otsige faile Linuxist lubade järgi

Mõnikord on vaja filtreerida kataloog teatud õiguste maski jaoks. Näiteks kui peame leidma atribuudi 0661 -ga failid, kasutame käsku:

Leidma . -Perm 0661

Failide filtreerimise ülesanne atribuudiga "Ainult lugemiseks" lahendatakse järgmiselt:

Leida /etc /kasutaja -perm /u = r

Kuid milline näeb välja käivitatavate failide otsimine ETC kataloogis:

Leida /etc -perm /a = x

Otsige faile rühmade/kasutajate kaupa

Administraator peab sageli silmitsi seisma failide otsimise ülesandega, mis on konkreetse kasutaja ja/või rühma omadus. Otsi kasutaja poolt:

Leidma . -Kasutaja slavko

Kasutajagruppide jaoks kasutatakse teist parameetrit:

Leidke /var -rühm devid

Otsige viimase modifikatsiooni kuupäeva järgi

Linux OS -i faili kuupäeva nähtav vorming on täpselt selle muutmise kuupäev (sama põhimõtet kasutatakse ka Windowsis). Kuupäeva järgi nimekirja moodustamiseks kasutatakse suvandit MTime. Oletame, et peame leidma kaks kuud tagasi muudetud failid:

Leidke /kodu -Mime 60

Faili atribuutide hulgas on selle viimase avastuse kuupäev (muudatusi tegemata). Selliseid faile kuvatakse järgmise käsuga:

Leidke /kodu -60

Saate seada ka ajavahemiku. Nelja kuni kaks kuud tagasi muudetud failide otsimiseks kasutame direktiivi:

Leidke /kodu -Mime +60 -Mime -120

Kuid kuidas leida värskelt muudetud faile (kaks tundi tagasi):

Leidke /kodu -cmin 120

Otsige faile suuruse järgi

Kahtlustada, et keegi kasutab filmide jaoks plaati? Otsime failide suurus 1.4GB:

Leidke / -suurus 1400m

Või kasutage vahemikku:

Leidke / -suurus +1400m -suurus -2800m

Otsige tühje faile/katalooge

Jah, ära imesta. Meediumis järjekorra taastamise ülesanne on iseloomulik mitte ainult Android OS -ile. Linuxis otsustatakse sellise direktiivi abil:

Leida /var -type f -tühine

Leitud failidega toimingute näide

Linuxis saab leida meeskond rekursiivselt nende failidega teatud toiminguid, mida otsite. Faili käskude käivitamiseks peate kasutama parameetrit EXEC. Niisiis näeb välja kõigi failide käsu kasutavate failide kohta teabe kuvamise direktiiv:

Leidma . -exec ls -l \;

Kuid kui lihtsalt saate ajutisi faile antud maskiga kataloogis /kodu /tempos kustutada:

Leidke /tmp -tüüp f -nime "*.html ”-exec rm -f \;

Muidugi, algaja jaoks näib olevat mõnevõrra keerukas viis käsurida kasutamine mõnevõrra keerukas, kuid Linuxis on see asjade järjekorras. Ja kuidas lahendaksite siin Windowsis kirjeldatud probleeme? See on sama. Selles aspektis on Linux selgelt ees.