Grep un atrodiet operatorus Linux noteikumus
- 1306
- 77
- Noah Kiehn
Sākotnēji UNIX/Linux operētājsistēmām nebija grafiskā interfeisa, jo tās bija koncentrējušās uz servera izmantošanu. Šodien šajā sakarā tie nav zemāki par Windows, tāpēc lietotāji, kas izmanto šo OS, reti zina galveno Linux komandu sintakse un mērķi. Tikmēr tas ir ļoti spēcīgs rīks, kas ļauj ātri veikt operācijas, kas, izmantojot OS pamata rīkus, ir problemātiska vai neiespējama. Šodien jūs satiksit Find un Grep operatorus, kas ir pamata visu Linux izplatīšanas failu sistēmai.
Atras un grep operatoru iecelšana
Atrast komandu Linux ir komandrindas operators, kas strādā ar failiem, kas apiet esošo hierarhiju. Tas ļauj meklēt failus, izmantojot daudzus filtrus, kā arī veikt noteiktas darbības, izmantojot failus pēc veiksmīgas meklēšanas. Starp failu meklēšanas kritērijiem ir gandrīz visi pieejamie atribūti, sākot no radīšanas dienas līdz izšķirtspējai.
Grep komanda Linux arī attiecas uz meklētājprogrammām, bet failu iekšpusē. Komandas burtiskais tulkojums ir “regulāro izpausmju globālā drukāšana”, bet zīmogs šeit nozīmē darba rezultātu secinājumu pēc noklusējuma, kas parasti ir monitors. Ar milzīgu potenciālu operators tiek izmantots diezgan bieži un ļauj meklēt vienā vai vairākos failos atbilstoši norādītajiem fragmentiem (veidnes). Tā kā Linux terminoloģija ievērojami atšķiras no šādām operētājsistēmām Windows, daudziem lietotājiem ir ievērojamas grūtības, izmantojot šīs komandas. Mēs centīsimies novērst šo trūkumu.
Grep un atrod sintakse
Sāksim ar operatora atrašanu. Failu meklēšanas komandas sintakse izskatās šādi:
Atrodiet [kur meklēt] [parametri] [-optic] [darbība]
Daži izmanto parametrus:
- -Dziļums: meklēšana pašreizējā mapē un subcatālisti;
- -Versija: atnesiet komandas versiju;
- -Drukāt: parādiet pilnīgus failu nosaukumus (Linux tie var būt patvaļīgi lieli);
- -F tipa: meklējiet tikai failus;
- -D tipa D - tikai meklējiet direktoriju (mapes).
Pieejamo opciju saraksts (norādīts caur defisi):
- Vārds: faila meklēšana pēc vārda;
- Lietotājs: meklēšana pēc faila īpašnieka vārda;
- PERM: saskaņā ar atribūtu "piekļuves režīms";
- MTIME: līdz pēdējām faila izmaiņām (rediģēt);
- Grupa: pēc grupas;
- atime: līdz pēdējās faila atvēršanas datumam;
- Jaunāks: faila meklēšana ar datumu, kas ir vairāk nekā direktīva, kas norādīta veidnē;
- Izmērs: pēc faila lieluma baitos;
- Nouser: meklējiet failus, kuriem nav ievadīta atribūta "īpašnieks".
Grep sintakse:
Grep [opcijas] veidne [kur meklēt]
Iespējas jāsaprot kā papildu precizējoši parametri, piemēram, apgrieztā režīma izmantošana vai noteikta rindu skaita meklēšana.
Veidne norāda, kas jāmeklē, izmantojot tieši noteiktu līniju vai regulāru izteiksmi.
Regulāru izteiksmju izmantošanas iespēja var ievērojami paplašināt meklēšanas iespējas. Standarta secinājuma norāde var būt noderīga, ja uzdevums ir filtrēt žurnālos ierakstītās kļūdas vai meklēt PID procesu PS komandas rezultātos, kas var būt vairāku lappušu.
Apsveriet visizplatītākos GRAS parametrus:
- -B: pirms iegūtās līnijas izdošanas parādiet bloka numuru;
- -C: Ir nepieciešams aprēķināt vēlamā fragmenta ierakstu skaitu;
- -I: Meklēt bez reģistrācijas reģistra;
- -N: Izdodiet līnijas numuru standarta izvades ierīcei, kurā tika atrasts vēlamais fragments vai veidne;
- - L: Izdošanas rezultātā jābūt klāt tikai failu nosaukumiem ar atrastu meklēšanas fragmentu;
- -S: ignorēt kļūdas izvadi;
- -W: meklējiet fragmentu, ko abās pusēs ieskauj atstarpes;
- -V: apgriezta meklēšana, tas ir, visu līniju parādīšana, kas nesatur noteiktu fragmentu;
- -E: Parametrs norāda, ka seko arī regulāra izteiksme, kurai ir sava sintakse;
- -A: Vēlamā fragmenta un iepriekšējo N līniju secinājums;
- -BN: tas pats, bet ar līnijām iet pēc veidnes.
Tagad ir jēga pāriet no teorētiskās daļas uz praktisko.3
Komunālo pakalpojumu izmantošanas piemēri
Ja jūs zināt, kas ir kombinatorika, tad būtu jāatspoguļo patiesais iespējamo meklēšanas komandu kombināciju skaits. Mēs aprobežosimies tikai ar visnoderīgākajiem piemēriem, kas jums var būt noderīgi darba laikā.
Meklējiet tekstu failos
Ļaujiet mums ir administratora tiesības, un mums ir uzdevums atrast konkrētu lietotāju milzīgā paroles failā. Mums būs nepieciešama diezgan vienkārša komanda, kas norāda uz faila ievietošanas ceļu:
Grep nameUser /etc /passwd
Ja meklēšanas rezultāts ir pozitīvs, mēs iegūsim iegūto aptuveni šāda veida līniju:
Nameuser: X: 1021: 1021: nameUser ,,,:/home/lietotājs:/bin/bash
Ja jums jāmeklē teksta fragments, neņemot vērā reģistra reģistru, komanda izskatīsies šādi:
Gras -i "nameUser" /etc /passwd
Šajā gadījumā būs atrodams vārda user lietotājs un tā "vārdamāsa" nameUser, kā arī visas citas iespējamās kombinācijas.
Vairāku līniju noslēgšana
Ļaujiet mums iegūt visas kļūdas no loga čaulas Xorg žurnāla.baga. Uzdevumu sarežģī fakts, ka pēc kļūdainas virkne, kas satur vērtīgu informāciju, var sekot. Tiek nolemts, ja mēs piespiedam komandu parādīt vairākas līnijas, izmantojot kā veidni līniju "PP":
GRAS -A5 "PP"/var/log/xorg.0.baga
Mēs saņemam līniju, kas satur veidni un 5 līnijas pēc tās.
GRAS -C3 "pp"/var/log/xorg.0.baga
Līnijas izeja ar teksta fragmentu un trīs līnijas pirms un pēc.
Regulāru izpausmju izmantošana grep
Šis ir viens no visspēcīgākajiem Linux rīkiem, kas ievērojami paplašina meklēšanas veidnes veidošanas iespēju. Regulārām izteiksmēm ir sava sintakse, diezgan sarežģīta. Mēs tajā neiedziļināsimies, ierobežojot sevi ar RV izmantošanas piemēru. Kā jūs jau zināt, lai norādītu, ka tiek izmantota regulārā izteiksme, tiek izmantots -e parametrs.
Ļaujiet mums ziņojumu failā.2 Mums ir jānoķer visas līnijas septembrim:
Grep "^sep 09"
Rezultāts būs kaut kas līdzīgs šim:
09. septembris 01:11:45 GS124 NTPD [2243]: Laika atiestatīšana +0.197579 s
09. septembris 01:19:10 GS124 NTPD [2243]: Laika atiestatīšana +0.203484 s
Lai meklētu veidni, kas atrodas joslas līnijas galā, tiek izmantots simbols “$”:
Grep "termins.$ "Ziņojumi
Rezultāts:
17. jūnijs 19:01:19 Cloneme kodols: Log Daemon termins.
11. septembris 06:30:54 Cloneme kodols: Log Daemon termins.
Un šeit ir parastās izteiksmes izmantošanas piemērs, kas ļauj meklēt līnijas, kas satur visus skaitļus, izņemot nulli:
Grep "[1-9]"/var/log/xorg.Viens.baga
Izmantojot rekursīvu meklēšanu grepā
Ja jūs esat pazīstams ar terminu "rekursija", tad Linux, jo īpaši, tiek izmantota šī paņēmiens, lai meklētu fragmentu vairākos failos, kas atrodas katalogā, un tā subcatals. Opcija -r norāda uz rekursijas klātbūtni. Ļaujiet mums meklēt fragmentu "nosauktaisomēns.Org "failos, kas atrodas mapes subcatals /etc /apache1:
Gras -r "nosauktaisomēns.Org "/etc/apache1/
Rezultāts var būt kaut kas līdzīgs šim:
/etc/apache1/vhosts.D/ nosauktāomēns.Org
Ja faila nosaukums nav nepieciešams, mēs izmantojam -h: h:
Grep -h -r "nosauktaisomēns.Org "/etc/apache1/
Meklēt vārdus
Standarts QWE fragmenta meklēšana beigsies ar visu vārdu, kuros šis fragments, izdošana: KBQWE, QWE123, AAFRQWE32. Lai ierobežotu meklēšanu tikai ar doto fragmentu, jums jāizmanto parametrs -W:
Gras -w "qwe", kur atrast
Meklējiet divus vai vairākus vārdus
Sarežģīt uzdevumu: mums jāatrod visas līnijas, kurās tiek atrasti divi vārdi. Komanda būs šāda:
Gras -W "Word01 | Word02", kur_ atrast
Līniju skaits
Ja nepieciešams, lai aprēķinātu. Cik reizes failā ir atrodams vēlamais fragments, mēs izmantojam dizainu ar parametru -C:
Gras -c "'teksts", kur_ atrast
Parametrs -N palīdz noskaidrot, kurā līnijā tiek atrasta vēlamā veidne:
Gras -n "nuser" /etc /passwd
Apgriezta meklēšana, izmantojot grep
Dažreiz uzdevums meklēt, izmantojot grep pēc failu satura. Iespēja -v mums palīdzēs:
Gras -v "txt", kur_ atrast
Faila nosaukuma izvade
Ļaujiet jums atrast visus failus norādītajā direktorijā, kurā ir vēlamais veidne. To var izdarīt, izmantojot parametru -l. Tātad pilna komanda failu izvades izvadei, kas satur virkni "sekundārā" mapē /utt., Izskatīsies šādi:
Grep -l "sekundārais" /utt
Krāsu izvade, izmantojot grep
Uzturēšanās ar citu krāsu ir lielisks veids, kā vizualizēt vēlamo ierakstu, kas ievērojami samazina acu slodzi, ja operācija bieži tiek veikta. Izrādās, ka GRAS ir opcija šai meklēšanas rezultātu izvadei:
Grepor -krāsas "sekundārais" /utt
Mēs turpinām izskatīt piemērus, kā izmantot utilītu Linux.
Meklējiet visus failus
Lai izņemtu pašreizējā katalogā esošo failu sarakstu, mēs izmantojam komandu šādā formātā:
Atrast .
Ja jums ir jāparāda visu failu nosaukums, mēs izmantojam komandu
Atrast . -Drukāt
Faila izvade noteiktā katalogā
Lai meklētu failus mapē, ko nosaka lietotāja, mēs izmantojam komandu
Atrast ./utt
Bet kā pašreizējā katalogā var atrast failus, kas satur noteiktu fragmentu:
Atrast . -Vārds "*.Gif "
Ja meklēšana jāveic bez reģistra uzskaites, komanda ir jāmaina:
Neņemiet vērā reģistru, meklējot pēc vārda:
Atrast . -Manī "*.Gif "
Ierobežojot meklēšanas dziļumu
Vēl viens diezgan tipisks uzdevums ir meklēt failus noteiktā mapē atbilstoši dotajam nosaukumam:
Atrast . -MaxDEPTH01 1 -NAME "*.Html "
Veidnes apgriešana
Mēs jau esam apsvēruši komandas analogu, lai meklētu līnijas, kurās nav noteikts fragments. Tādā pašā veidā jūs varat darīt ar failiem, kas neatbilst dotajai veidnei:
Atrast . -NAV -NAVE "LIETOTĀJS*"
Meklēt pēc vairākiem kritērijiem
Mēs sniedzam komandrindas piemēru, izmantojot utilītu meklēšanai pēc diviem kritērijiem, izmantojot operatoru NOT (izslēgšanas):
Atrast . -Vārds "Lietotājs" -NOT -NAME "*.Html "
Šajā gadījumā faili, kuru nosaukumā ir lietotāja fragments, bet kuriem ir paplašinājums, netiks atrasti. Izņēmuma operatora vietā varat izmantot loģisko "/" vai "::
Atrast -Name "*.js "-o -Name"*.SQL "
Šajā gadījumā mēs iegūsim pilnu failu sarakstu ar abiem paplašinājumiem, kas atrodas pašreizējā direktorijā.
Meklēt vairākos katalogos
Ja mums jāatrod faili divos katalogos, vienkārši norādiet no spraugas:
Atrast -type f ./test01 ./test02 -Name "*.SQL "
Meklējiet slēptos failus
Linux, tāpat kā Windows, ir slēpti faili, kas, izmantojot komandu Atrodi, netiks parādīti bez īpaša simbola. Šis simbols ir Tilda, un direktīvai būs šāds izskats:
Atrast ~ -Name ".*"
Meklējiet failus Linux pēc atļaujām
Dažreiz ir jāfiltrē katalogs noteiktai tiesību maskai. Piemēram, ja mums jāatrod faili ar atribūtu 0661, mēs izmantojam komandu:
Atrast . -PERM 0661
Failu filtrēšanas uzdevums ar atribūtu "Tikai lasīšanai" ir atrisināts šādi:
Atrast /etc /user -perm /u = r
Bet kā izskatīsies izpildāmu failu meklēšana ETC katalogā:
Atrast /utt -perm /a = x
Meklējiet failus pēc grupām/lietotājiem
Administratoram bieži ir jāsaskaras ar uzdevumu meklēt failus, kas ir konkrēta lietotāja un/vai grupas īpašums. Meklēt lietotājam:
Atrast . -Lietotājs Slavko
Lietotāju grupām tiek izmantots vēl viens parametrs:
Atrast /var -grupu devs
Meklēšana pēc pēdējās modifikācijas datuma
Faila datuma redzamais formāts Linux OS ir tieši tā modifikācijas datums (tas pats princips tiek izmantots operētājsistēmā Windows). Lai izveidotu sarakstu pēc datuma, tiek izmantota mimta opcija. Pieņemsim, ka mums jāatrod faili, kas mainīti pirms diviem mēnešiem:
Atrast /Home -MITME 60
Starp faila atribūtiem ir datums ar tā pēdējo atklāšanu (neveicot izmaiņas). Šādus failus parāda šāda komanda:
Atrast /home -atime 60
Jūs varat arī iestatīt laika intervālu. Lai meklētu failus, kas modificēti no četriem līdz diviem mēnešiem, mēs izmantojam direktīvu:
Atrast /home -Mimtht +60 -Mime -120
Bet kā atrast svaigi mainītus failus (pirms divām stundām):
Atrast /home -cmin 120
Meklējiet failus pēc lieluma
Aizdomas, ka kāds filmām izmanto disku? Mēs meklējam failu lielumu 1.4 GB:
Atrast / -ize 1400m
Vai izmantojiet diapazonu:
Atrodiet / -izizotus +1400 m -size -2800m
Meklējiet tukšus failus/katalogus
Jā, nebrīnieties. Pasūtījuma atjaunošanas uzdevums plašsaziņas līdzekļos ir raksturīgs ne tikai Android OS. Linux tiek nolemts ar šādas direktīvas palīdzību:
Atrast /var -type f -Epty
Darbību piemērs ar atrastajiem failiem
Linux komanda Find komanda var rekursīvi veikt noteiktas darbības ar šiem failiem, meklējot, kuru jūs veicat. Lai izpildītu failu komandas, jums jāizmanto EXEC parametrs. Tātad direktīva, lai parādītu informāciju par visiem failiem, izmantojot komandu LS, izskatīsies šādi:
Atrast . -exec ls -l \;
Bet kā vienkārši jūs varat izdzēst pagaidu failus ar doto masku direktorijā /mājas /temp:
Atrast /tmp -type f -Name "*.html ”-exec rm -f \;
Protams, iesācējam, izmantojot komandrindu ar milzīgu skaitu iespēju, šķiet nedaudz sarežģīts, bet Linux tas ir lietu secībā. Un kā jūs atrisinātu šeit aprakstītās problēmas Windows? Tas pats. Šajā aspektā Linux ir acīmredzami priekšā.