Grep ja etsi operaattorit säännöt Linuxille
- 3059
- 291
- Gustavo Senger
Aluksi Unix/Linux. Nykyään tässä suhteessa ne eivät ole huonompia kuin Windows, minkä vuoksi tätä käyttöjärjestelmää käyttävät käyttäjät tietävät harvoin syntaksin ja pää Linux -komentojen tarkoituksen. Sillä välin tämä on erittäin tehokas työkalu, jonka avulla voit nopeasti suorittaa operaatioita, jotka käyttöjärjestelmän perustyökalujen avulla on ongelmallista tai mahdotonta. Tänään tapaat Finds and Grep -operaattoreita, jotka ovat kaikkien Linux -jakelujen tiedostojärjestelmän perusta.
Find- ja Grep -operaattoreiden nimittäminen
Linuxin Find -tiimi on komentorivin operaattori, joka työskentelee olemassa olevan hierarkian ohittamalla tiedostot. Sen avulla voit etsiä tiedostoja monien suodattimien avulla ja suorittaa tiettyjä toimintoja tiedostojen yli niiden onnistuneen haun jälkeen. Tiedostojen etsintäkriteerien joukossa on melkein kaikki käytettävissä olevat määritteet, luomispäivästä resoluutioon.
GREP -tiimi Linuxissa viittaa myös hakukoneita, mutta tiedostojen sisällä. Ryhmän kirjaimellinen käännös on ”säännöllisten lausekkeiden globaali painatus”, mutta tässä sinetti tarkoittaa oletuksena laitteen työn tulosten lopputulos, joka yleensä on näyttö. Operaattoria käytetään valtavan potentiaalin avulla melko usein, ja voit etsiä yhden tai useamman tiedoston sisällä määritettyjen fragmenttien (mallit) mukaan. Koska Linuxin terminologia eroaa merkittävästi sellaisista Windowsissa, monilla käyttäjillä on merkittäviä vaikeuksia näiden komentojen avulla. Yritämme poistaa tämän haitan.
Grep ja etsi syntaksi
Aloitetaan Find -operaattorista. Tiedostohakutiimin syntaksi näyttää tältä:
Löydä [mistä etsiä] [parametrit] [-Optinen] [toiminta]
Jotkut käyttävät parametreja:
- -Syvyys: Hae nykyisestä kansiosta ja subkatalisteista;
- -Versio: Tuo joukkueen versio;
- -Tulosta: Näytä täydelliset tiedostonimet (Linuxissa ne voivat olla mielivaltaisesti suuria);
- -Tyyppi F: Hae yksinomaan tiedostot;
- -Tyyppi D - Haku vain hakemisto (kansiot).
Luettelo käytettävissä olevista vaihtoehdoista (merkitty tavuviivalla):
- Nimi: Tiedostohaku nimellä;
- Käyttäjä: Hae tiedoston omistajan nimellä;
- Perm: Attribuutin "pääsytila" mukaan;
- MTime: Tiedoston viimeisen muutoksen aikaan;
- Ryhmä: ryhmä;
- ATIME: Tiedoston viimeisen avaamisen päivämäärään mennessä;
- Uudempi: Tiedoston etsiminen, jonka päivämäärä on enemmän kuin mallissa määritetty direktiivi;
- Koko: Tiedoston koon mukaan tavuina;
- Nouser: Etsi tiedostoja, joilla ei ole syötettyä määritettä "omistaja".
Grep -syntaksi:
Grep [optio] malli [mistä etsiä]
Vaihtoehdot olisi ymmärrettävä lisäparametreiksi, esimerkiksi käänteisen järjestelmän käyttö tai tietyn määrän rivien etsiminen.
Malli osoittaa, mitä on etsittävä suoraan määritettyä viivaa tai säännöllistä lauseketta käyttämällä.
Mahdollisuus käyttää säännöllisiä lausekkeita voi laajentaa huomattavasti hakuominaisuuksia. Vakiopäätöksen osoitus voi olla hyödyllinen, jos tehtävän on suodatettava lokeihin tallennetut virheet tai etsimään PID -prosessia PS -komennon tuloksista, jotka voivat olla moni -sivut.
Harkitse yleisimpiä GRAS -parametreja:
- -B: Näytä lohkon numero ennen tuloksena olevan linjan antamista;
- -C: On tarpeen laskea halutun fragmentin merkintöjen lukumäärä;
- -I: Hae ilman rekisteröintiä;
- -N: Anna linjanumero vakiolähtölaitteeseen, jossa löydettiin haluttu fragmentti tai malli;
- - L: liikkeeseenlaskun seurauksena vain löydetyn hakufragmentin tiedostojen nimet tulisi olla läsnä;
- -S: Ohita virheen lähtö;
- -W: Etsi fragmentti, jota molemmin puolin ympäröivät tilat;
- -V: Käänteinen haku, toisin sanoen kaikkien rivien näyttö, joka ei sisällä annettua fragmenttia;
- -E: Parametri osoittaa, että edelleen tavallinen lauseke, jolla on oma syntaksi;
- -AN: Halutun fragmentin ja aikaisempien N -linjojen päätelmä;
- -BN: Sama, mutta linjat kulkevat mallin jälkeen.
Nyt on järkevää siirtyä teoreettisesta osasta käytännölliseen.3
Esimerkkejä apuohjelmien käytöstä
Jos tiedät mitä yhdistelmä on, hakuryhmien mahdollisten yhdistelmien todellinen määrä tulisi edustaa. Rajoitamme itsemme vain hyödyllisimpiin esimerkkeihin, jotka voivat olla hyödyllisiä sinulle työn aikana.
Etsi teksti tiedostoista
Olkaamme järjestelmänvalvojan oikeudet ja meillä on tehtävä löytää tietty käyttäjä valtavasta salasanatiedostosta. Tarvitsemme melko yksinkertaisen joukkueen, joka osoittaa tiedoston postituspolun:
Grep nameuser /etc /passwd
Jos hakutulos on positiivinen, saadaan tuloksena olevan linjan, joka on suunnilleen seuraavan tyyppinen:
NameUser: X: 1021: 1021: Nameuser ,,:/Etusivu/Käyttäjä:/Bin/Bash
Jos joudut etsimään fragmenttiä tekstistä ottamatta huomioon rekisterirekisteriä, joukkue näyttää tältä:
Gras -i "nameuser" /etc /passwd
Tässä tapauksessa NameUser -käyttäjä ja sen "Namesake" NameUser sekä kaikki muut mahdolliset yhdistelmät löytyvät.
Useiden rivien päätelmä
Saakaamme kaikki virheet ikkunan kuoren Xorg -lokista.Hirsi. Tehtävää on monimutkainen se, että virheellisen jälkeen merkkijono, joka sisältää arvokasta tietoa, voi seurata. Päätetään, pakotammeko komennon näyttämään useita rivejä rivillä "PP" mallina:
Gras -a5 "pp"/var/log/xorg.0 -.Hirsi
Saamme linjan, joka sisältää mallin ja 5 riviä sen jälkeen.
Gras -c3 "pp"/var/log/xorg.0 -.Hirsi
Rivilähtö tekstin fragmentilla ja kolme riviä ennen ja jälkeen.
Käyttämällä säännöllisiä lausekkeita GREP: ssä
Tämä on yksi tehokkaimmista Linux -työkaluista, jotka laajentavat merkittävästi mahdollisuutta muodostaa hakumalli. Säännöllisillä ilmaisuilla on oma syntaksi, melko monimutkainen. Emme syventy siihen, rajoittamalla itseämme matkailuautojen käytöstä. Kuten jo tiedät, osoittaa, että säännöllistä lauseketta käytetään edelleen, -e -parametria käytetään.
Annetaan viestitiedosto.2 Meidän on pyydettävä kaikki rivit syyskuussa:
Grep "^syyskuu 09"
Tulos on jotain tällaista:
Syyskuu 09 01:11:45 GS124 NTPD [2243]: Aika nollaus +0.197579 S
Syyskuu 09 01:19:10 GS124 NTPD [2243]: Aika nollaus +0.203484 S
Pylväslinjan päässä sijaitsevan mallin etsimiseksi käytetään ”$” -symbolia:
Grep "termi.$ "Viestit
Tulos:
17. kesäkuuta 19:01:19 Cloneme -ydin: Log -daemonikausi.
11. syyskuuta 06:30:54 Klonemet.
Ja tässä on esimerkki tavallisen lausekkeen käytöstä, jonka avulla voit etsiä linjoja, jotka sisältävät numeroita, paitsi nolla:
Grep "[1-9]"/var/log/xorg.1.Hirsi
Rekursiivisen haun käyttäminen GREP: ssä
Jos tunnet termin "rekursio", niin Linuxissa tätä tekniikkaa käytetään erityisesti etsimään fragmentti useista luettelossa ja sen alakailoissa sijaitsevista tiedostoista. Vaihtoehto -R osoittaa rekursion esiintymisen. Etsimme fragmenttia "FameMain.Org "Tiedostoissa, jotka sijaitsevat kansiossa /etc /apache1:
Gras -r "nimeä.Org "/etc/apache1/
Tulos voi olla jotain tällaista:
/etc/apache1/vhosts.D/ nimeä.Org
Jos tiedostonimeä ei vaadita, käytämme -h: h:
Grep -h -r "nimeä.Org "/etc/apache1/
Etsi sanoja
Vakio QWE -fragmentin haku päättyy kaikkien sanojen liikkeeseenlaskuun, joista tämä fragmentti löytyy: KBQWE, QWE123, AAFRQWE32. Rajoittaaksesi hakua vain tietyllä fragmentilla, sinun on käytettävä -W -parametria:
Gras -W "QWE" mistä löytää
Etsi kaksi tai useampia sanoja
Monimutkaistaa tehtävää: Meidän on löydettävä kaikki rivit, joista löytyy kaksi sanaa. Joukkue on tällainen:
Gras -W "Word01 | Word02" mistä löytää
Linjojen lukumäärä
Jos se tarvitaan laskemiseen. Kuinka monta kertaa haluttu fragmentti löytyy tiedostosta, käytämme mallia -c -parametrilla:
Gras -c "'teksti", mistä_ löytää
-N -parametri auttaa selvittämään, millä rivillä haluttu malli löytyy:
Gras -n "nuser" /etc /passwd
Käänteinen haku GREP: n avulla
Joskus tehtävä etsiä GREP: tä tiedostojen sisällön avulla ei ole itse merkinnän löytäminen, vaan linjat, joissa tämä fragmentti puuttuu. Vaihtoehto -V auttaa meitä:
Gras -v "txt", mistä_ löytää
Tiedostonimen tulos
Voit löytää kaikki määritetyn hakemiston tiedostot, jotka sisältävät halutun mallin. Tämä voidaan tehdä -l -parametrilla. Joten, koko komento tiedostojen tulostukselle, joka sisältää merkkijonon "toissijaista" /jne. Kansiossa, näyttää seuraavalta:
Grep -l "toissijainen" /jne
Värilähtö GREP: n avulla
Toisen värin pysyminen on hieno tapa visualisoida haluttu merkintä, joka vähentää merkittävästi silmien kuormaa, jos operaatio usein suoritetaan. Osoittautuu, että GRAS: lla on vaihtoehto tähän hakutulosten tulosteen:
Grepor -väri "sekundaarinen" /jne
Jatkamme esimerkkejä Linuxin Find -apuohjelman käytöstä.
Etsi kaikki tiedostot
Jos haluat nostaa luettelon nykyisessä luettelossa olevista tiedostoista, käytämme komentoa seuraavassa muodossa:
löytö .
Jos sinun on näytettävä tiedostojen koko nimi, käytämme komentoa
löytö . -Tulosta
Tiedostotulos tietyssä luettelossa
Jos haluat etsiä tiedostoja käyttäjän määrittelemästä kansiosta, käytämme komentoa
löytö ./jne
Mutta kuinka löydät tiedostoja, jotka sisältävät tietyn fragmentin nykyisestä luettelosta:
löytö . -Nimi "*.GIF "
Jos haku on suoritettava ilman rekisteriä, komentoa on muutettava:
Älä ota huomioon rekisteriä etsiessäsi nimeltä:
löytö . -Minussa "*.GIF "
Haun syvyyden rajoittaminen
Toinen melko tyypillinen tehtävä on etsiä tiedostoja tietystä kansiosta tietyn nimen mukaan:
löytö . -MaxDepth01 1 -nimi "*.HTML "
Mallin kääntäminen
Olemme jo pitäneet ryhmän analogia etsimään linjoja, jotka eivät sisällä annettua fragmenttia. Samoin voit tehdä tiedostoilla, jotka eivät vastaa tiettyä mallia:
löytö . -ei -name "käyttäjä*"
Etsi useita kriteerejä
Annamme esimerkin komentorivistä Find Atility -sovelluksen avulla kahdella kriteerillä käyttämällä NO: n (poissulkemista) -operaattoria:
löytö . -Nimi "käyttäjä" -NOT -NAME "*.HTML "
Tässä tapauksessa tiedostoja, joiden nimi sisältää käyttäjän fragmentin, mutta joilla on laajennus, ei löydy. Poikkeusoperaattorin sijasta voit käyttää loogista "/" tai "::
Etsi -nimi "*.JS "-o -nimi"*.SQL "
Tässä tapauksessa saamme täydellisen luettelon tiedostoista, joissa on molemmat laajennukset nykyisessä hakemistossa.
Etsi useista luetteloista
Jos meidän on löydettävä tiedostoja kahdesta luettelosta, ilmoita vain aukko:
Etsi -tyyppi f ./test01 ./test02 -nimi "*.SQL "
Etsi piilotetut tiedostot
Linuxissa, kuten Windowsissa, on piilotettuja tiedostoja, joita Find -komennon käytettäessä ei näytetä ilman erityistä symbolia. Tämä symboli on Tilda, ja direktiivillä on seuraava ilme:
löytää ~ -nimi ".*"
Etsi tiedostoja Linuxista käyttöoikeuksien mukaan
Joskus on tarpeen suodattaa luettelo tietylle oikeuksien maskille. Esimerkiksi, jos meidän on löydettävä tiedostoja, joissa on määrite 0661, käytämme komentoa:
löytö . -Perm 0661
Tiedostojen suodattaminen määritteellä "vain lukemiseen" ratkaistaan seuraavasti:
Löytää /etc /käyttäjä -perm /u = r
Mutta miltä ETC -luettelon suoritettavien tiedostojen etsiminen näyttää:
Löytää /jne. -Perm /A = X
Etsi tiedostoja ryhmien/käyttäjien mukaan
Järjestelmänvalvojan on usein kohdattava tehtävän etsiminen tietyn käyttäjän ja/tai ryhmän ominaisuus. Hae käyttäjän mukaan:
löytö . -Käyttäjä Slavko
Käyttäjäryhmille käytetään toista parametria:
Etsi /var -ryhmän kehittäjät
Haku viimeisen muutoksen päivämäärän mukaan
Tiedoston päivämäärän näkyvä muoto Linux -käyttöjärjestelmässä on juuri sen muokkauspäivä (samaa periaatetta käytetään Windowsissa). Luettelon muodostamiseksi päivämäärän mukaan käytetään MTime -vaihtoehtoa. Oletetaan, että meidän on löydettävä tiedostot, jotka on muutettu kaksi kuukautta sitten:
Find /Home -Mime 60
Tiedoston ominaisuuksien joukossa on viimeisen löytön päivämäärä (tekemättä muutoksia). Tällaiset tiedostot näkyvät seuraavalla komennolla:
Etsi /koti -atime 60
Voit myös asettaa aikavälin. Jos haluat etsiä tiedostoja, jotka on muokattu neljästä kahteen kuukautta sitten, käytämme direktiiviä:
FINE /HOME -MIME +60 -MIME -120
Mutta kuinka löytää vasta vaihdetut tiedostot (kaksi tuntia sitten):
Find /Home -Cmin 120
Etsi tiedostoja koon mukaan
Epäilet, että joku käyttää levyä elokuviin? Etsimme tiedostojen kokoa 1.4 GIGATAVUA:
Löytää / -koko 1400 metriä
Tai käytä aluetta:
Etsi / -koko +1400 m -koko -2800m
Etsi tyhjiä tiedostoja/luetteloita
Kyllä, älä ihmettele. Median tilauksen palauttamisen tehtävä on ominaisuus paitsi Android -käyttöjärjestelmälle. Linuxissa päätetään tällaisen direktiivin avulla:
Etsi /var -tyyppi f -vety
Esimerkki toiminnoista löydetyillä tiedostoilla
Linuxissa Find -tiimi voi rekursiivisesti suorittaa tiettyjä toimintoja näiden tiedostojen kanssa, haun, jota käyttämäsi. Tiedostokomentojen suorittamiseksi sinun on käytettävä EXEC -parametria. Joten, direktiivi kaikkien tiedostojen tietojen näyttämiseksi LS -komennolla näyttää tältä:
löytö . -Exec lS -l \;
Mutta kuinka yksinkertaisesti voit poistaa väliaikaisia tiedostoja tietyllä naamiolla hakemistossa /kodissa /lämpötilassa:
Etsi /tmp -tyyppi f -name "*.html ”-exec rm -f \;
Tietysti aloittelijalle komentorivin käyttäminen, jolla on valtava määrä vaihtoehtoja. Ja kuinka ratkaisit tässä kuvatut ongelmat Windowsissa? Se on sama. Tässä näkökulmassa Linux on selvästi edessä.