Lielākā daļa Unix sistēmu iesācēju lietotāju, jo īpaši Linux, nav pazīstami ar galvenajiem komandrindas operatoriem, kurus izmanto šajā operētājsistēmā. Aplūkosim tuvāk meklēšanas un grep operatoru funkcijas un izmantošanu.
Meklēt un Grep komandas Linux.
ATLASIET
Linux meklēšanas komanda ir komandrindas utilīta failu hierarhijas šķērsošanai. To var izmantot, lai meklētu failus un direktorijus un veiktu turpmākas darbības ar tām. Tā atbalsta meklēšanu pēc faila, mapes, vārda, izveides datuma, maiņas datuma, īpašnieka un atļaujas. Izmantojot -exec, var atrast citas UNIX komandas atrastiem failiem vai mapēm. Sintakse:
$ atrast [kur sākt meklēšanu] [izteiksme nosaka, ko atrast] [-options] [ko atrast]
Iespējas:
- -exec - vajadzīgais fails, kas atbilst iepriekš minētajiem kritērijiem, un atgriež 0 kā izejas stāvokli veiksmīgai komandu izpildei;
- -ok - darbojas tāpat kā -exec, izņemot to, ka lietotājs vispirms tiek aicināts;
- -inum N - meklēt ar numuru "N";
- - saites N - meklēšana ar saitēm "N";
- -name demo - meklēt failus, kas norādīti “demo”;
- - jaunāks fails - meklēt failus, kas ir pārveidoti / izveidoti pēc “faila”;
- perm octal - meklējiet, ja izšķirtspēja ir astotā;
- -druka - parādiet ceļu uz atrastajiem dokumentiem, izmantojot citus kritērijus;
- -empty - meklēt tukšus dokumentus un direktorijus;
- -izmērs + N / -N - meklēšanas bloki "N"; "N" un "c" var izmantot, lai izmērītu lielumu rakstzīmēs; “+ N” ir lielāks “N” bloku izmērs, un “-N” nozīmē mazāku “N” bloku lielumu;
- -uzņēmēja vārds - meklēt lietotājvārda vai identifikatora "nosaukums" dokumentus;
- (expr) - taisnība, ja "expr" ir taisnība; Izmanto, lai grupētu kritērijus kopā ar OR vai AND.
Grep
Grep komandu izmanto, lai meklētu failus. Funkcija apzīmē „regulāru izteiksmju globālo drukāšanu” un ir viena no spēcīgākajām un biežāk izmantotajām komandām Linux. Komanda meklē vienu vai vairākus ievades failus, kas atbilst norādītajam modelim, un katru atbilstošo līniju ieraksta standarta izvadā. Ja faili nav norādīti, komanda nolasa no standarta ievades, kas parasti ir citas komandas izeja. Šajā rakstā mēs parādīsim, kā ievadīt komandu, izmantojot praktiskus piemērus un detalizētākos GNU grep opciju variantus.
Komandu sintakse
Pirms sākam izmantot komandu, sāksim pārskatīt galveno sintaksi. Lietderības izteiksmēm ir šāda forma:
[OPTIONS] PATĒRIŅA [FILE ...]
Vienumi kvadrātiekavās ir obligāti.
- OPTIONS - nulles vai vairāk izvēles. Komanda nodrošina vairākas iespējas, kas kontrolē tās uzvedību.
- PATTERN - Meklēšanas modelis.
- FILE - nulles vai vairāk ievades failu nosaukumi.
Kā ievadīt komandu, lai meklētu failus
Komandas galvenais mērķis ir meklēt tekstu failā. Piemēram, lai parādītu no / etc / passwd faila, kurā ir bash līnija, varat izmantot šādu komandu:
$ grep bash / etc / passwd
Izejai vajadzētu izskatīties šādi:
root 0: 0: root: / root: / bin / bash
domain1000: 1000: domēns: / home / domain: / bin / bash
Ja virkne satur atstarpes, jums ir jāpievieno viena vai divkāršās pēdiņas:
$ "Gnome Display Manager" / etc / passwd
Pārvērst atbilstību (ex)
Lai parādītu līnijas, kas neatbilst paraugam, ievadiet parametru –v (vai –invert-match). Piemēram, lai parādītu failu, kas nesatur nologīnu no / etc / passwd faila, varat ievadīt šādu komandu:
$ -v nologin / etc / passwd
Izeja:
root 0: 0: root: / root: / bin / bash
kolords 124: 124 :: / var / lib / colord: / bin / false
git 994: 994: git dēmona lietotājs: /: / usr / bin / git-shell
linuxize 1000: 1000: linuxize: / home / linuxize: / bin / bash
Kā izmantot komandu, lai meklētu izvadā
Tā vietā, ja norādāt ievades failus, varat novirzīt citas komandas izvadi un pēc tam parādīt tikai tās līnijas, kas atbilst norādītajam modelim. Piemēram, lai uzzinātu, kuri procesi jūsu sistēmā darbojas kā www-datu lietotājs, varat izmantot šādu komandu:
$ ps -ef www dati
Izeja:
www-dati 18247 12675 4 16:00? 00:00:00 php-fpm: baseins www
sakne 18272 17714 0 16:00 punkti / 0 00:00:00 —krāsa = auto - izslēgt-dir = .bzr —exclude-dir = CVS —izņemiet-dir = .git —exclude-dir =. = .svn www dati
www-dati 31147 12770 0 Oct22? 00:05:51 nginx: strādnieku process
www-dati 31148 12770 0 Oct22? 00:00:00 nginx: kešatmiņas pārvaldnieka process
Varat arī apvienot vairākus kanālus komandā. Kā redzams iepriekš minētajā izvadā, ir arī līnija, kas satur procesu. Ja nevēlaties, lai šī rinda tiktu rādīta, nosūtiet izeju uz citu instanci, kā parādīts zemāk.
$ ps -ef www-dati grep -v grep
Izeja:
www-dati 18247 12675 4 16:00? 00:00:00 php-fpm: baseins www
sakne 18272 17714 0 16:00 punkti / 0 00:00:00 —krāsa = auto - izslēgt-dir = .bzr —exclude-dir = CVS —izņemiet-dir = .git —exclude-dir =. = .svn www dati
www-dati 31147 12770 0 Oct22? 00:05:51 nginx: strādnieku process
www-dati 31148 12770 0 Oct22? 00:00:00 nginx: kešatmiņas pārvaldnieka process
Rekursīvā meklēšana
Lai recursīvi meklētu rakstu, ievadiet opciju –r (vai –recursive). Tas ļaus jums meklēt visus failus norādītajā direktorijā, izlaižot simboliskas saites, kas notiek rekursīvi. Lai izietu visas simboliskās saites, izmantojiet opciju –r (vai –dereference-rekursīvs). Nākamajā piemērā mēs meklējam domain.com visos failos / etc direktorijā:
$ -r domain.com / etc
Šī komanda izdrukās atbilstošos laukus ar pilnu faila ceļa prefiksu.
/etc/hosts:127.0.0.1 node2.domain.com /etc/nginx/sites-available/domain.com: server_name domain.com www.domain.com;
Ja, vietā, kur lietojat –R opciju, komanda sekos visām simboliskajām saitēm:
$ -R domain.com / etc
Ievērojiet pēdējo izejas lauku. Iepriekš minētajā piemērā tas netiek drukāts, jo vietnes iespējotā Nginx direktorijā esošie faili ir simboliskas saites uz konfigurācijas failiem vietņu pieejamā direktorijā.
Izeja:
/etc/hosts:127.0.0.1 node2.domain.com
/etc/nginx/sites-available/domain.com: servera nosaukums domēns.com www.domain.com;
/etc/nginx/sites-enabled/domain.com: servera nosaukums domēns.com www.domain.com;
Rādīt tikai faila nosaukumu
Lai nomainītu noklusējuma izdruku un izdrukātu tikai to failu nosaukumus, kas satur atbilstošo rakstu, varat ievadīt –l (vai -files-with-match) opciju. Piemēram, lai meklētu visus failus, kas beidzas ar .conf pašreizējā darba direktorijā, un drukāt tikai faila nosaukumus, kas satur domēna.com tipu, ierakstiet:
$ –L domēns.com * .conf
Izeja izskatīsies šādi:
tmux.conf
haproxy.conf
-L opcija parasti tiek izmantota kopā ar rekursīvo -R opciju:
$ -Rl domēns.com / tmp
Lietas nejutīgums
Pēc noklusējuma komanda ir reģistrjutīga, kas nozīmē, ka lielie un mazie burti tiek uzskatīti par atšķirīgiem. Lai ignorētu gadījumu, kad meklējat, ievadiet opciju –i (vai –ignore-case). Piemēram, ja meklējat zebru bez jebkādas opcijas, tālāk norādītā komanda neparādīs nevienu izvadi, t.i. ir atbilstība.
$ Zebra / usr / share / words
Bet, ja veicat nejaušu meklēšanu, izmantojiet –i iespēju, tas atbilst gan lielajiem, gan mazajiem burtiem:
$ grep -i Zebra / usr / share / words
Norāde “Zebra” atbilst “Zebra”, “ZEbrA” vai jebkurai citai lielo un mazo burtu kombinācijai.
Izeja:
zebra
zebras
zebras
Precīza atbilstība
Meklējot, gnu izdrukās arī gnu, kurā tiek ievietoti lielāki vārdi, piemēram, cygnus vai magnum.
$ gnu / usr / share / words
Izeja:
cygnus
gnu
interregnum
lgnu9d
lignum
magnum
magnuson
sphagnum
spārns
Lai atgrieztu tikai tos izteicienus, kuros norādītais lauks ir vesels vārds (nav iekļauts vārdos), varat izmantot opciju –w (vai —word-regexp).
SVARĪGI. Vārda burti ietver burtciparu rakstzīmes (az, AZ un 0-9) un pasvītrojumus (_). Visas pārējās rakstzīmes tiek uzskatītas par neverbālām rakstzīmēm.Ja palaižat tādu pašu komandu kā iepriekš, ieskaitot opciju -w, komanda atdos tikai tos, kas ietver atsevišķu vārdu gnu.
$ grep -w gnu / usr / share / words
Izeja: gnu
Rādīt numurus
Lai parādītu rindu skaitu, kas satur modeli, izmantojiet parametru –n (vai –line-number). Izmantojot šo opciju, tiks izdrukātas atbilstības standarta izvadei ar tā numura prefiksu, kurā tas tika atrasts. Piemēram, lai parādītu no / etc / services faila, kurā ir bash prefikss ar atbilstošo numuru, varat izmantot šādu komandu:
$ grep -n 10000 / etc / services
Zemāk redzamie rezultāti parāda, ka spēles ir 10423 un 10424.
Izeja:
10423: ndmp 10, 000 / tcp
10424: ndmp 10000 / udp
Skaitīšana
Lai izdrukātu atbilstošo līniju skaitu standarta izvadam, izmantojiet parametru –c (vai –count). Tālāk redzamajā piemērā mēs skaitām to kontu skaitu, kuriem ir čaulas / usr / bin / zsh.
$ grep -c '/ usr / bin / zsh' / etc / passwd
Rezultāts: 4
Vairākas rindas (raksti)
OR operators var apvienot divus vai vairākus meklēšanas modeļus. Pēc noklusējuma komanda interpretē modeli kā galveno regulāro izteiksmi, kurā metakaraksti zaudē savu īpašo nozīmi, un jāizmanto to versijas ar slīpsvītru. Tālāk redzamajā piemērā mēs meklējam visus vārdus, kas ir nāvējoši, kļūdas un kritiski Nginx kļūdas žurnāla failā:
$ grep 'letāla | kļūda | kritiskā' /var/log/nginx/error.log
Ja izmantojat paplašināto regulāro izteiksmi opciju –E (vai —papildina-regexp), paziņojumu nedrīkst izbēgt, kā parādīts tālāk:
$ grep -E 'letāla | kļūda | kritiska' /var/log/nginx/error.log
Regulāra izteiksme
GNU Grep ir divas regulāru izteiksmes funkciju kopas - Basic un Extended. Pēc noklusējuma funkcija interpretē modeli kā parastu regulāru izteiksmi, lai pārslēgtos uz paplašinātām regulārām izteiksmēm, jums jāizmanto –E opcija. Lietojot regulāras izteiksmes galvenajā režīmā, visas pārējās rakstzīmes, izņemot meta rakstzīmes, faktiski ir regulāras izteiksmes, kas atbilst viena otrai. Zemāk ir saraksts ar visbiežāk lietotajiem metakarķieriem:
- Izmantojiet rakstzīmi ^ (caret raksturs), lai atbilstu izteiksmei līnijas sākumā. Nākamajā piemērā ^ kangaroo atbilst tikai tad, ja tas notiek pašā sākumā: $ grep "^ kangaroo" file.txt
- Izmantojiet simbolu $ (dolārs), lai atbilstu izteiksmei beigās. Nākamajā piemērā kangaroo $ atbilst tikai tad, ja tas ir sastopams beigās: grep "kangaroo $" file.txt
- Izmantojiet simbolu. (dot), lai atbilstu kādam atsevišķam simbolam. Piemēram, lai saskaņotu visu, kas sākas ar divām rakstzīmēm kan, un beidzas ar roo, varat izmantot šādu rakstu: $ grep "kan..roo" file.txt
- Izmantojiet [] (iekavās), lai atbilstu kādai atsevišķai rakstzīmei, kas iekļauta iekavās. Piemēram, atrodiet tos, kas satur akcentu vai akcentu, varat izmantot šādu rakstu: $ grep "acce [np] t" file.txt
Lai izvairītos no nākamās rakstzīmes īpašās nozīmes, izmantojiet rakstzīmi \ t
Paplašinātas regulāras izteiksmes
Lai interpretētu modeli kā paplašinātu regulāru izteiksmi, izmantojiet –E (vai –extended-regexp) parametru. Paplašinātās regulāras izteiksmes ietver visus pamata rakstzīmes, kā arī papildu meta rakstzīmes, lai radītu sarežģītākus un spēcīgākus meklēšanas modeļus. Zemāk ir daži piemēri:
- Saskaņojiet un izvelciet visas e-pasta adreses no šī faila: $ grep -E -o "b [A-Za-z0-9 ._% + -] [A-Za-z0-9 .-] + [A-Za-z] {2.6} b "file.txt
- Kartē un noņemiet visas derīgās IP adreses no šī faila: $ grep -E -o '(25 [0-5] | 2 [0-4] [0-9] | [01]? [0-9] [0 (25 [0-5] | 2 [0-4] [0-9] | [01]? [0-9] [0-9]?) (25 [0-9] | 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 opcija tiek izmantota, lai drukātu tikai spēles.
Drukāt pirms skaitīšanas
Lai pirms atbilstības izdrukātu noteiktu skaitu rindu, izmantojiet parametru –B (vai —before-context). Piemēram, lai parādītu 5 sākotnējās konteksta rindas pirms saskaņošanas, varat izmantot šādu komandu: $ grep -A 5 root / etc / passwd
Drukāt pēc meklēšanas
Lai pēc atbilstības izdrukātu noteiktu skaitu rindu, izmantojiet parametru –A (vai pēc konteksta). Piemēram, lai parādītu 5 pēdējās konteksta rindas pēc atbilstības virknes, varat izmantot šādu komandu: $ grep -B 5 root / etc / passwd
Tas viss ir nepieciešams, lai pilnībā izmantotu komandu informāciju. Ja jūs jau lietojat Linux un varat sniegt padomus iesācējiem, dalieties ar komentāriem saskaņā ar šo pantu.