GREP ja Leia operaatorid Linuxi reeglid
- 4032
- 284
- Salvatore Hirthe
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.