Enamik Unixi süsteemide algajaid, eriti Linuxi, ei tunne selles operatsioonisüsteemis kasutatavaid põhilisi käsureaoperaatoreid. Vaatame lähemalt otsingu- ja grep-operaatorite funktsioone ja kasutamist.
Find ja Grep käskude kasutamine Linuxis.
LUGEGE
Linuxi leidmise käsk on käsurea utiliit failihierarhia läbimiseks. Seda saab kasutada failide ja kataloogide otsimiseks ning nendega järgnevateks toiminguteks. See toetab otsimist faili, kausta, nime, loomise kuupäeva, muutmise kuupäeva, omaniku ja õiguste alusel. -Exec abil saab leitud failide või kaustade jaoks täita teisi UNIX-i käske. Süntaksi:
$ leida [kust alustada otsingut] [väljend määrab, mida leida] [-options] [mida leida]
Valikud:
- -exec - nõutav fail, mis vastab ülaltoodud kriteeriumidele ja tagastab edukalt käsu täitmiseks 0 väljumisolekuna;
- -ok - töötab samamoodi nagu -exec, välja arvatud see, et kasutajalt küsitakse esmalt;
- -inum N - otsing numbriga "N";
- lingid N - otsing lingidega "N";
- -nimi demo - otsida “demos” määratud faile;
- - uus fail - otsige faile, mis on muudetud pärast "faili";
- perm octal - otsida, kui resolutsioon on oktaal;
- -print - näidata teiste kriteeriumide alusel leitud dokumentide tee;
- -empty - tühjade dokumentide ja kataloogide otsimine;
- -mõõdik + N / -N - otsingu plokid "N"; "N" ja "c" saab kasutada mõõtude mõõtmiseks sümbolites; “+ N” tähendab suuremat N-plokkide suurust ja „-N” tähistab väiksemat N-plokkide suurust;
- -kasutaja nimi - otsida kasutajatunnusele või tunnusele "nimi" kuuluvaid dokumente;
- (expr) - tõsi, kui "expr" on tõene; Kasutatakse kriteeriumide rühmitamiseks koos OR või AND-ga.
Grep
Grep-käsku kasutatakse failide otsimiseks. Funktsioon tähistab „regulaaravaldiste globaalset printimist” ja on üks võimsamaid ja sagedamini kasutatavaid käske Linuxis. Käsk otsib üht või mitut sisendfaili, mis vastavad määratud mustrile, ja kirjutab iga vastava rea standardväljundisse. Kui ühtegi faili ei ole määratud, loeb käsk standardsisendist, mis on tavaliselt teise käsu väljund. Selles artiklis näitame teile, kuidas sisestada käsk, koos praktiliste näidete ja kõige tavalisemate GNU grep valikute üksikasjalike selgitustega.
Käskude süntaks
Enne kui alustame käsu kasutamist, alustame algse süntaksiga. Kasulike väljundite vorm on järgmine:
[OPTIONS] PATTERN [FILE ...]
Ruudu sulgudes olevad esemed on vabatahtlikud.
- VALIKUD - null või rohkem valikuid. Meeskond pakub mitmeid võimalusi, mis kontrollivad selle käitumist.
- PATTERN - otsingumuster.
- FILE - null või rohkem sisendfailide nimesid.
Kuidas faile otsida käsk
Käsu peamine eesmärk on otsida teksti failist. Näiteks selleks, et kuvada failist / etc / passwd fail, mis sisaldab bash-rida, saate kasutada järgmist käsku:
$ grep bash / etc / passwd
Väljund peaks olema selline:
root 0: 0: root: / root: / bin / bash
domain1000: 1000: domeen: / home / domain: / bin / bash
Kui string sisaldab tühikuid, tuleb see lisada ühe- või kahekordsetesse jutumärkidesse:
$ "Gnome Display Manager" / etc / passwd
Inverteeri vaste (ex)
Musterile mittevastavate ridade kuvamiseks sisestage parameeter –v (või –invert-match). Näiteks faili, mis ei sisalda nologiini, näitamiseks failist / etc / passwd, saate sisestada järgmise käsu:
$ -v nologin / etc / passwd
Väljund:
root 0: 0: root: / root: / bin / bash
Colord 124: 124 :: / var / lib / colord: / bin / false
git 994: 994: git deemon kasutaja: /: / usr / bin / git-shell
linuxize 1000: 1000: linuxize: / home / linuxize: / bin / bash
Kuidas kasutada käsku väljundis otsimiseks
Selle asemel, kui määrate sisendfaile, saate teise käsu väljundi suunata ja kuvada ainult need read, mis vastavad määratud mustrile. Näiteks selleks, et teada saada, millised protsessid teie süsteemis www-andmete kasutajana töötavad, saate kasutada järgmist käsku:
$ ps -ef www-andmed
Väljund:
www-andmed 18247 12675 4 16:00? 00:00:00 php-fpm: bassein www
root 18272 17714 0 16:00 pts / 0 00:00:00 —värv = automaatne välistamine-dir = .bzr —exclude-dir = CVS —välja-dir = .git —seisalda-dir = .hg —välja-dir = .svn www-andmed
www-andmed 31147 12770 0 Oct22? 00:05:51 nginx: töötaja protsess
www-andmed 31148 12770 0 Oct22? 00:00:00 nginx: vahemälu haldaja protsess
Samuti saate meeskonda ühendada mitu kanalit. Nagu näete ülaltoodud väljundis, on olemas ka protsess, mis sisaldab protsessi. Kui te seda rida ei soovi, saatke väljund teisele instantsile, nagu allpool näidatud.
$ ps -ef www-andmed grep -v grep
Väljund:
www-andmed 18247 12675 4 16:00? 00:00:00 php-fpm: bassein www
root 18272 17714 0 16:00 pts / 0 00:00:00 —värv = automaatne välistamine-dir = .bzr —exclude-dir = CVS —välja-dir = .git —seisalda-dir = .hg —välja-dir = .svn www-andmed
www-andmed 31147 12770 0 Oct22? 00:05:51 nginx: töötaja protsess
www-andmed 31148 12770 0 Oct22? 00:00:00 nginx: vahemälu haldaja protsess
Rekursiivne otsing
Musteri rekursiivseks otsimiseks sisestage –r (või –rekursiv) valik. See võimaldab teil otsida kõiki määratud kataloogi faile, jättes kõrvale rekursiivselt esinevad sümboolsed lingid. Kõigi sümboolsete linkide läbimiseks kasutage –r (või –dereference-rekursiivset) valikut. Järgmises näites otsime domeeni.com kõiki / etc kataloogi failides:
$ -r domain.com / etc
Käsk prindib vastavad väljad täieliku faili tee prefiksiga.
/etc/hosts:127.0.0.1 node2.domain.com /etc/nginx/sites-available/domain.com: serveri_nimi domain.com www.domain.com;
Kui kasutate –R-režiimi asemel -R, järgib käsk kõiki sümboolseid linke:
$ -R domain.com / etc
Pange tähele viimase väljundvälja. Ülaltoodud näites seda ei ole trükitud, sest saidid võimaldava kataloogi Nginx failid on sümboolsed lingid konfiguratsioonifailidele, mis asuvad saitide olemasolevas kataloogis.
Väljund:
/etc/hosts:127.0.0.1 node2.domain.com
/etc/nginx/sites-available/domain.com: serveri_nimi domain.com www.domain.com;
/etc/nginx/sites-enabled/domain.com: serveri_nimi domain.com www.domain.com;
Kuva ainult faili nimi
Vaikimisi väljundi kustutamiseks ja ainult sobitatud mustrit sisaldavate failide nimede printimiseks saate sisestada –l (või -failid-vasted) valikuga. Näiteks selleks, et otsida kõiki faile, mis lõpevad praeguses töö kataloogis .conf, ja printida ainult domeeninimede, mis sisaldavad domeeni.com tüüpi, tüüp:
$ –L domain.com * .conf
Väljund näeb välja selline:
tmux.conf
haproxy.conf
-L-võimalust kasutatakse tavaliselt koos rekursiivse -R-valikuga:
$ -Rl domain.com / tmp
Kohtuasja tundlikkus
Vaikimisi on käsk tõstutundlik, mis tähendab, et suur- ja väiketähti loetakse erinevaks. Juhu ignoreerimiseks otsingu korral sisestage valik „-i (või –ignore-case”). Näiteks, kui otsite Zebra ilma suvalise suvandita, ei kuvata järgmist käsku, st. seal on sobitamine.
$ Zebra / usr / share / sõnad
Aga kui teete juhtumipõhist otsingut, kasutage –i võimalust, see sobib nii suur- kui ka väiketähtedega:
$ grep -i Zebra / usr / share / words
Tähis “Zebra” vastab “Zebra”, “ZEbrA” või mõnele muule suur- ja väiketähtede kombinatsioonile.
Väljund:
sebra
seepra
seebras
Täpne vaste
Otsides prindib gnu ka gnu, kus sisestatakse suuremad sõnad, näiteks cygnus või magnum.
$ gnu / usr / share / words
Väljund:
cygnus
gnu
interregnum
lgnu9d
lignum
magnum
magnuson
sphagnum
wingnut
Ainult nende väljenduste tagastamiseks, kus määratud väli on terve sõna (ei ole lisatud sõnadele), saate kasutada valikut –w (või —märge-regexp).
TÄHTIS. Sõna tähemärgid sisaldavad tähtnumbrilisi tähemärke (az, AZ ja 0-9) ja allajoonit (_). Kõiki teisi märke käsitletakse mitteverbaalsetena.Kui käivitate sama käsu nagu eespool, sealhulgas –w valikuga, siis käsk tagastab ainult need, mis sisaldavad eraldi sõna gnu.
$ grep -w gnu / usr / share / words
Väljund: gnu
Näita numbreid
Musterit sisaldavate ridade arvu näitamiseks kasutage parameetrit –n (või –line-number). Selle suvandi kasutamine prindib vasted standardväljundile selle numbri eesliitega, milles see leiti. Näiteks selleks, et kuvada / etc / services-failist, mis sisaldab bash-eesliidet vastava numbriga, saate kasutada järgmist käsku:
$ grep -n 10000 / etc / services
Alltoodud väljund näitab, et vasted on 10423 ja 10424.
Väljund:
10423: ndmp 10 000 / tcp
10424: ndmp 10000 / udp
Loendamine
Sobivate joonte arvu printimiseks standardväljundisse kasutage parameetrit –c (või –count). Allpool toodud näites loendame kontode arvu, millel on shell / usr / bin / zsh.
$ grep -c '/ usr / bin / zsh' / etc / passwd
Väljund: 4
Mitmed read (mustrid)
OR-operaator saab kombineerida kahte või enamat otsingumustrit. Vaikimisi tõlgendab käsk mustrit kui peamist regulaaravaldist, kus metakõned kaotavad oma erilise tähenduse ja nende versioone tuleb kasutada tagasilükkajoonega. Allpool toodud näites otsime Nginxi vea logifailis kõiki surmaga lõppevaid, vigaseid ja kriitilisi sõnu;
$ grep 'surmav viga | kriitiline' /var/log/nginx/error.log
Kui kasutate laiendatud regulaaravaldise valikut –E (või —extended-regexp), ei tohiks avaldus jääda, nagu allpool näidatud:
$ grep -E 'surmav viga | kriitiline' /var/log/nginx/error.log
Regulaarne väljendus
GNU Grepil on kaks regulaaravaldamisfunktsiooni komplekti - Basic ja Extended. Vaikimisi tõlgendab funktsioon mustrit kui tavalist regulaaravaldist, et lülituda laiendatud regulaaravaldistele, peate kasutama -E valikut. Kui kasutate põhirežiimis regulaaravaldisi, on kõik teised tähemärgid, välja arvatud metakõned, tegelikult üksteisele vastavad regulaaravaldised. Allpool on loetelu kõige sagedamini kasutatavatest tähemärkidest:
- Kasutage riba alguses oleva väljendiga sobitamiseks märki ^ (sümbol). Järgmises näites sobib ^ kangaroo ainult siis, kui see toimub alguses: $ grep "^ kangaroo" file.txt
- Kasutage $ (dollari) sümbolit, et viia lõpuni väljend. Järgmises näites sobib kangaroo $ ainult siis, kui see tekib kõige lõpus: grep "kangaroo $" file.txt
- Kasutage sümbolit. (punkt), et sobitada ükski märk. Näiteks selleks, et sobitada kõike, mis algab kahest tähemärgiga kan ja lõpeb roo, saate kasutada järgmist mustrit: $ grep "kan..roo" file.txt
- Kasutage [] (sulgudes), et sobitada ükskõik milline sulgudes olev üksik tähemärk. Näiteks leidke need, mis sisaldavad aktsent või aktsenti, saate kasutada järgmist mustrit: $ grep "acce [np] t" file.txt
Järgmise tähemärgi erilise tähenduse vältimiseks kasutage tähemärki.
Laiendatud regulaaravaldised
Et tõlgendada mustrit laiendatud regulaaravaldisena, kasutage parameetrit –E (või –extended-regexp). Laiendatud regulaaravaldised sisaldavad kõiki põhilisi metakirjeid, aga ka täiendavaid metakirju keerukamate ja võimsamate otsingumustrite loomiseks. Allpool on mõned näited:
- Sobita ja eemalda kõik selle faili e-posti aadressid: $ grep -E -o "b [A-Za-z0-9 ._% + -] [A-Za-z0-9 .-] + [A-Za-z] {2.6} b "file.txt
- Kaardistage ja eemaldage kõik kehtivad IP-aadressid sellest failist: $ grep -E -o '(25 [0-5] | 2 [0-4] [0-9] | [01]? [0-9] [0 -9]?) (25 [0-5] | 2 [0-4] [0-9] | [01]? [0-9] [0-9]?) (25 [0- 5] | 2 [0-4] [0-9] | [01]? [0-9] [0-9]?) (25 [0-5] | 2 [0-4] [0-9] 9] | [01]? [0-9] [0-9]?) 'File.txt
-O valikut kasutatakse ainult vastete printimiseks.
Prindi enne lugemist
Teatud arvu ridade printimiseks enne sobitamist kasutage parameetrit –B (või —before-context). Näiteks, kui soovite enne sobitamist kuvada 5 algse konteksti rida, saate kasutada järgmist käsku: $ grep -A 5 root / etc / passwd
Prindi pärast otsingut
Konkreetse arvu ridade printimiseks pärast mängu kasutage parameetrit –A (või –a-after-context). Näiteks selleks, et kuvada viie rea lõppkontekst pärast sobivat stringi, saate kasutada järgmist käsku: $ grep -B 5 root / etc / passwd
See on kõik vajalik käsuteabe täielikuks kasutamiseks. Kui kasutate juba Linuxi ja saate algajatele nõu anda, jagage selle artikli alusel kommentaare.